X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fnew-fingering-engraver.cc;h=8c249e4fab663f0ffcf70d131eaf1b978fe4782f;hb=646a2265ea72c4007d9590a5d6d9a10ffc54ef29;hp=cd2d0487c05f434d252e876fb40f491041ea5a87;hpb=8f125843bd58e1985cf42a4b249b48a8c2f3db9b;p=lilypond.git diff --git a/lily/new-fingering-engraver.cc b/lily/new-fingering-engraver.cc index cd2d0487c0..8c249e4fab 100644 --- a/lily/new-fingering-engraver.cc +++ b/lily/new-fingering-engraver.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1998--2006 Han-Wen Nienhuys + (c) 1998--2009 Han-Wen Nienhuys */ #include "engraver.hh" @@ -108,7 +108,7 @@ New_fingering_engraver::acknowledge_rhythmic_head (Grob_info inf) { inf.grob ()->set_property ("style", ly_symbol2scm ("harmonic")); Grob *d = unsmob_grob (inf.grob ()->get_object ("dot")); - if (d) + if (d && !to_boolean (get_property ("harmonicDots"))) d->suicide (); } } @@ -125,10 +125,8 @@ New_fingering_engraver::acknowledge_stem (Grob_info inf) void New_fingering_engraver::add_script (Grob *head, Stream_event *event, - Stream_event *note) + Stream_event * /* note */) { - (void) note; - Finger_tuple ft; Grob *g = make_item ("Script", event->self_scm ()); @@ -249,11 +247,14 @@ New_fingering_engraver::position_scripts (SCM orientations, Grob *f = ft.script_; f->set_parent (ft.head_, X_AXIS); f->set_parent (ft.head_, Y_AXIS); - + f->set_property ("avoid-slur", SCM_BOOL_F); if (hordir == LEFT && unsmob_grob (ft.head_->get_object ("accidental-grob"))) Side_position_interface::add_support (f, unsmob_grob (ft.head_->get_object ("accidental-grob"))); + else if (unsmob_grob (ft.head_->get_object ("dot"))) + Side_position_interface::add_support (f, + unsmob_grob (ft.head_->get_object ("dot"))); Self_alignment_interface::set_align_self (f, Y_AXIS); Self_alignment_interface::set_center_parent (f, Y_AXIS); @@ -262,8 +263,6 @@ New_fingering_engraver::position_scripts (SCM orientations, f->set_property ("direction", scm_from_int (hordir)); } - int finger_prio = 200; - Direction d = DOWN; Drul_array< vector > vertical (down, up); do @@ -272,6 +271,7 @@ New_fingering_engraver::position_scripts (SCM orientations, { Finger_tuple ft = vertical[d][i]; Grob *f = ft.script_; + int finger_prio = robust_scm2int (f->get_property ("script-priority"), 200); f->set_parent (ft.head_, X_AXIS); f->set_property ("script-priority", scm_from_int (finger_prio + d * ft.position_)); @@ -289,7 +289,7 @@ New_fingering_engraver::position_scripts (SCM orientations, void New_fingering_engraver::stop_translation_timestep () { - position_all(); + position_all (); stem_ = 0; heads_.clear (); } @@ -345,20 +345,23 @@ ADD_ACKNOWLEDGER (New_fingering_engraver, rhythmic_head); ADD_ACKNOWLEDGER (New_fingering_engraver, stem); ADD_TRANSLATOR (New_fingering_engraver, - /* doc */ "Create fingering-scripts for notes in a new chord. " - "This engraver is ill-named, since it " - "also takes care of articulations and harmonic note heads", + /* doc */ + "Create fingering scripts for notes in a new chord. This" + " engraver is ill-named, since it also takes care of" + " articulations and harmonic note heads.", + /* create */ "Fingering " "StringNumber " "StrokeFinger " - "Script " - , + "Script ", + /* read */ - "fingeringOrientations " + "harmonicDots " "strokeFingerOrientations " - "stringNumberOrientations " - , + "stringNumberOrientations ", - /* write */ ""); + /* write */ + "" + );