source file of the GNU LilyPond music typesetter
- (c) 1998--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "command-request.hh"
+
#include "tuplet-bracket.hh"
#include "note-column.hh"
#include "time-scaled-music.hh"
TRANSLATOR_DECLARATIONS(Tuplet_engraver);
protected:
- Link_array<Time_scaled_music> time_scaled_musics_;
+ Link_array<Music> time_scaled_musics_;
/// when does the scaled music stop? Array order is synced with time_scaled_musics_
Array<Rational> stop_moments_;
/// when does the current spanner stop? Array order is synced with time_scaled_musics_
};
bool
-Tuplet_engraver::try_music (Music *r)
+Tuplet_engraver::try_music (Music *c)
{
- if (Time_scaled_music * c = dynamic_cast<Time_scaled_music *> (r))
+ if (c->is_mus_type ("time-scaled-music"))
{
- Music *el = c->element ();
- if (!dynamic_cast<Request_chord*> (el))
+ Music *el = unsmob_music (c->get_mus_property ("element"));
+ if (el && !el->is_mus_type ("event-chord"))
{
time_scaled_musics_.push (c);
- Rational m = now_mom ().main_part_ + c->length_mom ().main_part_;
+ Rational m = now_mom ().main_part_ + c->get_length ().main_part_;
stop_moments_.push (m);
SCM s = get_property ("tupletSpannerDuration");
if (i < started_spanners_.size () && started_spanners_[i])
continue;
- Spanner* glep = new Spanner (get_property ("TupletBracket"));
+ Spanner* glep = make_spanner ("TupletBracket");
if (i >= started_spanners_.size ())
started_spanners_.push (glep);
{
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));
+
+ typeset_grob (sp);
+
started_spanners_[i] =0;
}
ENTER_DESCRIPTION(Tuplet_engraver,
/* descr */ "Catch Time_scaled_music and generate appropriate bracket ",
/* creats*/ "TupletBracket",
-/* acks */ "note-column-interface",
+/* accepts */ "time-scaled-music",
+/* acks */ "note-column-interface",
/* reads */ "tupletNumberFormatFunction tupletSpannerDuration tupletInvisible",
/* write */ "");