summaryrefslogtreecommitdiff
path: root/scm/bar-line.scm
diff options
context:
space:
mode:
authorThomas Morley <thomasmorley65@gmail.com>2016-06-05 17:19:57 +0200
committerThomas Morley <thomasmorley65@gmail.com>2016-06-19 10:25:09 +0200
commit893eca274995ace99dc5ed46b2d0711cd1cb0ab0 (patch)
tree59c2f018edc6d37fe371d523dce09f76661628fc /scm/bar-line.scm
parentdcf8c371da140f17f6c5c004502a28c185e6895c (diff)
Issue 4883 Implement public definition of bar-line::draw-filled-box
bar-line::draw-filled-box calls the hereby renamed procedure bar-line::calc-blot to determine the blot diameter. It will be used in: make-simple-bar-line make-thick-bar-line make-tick-bar-line This simplifies user-customized bar-lines, which are build with ly:round-filled-box. No need to copy/paste the blot-calculating procedure anymore.
Diffstat (limited to 'scm/bar-line.scm')
-rw-r--r--scm/bar-line.scm48
1 files changed, 30 insertions, 18 deletions
diff --git a/scm/bar-line.scm b/scm/bar-line.scm
index 296d86787a..86d12d9b21 100644
--- a/scm/bar-line.scm
+++ b/scm/bar-line.scm
@@ -27,7 +27,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; helper functions for staff and layout properties
-(define (calc-blot thickness extent grob)
+(define (bar-line::calc-blot thickness extent grob)
"Calculate the blot diameter by taking @code{'rounded}
and the dimensions of the extent into account."
(let* ((rounded (ly:grob-property grob 'rounded #f))
@@ -39,9 +39,18 @@ and the dimensions of the extent into account."
((< height blot-diameter) height)
(else blot-diameter)))
0)))
-
blot))
+(define-public (bar-line::draw-filled-box x-ext y-ext thickness extent grob)
+ "Return a straight bar-line created by @code{ly:round-filled-box} looking at
+@var{x-ext}, @var{y-ext}, @var{thickness}. The blot is calculated by
+@code{bar-line::calc-blot}, which needs @var{extent} and @var{grob}.
+@var{y-ext} is not necessarily of same value as @var{extent}."
+ (ly:round-filled-box
+ x-ext
+ y-ext
+ (bar-line::calc-blot thickness extent grob)))
+
(define (get-span-glyph bar-glyph)
"Get the corresponding span glyph from the @code{span-glyph-bar-alist}.
Pad the string with @code{annotation-char}s to the length of the
@@ -250,35 +259,38 @@ is not used within the routine."
(let* ((line-thickness (layout-line-thickness grob))
(thickness (* (ly:grob-property grob 'hair-thickness 1)
line-thickness))
- (blot (calc-blot thickness extent grob))
(extent (bar-line::widen-bar-extent-on-span grob extent)))
-
- (ly:round-filled-box (cons 0 thickness)
- extent
- blot)))
+ (bar-line::draw-filled-box
+ (cons 0 thickness)
+ extent
+ thickness
+ extent
+ grob)))
(define (make-thick-bar-line grob extent)
"Draw a thick bar line."
(let* ((line-thickness (layout-line-thickness grob))
(thickness (* (ly:grob-property grob 'thick-thickness 1)
line-thickness))
- (blot (calc-blot thickness extent grob))
(extent (bar-line::widen-bar-extent-on-span grob extent)))
-
- (ly:round-filled-box (cons 0 thickness)
- extent
- blot)))
+ (bar-line::draw-filled-box
+ (cons 0 thickness)
+ extent
+ thickness
+ extent
+ grob)))
(define (make-tick-bar-line grob extent)
"Draw a tick bar line."
(let* ((half-staff (* 1/2 (ly:staff-symbol-staff-space grob)))
(staff-line-thickness (ly:staff-symbol-line-thickness grob))
- (height (interval-end extent))
- (blot (calc-blot staff-line-thickness extent grob)))
-
- (ly:round-filled-box (cons 0 staff-line-thickness)
- (cons (- height half-staff) (+ height half-staff))
- blot)))
+ (height (interval-end extent)))
+ (bar-line::draw-filled-box
+ (cons 0 staff-line-thickness)
+ (cons (- height half-staff) (+ height half-staff))
+ staff-line-thickness
+ extent
+ grob)))
(define (make-colon-bar-line grob extent)
"Draw repeat dots."