lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Fixes problems with glissando line breaking code pointed out by Han-


From: n . puttock
Subject: Re: Fixes problems with glissando line breaking code pointed out by Han-Wen. (issue4634119)
Date: Fri, 01 Jul 2011 17:40:37 +0000

On 2011/07/01 17:27:14, mike_apollinemike.com wrote:

Sorry - I don't completely understand what you mean.  This patch
currently uses
ly:spanner-broken-into - do you mean that it should be used in a
different way?

(define-public (glissando::make-simple-y grob)
  "Establishes the Y terminus points of the glissando based on the
pre-broken
positions of its left and right bounds."
  (let* ((siblings (ly:spanner-broken-into (ly:grob-original grob)))
         (bound-details (ly:grob-property grob 'bound-details))
         (extra-dy (ly:grob-property grob 'extra-dy 0.0)))

    (and (pair? siblings)
         (for-each (lambda (dir-sym)
                     (let* ((details (assoc-get dir-sym bound-details))
                            (dir (if (eq? dir-sym 'left) LEFT RIGHT))
                            (good-grob (if (eq? dir-sym 'left)
                                           (first siblings)
                                           (last siblings)))
                            (bound (ly:spanner-bound good-grob dir))
                            (common-y (ly:grob-common-refpoint good-grob
bound Y))
                            (y (+ (interval-center (ly:grob-extent bound
common-y Y))
                                  (/ (* dir extra-dy)
                                     2))))
                       (if (not (assoc-get 'Y details))
                           (set! bound-details (assoc-set! bound-details
dir-sym
                                                           (acons 'Y y
details))))))
                   '(left right))

         (set! (ly:grob-property grob 'bound-details) bound-details))))

http://codereview.appspot.com/4634119/



reply via email to

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