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 2))
+ (interval-widen y-extent (/ line-width 2)))))
(define-public (parenthesize-stencil
stencil half-thickness width angularity padding)
"Add parentheses around @var{stencil}, returning a new stencil."
(let* ((y-extent (ly:stencil-extent stencil Y))
(lp (make-parenthesis-stencil
- y-extent half-thickness (- width) angularity))
+ y-extent half-thickness width angularity 1))
(rp (make-parenthesis-stencil
- y-extent half-thickness width angularity)))
+ y-extent half-thickness width angularity -1)))
(set! stencil (ly:stencil-combine-at-edge stencil X LEFT lp padding))
(set! stencil (ly:stencil-combine-at-edge stencil X RIGHT rp padding))
stencil))
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel