From ed3e5abd8003297e02e3f90dc8755e33a6619135 Mon Sep 17 00:00:00 2001 From: Paul Morris Date: Thu, 26 Nov 2015 08:11:37 -0500 Subject: [PATCH 1/1] Implement rounded-box whiteout style --- Documentation/changes.tely | 23 ++++++++++++++------ input/regression/whiteout-lower-layers.ly | 26 +++++++++++++++++------ input/regression/whiteout.ly | 13 +++++++++--- scm/define-grob-properties.scm | 4 ++-- scm/define-markup-commands.scm | 12 +++++++++-- scm/stencil.scm | 12 +++++++---- 6 files changed, 65 insertions(+), 25 deletions(-) diff --git a/Documentation/changes.tely b/Documentation/changes.tely index bc0807624b..24e973e4fd 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -96,19 +96,28 @@ 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 +@code{rounded-box} 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 diff --git a/input/regression/whiteout-lower-layers.ly b/input/regression/whiteout-lower-layers.ly index 8549cbc783..15c59e5770 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 } diff --git a/input/regression/whiteout.ly b/input/regression/whiteout.ly index 7e10de9727..543d94f369 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 diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index db5b2e1d7b..5017128901 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -1148,8 +1148,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 -@code{whiteout} background. Available are @code{'outline} and the -default @code{'box}.") +@code{whiteout} background. Available are @code{'outline}, +@code{'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 diff --git a/scm/define-markup-commands.scm b/scm/define-markup-commands.scm index 67bc76c3a0..362080ed9b 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 { @@ -828,6 +829,13 @@ approximates the outline of the markup. \\override #'(thickness . 1.5) \\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 diff --git a/scm/stencil.scm b/scm/stencil.scm index d2fad841cb..d76c848100 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}, -- 2.39.2