* lily/tuplet-bracket.cc (after_line_breaking): don't suicide if
columns is empty
* lily/tuplet-engraver.cc (finalize): new function. Reset right
bounds to currentCommandColumn for the last step.
(start_translation_timestep): if tupletFullLength is set, set
bound to Paper Column
* lily/spacing-loose-columns.cc (set_loose_columns): space a whole
clique of loose columns, eg. a set of grace notes in strict
notespacing.
* input/regression/spacing-strict-spacing-grace.ly: new file.
* lily/spacing-determine-loose-columns.cc: new file.
* input/regression/spacing-strict-notespacing.ly: new file.
* lily/spacing-spanner.cc (generate_springs): rename from
do_measure.
(generate_pair_spacing): new function.
(init, generate_pair_spacing): set between-cols for floating
nonmusical columns.
* lily/tuplet-bracket.cc (print): on the left, the overshoot is
relative to the right edge of the prefatory matter.
* lily/key-engraver.cc (create_key): always print a cancellation
for going to C-major/A-minor, regardless of printKeyCancellation.
(create_key): remove typecheck for visibility. This fixes key
signature not being printed.
(create_key): always print a cancellation
for going to C-major/A-minor, regardless of printKeyCancellation.
(create_key): remove typecheck for visibility. This fixes key
signature not being printed.
* lily/spacing-determine-loose-columns.cc: new file.
* input/regression/spacing-strict-notespacing.ly: new file.
* lily/spacing-spanner.cc (generate_springs): rename from
do_measure.
(generate_pair_spacing): new function.
(init, generate_pair_spacing): set between-cols for floating
nonmusical columns.
* lily/spaceable-grob.cc (get_spring): new function.
* lily/tuplet-bracket.cc (print): on the left, the overshoot is
relative to the right edge of the prefatory matter.
* lily/beam.cc (print): read break-overshoot to determine where to
stop/start broken beams.
Graham Percival [Thu, 4 Aug 2005 09:58:13 +0000 (09:58 +0000)]
Added Sven Axelsson as a contributor for his bagpipe work. Yes, this means
that he's listed under CONTRIBUTORS and PATRONS, but IMO if you do both,
then you deserve to get listed twice. (contributor/bugfix/suggestions are
different; there's a clear hierarchy there)
Mats Bengtsson [Wed, 3 Aug 2005 14:26:32 +0000 (14:26 +0000)]
* Documentation/user/lilypond-book.itely (An example of a
musicological document): Added flag -o to dvips for people who use
the default setting in teTeX where output is sent to the printer.
* lily/context.cc (where_defined): also assign value in
where_defined().
* lily/bezier.cc (get_other_coordinate): use curve_coordinate
(curve_coordinate): new function
* flower/include/parray.hh (binsearch): add lo,hi range to arguments.
* lily/simple-spacer.cc (add_columns): only add rods between
column i and begin/end if keep-inside-line is set (this repleces
allow-outside-line as default)
Nicolas Sceaux [Fri, 22 Jul 2005 18:39:34 +0000 (18:39 +0000)]
* scm/display-lily.scm: new file. Define a `display-lily-music'
function, that displays the music expression given as an argument,
using LilyPond notation.
* scm/define-music-display-methods.scm: new file. Implementation
of display methods for each music type.
* input/regression/display-lily-tests.ly: new regression test file
for `display-lily-music'.
Nicolas Sceaux [Fri, 22 Jul 2005 18:28:35 +0000 (18:28 +0000)]
* scm/display-lily.scm: new file. Define a `display-lily-music'
function, that displays the music expression given as an argument,
using LilyPond notation.
* scm/define-music-display-methods.scm: new file. Implementation
of display methods for each music type.
* ly/music-functions-init.ly (displayLilyMusic): new function for
displaying music with LilyPond notation.
* scm/define-music-types.scm (music-name-to-property-table):
* scm/clef.scm (supported-clefs): export, in order to be accessible
from the (scm display-lily) module.
* scm/page-layout.scm (default-page-music-height):
horizontalshift: new variable, shift all systems by
horizontalshift to the right, to make space for instrument names.
Heikki Junes [Wed, 20 Jul 2005 12:05:34 +0000 (12:05 +0000)]
* Documentation/index.html.in, Documentation/texinfo.css:
optimize for a 800x600 screen, increases printability
when 'fit to page' is not set and readability in wide screens.
* lily/paper-column-engraver.cc (process_music): new
file. Separate Paper_column factory from Score_engraver.
* lily/vertically-spaced-context-engraver.cc: administer
spaceable-staves property of System.
* lily/translator-group-ctors.cc: new file.
* lily/context-property.cc (make_grob_from_properties): construct
the right Grob class programmatically, looking at the class entry
for the meta property.
* lily/context.cc (measure_position): measure_position() is now a
normal function.
* lily/include/translator.hh (class Translator): rename
process_acknowledged_grobs() to process_acknowledged() and move to
Translator.
* scm/define-grobs.scm (all-grob-descriptions): add a 'class meta
field for each grob description.
* lily/include/translator-group.hh (class Translator_group):
change to base class. Separate class from Translator. This gets
rid of virtual inheritance for Engravers/Performers.
* lily/staff-performer.cc (class Staff_performer): derive
Staff_performer from Performer, not Performer_group_performer
* Lily/translator-group.cc (precomputed_recurse_over_translators):
new function.
(precompute_method_bindings): new function. Precompute lists of
Translators, so we only call methods (process_music,
start_translation_timestep, etc.) for Translators needing
it. Also: dispose of pointer-to-member-function calls.
* lily/include/pointer-group-interface.hh (extract_grob_set): new
macro. Declare a Link_array<Grob> and fill it from a grob.
(extract_item_set): idem for item.
* lily/break-substitution.cc: add header.
(fast_substitute_grob_array): rewrite for Grob_arrays.
(substitute_grob_array): idem.
* lily/bezier.cc (init_polynomial_cache): new function: cache
binom(3,j) t^j (1-t)^{3-j}
(curve_point): opps, actually use the cache for t^j , (1-t)^j!
* lily/grob-property.cc (internal_get_object): new routine.
(internal_set_object): idem. Store grob refrences in separate
alist. This saves processing time, since properties aren't
break-substituted, and the per grob namespace is smaller, both for
grobs and non-grob properties.