X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Foutput-lib.scm;h=70e3ba3eeb07885ff46475ec6f20b2a841dd01f8;hb=0e13fe23a0698ae81b9e618b15841b8a88919ed7;hp=5f257844542297c5924a0f8e12804310c3a6756f;hpb=e93c49566397f1f655f8081cadc4e18feaab8d9b;p=lilypond.git diff --git a/scm/output-lib.scm b/scm/output-lib.scm index 5f25784454..70e3ba3eeb 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -72,16 +72,20 @@ (ly:duration-log (ly:event-property (event-cause grob) 'duration))) -(define-public (stem::length val) - (lambda (grob) - (let* ((d (ly:grob-property grob 'direction)) - (ss (ly:staff-symbol-staff-space grob)) - (beg (ly:stem::calc-stem-begin-position grob)) - (y1 (* beg (* 0.5 ss))) - (y2 (* ((if (eqv? d DOWN) - +) beg val) (* 0.5 ss)))) - (if (eqv? d DOWN) - (cons y2 y1) - (cons y1 y2))))) +(define-public (stem::length grob) + (let* ((d (ly:grob-property grob 'direction)) + (ss (ly:staff-symbol-staff-space grob)) + (beg (ly:grob-property grob 'stem-begin-position)) + (beam (ly:grob-object grob 'beam))) + (if (null? beam) + (abs (- (ly:stem::calc-stem-end-position grob) beg)) + (ly:grob-property grob 'length)))) + +(define-public (stem::pure-length grob beg end) + (let* ((d (ly:grob-property grob 'direction)) + (ss (ly:staff-symbol-staff-space grob)) + (beg (ly:grob-pure-property grob 'stem-begin-position 0 1000))) + (abs (- (ly:stem::pure-calc-stem-end-position grob 0 2147483646) beg)))) (define-public (note-head::calc-duration-log grob) (min 2