Text_spanner_engraver ();
protected:
- virtual void do_removal_processing ();
- virtual void acknowledge_element (Score_element_info);
- virtual bool do_try_music (Music *);
- virtual void do_process_music ();
- virtual void do_pre_move_processing ();
- virtual void do_post_move_processing ();
+ virtual void finalize ();
+ virtual void acknowledge_grob (Grob_info);
+ virtual bool try_music (Music *);
+ virtual void stop_translation_timestep ();
+ virtual void start_translation_timestep ();
+ virtual void create_grobs ();
private:
Spanner *span_;
}
void
-Text_spanner_engraver::do_post_move_processing ()
+Text_spanner_engraver::start_translation_timestep ()
{
req_drul_[START] = 0;
req_drul_[STOP] = 0;
}
bool
-Text_spanner_engraver::do_try_music (Music *m)
+Text_spanner_engraver::try_music (Music *m)
{
if (Span_req *s = dynamic_cast <Span_req*> (m))
{
- if (s->span_type_str_ == "abort")
+ String t = ly_scm2string (s->get_mus_property ("span-type"));
+ if (t == "abort")
{
req_drul_[LEFT] = 0;
req_drul_[RIGHT] = 0;
span_->suicide ();
span_ = 0;
}
- else if (s->span_type_str_ == "text")
+ else if (t == "text")
{
- req_drul_[s->span_dir_] = s;
+ req_drul_[s->get_span_dir()] = s;
return true;
}
}
}
void
-Text_spanner_engraver::do_process_music ()
+Text_spanner_engraver::create_grobs ()
{
if (req_drul_[STOP])
{
else
{
assert (!finished_);
- Score_element* e = unsmob_element (get_property ("currentMusicalColumn"));
+ Grob* e = unsmob_grob (get_property ("currentMusicalColumn"));
span_->set_bound (RIGHT, e);
finished_ = span_;
span_ = 0;
current_req_ = 0;
+ req_drul_[STOP] = 0;
}
}
{
current_req_ = req_drul_[START];
span_ = new Spanner (get_property ("TextSpanner"));
+
+ /* Ugh. Reset (de)cresc. specific properties */
+ span_->set_grob_property ("outer", SCM_BOOL_T);
+ span_->set_grob_property ("if-text-padding", gh_double2scm (0));
+ span_->set_grob_property ("width-correct", gh_double2scm (0));
+
Side_position::set_axis (span_, Y_AXIS);
- Score_element *e = unsmob_element (get_property ("currentMusicalColumn"));
+ Grob *e = unsmob_grob (get_property ("currentMusicalColumn"));
span_->set_bound (LEFT, e);
- announce_element (span_, req_drul_[START]);
+
+ announce_grob (span_, req_drul_[START]);
+ req_drul_[START] = 0;
}
}
}
void
-Text_spanner_engraver::acknowledge_element (Score_element_info info)
+Text_spanner_engraver::acknowledge_grob (Grob_info info)
{
if (span_ && Note_column::has_interface (info.elem_l_))
{
if (finished_)
{
Side_position::add_staff_support (finished_);
- typeset_element (finished_);
+ typeset_grob (finished_);
finished_ = 0;
}
}
void
-Text_spanner_engraver::do_pre_move_processing ()
+Text_spanner_engraver::stop_translation_timestep ()
{
typeset_all ();
}
void
-Text_spanner_engraver::do_removal_processing ()
+Text_spanner_engraver::finalize ()
{
typeset_all ();
if (span_)