/*
- tuplet-engraver.cc -- implement Tuplet_engraver
+ This file is part of LilyPond, the GNU music typesetter.
- source file of the GNU LilyPond music typesetter
+ Copyright (C) 1998--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
- (c) 1998--2007 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
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ LilyPond is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
*/
#include "beam.hh"
{
/*
discard duplicates.
- */
+ */
if (new_tuplets_[i].stop_moment_ == d.stop_moment_)
return;
}
}
else if (dir == STOP)
{
- if (tuplets_.size ())
- {
- stopped_tuplets_.push_back (tuplets_.back ());
- tuplets_.pop_back ();
- }
- else
- ev->origin ()->warning (_f ("No tuplet to end"));
+ if (tuplets_.size ())
+ {
+ stopped_tuplets_.push_back (tuplets_.back ());
+ tuplets_.pop_back ();
+ }
+ else if (!to_boolean (get_property ("skipTypesetting")))
+ ev->origin ()->warning (_ ("No tuplet to end"));
}
else
ev->origin ()->programming_error ("direction tuplet-span-event_ invalid.");
}
else if (!bracket->get_bound (RIGHT))
{
- bracket->set_bound (RIGHT,
- bracket->get_bound (LEFT));
- number->set_bound (RIGHT,
- stopped_tuplets_[i].bracket_->get_bound (LEFT));
- }
-
+ if (bracket->get_bound (LEFT))
+ {
+ bracket->set_bound (RIGHT,
+ bracket->get_bound (LEFT));
+ number->set_bound (RIGHT,
+ stopped_tuplets_[i].bracket_->get_bound (LEFT));
+ }
+ else
+ programming_error ("stopped tuplet bracket has neither left nor right bound");
+ }
// todo: scrap last_tuplets_, use stopped_tuplets_ only.
// clear stopped_tuplets_ at start_translation_timestep
last_tuplets_.push_back (bracket);
Tuplet_engraver::start_translation_timestep ()
{
last_tuplets_.clear ();
+ /*
+ May seem superfluous, but necessary for skipTypesetting.
+ */
+ new_tuplets_.clear ();
}
void
ADD_ACKNOWLEDGER (Tuplet_engraver, note_column);
ADD_TRANSLATOR (Tuplet_engraver,
/* doc */
- "Catch @ref{TupletSpannerEvent} and generate appropriate bracket.",
+ "Catch tuplet events and generate appropriate bracket.",
/* create */
"TupletBracket "
"TupletNumber ",
+
/* read */
"tupletFullLength "
"tupletFullLengthNote ",
- /* write */ "");
+
+ /* write */
+ ""
+ );