David Kastrup [Wed, 15 May 2013 21:20:47 +0000 (23:20 +0200)]
Don't remove "empty" stencils in several situations
Removing empty stencils was previously necessary to avoid spurious
spacing in several circumstances that are properly catered for already
by issue 3330. Consequently, removing those special cases is now
feasible and leads to more consistent results.
David Kastrup [Fri, 10 May 2013 09:48:21 +0000 (11:48 +0200)]
Add Stencil::stack function and ly:stencil-stack
This is the base for line-forming and stacking functions. As opposed
to Stencil::add_at_edge (which is better suited for creating combined
glyphs), the metrics facilitate progress along a line.
David Kastrup [Sat, 27 Apr 2013 19:13:29 +0000 (21:13 +0200)]
Rewrite Stencil::add_at_edge to treat "spacing" stencils differently
A spacing stencil is one that is non-empty in its own axis, but empty
in the orthogonal axis. Since they don't actually have a bounding box
to convey, they don't need padding, and they don't suffer from the
equality of the lower left bounding box corner with the reference
point.
David Kastrup [Sat, 27 Apr 2013 12:43:40 +0000 (14:43 +0200)]
Let Stencil::is_empty use Box::is_empty
This is a change in semantics as an axis interval of '(1 . -1) is
considered empty as an interval, while it is not sufficient for making
a box axis empty. Things like backspaces would have similar metrics
and are different from no information at all.
David Kastrup [Sat, 27 Apr 2013 12:39:34 +0000 (14:39 +0200)]
Make Box::is_empty more selective and create an axis-specific variant
Boxes are not really "empty" just because they show negative
advancement on some axis. A box is empty if its original dimensions
of (+inf . -inf) are still unchanged for both axes. And boxes can
make an impact in one axis but not another (pretty much the definition
of spacing), so is_empty can take an axis as argument now.
distributed itself across 5 pages because page accounting was thrown
off by empty intervals. While the effects were smaller (and did not
propagate to the next page) with the less radically empty intervals
employed as extents of empty-stencil, they were still present.
David Kastrup [Wed, 8 May 2013 10:08:22 +0000 (12:08 +0200)]
Issue 3353: Don't let lilypond-invoke-editor.scm pass invalid textedit: URIs to browser
Instead, it issues an error message and aborts. Otherwise,
gnome-open textedit:nonsense
will call lilypond-invoke-editor which will call the browser which will
call lilypond-invoke-editor...
Name "OctavateEight" didn't make any sense. The grob doesn't have
to be an eight, and it doesn't describe octavation, but arbitrary
transposition (not only whole octaves). Also, the name should reflect
its affiliation with Clef grob.
The name "ClefTransposition" was also considered, but it was decided
that it would be too confusing together with clefTransposition, which
is a context property.
Mike Solomon [Wed, 8 May 2013 05:44:06 +0000 (07:44 +0200)]
Laissez-vibrer ties attached to notes with cross-staff stems are cross-staff (issue 1296)
This moves towards a model of cross staff where cross staff is defined as
"Any grob that is either not an element of a vertical axis group or whose
relative extent with respect to the vertical axis group of which it is an
element changes as a result of how far apart two or more vertical axis
groups are spaced."
The practical ramifications of this patch are that less programming errors
are triggered and there is less chance that early vertical alignment will
occur.
David Kastrup [Tue, 23 Apr 2013 06:21:30 +0000 (08:21 +0200)]
More options to make-regtest-pngs.sh, use GNU parallel for faster conversion
Also rearranges the options slightly. -p is now used for GNU parallel
instead of rendering PDFs via Cairo which is now done with -c. The
whole kaboodle is now:
Make PNG files from regtests
Usage: ./make-regtest-pngs.sh -j CPUs -o/-n
where -j specifies the number of parallel processes to run
(normally CPUs+1). e.g.:
./make-regtest-pngs.sh -j9
-p uses GNU parallel with the given job count in order to also
parallelize the conversion of PDF files to bitmaps when using -g
or -d. No attempt is made to parallelize the bitmap comparisons
since their memory requirements may be prohibitive.
-o means build an old regtest set - the PNGs go in the old-regtest-results
directory
-n means build a new regtest set - the PNGs go in the new-regtest-results
directory
-c uses PDF and the poppler library via pdftocairo for generating
bitmaps, simulating the output for Evince and other previewers
using poppler. pdftocairo may be contained in the poppler-utils
package.
-r can be used for specifying a rendering resolution. This
defaults to 101 for poppler and 300 for Ghostscript from PDF.
-g uses Ghostscript for rendering a bitmap version from the PDF,
simulating the output from printing PDF files on a GNU system, so
use a resolution appropriate for print. Antialiasing is not enabled.
-d changes the Ghostscript device used for creating PNG files
(usually png16m for direct PNG creation and pngmono for printer simulation)
Keith OHara [Thu, 28 Mar 2013 07:13:57 +0000 (00:13 -0700)]
Tempo and Rehearsal marks horizontal positioning; issue 3279
Space tempo/rehearsal marks so they do not overlap each other.
Do not use side-position interface for their initial vertical position,
because they are moved to the top-most staff after line-breaking.