X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftuplet-engraver.cc;h=1fc30d898a178ef27e464b57fac4b925d1e4836c;hb=25ca54b640c067e2286a1d7ba47f24a1b4dc070e;hp=9ff42cad61ffad3731474952fa7cf3b8a9cf4352;hpb=8c197373e3dfce4382469a541b38be1f13a48e13;p=lilypond.git diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 9ff42cad61..1fc30d898a 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Han-Wen Nienhuys + Copyright (C) 1998--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -65,6 +65,8 @@ protected: 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 (); @@ -105,7 +107,7 @@ Tuplet_engraver::listen_tuplet_span (Stream_event *ev) 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."); @@ -153,7 +155,10 @@ Tuplet_engraver::process_music () 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 @@ -210,6 +215,29 @@ Tuplet_engraver::acknowledge_note_column (Grob_info inf) void Tuplet_engraver::acknowledge_script (Grob_info inf) +{ + for (vsize j = 0; j < tuplets_.size (); j++) + if (tuplets_[j].bracket_) + { + Item *i = dynamic_cast (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 (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_) @@ -246,6 +274,8 @@ Tuplet_engraver::Tuplet_engraver () 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.",