DECLARE_ACKNOWLEDGER (axis_group);
void process_music ();
void start_spanner ();
+ void consider_start_spanner ();
void stop_spanner ();
};
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");
{
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 ("can't find root system");
+}
+
+
void
Instrument_name_engraver::acknowledge_axis_group (Grob_info info)
{
- if (text_spanner_
- && dynamic_cast<Spanner *> (info.grob ())
+ if (dynamic_cast<Spanner *> (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 ());
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;
}
/* create */
"InstrumentName ",
- /* accept */
- "",
-
/* read */
"currentCommandColumn "
"shortInstrumentName "