From a9bf1bb2c745d066d882bbe7f5a92ced8ef1fc35 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Thu, 20 Jul 2006 09:29:42 +0000 Subject: [PATCH] (struct Tuplet_description): read tupletFullLengthNote too. Choose right bound depending on value. --- ChangeLog | 11 +++++++++-- lily/tuplet-engraver.cc | 31 +++++++++++++++++++++---------- scm/define-context-properties.scm | 1 + 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index b75ac3fd9f..e65e10d455 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-07-20 Han-Wen Nienhuys + + * lily/tuplet-engraver.cc (struct Tuplet_description): read + tupletFullLengthNote too. Choose right bound depending on value. + + * input/regression/tuplet-full-length-note.ly: new file. + 2006-07-19 Erik Sandberg * lily/*-performer.cc: Converted try_music to listen_* @@ -11,8 +18,8 @@ 2006-07-19 Mats Bengtsson * Documentation/user/advanced-notation.itely (Font selection): - Document how to get a list of available fonts using - 'lilypond -dshow-available-fonts blabla'. + Document how to get a list of available fonts using 'lilypond + -dshow-available-fonts blabla'. 2006-07-19 Han-Wen Nienhuys diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 53d85bd933..a588f48571 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -19,8 +19,14 @@ struct Tuplet_description Music *music_; Spanner *bracket_; Spanner *number_; + + bool full_length_; + bool full_length_note_; + Tuplet_description () { + full_length_note_ = false; + full_length_ = false; music_ = 0; bracket_ = 0; number_ = 0; @@ -70,12 +76,14 @@ Tuplet_engraver::process_music () { for (vsize i = 0; i < stopped_tuplets_.size (); i++) { - bool full_length = to_boolean (get_property ("tupletFullLength")); if (stopped_tuplets_[i].bracket_) { - if (full_length) + if (stopped_tuplets_[i].full_length_) { - Item *col = unsmob_item (get_property ("currentMusicalColumn")); + Item *col = + unsmob_item (stopped_tuplets_[i].full_length_note_ + ? get_property ("currentMusicalColumn") + : get_property ("currentCommandColumn")); stopped_tuplets_[i].bracket_->set_bound (RIGHT, col); stopped_tuplets_[i].number_->set_bound (RIGHT, col); @@ -100,9 +108,14 @@ Tuplet_engraver::process_music () /* i goes from size-1 downto 0, inclusively */ vsize i = j - 1; + if (tuplets_[i].bracket_) continue; + tuplets_[i].full_length_ = to_boolean (get_property ("tupletFullLength")); + tuplets_[i].full_length_note_ + = to_boolean (get_property ("tupletFullLengthNote")); + tuplets_[i].bracket_ = make_spanner ("TupletBracket", tuplets_[i].music_->self_scm ()); tuplets_[i].number_ = make_spanner ("TupletNumber", @@ -141,13 +154,11 @@ void Tuplet_engraver::finalize () { if (to_boolean (get_property ("tupletFullLength"))) - { - for (vsize i = 0; i < last_tuplets_.size (); i++) - { - Item *col = unsmob_item (get_property ("currentCommandColumn")); - last_tuplets_[i]->set_bound (RIGHT, col); - } - } + for (vsize i = 0; i < last_tuplets_.size (); i++) + { + Item *col = unsmob_item (get_property ("currentCommandColumn")); + last_tuplets_[i]->set_bound (RIGHT, col); + } } Tuplet_engraver::Tuplet_engraver () diff --git a/scm/define-context-properties.scm b/scm/define-context-properties.scm index 8efe40eb5b..9576f697fb 100644 --- a/scm/define-context-properties.scm +++ b/scm/define-context-properties.scm @@ -412,6 +412,7 @@ number is specified.") (tupletFullLength ,boolean? "If set, the tuplet is printed up to the start of the next note.") + (tupletFullLengthNote ,boolean? "If set, end at the next note, otherwise end on the matter (time sigs, etc.) before the note.") (tupletSpannerDuration ,ly:moment? " Normally a tuplet bracket is as wide as the @code{\\times} expression that gave rise to it. By setting this -- 2.39.5