(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.
2006-03-16 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * 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):
2006-03-14 Graham Percival <gpermus@gmail.com>
- * Documentaiton/user/global.itely: small fix from mailist.
+ * Documentation/user/global.itely: small fix from mailist.
2006-03-14 Mats Bengtsson <mabe@drongo.s3.kth.se>
}
-\version "2.7.32"
+\version "2.7.39"
ignoreMelisma = \set ignoreMelismata = ##t
ignoreMelismaOff = \unset ignoreMelismata
#include "axis-group-engraver.hh"
#include "axis-group-interface.hh"
+#include "pointer-group-interface.hh"
#include "context.hh"
#include "international.hh"
#include "spanner.hh"
{
Grob *it = unsmob_grob (get_property ("currentCommandColumn"));
staffline_->set_bound (RIGHT, it);
+
+ Pointer_group_interface::set_ordered (staffline_, ly_symbol2scm ("elements"), false);
}
}
/* doc */ "Group all objects created in this context in a VerticalAxisGroup spanner.",
/* create */ "VerticalAxisGroup",
/* accept */ "",
- /* read */ "verticalExtent minimumVerticalExtent extraVerticalExtent",
+ /* read */
+ "verticalExtent "
+ "minimumVerticalExtent "
+ "extraVerticalExtent ",
+
/* write */ "");
me->self_scm ());
}
+ /* must be ordered, because Align_interface also uses
+ Axis_group_interface */
Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), e);
}
Grob_array::Grob_array ()
{
- ordered_ = false;
+ ordered_ = true;
}
vector<Grob*> &
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",
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<Grob*> const &internal_extract_grob_array (Grob const *elt, SCM symbol);
{
text_spanner_->set_bound (RIGHT,
unsmob_grob (get_property ("currentCommandColumn")));
+
+ Pointer_group_interface::set_ordered (text_spanner_, ly_symbol2scm ("elements"), false);
}
}
if (span_)
{
span_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn")));
+ Pointer_group_interface::set_ordered (span_, ly_symbol2scm ("elements"), false);
span_ = 0;
}
}
}
#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",
}
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);
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<Grob*> empty_array;
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",
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
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 ());
}
}
}
}
-\version "2.7.36" % necessary for upgrading to future LilyPond versions.
+\version "2.7.39" % necessary for upgrading to future LilyPond versions.
-\version "2.7.36"
+\version "2.7.39"
% Symbols needed to print accordion music
%
% 2' = T
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.
pitchnames = \pitchnamesCatalan
-\version "2.7.36"
+\version "2.7.39"
#(ly:parser-set-note-names parser pitchnames)
-\version "2.7.36"
+\version "2.7.39"
chordmodifiers = #default-chord-modifier-list
-\version "2.7.36"
+\version "2.7.39"
%% < 1.8 compatibility switch
#(ly:set-option 'old-relative)
pitchnames = \pitchnamesDeutsch
-\version "2.7.36"
+\version "2.7.39"
#(ly:parser-set-note-names parser pitchnames)
-\version "2.7.36"
+\version "2.7.39"
drumPitchNames =
#'((acousticbassdrum . acousticbassdrum)
-\version "2.7.36"
+\version "2.7.39"
%
% declare the standard dynamic identifiers.
pitchnames = \pitchnamesEnglish
-\version "2.7.36"
+\version "2.7.39"
#(ly:parser-set-note-names parser pitchnames)
-\version "2.7.36"
+\version "2.7.39"
\context {
\name "Global"
pitchnames = \pitchnamesEspanol
-\version "2.7.36"
+\version "2.7.39"
#(ly:parser-set-note-names parser pitchnames)
-\version "2.7.36"
+\version "2.7.39"
%
% Running LilyPond on this file generates the documentation
-\version "2.7.36"
+\version "2.7.39"
%
% Running LilyPond on this file generates the short interface doc
-\version "2.7.36"
+\version "2.7.39"
startGraceMusic = {
-\version "2.7.36"
+\version "2.7.39"
%%%%%%%%
%%%%%%%% shortcuts common for all styles of gregorian chant notation
#(define-public midi-debug #f)
-\version "2.7.36"
+\version "2.7.39"
\include "declarations-init.ly"
pitchnames = \pitchnamesItaliano
-\version "2.7.36"
+\version "2.7.39"
#(ly:parser-set-note-names parser pitchnames)
-\version "2.7.36"
+\version "2.7.39"
\midi {
\tempo 4=60
\include "performer-init.ly"
% -*-Scheme-*-
-\version "2.7.36"
+\version "2.7.39"
%% need SRFI-1 filter
-\version "2.7.36"
+\version "2.7.39"
%{
common dutch names for notes. es means flat, is means sharp
pitchnames =\pitchnamesNorsk
-\version "2.7.36"
+\version "2.7.39"
#(ly:parser-set-note-names parser pitchnames)
-\version "2.7.36"
+\version "2.7.39"
\paper {
-\version "2.7.36"
+\version "2.7.39"
-\version "2.7.36"
+\version "2.7.39"
%%
%% setup for Request->Element conversion.
pitchnames = \pitchnamesPortuguese
-\version "2.7.36"
+\version "2.7.39"
#(ly:parser-set-note-names parser pitchnames)
% property-init.ly
-\version "2.7.36"
+\version "2.7.39"
stemUp = \override Stem #'direction = #UP
stemDown = \override Stem #'direction = #DOWN
-\version "2.7.36"
+\version "2.7.39"
major = #`(
-\version "2.7.36"
+\version "2.7.39"
% code char abbreviations
-\version "2.7.36"
+\version "2.7.39"
startGroup = #(make-span-event 'NoteGroupingEvent START)
stopGroup = #(make-span-event 'NoteGroupingEvent STOP)
pitchnames = \pitchnamesSuomi
-\version "2.7.36"
+\version "2.7.39"
#(ly:parser-set-note-names parser pitchnames)
)
pitchnames = \pitchnamesSvenska
-\version "2.7.36"
+\version "2.7.39"
#(ly:parser-set-note-names parser pitchnames)
-\version "2.7.36"
+\version "2.7.39"
slashSeparator = \markup {
\hcenter
-\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?
%{
"""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)
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"))