X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finstrument-name-engraver.cc;h=d35e065afb7459bf691acec9a7fcf4a9d0e4bc0a;hb=6a33b5cb60d40f9ae549deac8d0e6ebebf17af60;hp=76e0a88e33dca6ca44535e889f230ed91aa0fe43;hpb=4382107f18832dd4fd2bd99228991af36a229ac2;p=lilypond.git diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc index 76e0a88e33..d35e065afb 100644 --- a/lily/instrument-name-engraver.cc +++ b/lily/instrument-name-engraver.cc @@ -3,11 +3,10 @@ source file of the GNU LilyPond music typesetter - (c) 2000--2006 Han-Wen Nienhuys + (c) 2000--2007 Han-Wen Nienhuys */ #include "engraver.hh" -#include "spanner.hh" #include "pointer-group-interface.hh" #include "side-position-interface.hh" #include "axis-group-interface.hh" @@ -34,6 +33,7 @@ protected: DECLARE_ACKNOWLEDGER (axis_group); void process_music (); void start_spanner (); + void consider_start_spanner (); void stop_spanner (); }; @@ -48,11 +48,11 @@ Instrument_name_engraver::Instrument_name_engraver () void Instrument_name_engraver::process_music () { - start_spanner (); + consider_start_spanner (); } void -Instrument_name_engraver::start_spanner () +Instrument_name_engraver::consider_start_spanner () { SCM long_text = get_property ("instrumentName"); SCM short_text = get_property ("shortInstrumentName"); @@ -72,25 +72,46 @@ Instrument_name_engraver::start_spanner () { if (text_spanner_) stop_spanner (); - - text_spanner_ = make_spanner ("InstrumentName", SCM_EOL); - - Grob *col = unsmob_grob (get_property ("currentCommandColumn")); - text_spanner_->set_bound (LEFT, col); - text_spanner_->set_property ("text", short_text); - text_spanner_->set_property ("long-text", long_text); + short_text_ = short_text; long_text_ = long_text; + + start_spanner (); } } +void +Instrument_name_engraver::start_spanner () +{ + text_spanner_ = make_spanner ("InstrumentName", SCM_EOL); + + Grob *col = unsmob_grob (get_property ("currentCommandColumn")); + text_spanner_->set_bound (LEFT, col); + text_spanner_->set_property ("text", short_text_); + text_spanner_->set_property ("long-text", long_text_); + + /* + UGH, should handle this in Score_engraver. + */ + Grob *system = unsmob_grob (get_property ("rootSystem")); + if (system) + Axis_group_interface::add_element (system, text_spanner_); + else + text_spanner_->programming_error ("cannot find root system"); +} + + void Instrument_name_engraver::acknowledge_axis_group (Grob_info info) { - if (text_spanner_ - && dynamic_cast (info.grob ()) + if (dynamic_cast (info.grob ()) && Axis_group_interface::has_axis (info.grob (), Y_AXIS) + + /* ugh. */ + + && !info.grob ()->internal_has_interface (ly_symbol2scm ("dynamic-interface")) + && !info.grob ()->internal_has_interface (ly_symbol2scm ("piano-pedal-interface")) && (!Align_interface::has_interface (info.grob ()))) { axis_groups_.push_back (info.grob ()); @@ -117,16 +138,6 @@ Instrument_name_engraver::stop_spanner () Pointer_group_interface::set_ordered (text_spanner_, ly_symbol2scm ("elements"), false); - System *system = get_root_system (text_spanner_); - - /* - UGH, should handle this in Score_engraver. - */ - if (system) - Axis_group_interface::add_element (system, text_spanner_); - else - text_spanner_->programming_error ("can't find root system"); - text_spanner_ = 0; } @@ -135,22 +146,19 @@ Instrument_name_engraver::stop_spanner () ADD_ACKNOWLEDGER (Instrument_name_engraver, axis_group); ADD_TRANSLATOR (Instrument_name_engraver, - /* doc */ - "Creates a system start text for instrument or vocal names.", + "Create a system start text for instrument or vocal names.", /* create */ "InstrumentName ", - /* accept */ - "", - /* read */ "currentCommandColumn " "shortInstrumentName " "instrumentName " "shortVocalName " - "vocalName " - , + "vocalName ", - /* write */ ""); + /* write */ + "" + );