X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fharp-pedals.scm;h=876e392bf0597ab16e89c09626dfd86eb22ceee3;hb=a8c9e8a7ca320ab0df5fd32e717fd62cd7635ce6;hp=8f7756acbafb3e7b34e6e6038a951c66c9ed379d;hpb=963e77672b51847ae37fcba76b34af728c267e8f;p=lilypond.git diff --git a/scm/harp-pedals.scm b/scm/harp-pedals.scm index 8f7756acba..876e392bf0 100644 --- a/scm/harp-pedals.scm +++ b/scm/harp-pedals.scm @@ -2,7 +2,7 @@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; -;;;; (c) 2008 Reinhold Kainhofer +;;;; (c) 2008--2009 Reinhold Kainhofer @@ -129,12 +129,17 @@ divider) and @code{space-after-divider} (box spacing after the divider). (box-hheight (* size (/ (assoc-get 'box-height details 1.0) 2))) ; half the box-height, saves some divisions by 2 (spacebeforedivider (* size (assoc-get 'space-before-divider details 0.8))) ; full space between boxes before the first divider (spaceafterdivider (* size (assoc-get 'space-after-divider details 0.8))) ; full space between boxes - ;(spacebeforedivider (/ (+ box-width (* 8 spaceafterdivider)) 8)) + (circle-thickness (* (ly:output-def-lookup layout 'line-thickness) + (assoc-get 'circle-thickness details 0.5))) + (circle-x-padding (* size (assoc-get 'circle-x-padding details 0.15))) + (circle-y-padding (* size (assoc-get 'circle-y-padding details 0.2))) (box-x-dimensions (lambda (prev-x p space) (cons (+ prev-x space) (+ prev-x space box-width)))) (box-y-dimensions (lambda (prev-x p space) (cons (- (* p dy) box-hheight) (+ (* p dy) box-hheight)))) - (divider-stencil (lambda (xpos) (make-line-stencil line-width xpos (- 0 dy box-hheight) xpos (+ dy box-hheight)))) + (divider-stencil (lambda (xpos) (make-line-stencil line-width + xpos (- 0 dy box-hheight) + xpos (+ dy box-hheight)))) (result (let process-pedal ((remaining pedal-list) (prev-x 0) (stencils '()) @@ -150,20 +155,28 @@ divider) and @code{space-after-divider} (box spacing after the divider). (stencil (make-filled-box-stencil (box-x-dimensions prev-x p space) (box-y-dimensions prev-x p space))) - ;(circle-stencil (if circled (rounded-box-stencil stencil 0.05 0.3 0.1 ) stencil)) - (circle-stencil (if circled (circle-stencil stencil 0.05 0.2 ) stencil)) + (pedal-stencil + (if circled + (oval-stencil stencil circle-thickness + circle-x-padding circle-y-padding) + stencil)) (new-prev-x (+ prev-x space box-width))) - (process-pedal (cdr remaining) new-prev-x (cons circle-stencil stencils) #f space))) + (process-pedal (cdr remaining) new-prev-x + (cons pedal-stencil stencils) #f space))) ((#\|) ; Divider line (let* ((xpos (+ prev-x space)) (stencil (divider-stencil xpos)) (new-prev-x (+ prev-x space))) - (process-pedal (cdr remaining) new-prev-x (cons stencil stencils) circled spaceafterdivider))) + (process-pedal (cdr remaining) new-prev-x + (cons stencil stencils) + circled spaceafterdivider))) ((#\o) ; Next pedal should be circled (process-pedal (cdr remaining) prev-x stencils #t space)) (else - (ly:warning "Unhandled entry in harp-pedal: ~a" (car remaining)) - (process-pedal (cdr remaining) prev-x stencils circled space)))))) + (ly:warning "Unhandled entry in harp-pedal: ~a" + (car remaining)) + (process-pedal (cdr remaining) + prev-x stencils circled space)))))) (final-x (car result)) (stencils (cdr result))) ; Add the horizontal line and combine all stencils: