From: Han-Wen Nienhuys Date: Tue, 11 Jul 2006 10:44:49 +0000 (+0000) Subject: * VERSION (PATCH_LEVEL): bump version. X-Git-Tag: cvs/HEAD~257 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=73b1239c26cd8f25d34ed9595967caa99932d784;p=lilypond.git * VERSION (PATCH_LEVEL): bump version. * python/convertrules.py (conv): add rule for tupletNumberFormatFunction. * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): remove tupletNumberFormatFunction. * scm/define-grobs.scm (all-grob-descriptions): calc TupletNumber text through 'text callback. * lily/time-scaled-music-iterator.cc (construct_children): copy tweaks generated events. * scm/define-context-properties.scm (all-user-translation-properties): remove tupletNumberFormatFunction * lily/tuplet-engraver.cc (process_music): don't read tupletNumberFormatFunction * scm/output-lib.scm (tuplet-number::calc-fraction-text): new function. --- diff --git a/ChangeLog b/ChangeLog index 5ae5cece08..7f92f870d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2006-07-11 Han-Wen Nienhuys + + * VERSION (PATCH_LEVEL): bump version. + + * python/convertrules.py (conv): add rule for tupletNumberFormatFunction. + + * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): remove + tupletNumberFormatFunction. + + * scm/define-grobs.scm (all-grob-descriptions): calc TupletNumber + text through 'text callback. + + * lily/time-scaled-music-iterator.cc (construct_children): copy + tweaks generated events. + + * scm/define-context-properties.scm + (all-user-translation-properties): remove tupletNumberFormatFunction + + * lily/tuplet-engraver.cc (process_music): don't read + tupletNumberFormatFunction + + * scm/output-lib.scm (tuplet-number::calc-fraction-text): new + function. + 2006-07-11 Erik Sandberg * lily/global-context-scheme.cc: Separated ly:run-translator into diff --git a/Documentation/topdocs/NEWS.tely b/Documentation/topdocs/NEWS.tely index 925246b4dc..a6679e5284 100644 --- a/Documentation/topdocs/NEWS.tely +++ b/Documentation/topdocs/NEWS.tely @@ -65,6 +65,28 @@ which scares away people. * only show user-visible changes. @end ignore +@item +Nested tuplets can have different formatting for each nesting level, + +@lilypond[ragged-right] +\new Staff { + \time 5/4 + \tweak #'text #tuplet-bracket::calc-fraction-text + \times 5/3 { + \tweak #'tupletNumberFormatFunction #denominator-tuplet-formatter + \times 2/3 { + c'8[ c'8 c'8] + } + \times 2/3 { + c'8[ c'8 c'8] + } + \times 2/3 { + c'8[ c'8 c'8] + } + } +} +@end lilypond + @item New sections with different spacing parameters can be started with @code{newSpacingSection}. This is useful when there are diff --git a/VERSION b/VERSION index 4a595f5f0a..30bc606439 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=2 MINOR_VERSION=9 -PATCH_LEVEL=10 +PATCH_LEVEL=11 MY_PATCH_LEVEL= diff --git a/lily/time-scaled-music-iterator.cc b/lily/time-scaled-music-iterator.cc index d07c979e3b..ccc93d0314 100644 --- a/lily/time-scaled-music-iterator.cc +++ b/lily/time-scaled-music-iterator.cc @@ -32,10 +32,13 @@ protected: virtual void derived_mark () const; virtual Moment pending_moment () const; private: + /* tupletSpannerDuration */ Moment spanner_duration_; + /* next time to add a stop/start pair */ Moment next_split_mom_; + /* Recycle start/stop events if tupletSpannerDuration is set. */ Music *start_; Music *stop_; @@ -70,6 +73,7 @@ Time_scaled_music_iterator::process (Moment m) { report_event (stop_); report_event (start_); + next_split_mom_ += spanner_duration_; /* avoid sending events twice at the end */ if (next_split_mom_ == get_music ()->get_length ().main_part_) @@ -98,6 +102,8 @@ Time_scaled_music_iterator::construct_children () start_->set_spot (*origin); start_->set_property ("numerator", mus->get_property ("numerator")); start_->set_property ("denominator", mus->get_property ("denominator")); + start_->set_property ("tweaks", mus->get_property ("tweaks")); + SCM stop_scm = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (STOP)); stop_ = unsmob_music (stop_scm); diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 513a53b51f..53d85bd933 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -116,13 +116,6 @@ Tuplet_engraver::process_music () if (i > 0 && tuplets_[i - 1].bracket_) Tuplet_bracket::add_tuplet_bracket (tuplets_[i - 1].bracket_, tuplets_[i].bracket_); - - SCM proc = get_property ("tupletNumberFormatFunction"); - if (ly_is_procedure (proc)) - { - SCM t = scm_apply_0 (proc, scm_list_1 (tuplets_[i].music_->self_scm ())); - tuplets_[i].number_->set_property ("text", t); - } } } @@ -166,5 +159,5 @@ ADD_TRANSLATOR (Tuplet_engraver, /* doc */ "Catch TupletSpannerEvent and generate appropriate bracket ", /* create */ "TupletBracket TupletNumber ", /* accept */ "tuplet-spanner-event", - /* read */ "tupletNumberFormatFunction tupletFullLength ", + /* read */ "tupletFullLength ", /* write */ ""); diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 70466e82cf..aa27cbdd7c 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -524,7 +524,6 @@ AncientRemoveEmptyStaffContext = \context { harmonicAccidentals = ##t fingeringOrientations = #'(up down) stringNumberOrientations = #'(up down) - tupletNumberFormatFunction = #denominator-tuplet-formatter markFormatter = #format-mark-letters rehearsalMark = #1 subdivideBeams = ##f diff --git a/python/convertrules.py b/python/convertrules.py index f2571e8823..0a2dfa969a 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -2807,3 +2807,20 @@ def conv (str): conversions.append (((2, 9, 9), conv, """annotatefoo -> annotate-foo""")) +def conv (str): + str = re.sub (r"""\\set ([a-zA-Z]+.?)tupletNumberFormatFunction *= *#denominator-tuplet-formatter""", + r"""\\override \1TupletNumber #'text = #tuplet-number::calc-denominator-text""", str) + + str = re.sub (r"""\\set ([a-zA-Z]+.?)tupletNumberFormatFunction *= *#fraction-tuplet-formatter""", + r"""\\override \1TupletNumber #'text = #tuplet-number::calc-fraction-text""", str) + + if re.search ('tupletNumberFormatFunction', str): + error_file.write ("\n") + error_file.write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber") + error_file.write ("\n") + + return str + +conversions.append (((2, 9, 11), conv, """\\set tupletNumberFormatFunction -> \\override #'text = """)) + + diff --git a/scm/define-context-properties.scm b/scm/define-context-properties.scm index 084ab18f6b..8efe40eb5b 100644 --- a/scm/define-context-properties.scm +++ b/scm/define-context-properties.scm @@ -412,11 +412,6 @@ number is specified.") (tupletFullLength ,boolean? "If set, the tuplet is printed up to the start of the next note.") - (tupletNumberFormatFunction - ,procedure? - "Function taking a music as input, producing a string. This function -is called to determine the text to print on a tuplet bracket.") - (tupletSpannerDuration ,ly:moment? " Normally a tuplet bracket is as wide as the @code{\\times} expression that gave rise to it. By setting this diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index c07a9537de..9ac56f093c 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1773,7 +1773,6 @@ (edge-height . (0.7 . 0.7)) (shorten-pair . (-0.2 . -0.2)) (staff-padding . 0.25) - (direction . ,ly:tuplet-bracket::calc-direction) (positions . ,ly:tuplet-bracket::calc-positions) (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) @@ -1787,6 +1786,7 @@ (TupletNumber . ( (stencil . ,ly:tuplet-number::print) + (text . ,tuplet-number::calc-denominator-text) (font-shape . italic) (font-size . -2) (avoid-slur . inside) diff --git a/scm/output-lib.scm b/scm/output-lib.scm index bf98dbab41..950e552e2a 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -243,6 +243,23 @@ centered, X==1 is at the right, X == -1 is at the left." (ly:grob-translate-axis! g 3.5 X))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Tuplets + +(define-public (tuplet-number::calc-denominator-text grob) + (let* + ((mus (ly:grob-property grob 'cause))) + + (number->string (ly:music-property mus 'denominator)))) + + +(define-public (tuplet-number::calc-fraction-text grob) + (let* + ((mus (ly:grob-property grob 'cause))) + (format "~a:~a" + (ly:music-property mus 'denominator) + (ly:music-property mus 'numerator)))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Color diff --git a/scm/translation-functions.scm b/scm/translation-functions.scm index f3bd616382..e687c32fae 100644 --- a/scm/translation-functions.scm +++ b/scm/translation-functions.scm @@ -5,15 +5,6 @@ ;;;; (c) 1998--2006 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen -(define-public (denominator-tuplet-formatter mus) - (number->string (ly:music-property mus 'denominator))) - -(define-public (fraction-tuplet-formatter mus) - (string-append - (number->string (ly:music-property mus 'denominator)) - ":" - (number->string (ly:music-property mus 'numerator)))) - ;; metronome marks (define-public (format-metronome-markup event context) (let* ((dur (ly:music-property event 'tempo-unit))