From: Han-Wen Nienhuys Date: Thu, 16 Mar 2006 14:39:46 +0000 (+0000) Subject: * lily/pointer-group-interface.cc (set_ordered): new function. X-Git-Tag: release/2.7.39~4 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=b319f8f1777ffae53a80c3efab2a18884d4d549e;p=lilypond.git * lily/pointer-group-interface.cc (set_ordered): new function. (add_unordered_grob): new function. * lily/grob-array.cc (Grob_array): grob-arrays are always assumed to ordered, unless the opposite has been proved. This fixes random reordering of large object groups across linebreaks, eg. beams. --- diff --git a/ChangeLog b/ChangeLog index fc2e6fccb8..854f5bb89d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2006-03-16 Han-Wen Nienhuys + * lily/pointer-group-interface.cc (set_ordered): new function. + (add_unordered_grob): new function. + + * lily/grob-array.cc (Grob_array): grob-arrays are always assumed + to ordered, unless the opposite has been proved. This fixes + random reordering of large object groups across linebreaks, + eg. beams. + * lily/main.cc (do_chroot_jail): printf format fix. * lily/tie-formatting-problem.cc (generate_configuration): @@ -40,7 +48,7 @@ 2006-03-14 Graham Percival - * Documentaiton/user/global.itely: small fix from mailist. + * Documentation/user/global.itely: small fix from mailist. 2006-03-14 Mats Bengtsson diff --git a/input/typography-demo.ly b/input/typography-demo.ly index fd92803c6f..8dfc39302c 100644 --- a/input/typography-demo.ly +++ b/input/typography-demo.ly @@ -8,7 +8,7 @@ heavily mutilated Edition Peters Morgenlied by Schubert" } -\version "2.7.32" +\version "2.7.39" ignoreMelisma = \set ignoreMelismata = ##t ignoreMelismaOff = \unset ignoreMelismata diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index b582fa417f..fc4cc7b9a4 100644 --- a/lily/axis-group-engraver.cc +++ b/lily/axis-group-engraver.cc @@ -9,6 +9,7 @@ #include "axis-group-engraver.hh" #include "axis-group-interface.hh" +#include "pointer-group-interface.hh" #include "context.hh" #include "international.hh" #include "spanner.hh" @@ -50,6 +51,8 @@ Axis_group_engraver::finalize () { Grob *it = unsmob_grob (get_property ("currentCommandColumn")); staffline_->set_bound (RIGHT, it); + + Pointer_group_interface::set_ordered (staffline_, ly_symbol2scm ("elements"), false); } } @@ -101,5 +104,9 @@ ADD_TRANSLATOR (Axis_group_engraver, /* doc */ "Group all objects created in this context in a VerticalAxisGroup spanner.", /* create */ "VerticalAxisGroup", /* accept */ "", - /* read */ "verticalExtent minimumVerticalExtent extraVerticalExtent", + /* read */ + "verticalExtent " + "minimumVerticalExtent " + "extraVerticalExtent ", + /* write */ ""); diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc index b13eecd868..d590813abf 100644 --- a/lily/axis-group-interface.cc +++ b/lily/axis-group-interface.cc @@ -33,6 +33,8 @@ Axis_group_interface::add_element (Grob *me, Grob *e) me->self_scm ()); } + /* must be ordered, because Align_interface also uses + Axis_group_interface */ Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), e); } diff --git a/lily/grob-array.cc b/lily/grob-array.cc index 1656fc821f..7b462cbba2 100644 --- a/lily/grob-array.cc +++ b/lily/grob-array.cc @@ -26,7 +26,7 @@ Grob_array::spanner (vsize i) Grob_array::Grob_array () { - ordered_ = false; + ordered_ = true; } vector & diff --git a/lily/hara-kiri-group-spanner.cc b/lily/hara-kiri-group-spanner.cc index 3a686dfcf0..981639c237 100644 --- a/lily/hara-kiri-group-spanner.cc +++ b/lily/hara-kiri-group-spanner.cc @@ -88,7 +88,7 @@ Hara_kiri_group_spanner::force_hara_kiri_in_y_parent_callback (SCM smob) void Hara_kiri_group_spanner::add_interesting_item (Grob *me, Grob *n) { - Pointer_group_interface::add_grob (me, ly_symbol2scm ("items-worth-living"), n); + Pointer_group_interface::add_unordered_grob (me, ly_symbol2scm ("items-worth-living"), n); } ADD_INTERFACE (Hara_kiri_group_spanner, "hara-kiri-group-interface", diff --git a/lily/include/pointer-group-interface.hh b/lily/include/pointer-group-interface.hh index 52adf53942..4238871b8e 100644 --- a/lily/include/pointer-group-interface.hh +++ b/lily/include/pointer-group-interface.hh @@ -19,6 +19,9 @@ public: static int count (Grob *, SCM); static void add_grob (Grob *, SCM nm, Grob *e); static void add_grob (Grob *, SCM nm, SCM x); + static void add_unordered_grob (Grob *, SCM nm, Grob *); + static void set_ordered (Grob *, SCM, bool); + static Grob_array *get_grob_array (Grob*, SCM); }; vector const &internal_extract_grob_array (Grob const *elt, SCM symbol); diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc index 5320dfd5f7..f3f1d90185 100644 --- a/lily/instrument-name-engraver.cc +++ b/lily/instrument-name-engraver.cc @@ -82,6 +82,8 @@ Instrument_name_engraver::finalize () { text_spanner_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); + + Pointer_group_interface::set_ordered (text_spanner_, ly_symbol2scm ("elements"), false); } } diff --git a/lily/ledger-line-engraver.cc b/lily/ledger-line-engraver.cc index 1cd6e96714..770eb02e14 100644 --- a/lily/ledger-line-engraver.cc +++ b/lily/ledger-line-engraver.cc @@ -62,6 +62,7 @@ Ledger_line_engraver::stop_spanner () if (span_) { span_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); + Pointer_group_interface::set_ordered (span_, ly_symbol2scm ("elements"), false); span_ = 0; } } diff --git a/lily/ottava-engraver.cc b/lily/ottava-engraver.cc index 4b430b3882..9a6230ee8c 100644 --- a/lily/ottava-engraver.cc +++ b/lily/ottava-engraver.cc @@ -124,7 +124,9 @@ Ottava_spanner_engraver::finalize () } #include "translator.icc" + ADD_ACKNOWLEDGER (Ottava_spanner_engraver, note_column); + ADD_TRANSLATOR (Ottava_spanner_engraver, /* doc */ "Create a text spanner when the ottavation property changes..", /* create */ "OttavaBracket", diff --git a/lily/pointer-group-interface.cc b/lily/pointer-group-interface.cc index 6366fb1fa1..1ab1d02c6e 100644 --- a/lily/pointer-group-interface.cc +++ b/lily/pointer-group-interface.cc @@ -27,7 +27,14 @@ Pointer_group_interface::add_grob (Grob *me, SCM sym, SCM p) } void -Pointer_group_interface::add_grob (Grob *me, SCM sym, Grob *p) +Pointer_group_interface::set_ordered (Grob *me, SCM sym, bool ordered) +{ + Grob_array *arr = get_grob_array (me, sym); + arr->set_ordered (ordered); +} + +Grob_array * +Pointer_group_interface::get_grob_array (Grob *me, SCM sym) { SCM scm_arr = me->internal_get_object (sym); Grob_array *arr = unsmob_grob_array (scm_arr); @@ -37,7 +44,22 @@ Pointer_group_interface::add_grob (Grob *me, SCM sym, Grob *p) arr = unsmob_grob_array (scm_arr); me->internal_set_object (sym, scm_arr); } + return arr; +} + +void +Pointer_group_interface::add_grob (Grob *me, SCM sym, Grob *p) +{ + Grob_array *arr = get_grob_array (me, sym); + arr->add (p); +} + +void +Pointer_group_interface::add_unordered_grob (Grob *me, SCM sym, Grob *p) +{ + Grob_array *arr = get_grob_array (me, sym); arr->add (p); + arr->set_ordered (false); } static vector empty_array; diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index 944b08fdc0..5ef9038dfb 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -106,7 +106,7 @@ Separating_group_spanner::set_spacing_rods (SCM smob) void Separating_group_spanner::add_spacing_unit (Grob *me, Item *i) { - Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), i); + Pointer_group_interface::add_unordered_grob (me, ly_symbol2scm ("elements"), i); } ADD_INTERFACE (Separating_group_spanner, "separation-spanner-interface", diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index 97c83b0f65..4964c47572 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -26,7 +26,7 @@ using namespace std; void Side_position_interface::add_support (Grob *me, Grob *e) { - Pointer_group_interface::add_grob (me, ly_symbol2scm ("side-support-elements"), e); + Pointer_group_interface::add_unordered_grob (me, ly_symbol2scm ("side-support-elements"), e); } Direction diff --git a/lily/vertically-spaced-context-engraver.cc b/lily/vertically-spaced-context-engraver.cc index 9fa0f172f1..d00433051e 100644 --- a/lily/vertically-spaced-context-engraver.cc +++ b/lily/vertically-spaced-context-engraver.cc @@ -45,9 +45,9 @@ Vertically_spaced_contexts_engraver::acknowledge_vertically_spaceable (Grob_info if (scm_memq (ly_symbol2scm (orig->context_name ().c_str ()), spaceable) != SCM_BOOL_F) { - Pointer_group_interface::add_grob (system_, - ly_symbol2scm ("spaceable-staves"), - gi.grob ()); + Pointer_group_interface::add_unordered_grob (system_, + ly_symbol2scm ("spaceable-staves"), + gi.grob ()); } } } diff --git a/ly/Welcome_to_LilyPond.ly b/ly/Welcome_to_LilyPond.ly index 21f7475c01..a9643238fb 100644 --- a/ly/Welcome_to_LilyPond.ly +++ b/ly/Welcome_to_LilyPond.ly @@ -31,4 +31,4 @@ That's it. For more information, visit http://lilypond.org . } -\version "2.7.36" % necessary for upgrading to future LilyPond versions. +\version "2.7.39" % necessary for upgrading to future LilyPond versions. diff --git a/ly/accordion-defs-init.ly b/ly/accordion-defs-init.ly index 3167a35faa..75f7d518d6 100644 --- a/ly/accordion-defs-init.ly +++ b/ly/accordion-defs-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" % Symbols needed to print accordion music % % 2' = T diff --git a/ly/bagpipe.ly b/ly/bagpipe.ly index d3794ba34e..edced01ded 100755 --- a/ly/bagpipe.ly +++ b/ly/bagpipe.ly @@ -6,10 +6,10 @@ Sven Axelsson, the Murray Pipes & Drums of Gothenburg (http://www.murrays.nu) - $Id: bagpipe.ly,v 1.11 2006/03/16 13:28:24 hanwen Exp $ + $Id: bagpipe.ly,v 1.12 2006/03/16 14:39:46 hanwen Exp $ %} -\version "2.7.36" +\version "2.7.39" % Notes of the scale of the Great Highland Bagpipe. Extra high notes for bombarde. % Flat notes used mainly in some modern music. diff --git a/ly/catalan.ly b/ly/catalan.ly index 3eb707988d..01c7fd5f2a 100644 --- a/ly/catalan.ly +++ b/ly/catalan.ly @@ -74,6 +74,6 @@ pitchnamesCatalan = #`( pitchnames = \pitchnamesCatalan -\version "2.7.36" +\version "2.7.39" #(ly:parser-set-note-names parser pitchnames) diff --git a/ly/chord-modifiers-init.ly b/ly/chord-modifiers-init.ly index eaa843f7f4..24a02b95ec 100644 --- a/ly/chord-modifiers-init.ly +++ b/ly/chord-modifiers-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" chordmodifiers = #default-chord-modifier-list diff --git a/ly/declarations-init.ly b/ly/declarations-init.ly index 629b86169a..f60c9f4578 100644 --- a/ly/declarations-init.ly +++ b/ly/declarations-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" %% < 1.8 compatibility switch #(ly:set-option 'old-relative) diff --git a/ly/deutsch.ly b/ly/deutsch.ly index 13c45c00c1..b9f619951f 100644 --- a/ly/deutsch.ly +++ b/ly/deutsch.ly @@ -63,6 +63,6 @@ pitchnamesDeutsch = #`( pitchnames = \pitchnamesDeutsch -\version "2.7.36" +\version "2.7.39" #(ly:parser-set-note-names parser pitchnames) diff --git a/ly/drumpitch-init.ly b/ly/drumpitch-init.ly index 43ebbebe70..df947ead4d 100644 --- a/ly/drumpitch-init.ly +++ b/ly/drumpitch-init.ly @@ -1,5 +1,5 @@ -\version "2.7.36" +\version "2.7.39" drumPitchNames = #'((acousticbassdrum . acousticbassdrum) diff --git a/ly/dynamic-scripts-init.ly b/ly/dynamic-scripts-init.ly index c04e909ac6..a0686e2e9a 100644 --- a/ly/dynamic-scripts-init.ly +++ b/ly/dynamic-scripts-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" % % declare the standard dynamic identifiers. diff --git a/ly/english.ly b/ly/english.ly index 759771d59b..67820fffb5 100644 --- a/ly/english.ly +++ b/ly/english.ly @@ -87,7 +87,7 @@ pitchnamesEnglish = #`( pitchnames = \pitchnamesEnglish -\version "2.7.36" +\version "2.7.39" #(ly:parser-set-note-names parser pitchnames) diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 0d213efe7f..59f8d7c0eb 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" \context { \name "Global" diff --git a/ly/espanol.ly b/ly/espanol.ly index 8b15b99f5a..b1cd2e71a9 100644 --- a/ly/espanol.ly +++ b/ly/espanol.ly @@ -58,6 +58,6 @@ pitchnamesEspanol = #`( pitchnames = \pitchnamesEspanol -\version "2.7.36" +\version "2.7.39" #(ly:parser-set-note-names parser pitchnames) diff --git a/ly/generate-documentation.ly b/ly/generate-documentation.ly index 0d21d84236..ebb1ce8f7f 100644 --- a/ly/generate-documentation.ly +++ b/ly/generate-documentation.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" % % Running LilyPond on this file generates the documentation diff --git a/ly/generate-interface-doc-init.ly b/ly/generate-interface-doc-init.ly index 73c8c9d935..8f090349e3 100644 --- a/ly/generate-interface-doc-init.ly +++ b/ly/generate-interface-doc-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" % % Running LilyPond on this file generates the short interface doc diff --git a/ly/grace-init.ly b/ly/grace-init.ly index dec071f215..0f31f45815 100644 --- a/ly/grace-init.ly +++ b/ly/grace-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" startGraceMusic = { diff --git a/ly/gregorian-init.ly b/ly/gregorian-init.ly index fccaa43b45..2719813e92 100644 --- a/ly/gregorian-init.ly +++ b/ly/gregorian-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" %%%%%%%% %%%%%%%% shortcuts common for all styles of gregorian chant notation diff --git a/ly/init.ly b/ly/init.ly index 24e53f8baa..71633013a6 100644 --- a/ly/init.ly +++ b/ly/init.ly @@ -7,7 +7,7 @@ #(define-public midi-debug #f) -\version "2.7.36" +\version "2.7.39" \include "declarations-init.ly" diff --git a/ly/italiano.ly b/ly/italiano.ly index ae7e6e8815..e7ae81ec15 100644 --- a/ly/italiano.ly +++ b/ly/italiano.ly @@ -86,6 +86,6 @@ pitchnamesItaliano = #`( pitchnames = \pitchnamesItaliano -\version "2.7.36" +\version "2.7.39" #(ly:parser-set-note-names parser pitchnames) diff --git a/ly/midi-init.ly b/ly/midi-init.ly index 1c55a3eeb2..a2a65b51cd 100644 --- a/ly/midi-init.ly +++ b/ly/midi-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" \midi { \tempo 4=60 \include "performer-init.ly" diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index d096f1094a..a76b928603 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -1,6 +1,6 @@ % -*-Scheme-*- -\version "2.7.36" +\version "2.7.39" %% need SRFI-1 filter diff --git a/ly/nederlands.ly b/ly/nederlands.ly index 1871daed02..5ede11b8af 100644 --- a/ly/nederlands.ly +++ b/ly/nederlands.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" %{ common dutch names for notes. es means flat, is means sharp diff --git a/ly/norsk.ly b/ly/norsk.ly index cb96886152..fe633d24fb 100644 --- a/ly/norsk.ly +++ b/ly/norsk.ly @@ -105,6 +105,6 @@ pitchnamesNorsk = #`( pitchnames =\pitchnamesNorsk -\version "2.7.36" +\version "2.7.39" #(ly:parser-set-note-names parser pitchnames) diff --git a/ly/paper-defaults.ly b/ly/paper-defaults.ly index 94f5ea6a6d..41c846feab 100644 --- a/ly/paper-defaults.ly +++ b/ly/paper-defaults.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" \paper { diff --git a/ly/params-init.ly b/ly/params-init.ly index 90d21ecce2..f4f62b0e02 100644 --- a/ly/params-init.ly +++ b/ly/params-init.ly @@ -1,2 +1,2 @@ -\version "2.7.36" +\version "2.7.39" diff --git a/ly/performer-init.ly b/ly/performer-init.ly index 538a8ea294..d22c422775 100644 --- a/ly/performer-init.ly +++ b/ly/performer-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" %% %% setup for Request->Element conversion. diff --git a/ly/portugues.ly b/ly/portugues.ly index f4477b1db1..7f174c3bb8 100644 --- a/ly/portugues.ly +++ b/ly/portugues.ly @@ -86,6 +86,6 @@ pitchnamesPortuguese = #`( pitchnames = \pitchnamesPortuguese -\version "2.7.36" +\version "2.7.39" #(ly:parser-set-note-names parser pitchnames) diff --git a/ly/property-init.ly b/ly/property-init.ly index c672a75e1d..73c3357d7c 100644 --- a/ly/property-init.ly +++ b/ly/property-init.ly @@ -1,6 +1,6 @@ % property-init.ly -\version "2.7.36" +\version "2.7.39" stemUp = \override Stem #'direction = #UP stemDown = \override Stem #'direction = #DOWN diff --git a/ly/scale-definitions-init.ly b/ly/scale-definitions-init.ly index 3bbcb2cfcf..1ca80b1004 100644 --- a/ly/scale-definitions-init.ly +++ b/ly/scale-definitions-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" major = #`( diff --git a/ly/script-init.ly b/ly/script-init.ly index 38ae4547f5..68d4de9d9a 100644 --- a/ly/script-init.ly +++ b/ly/script-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" % code char abbreviations diff --git a/ly/spanners-init.ly b/ly/spanners-init.ly index ab810296a2..d2493903c9 100644 --- a/ly/spanners-init.ly +++ b/ly/spanners-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" startGroup = #(make-span-event 'NoteGroupingEvent START) stopGroup = #(make-span-event 'NoteGroupingEvent STOP) diff --git a/ly/suomi.ly b/ly/suomi.ly index 74af495aed..1cdf637b8b 100644 --- a/ly/suomi.ly +++ b/ly/suomi.ly @@ -48,6 +48,6 @@ pitchnamesSuomi = #`( pitchnames = \pitchnamesSuomi -\version "2.7.36" +\version "2.7.39" #(ly:parser-set-note-names parser pitchnames) diff --git a/ly/svenska.ly b/ly/svenska.ly index e2a2c478a5..4c07f68680 100644 --- a/ly/svenska.ly +++ b/ly/svenska.ly @@ -42,6 +42,6 @@ pitchnamesSvenska = #`( ) pitchnames = \pitchnamesSvenska -\version "2.7.36" +\version "2.7.39" #(ly:parser-set-note-names parser pitchnames) diff --git a/ly/titling-init.ly b/ly/titling-init.ly index fff5022141..26bca808c8 100644 --- a/ly/titling-init.ly +++ b/ly/titling-init.ly @@ -1,4 +1,4 @@ -\version "2.7.36" +\version "2.7.39" slashSeparator = \markup { \hcenter diff --git a/ly/vlaams.ly b/ly/vlaams.ly index 7020954b55..7207ea964a 100644 --- a/ly/vlaams.ly +++ b/ly/vlaams.ly @@ -1,4 +1,4 @@ -\version "2.7.36" %hier stond 2.1.36, mocht ik dat wel veranderen? +\version "2.7.39" %hier stond 2.1.36, mocht ik dat wel veranderen? %{ diff --git a/python/convertrules.py b/python/convertrules.py index 457616e0dd..0fa0cdae7b 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -2760,6 +2760,7 @@ conversions.append (((2, 7, 32), conv, """debug-beam-quanting -> debug-beam-scoring""")) + def conv (str): str = re.sub ('def-music-function', 'define-music-function', str) str = re.sub ('def-markup-command', 'define-markup-command', str) @@ -2767,3 +2768,7 @@ def conv (str): conversions.append (((2, 7, 36), conv, """def-(music-function|markup-command) -> define-(music-function|markup-command)""")) + + +conversions.append (((2, 7, 39), lambda x: x, + "Minimum version for 2.8"))