Hi Harm,
On Sat, Oct 8, 2011 at 6:38 PM, harm6 <[email protected]> wrote:
>
> Hi,
>
> trying to hack Beam stencil, I need to read out the slope of the original
> Beam. I thought reading out the y-extent, the x-extent and using the
> quotient would do the job. But I was wrong: this quotient can't be negativ.
>
>
> All the additional beams should be parallel to the originals.
>
> How to do?
>
>
Hi Harm,
I'm not sure what the best way is to determine a beam's slope, but you might
incorporate the 'position property in your function to determine whether the
slope is positive or negative:
#(define (test grob)
(let* ((beam (ly:beam::print grob))
(dir (ly:beam::calc-direction grob))
(beam-extent-x (ly:stencil-extent beam X))
(beam-length-x (interval-length beam-extent-x))
(beam-extent-y (ly:stencil-extent beam Y))
(beam-length-y (interval-length beam-extent-y))
(beam-thickness (* 0.48 (ly:output-def-lookup (ly:grob-layout
grob) 'staff-space)))
(beam-positions (ly:grob-property grob 'positions))
(beam-slant (if (> (car beam-positions) (cdr beam-positions)) -1 1))
(orig-slope (* beam-slant (/ (- beam-length-y beam-thickness)
beam-length-x)))
(markup-a (markup #:with-color red
#:beam beam-length-x
orig-slope
beam-thickness))
) ;; end of defs in let*
(ly:stencil-add
beam
(ly:stencil-translate-axis
(grob-interpret-markup grob markup-a)
(* dir 4) Y))
))
Hope this helps!
David
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user