[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Implement rounded-box whiteout style (issue 274590043 by address@hidden)
From: |
paulwmorris |
Subject: |
Implement rounded-box whiteout style (issue 274590043 by address@hidden) |
Date: |
Thu, 26 Nov 2015 13:49:49 +0000 |
Reviewers: ,
Message:
Please review, thanks,
-Paul
Description:
Implement rounded-box whiteout style
As suggested in issue 4504.
Includes edits to regression tests and
changes entry.
Please review this at https://codereview.appspot.com/274590043/
Affected files (+65, -25 lines):
M Documentation/changes.tely
M input/regression/whiteout.ly
M input/regression/whiteout-lower-layers.ly
M scm/define-grob-properties.scm
M scm/define-markup-commands.scm
M scm/stencil.scm
Index: Documentation/changes.tely
diff --git a/Documentation/changes.tely b/Documentation/changes.tely
index
bc0807624b36f11ceefc38ec9f3f99a3f94f8bc8..24e973e4fd4c89d5ac438acf377c8376593eb5c0
100644
--- a/Documentation/changes.tely
+++ b/Documentation/changes.tely
@@ -96,21 +96,30 @@ mus = \relative { c'4 cih d dih }
@end lilypond
@item
-A new style of whiteout that approximates the contours of a glyph's
-outline is now available using @code{whiteout-style}. The shape of the
-white background is produced from multiple displaced copies of the
-glyph. The @code{thickness} of both the new @code{outline} style and
-the default @code{box} style, as a multiple of staff-line thickness, can
-be customized.
+Two new styles of whiteout are now available. The @code{outline} style
+approximates the contours of a glyph's outline, and its shape is
+produced from multiple displaced copies of the glyph. The
address@hidden style produces a rounded rectangle shape. For all
+three styles, including the default @code{box} style, the whiteout
+shape's @code{thickness}, as a multiple of staff-line thickness, can be
+customized.
+
@lilypond[verbatim,quote]
\markup {
\combine
\filled-box #'(-1 . 15) #'(-3 . 4) #1
- \override #'(thickness . 2)
+ \override #'(thickness . 3)
\whiteout whiteout-box
}
\markup {
\combine
+ \filled-box #'(-1 . 24) #'(-3 . 4) #1
+ \override #'(style . rounded-box)
+ \override #'(thickness . 3)
+ \whiteout whiteout-rounded-box
+}
+\markup {
+ \combine
\filled-box #'(-1 . 18) #'(-3 . 4) #1
\override #'(style . outline)
\override #'(thickness . 3)
Index: input/regression/whiteout-lower-layers.ly
diff --git a/input/regression/whiteout-lower-layers.ly
b/input/regression/whiteout-lower-layers.ly
index
8549cbc783cde5c2ded54ea5550cc04749ca04ab..15c59e5770b04eee6afea06de97cfcbfec19078b
100644
--- a/input/regression/whiteout-lower-layers.ly
+++ b/input/regression/whiteout-lower-layers.ly
@@ -10,23 +10,35 @@ TimeSignature whites out the Tie but not the
StaffSymbol.
\relative {
\time 3/4
- \override Staff.StaffSymbol.layer = #4
- \once \override Tie.layer = #2
+ \override Staff.StaffSymbol.layer = 4
+ \once \override Tie.layer = 2
b'2.~
\once \override Staff.TimeSignature.whiteout = ##t
- \once \override Staff.TimeSignature.layer = #3
+ \once \override Staff.TimeSignature.layer = 3
\time 5/4
b4
}
\relative c' {
\time 3/4
- \override Staff.StaffSymbol.layer = #4
- \once \override Tie.layer = #2
+ \override Staff.StaffSymbol.layer = 4
+ \once \override Tie.layer = 2
+ b'2.~
+ \once \override Staff.TimeSignature.whiteout-style = #'rounded-box
+ \once \override Staff.TimeSignature.whiteout = 3
+ \once \override Staff.TimeSignature.layer = 3
+ \time 5/4
+ b4
+}
+
+\relative c' {
+ \time 3/4
+ \override Staff.StaffSymbol.layer = 4
+ \once \override Tie.layer = 2
b'2.~
\once \override Staff.TimeSignature.whiteout-style = #'outline
- \once \override Staff.TimeSignature.whiteout = #3
- \once \override Staff.TimeSignature.layer = #3
+ \once \override Staff.TimeSignature.whiteout = 3
+ \once \override Staff.TimeSignature.layer = 3
\time 5/4
b4
}
Index: input/regression/whiteout.ly
diff --git a/input/regression/whiteout.ly b/input/regression/whiteout.ly
index
7e10de9727be00498a693859cd563d77fe025808..543d94f369da04536a8fc13c3a88a0466871fac4
100644
--- a/input/regression/whiteout.ly
+++ b/input/regression/whiteout.ly
@@ -2,8 +2,9 @@
texidoc = "The whiteout command underlays a white background under a
markup. The shape is determined by @code{whiteout-style}. The default
-is @code{box} which produces a white rectangle. @code{outline}
-approximates the outline of the markup."
+is @code{box} which produces a rectangle. @code{rounded-box} produces
+a rounded rectangle. @code{outline} approximates the outline of the
+markup."
}
\version "2.19.32"
@@ -25,7 +26,13 @@ approximates the outline of the markup."
c
c-\markup {
\override #'(thickness . 3)
- \override #'(whiteout-style . outline)
+ \override #'(style . rounded-box)
+ \whiteout foo
+ }
+ c
+ c-\markup {
+ \override #'(thickness . 3)
+ \override #'(style . outline)
\whiteout foo
}
c
Index: scm/define-grob-properties.scm
diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm
index
b387da206ea8bfeb304950075fe779f009b7e395..c50260d6c9672a29501338e777087e597ae3453a
100644
--- a/scm/define-grob-properties.scm
+++ b/scm/define-grob-properties.scm
@@ -1147,8 +1147,8 @@ extends beyond the bounding box of the grob as a
multiple of the
staff-line thickness. The shape of the background is determined by
@code{whiteout-style}. Usually @code{#f} by default.")
(whiteout-style ,symbol? "Determines the shape of the
address@hidden background. Available are @code{'outline} and the
-default @code{'box}.")
address@hidden background. Available are @code{'outline},
address@hidden'rounded-box}, and the default @code{'box}.")
(width ,ly:dimension? "The width of a grob measured in staff
space.")
(word-space ,ly:dimension? "Space to insert between words in
Index: scm/define-markup-commands.scm
diff --git a/scm/define-markup-commands.scm b/scm/define-markup-commands.scm
index
67bc76c3a044104d087f549d8302b900869de969..362080ed9b8d72a1ede07d5d13911296b6823e9a
100644
--- a/scm/define-markup-commands.scm
+++ b/scm/define-markup-commands.scm
@@ -818,8 +818,9 @@ Rotate object with @var{ang} degrees around its center.
Provide a white background for @var{arg}. The shape of the white
background is determined by @code{style}. The default
-is @code{box} which produces a white rectangle. @code{outline}
-approximates the outline of the markup.
+is @code{box} which produces a rectangle. @code{rounded-box}
+produces a rounded rectangle. @code{outline} approximates the
+outline of the markup.
@lilypond[verbatim,quote]
\\markup {
@@ -830,6 +831,13 @@ approximates the outline of the markup.
}
\\markup {
\\combine
+ \\filled-box #'(-1 . 24) #'(-3 . 4) #1
+ \\override #'(style . rounded-box)
+ \\override #'(thickness . 3)
+ \\whiteout whiteout-rounded-box
+}
+\\markup {
+ \\combine
\\filled-box #'(-1 . 18) #'(-3 . 4) #1
\\override #'(style . outline)
\\override #'(thickness . 3)
Index: scm/stencil.scm
diff --git a/scm/stencil.scm b/scm/stencil.scm
index
d2fad841cbd589d70297b49bc414e479a4a53381..d76c84810010040675eca97d9408b9a13e1a4ea1
100644
--- a/scm/stencil.scm
+++ b/scm/stencil.scm
@@ -852,10 +852,14 @@ by the user, an appropriate default is chosen based
on @var{style}."
(let ((thick (* line-thickness
(if (number? thickness)
thickness
- (if (eq? style 'outline) 3 0)))))
- (if (eq? style 'outline)
- (stencil-whiteout-outline stil thick)
- (stencil-whiteout-box stil thick))))
+ (cond
+ ((eq? style 'outline) 3)
+ ((eq? style 'rounded-box) 3)
+ (else 0))))))
+ (cond
+ ((eq? style 'outline) (stencil-whiteout-outline stil thick))
+ ((eq? style 'rounded-box) (stencil-whiteout-box stil thick (* 2
thick)))
+ (else (stencil-whiteout-box stil thick)))))
(define-public (arrow-stencil-maker start? end?)
"Return a function drawing a line from current point to
@code{destination},
- Implement rounded-box whiteout style (issue 274590043 by address@hidden),
paulwmorris <=