source file of the GNU LilyPond music typesetter
- (c) 1998--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
class Tuplet_engraver : public Engraver
{
public:
- TRANSLATOR_DECLARATIONS(Tuplet_engraver);
+ TRANSLATOR_DECLARATIONS (Tuplet_engraver);
protected:
Link_array<Music> time_scaled_musics_;
/// The spanners. Array order is synced with time_scaled_musics_
Link_array<Spanner> started_spanners_;
- virtual void finalize ();
virtual void acknowledge_grob (Grob_info);
virtual bool try_music (Music*r);
virtual void start_translation_timestep ();
{
if (c->is_mus_type ("time-scaled-music"))
{
- Music *el = unsmob_music (c->get_mus_property ("element"));
+ Music *el = unsmob_music (c->get_property ("element"));
if (el && !el->is_mus_type ("event-chord"))
{
time_scaled_musics_.push (c);
void
Tuplet_engraver::process_acknowledged_grobs ()
{
- SCM v = get_property ("tupletInvisible");
- if (to_boolean (v))
- return;
-
for (int i= 0; i < time_scaled_musics_.size (); i++)
{
if (i < started_spanners_.size () && started_spanners_[i])
continue;
- Spanner* glep = new Spanner (get_property ("TupletBracket"));
+ Spanner* glep = make_spanner ("TupletBracket", time_scaled_musics_ [i]->self_scm ());
if (i >= started_spanners_.size ())
started_spanners_.push (glep);
SCM proc = get_property ("tupletNumberFormatFunction");
- if (gh_procedure_p (proc))
+ if (ly_c_procedure_p (proc))
{
- SCM t = gh_apply (proc, scm_list_n (time_scaled_musics_[i]->self_scm (), SCM_UNDEFINED));
- glep->set_grob_property ("text", t);
+ SCM t = scm_apply_0 (proc, scm_list_n (time_scaled_musics_[i]->self_scm (), SCM_UNDEFINED));
+ glep->set_property ("text", t);
}
- announce_grob(glep, time_scaled_musics_ [i]->self_scm());
}
}
{
if (Note_column::has_interface (i.grob_))
{
- for (int j =0; j <started_spanners_.size (); j++)
+ for (int j =0; j < started_spanners_.size (); j++)
if (started_spanners_[j])
Tuplet_bracket::add_column (started_spanners_[j], dynamic_cast<Item*> (i.grob_));
}
{
if (now.main_part_ >= span_stop_moments_[i])
{
- if (started_spanners_[i])
+ if (Spanner *sp = started_spanners_[i])
{
- typeset_grob (started_spanners_[i]);
+ if (!sp->get_bound (RIGHT))
+ sp->set_bound (RIGHT, sp->get_bound (LEFT));
+
started_spanners_[i] =0;
}
}
}
-void
-Tuplet_engraver::finalize ()
+Tuplet_engraver::Tuplet_engraver ()
{
- for (int i=0; i < started_spanners_.size (); i++)
- {
- if (started_spanners_[i])
- typeset_grob (started_spanners_[i]);
- }
}
-
-
-Tuplet_engraver::Tuplet_engraver(){}
-
-ENTER_DESCRIPTION(Tuplet_engraver,
+ENTER_DESCRIPTION (Tuplet_engraver,
/* descr */ "Catch Time_scaled_music and generate appropriate bracket ",
/* creats*/ "TupletBracket",
/* accepts */ "time-scaled-music",
/* acks */ "note-column-interface",
-/* reads */ "tupletNumberFormatFunction tupletSpannerDuration tupletInvisible",
+/* reads */ "tupletNumberFormatFunction tupletSpannerDuration",
/* write */ "");