X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstaff-symbol-engraver.cc;h=4eee00b116dd8f0377dd3a7aa7a5784314714842;hb=75eebcb49e52d296b1da3e1074e0825d2c780db4;hp=5bc33f68db535b023489b84070d31b43f9a4c000;hpb=82a76e3a74e270d85e1ee26182d2991bf9ec48d7;p=lilypond.git diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index 5bc33f68db..4eee00b116 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2005 Han-Wen Nienhuys + (c) 1997--2006 Han-Wen Nienhuys */ #include "staff-symbol-engraver.hh" @@ -17,7 +17,7 @@ Staff_symbol_engraver::~Staff_symbol_engraver () Staff_symbol_engraver::Staff_symbol_engraver () { finished_span_ = 0; - first_start_ = true; + first_start_ = true; span_ = 0; span_events_[LEFT] = 0; span_events_[RIGHT] = 0; @@ -32,7 +32,7 @@ Staff_symbol_engraver::try_music (Music *music) span_events_[d] = music; return true; } - + return false; } @@ -43,6 +43,8 @@ Staff_symbol_engraver::process_music () { finished_span_ = span_; span_ = 0; + if (first_start_) + first_start_ = false; } if (span_events_[START] @@ -54,18 +56,14 @@ void Staff_symbol_engraver::start_spanner () { if (!span_) - { - span_ = make_spanner ("StaffSymbol", SCM_EOL); - } + span_ = make_spanner ("StaffSymbol", SCM_EOL); } void Staff_symbol_engraver::stop_spanner () { if (finished_span_ && !finished_span_->get_bound (RIGHT)) - { - finished_span_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); - } + finished_span_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); finished_span_ = 0; } @@ -93,26 +91,29 @@ Staff_symbol_engraver::finalize () stop_spanner (); } +/* + Todo: staff-symbol-referencer iface. +*/ void Staff_symbol_engraver::acknowledge_grob (Grob_info s) { - /* Perhaps should try to take SeparationItem as bound of the staff symbol? - */ - if (span_ || finished_span_ ) + */ + if (span_ || finished_span_) { Spanner *my = span_ ? span_ : finished_span_; - s.grob ()->set_property ("staff-symbol", my->self_scm ()); + s.grob ()->set_object ("staff-symbol", my->self_scm ()); } } +#include "translator.icc" +ADD_ACKNOWLEDGER (Staff_symbol_engraver, grob); ADD_TRANSLATOR (Staff_symbol_engraver, - /* descr */ "Create the constellation of five (default) " + /* doc */ "Create the constellation of five (default) " "staff lines.", - /* creats*/ "StaffSymbol", - /* accepts */ "staff-span-event", - /* acks */ "grob-interface", - /* reads */ "", + /* create */ "StaffSymbol", + /* accept */ "staff-span-event", + /* read */ "", /* write */ "");