X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finstrument-name-engraver.cc;h=a900154032f243e6f38c97596e11c28adb0bce61;hb=03ce3667568361ee7433032988a4089c64de2ec7;hp=76e0a88e33dca6ca44535e889f230ed91aa0fe43;hpb=4382107f18832dd4fd2bd99228991af36a229ac2;p=lilypond.git diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc index 76e0a88e33..a900154032 100644 --- a/lily/instrument-name-engraver.cc +++ b/lily/instrument-name-engraver.cc @@ -7,7 +7,6 @@ */ #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; } @@ -142,9 +153,6 @@ ADD_TRANSLATOR (Instrument_name_engraver, /* create */ "InstrumentName ", - /* accept */ - "", - /* read */ "currentCommandColumn " "shortInstrumentName "