lilypond-devel
[Top][All Lists]
Advanced

[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},





reply via email to

[Prev in Thread] Current Thread [Next in Thread]