source file of the GNU LilyPond music typesetter
- (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 2000--2002 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "dimensions.hh"
class Text_spanner_engraver : public Engraver
{
public:
- VIRTUAL_COPY_CONS (Translator);
- Text_spanner_engraver ();
-
+ TRANSLATOR_DECLARATIONS(Text_spanner_engraver);
protected:
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 ();
+ virtual void process_acknowledged_grobs ();
private:
Spanner *span_;
void typeset_all ();
};
-ADD_THIS_TRANSLATOR (Text_spanner_engraver);
+
Text_spanner_engraver::Text_spanner_engraver ()
}
else if (t == "text")
{
- req_drul_[s->get_span_dir()] = s;
+ req_drul_[s->get_span_dir ()] = s;
return true;
}
}
}
void
-Text_spanner_engraver::create_grobs ()
+Text_spanner_engraver::process_acknowledged_grobs ()
{
if (req_drul_[STOP])
{
if (!span_)
{
req_drul_[STOP]->origin ()->warning
- (_ ("can't find start of text spanner"));
+ (_ ("can't find start of text spanner"));
}
else
{
if (current_req_)
{
req_drul_[START]->origin ()->warning
- (_ ("already have a text spanner"));
+ (_ ("already have a text spanner"));
}
else
{
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);
+ Side_position_interface::set_axis (span_, Y_AXIS);
Grob *e = unsmob_grob (get_property ("currentMusicalColumn"));
span_->set_bound (LEFT, e);
- announce_grob (span_, req_drul_[START]);
+ announce_grob (span_, req_drul_[START]->self_scm());
req_drul_[START] = 0;
}
}
void
Text_spanner_engraver::acknowledge_grob (Grob_info info)
{
- if (span_ && Note_column::has_interface (info.elem_l_))
+ if (span_ && Note_column::has_interface (info.grob_l_))
{
- Side_position::add_support (span_, info.elem_l_);
- add_bound_item (span_, dynamic_cast<Item*> (info.elem_l_));
+ Side_position_interface::add_support (span_, info.grob_l_);
+ add_bound_item (span_, dynamic_cast<Item*> (info.grob_l_));
}
}
{
if (finished_)
{
- Side_position::add_staff_support (finished_);
+ Side_position_interface::add_staff_support (finished_);
typeset_grob (finished_);
finished_ = 0;
}
}
}
+ENTER_DESCRIPTION(Text_spanner_engraver,
+/* descr */ "Create text spanner from a Span_req ",
+/* creats*/ "TextSpanner",
+/* acks */ "note-column-interface",
+/* reads */ "",
+/* write */ "");