+2002-05-03 Han-Wen <hanwen@cs.uu.nl>
+
+ * mf/feta-klef.mf: more twiddling with G clef. Almost straight
+ downstroke again. Sigh.
+
+ * lily/dynamic-engraver.cc (acknowledge_grob): center dynamic
+ script on note head.
+
+2002-05-02 Han-Wen <hanwen@cs.uu.nl>
+
+ * lily/slur.cc (add_column): allow slur over rest.
+
2002-04-27 Han-Wen <hanwen@cs.uu.nl>
* lily/beam.cc: move scoring constants out of code
@lilypondfile[printfilename]{slur-staccato.ly}
+@lilypondfile[printfilename]{slur-rest.ly}
@section Ties
-\header {texidoc =
-"Dynamic letters are kerned, and their weight matches that
-of the hairpin signs."
-}
+\header {texidoc = "Dynamic letters are kerned, and their weight
+matches that of the hairpin signs. The dynamic scripts should be
+horizontally centered on the note head." }
+
\score {
-\notes\relative c'' { c4-\ff
+\notes\relative c'' { c1-\ff
c \f
c \rfz
c \mf
c \mp \> \!
- c \pp \< \!
+ c \ppppp \< \!
c \sfp
+
}
}
--- /dev/null
+\header
+{
+ texidoc ="Slurs may be placed over rest. The slur will avoid colliding with
+the rest
+
+"
+}
+\score{ \notes { \stemDown c'4 ( r4 ) c'2
+
+ \relative c'' {
+ % Finish with F if played separately
+ c8-.( r c,-. r ) c4 r4| }
+
+
+ }
+\paper { linewidth = -1. }
+ }
if (script_req_l_)
rq = script_req_l_ ;
announce_grob(line_spanner_, rq ? rq->self_scm(): SCM_EOL);
-
-
}
}
Side_position_interface::add_support (line_spanner_,i.grob_l_);
add_bound_item (line_spanner_,dynamic_cast<Item*> (i.grob_l_));
}
+
+ if (script_p_ && !script_p_->get_parent (X_AXIS))
+ {
+ script_p_->set_parent (i.grob_l_, X_AXIS);
+ }
+
}
}
ENTER_DESCRIPTION(Dynamic_engraver,
Slur::add_column (Grob*me, Grob*n)
{
if (!gh_pair_p (n->get_grob_property ("note-heads")))
- me->warning (_ ("Putting slur over rest. Ignoring rest."));
- else
- {
- Pointer_group_interface::add_grob (me, ly_symbol2scm ("note-columns"), n);
- me->add_dependency (n);
- }
+ me->warning (_ ("Putting slur over rest."));
+
+ Pointer_group_interface::add_grob (me, ly_symbol2scm ("note-columns"), n);
+ me->add_dependency (n);
add_bound_item (dynamic_cast<Spanner*> (me), dynamic_cast<Item*> (n));
}
Grob*
Stem::first_head (Grob*me)
{
- return extremal_heads (me)[-get_direction (me)];
+ Direction d = get_direction (me);
+ if (!d)
+ return 0;
+ return extremal_heads (me)[-d];
}
/*
%%% KERNING
-ligtable "m" : "p" kern 0.15 ex#, "f" kern -0.1 ex#;
+ligtable "m" : "p" kern 0.2 ex#, "f" kern -0.1 ex#;
ligtable "f" : "f" kern -0.13 ex#;
ligtable "r" : "f" kern 0.1 ex#;
z6 = center + whatever * downstroke_dir;
y6 = ypart center + 2 reduced_ss;
- z7l - z6 = whatever *(z5- z6) ;
+ z7l - z6 = whatever * (z5 - z6) ;
y7l = 3.5 reduced_ss;
x9 = .7 [x10, x7r];
top y9l = 5 reduced_ss;
- y11 = ypart center - 20/14 reduced_ss;
- y12 = ypart center - 34/14 reduced_ss;
+ y11 = ypart center - 47/28 reduced_ss;
+ y12 = ypart center - 71/28 reduced_ss;
y13 = .48 [y12,y4r];
x11 - x13r = 1.5 reduced_ss + 0.5 thinnib;
x12r = xpart (.45 [z13r , z11] + .75 reduced_ss * downstroke_dir) ;
- z10= center + whatever * dir (downstroke_angle + .5);
- y10 = ypart center + 3.35 reduced_ss;
+% z10= center + whatever * dir (downstroke_angle - 1.5 );
+ x10 = x6 - 2 thinnib;
+ y10 = ypart center + 3.5 reduced_ss;
y10l - y10r = 1.2 thickness;
z10r - z10l =
- .9 thinnib* dir (downstroke_angle + 90) + whatever *downstroke_dir;
+ .7 thinnib* dir (downstroke_angle + 90) + whatever * downstroke_dir;
z10 = .5 [z10l, z10r];
- z11 = center + whatever * downstroke_dir + (.2 reduced_ss, 0);
+ z11 = center + whatever * downstroke_dir + ( .05 reduced_ss, 0);
penpos1(thinnib, inner_start_angle);
penpos2(thickness, 90);
penpos4(thinnib, -90);
- penpos9(1.4 thickness, -70);
+ penpos9(1.45 thickness, -70);
save lipje;
pair lipje;
lipje= .5 [z9l, z9r] + .25 ((z9r- z9l) rotated -90);
z1r -- z1l
.. tension 0.85 ..cycle;
- save p, staffline_time, q, down_staff_line_intersection;
- path p,q;
+ save p, staffline_time, staff_line_path, down_staff_line_intersection;
+ path p, staff_line_path;
pair down_staff_line_intersection;
p := z4{left} .. z5{up} .. z7{up} ;
- q := (-reduced_ss, 2 reduced_ss) .. (2 reduced_ss,2 reduced_ss);
+
+ staff_line_path := (-reduced_ss, 2 reduced_ss) .. (2 reduced_ss,2 reduced_ss);
draw p;
penpos12(thinnib, bot_angle + 90);
p := z9 .. z10{down}
- .. z11{dir (-87)}
+ .. z6
+ .. (.52 [z4, z3])
+ .. z11{down}
.. z12{dir(bot_angle)}
.. z13{up}
;
save down_intersection_t;
- down_intersection_t := xpart (p intersectiontimes q) ;
+ down_intersection_t := xpart (p intersectiontimes staff_line_path) ;
down_staff_line_intersection = point down_intersection_t of p;
z14 = down_staff_line_intersection;
penpos14(thinnib, angle (direction down_intersection_t of p) + 90);
save loop_end_dir;
pair loop_end_dir;
- loop_end_dir = direction (xpart (p intersectiontimes q)) of p;
+ loop_end_dir = direction (xpart (p intersectiontimes staff_line_path)) of p;
draw p;
penpos6(thinnib, angle (loop_end_dir) + 90);
. (
(Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(molecule-callback . ,Text_item::brew_molecule)
- (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
+ (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
+ ,Self_alignment_interface::centered_on_parent))
(self-alignment-X . 0)
(no-spacing-rods . #t)
(script-priority . 100)