/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1998--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
vector<Spanner *> last_tuplets_;
DECLARE_ACKNOWLEDGER (note_column);
+ DECLARE_ACKNOWLEDGER (script);
+ DECLARE_ACKNOWLEDGER (finger);
+ DECLARE_ACKNOWLEDGER (string_number);
DECLARE_TRANSLATOR_LISTENER (tuplet_span);
virtual void finalize ();
void start_translation_timestep ();
tuplets_.pop_back ();
}
else if (!to_boolean (get_property ("skipTypesetting")))
- ev->origin ()->warning (_ ("No tuplet to end"));
+ ev->origin ()->debug_output (_ ("No tuplet to end"));
}
else
ev->origin ()->programming_error ("direction tuplet-span-event_ invalid.");
stopped_tuplets_[i].bracket_->get_bound (LEFT));
}
else
- programming_error ("stopped tuplet bracket has neither left nor right bound");
+ {
+ warning ("omitting tuplet bracket with neither left nor right bound");
+ continue;
+ }
}
// todo: scrap last_tuplets_, use stopped_tuplets_ only.
// clear stopped_tuplets_ at start_translation_timestep
}
}
+void
+Tuplet_engraver::acknowledge_script (Grob_info inf)
+{
+ for (vsize j = 0; j < tuplets_.size (); j++)
+ if (tuplets_[j].bracket_)
+ {
+ Item *i = dynamic_cast<Item *> (inf.grob ());
+ if (!i->internal_has_interface (ly_symbol2scm ("dynamic-interface")))
+ Tuplet_bracket::add_script (tuplets_[j].bracket_, i);
+ }
+}
+
+void
+Tuplet_engraver::acknowledge_finger (Grob_info inf)
+{
+ for (vsize j = 0; j < tuplets_.size (); j++)
+ if (tuplets_[j].bracket_)
+ {
+ Item *i = dynamic_cast<Item *> (inf.grob ());
+ Tuplet_bracket::add_script (tuplets_[j].bracket_, i);
+ }
+}
+
+void
+Tuplet_engraver::acknowledge_string_number (Grob_info inf)
+{
+ for (vsize j = 0; j < tuplets_.size (); j++)
+ if (tuplets_[j].bracket_)
+ {
+ Item *i = dynamic_cast<Item *> (inf.grob ());
+ Tuplet_bracket::add_script (tuplets_[j].bracket_, i);
+ }
+}
+
void
Tuplet_engraver::start_translation_timestep ()
{
}
ADD_ACKNOWLEDGER (Tuplet_engraver, note_column);
+ADD_ACKNOWLEDGER (Tuplet_engraver, script);
+ADD_ACKNOWLEDGER (Tuplet_engraver, finger);
+ADD_ACKNOWLEDGER (Tuplet_engraver, string_number);
ADD_TRANSLATOR (Tuplet_engraver,
/* doc */
"Catch tuplet events and generate appropriate bracket.",