Implement rounded-box whiteout style (issue 274590043 by paulwmor...@gmail.com)

2015-11-26 Thread paulwmorris

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
+@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
 \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

--- 

Re: Implement rounded-box whiteout style (issue 274590043 by paulwmor...@gmail.com)

2015-11-26 Thread tdanielsmusic

LGTM

When this is pushed we ought to raise an issue to document whiteout
properly in the NR.

https://codereview.appspot.com/274590043/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Doc: CG - Updated the Meister's section (issue 276980044 by pkx1...@gmail.com)

2015-11-26 Thread thomasmorley65

LGTM

https://codereview.appspot.com/276980044/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Use make-bow-stencil to simplify make-parenthesis-stencil (issue 280750043 by thomasmorle...@gmail.com)

2015-11-26 Thread thomasmorley65

Reviewers: ,

Message:
please review

I'm not sure if the final interval-widen in make-parenthesis-stencil is
really necassary. It was in before, so I did it as well. My local
regtests don't show a difference, though.

Description:
Use make-bow-stencil to simplify make-parenthesis-stencil

Changes parentheses-item::calc-angled-bracket-stencils and
parenthesize-stencil accordingly

Please review this at https://codereview.appspot.com/280750043/

Affected files (+19, -60 lines):
  M scm/output-lib.scm
  M scm/stencil.scm


Index: scm/output-lib.scm
diff --git a/scm/output-lib.scm b/scm/output-lib.scm
index  
0921cdd36f00b20d54442206d3a063ed2e9d0d05..1dbf4ab7ae8c277cbf23c5fafafd5b1d05ebfcbd  
100644

--- a/scm/output-lib.scm
+++ b/scm/output-lib.scm
@@ -880,8 +880,9 @@ and duration-log @var{log}."
   (ly:stencil-aligned-to
(make-parenthesis-stencil y-extent
  half-thickness
- (- width)
- angularity)
+ width
+ angularity
+ -1)
Y CENTER)
   X RIGHT))
  (lp-x-extent
@@ -891,7 +892,8 @@ and duration-log @var{log}."
(make-parenthesis-stencil y-extent
  half-thickness
  width
- angularity)
+ angularity
+ 1)
Y CENTER)
   X LEFT))
  (rp-x-extent
Index: scm/stencil.scm
diff --git a/scm/stencil.scm b/scm/stencil.scm
index  
d2fad841cbd589d70297b49bc414e479a4a53381..9a45864f77985468d0743e6e69fb19140fe1950c  
100644

--- a/scm/stencil.scm
+++ b/scm/stencil.scm
@@ -195,76 +195,33 @@ a list of @var{paddings}."
 stil))

 (define (make-parenthesis-stencil
- y-extent half-thickness width angularity)
+ y-extent thickness width angularity orientation)
   "Create a parenthesis stencil.
 @var{y-extent} is the Y extent of the markup inside the parenthesis.
 @var{half-thickness} is the half thickness of the parenthesis.
 @var{width} is the width of a parenthesis.
+@var{orientation} is the orientation of a parenthesis.
 The higher the value of number @var{angularity},
 the more angular the shape of the parenthesis."
-  (let* ((line-width 0.1)
- ;; Horizontal position of baseline that end points run through.
- (base-x
-  (if (< width 0)
-  (- width)
-  0))
- ;; X value farthest from baseline on outside  of curve
- (outer-x (+ base-x width))
- ;; X extent of bezier sandwich centerline curves
- (x-extent (ordered-cons base-x outer-x))
- (bottom-y (interval-start y-extent))
- (top-y (interval-end y-extent))
-
- (lower-end-point (cons base-x bottom-y))
- (upper-end-point (cons base-x top-y))
-
- (outer-control-x (+ base-x (* 4/3 width)))
- (inner-control-x (+ outer-control-x
- (if (< width 0)
- half-thickness
- (- half-thickness
-
- ;; Vertical distance between a control point
- ;; and the end point it connects to.
- (offset-index (- (* 0.6 angularity) 0.8))
- (lower-control-y (interval-index y-extent offset-index))
- (upper-control-y (interval-index y-extent (- offset-index)))
-
- (lower-outer-control-point
-  (cons outer-control-x lower-control-y))
- (upper-outer-control-point
-  (cons outer-control-x upper-control-y))
- (upper-inner-control-point
-  (cons inner-control-x upper-control-y))
- (lower-inner-control-point
-  (cons inner-control-x lower-control-y)))
-  (ly:make-stencil
-(ly:stencil-expr
-  (make-bezier-sandwich-stencil
-   (list
-;; Step 1: move to lower end point.
-lower-end-point
-;; Step 2: curve through outer control points
-;; to upper end point.
-lower-outer-control-point
-upper-outer-control-point
-upper-end-point
-;; Step 3: curve through inner control points
-;; to lower end point.
-upper-inner-control-point
-lower-inner-control-point)
-   (min (* 2 half-thickness) line-width)))
-(interval-widen x-extent (/ line-width 2))
-(interval-widen y-extent (/ line-width 2)
+  (let* ((start (cons 0 (car y-extent)))
+ (stop (cons 0 (cdr y-extent)))
+ (bow-stil
+   (make-bow-stencil
+ start stop thickness angularity width orientation))
+ (x-extent (ly:stencil-extent bow-stil X)))
+(ly:make-stencil
+  (ly:stencil-expr bow-stil)
+  (interval-widen x-extent (/ line-width