X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffingering-engraver.cc;h=5e4241d5318ed34a666e91f2e8f5fe95be6497f0;hb=5bbfc22fce036b9b69df5e420de93e11da23c05e;hp=a79245cf6bafe3d60beace7a28df705c92b328f2;hpb=e18531db1f79fb685fbd16d6a2a67bf4b6c09915;p=lilypond.git diff --git a/lily/fingering-engraver.cc b/lily/fingering-engraver.cc index a79245cf6b..5e4241d531 100644 --- a/lily/fingering-engraver.cc +++ b/lily/fingering-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2010 Han-Wen Nienhuys + Copyright (C) 1998--2014 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,8 +30,8 @@ class Fingering_engraver : public Engraver { - vector events_; - vector fingerings_; + vector events_; + vector fingerings_; public: TRANSLATOR_DECLARATIONS (Fingering_engraver); @@ -39,9 +39,9 @@ protected: void stop_translation_timestep (); void process_music (); DECLARE_TRANSLATOR_LISTENER (fingering); - DECLARE_TRANSLATOR_LISTENER (stroke_finger); DECLARE_ACKNOWLEDGER (rhythmic_head); DECLARE_ACKNOWLEDGER (stem); + DECLARE_ACKNOWLEDGER (flag); private: void make_script (Direction, Stream_event *, int); @@ -54,19 +54,15 @@ Fingering_engraver::listen_fingering (Stream_event *ev) events_.push_back (ev); } -IMPLEMENT_TRANSLATOR_LISTENER (Fingering_engraver, stroke_finger); void -Fingering_engraver::listen_stroke_finger (Stream_event * /* ev */) +Fingering_engraver::acknowledge_stem (Grob_info inf) { - /* - FIXME: should do something. - - This function is mainly here to shut up a warning - */ + for (vsize i = 0; i < fingerings_.size (); i++) + Side_position_interface::add_support (fingerings_[i], inf.grob ()); } void -Fingering_engraver::acknowledge_stem (Grob_info inf) +Fingering_engraver::acknowledge_flag (Grob_info inf) { for (vsize i = 0; i < fingerings_.size (); i++) Side_position_interface::add_support (fingerings_[i], inf.grob ()); @@ -80,7 +76,7 @@ Fingering_engraver::acknowledge_rhythmic_head (Grob_info inf) Grob *t = fingerings_[i]; Side_position_interface::add_support (t, inf.grob ()); if (!t->get_parent (X_AXIS)) - t->set_parent (inf.grob (), X_AXIS); + t->set_parent (inf.grob (), X_AXIS); } } @@ -105,7 +101,7 @@ Fingering_engraver::make_script (Direction d, Stream_event *r, int i) junkme. */ SCM pitch = r->get_property ("pitch"); - if (unsmob_pitch (pitch)) + if (Pitch::unsmob (pitch)) fingering->set_property ("pitch", pitch); /* @@ -113,8 +109,7 @@ Fingering_engraver::make_script (Direction d, Stream_event *r, int i) fingerings for chords need different settings. */ Side_position_interface::set_axis (fingering, Y_AXIS); - Self_alignment_interface::set_align_self (fingering, X_AXIS); - Self_alignment_interface::set_center_parent (fingering, X_AXIS); + Self_alignment_interface::set_aligned_on_parent (fingering, X_AXIS); // Hmm int priority = 200; @@ -127,13 +122,10 @@ Fingering_engraver::make_script (Direction d, Stream_event *r, int i) fingering->set_property ("script-priority", scm_from_int (priority)); - if (!is_direction (fingering->get_property_data ("direction"))) - { - if (d) - fingering->set_property ("direction", scm_from_int (d)); - else - fingering->set_property ("direction", scm_from_int (RIGHT)); - } + if (d) + fingering->set_property ("direction", scm_from_int (d)); + else if (!is_direction (fingering->get_property_data ("direction"))) + fingering->set_property ("direction", scm_from_int (UP)); fingerings_.push_back (fingering); } @@ -141,9 +133,6 @@ Fingering_engraver::make_script (Direction d, Stream_event *r, int i) void Fingering_engraver::stop_translation_timestep () { - if (!fingerings_.size ()) - return; - fingerings_.clear (); events_.clear (); } @@ -154,17 +143,18 @@ Fingering_engraver::Fingering_engraver () ADD_ACKNOWLEDGER (Fingering_engraver, rhythmic_head); ADD_ACKNOWLEDGER (Fingering_engraver, stem); +ADD_ACKNOWLEDGER (Fingering_engraver, flag); ADD_TRANSLATOR (Fingering_engraver, - /* doc */ - "Create fingering scripts.", + /* doc */ + "Create fingering scripts.", - /* create */ - "Fingering ", + /* create */ + "Fingering ", - /* read */ - "", + /* read */ + "", - /* write */ - "" - ); + /* write */ + "" + );