Mike Solomon [Fri, 21 Oct 2011 07:55:33 +0000 (09:55 +0200)]
Fixes issue 1951 (script accidental collision).
Scripts now use skylines to avoid accidentals and other grobs
above or below which they are positioned. This leads to finer
spacing and collision avoidance.
Mike Solomon [Fri, 21 Oct 2011 07:03:43 +0000 (09:03 +0200)]
Implements consistent beam slopes across line breaks.
This is a mostly an internal reorganization of the beam code that
has several concrete impacts on the way beam slopes are calculated:
* ly:beam::calc-least-squares-positions, ly:beam::calc-slope-damping,
and ly:beam::shift-region-to-valid are now all instance methods of
Beam_scoring_problem and thus no longer open to the users.
* by being internal methods, these functions all use the same information
(x positions of stems, stem infos, etc.) stored in private variables.
* this sharing of information allows for broken beams to share information
between their parts, which leads to the consistent slope calculation
Additionally, ly:beam::quanting, which used to take the arguments of
a grob and a pair of positions, now only takes the grob, as it is
the sole generator of positions. All of the functions in layout-beam.scm
that relied on multiple Scheme callbacks being chained now only use this
function.
To turn on this feature, use \override Beam #'consistent-slope = ##t.
Mike Solomon [Sat, 15 Oct 2011 09:47:37 +0000 (11:47 +0200)]
Fixes issue 307 (intersection between slurs and extra objects).
Does this by increasing the slur region based on the height of the
extremal extra encompass object plus a padding controled by
encompass-object-range-overshoot.
Write .dep files containing make dependency rules for .texi and .itexi files.
They allow to simply type `make' to process the doc after changing an included
file and have the manuals updated with the minimum amount of processing.
These .dep files are generated by recursively scanning for lines starting with
@include in the .texi files, and looking up these included files within the
include directories that we pass to texinfo. The same is done for .itexi files.
The .dep files are included into the build by stepmake/generic-targets.make.
With this we can clean up Documentation/GNUmakefile a bit:
- Remove the previous apparently unsuccessfull attempt at tracking
dependencies with a wildcard, and
- Remove dependencies that are caught automatically: only generated files
need an explicit dependency, which weblinks.itexi is an example, thus
- Add the explicit dependency for weblinks.itexi.
Joe Neeman [Sat, 4 Jun 2011 18:13:31 +0000 (21:13 +0300)]
Several fixes for annotate-spacing.
- Fixes annotate-spacing to use the new spacing names.
- Annotates spacing between staves as well as spacing between systems.
- Fixes some collisions between annotations.
- Padding (between systems, titles and staves) is properly annotated,
with the annotation occuring at the horizontal position where the
collision would actually happen. If the padding is the cause of the
vertical spacing, it is highlighted in green.
Patrick Schmidt [Fri, 7 Oct 2011 02:32:46 +0000 (20:32 -0600)]
musicxml2ly: title and subtitle (issue 1913), miscellaneous
musicxml2ly: titles (fixes issue 1913), tagline, conversion-info, <source>,
midi-cmd-line-option, center-column long instrument names
1) if XML: <work-title>bli</work-title> AND <movement-title>bla
</movement-title> --> LilyPond: title = bla subtitle = bli
2) the tagline of a piece engraved by LilyPond should not contain any
information as to the encoding software of the .xml file. The standard
Lilypond-tagline should be used.
3) the conversion info should contain the name of the conversion tool
4) the <source>-element is converted to a custom LilyPond-variable
named "source" in the header. (it is usually used for publishing
information)
5) a command line option for a midi block was added
6) multi-lined instrument names are now typeset in center-columns
7) the <miscellaneous>-element is currently translated into a header-
variable "texidoc" which is important for the documentation. I'd suggest
to call it "miscellaneous" by default and call it "texinfo" when
activated via a command line option. (Not implemented yet)
MIDI volume can exceed maximum value (fix 1938)
make Dynamic performer respect midiMinimumVolume
and midiMaximumVolume, also with (de)crescendi
which aren't terminated by absolute dynamic mark.
Mike Solomon [Wed, 5 Oct 2011 07:56:40 +0000 (09:56 +0200)]
Moves all functions related to the `position' property of beam to beam-quanting.cc.
This cosmetic fix is the second step towards consistent slopes after the
renaming of variables in beam-quanting.cc, allowing reviewers to see
the diffs between functions in this file alone.
Mike Solomon [Sat, 1 Oct 2011 18:05:12 +0000 (20:05 +0200)]
Fixes the reading of the positions property in tuplet-number.cc.
Positions can theoretically be "empty" if the left is higher than
the right. Thus, to find its center, we don't use the interval
center function and instead find the center manually.
Mike Solomon [Sat, 1 Oct 2011 14:40:28 +0000 (16:40 +0200)]
Improves horizontal spacing of vertical axis groups that span bars traverse.
Fixes issue 1846.
This patch introduces the idea of a pure-from-neighbor-interface.
The interface provides support for grobs whose pure height is difficult
to estimate (any grob that crosses staffs likely suffers from this)
by allowing for the creation of spacing "stubs" in the crossed
vertical axis groups. These stubs take their pure heights from their
neighbors. So long as one knows that a grob fully crosses a vertical
axis group and the grob should take up the full vertical space of this
axis group for its rank, using approximations of pure height's from the
grob's neighbors ensures that it will be as tall as the rest of the
axis group without triggering a vertical alignment.
Initially I intended to write about the LILYPOND_LOGLEVEL
and LILYPOND_BOOK_LOGLEVEL environment variables there, but
then changed my mind and documented them directly with the
--loglevel and --lily-loglevel options.
Mike Solomon [Thu, 29 Sep 2011 09:50:32 +0000 (11:50 +0200)]
Adds convert-ly rules for the Flag grob.
All Stem properties that are moved to Flag are now changed to Flag
properties. Additionally, Stem grobs' being overriden and reverted
to and from transparent triggers the same overrides and reverts with
Flags.
Fix 1477: Update regtests to suppress expected warnings
If a file contains (ly:expect-warning ....), the corresponding warning
string will be added to a list of expected warnings. If the corresponding
warning (or erro) is triggered, it will not be printed to stderr, but the
string will be removed from the list. So, each ly:expect-warning, suppresses
exactly one occurrence of the warning. To suppress a warning multiple times,
call ly:expect-warning multiple times.
After one file is processed, the list of expected warnings is checked.
If it is not empty, it means that an expected warning was not triggered,
which might be a bug. So we print out a warning message about this fact.
This allows the regtests to check proper warning messages, without
polluting the console output with those warning messages.
All warnings that are actually printed in the regtests are a bug.
For translated error message, there are two approaches: If the warning
is created from scheme, simply use
(ly:expect-warning (_ "msg with ~a") "args")
If the message is triggered from C++, the translated string is in printf
syntax, so we need to translate that and then convert it into a format
string for Scheme. This can be done with the new function
ly:translate-cpp-warning-scheme instead of _:
(ly:expect-warning (ly:translate-cpp-warning-scheme "msg with %s") "args")
This patch also adapts all regtests that are supposed to print warnings
to this new approach. After this patch is applied, the only warnings/errors
that are printed out by a regtest run are warnings/errors that should
NOT be there (with the exception of warn-expected-warning-missing.ly and
safe.ly).