Hi Kieren,
Here's another try:
#(define-markup-command
(curvedArrow layout props
arrow-length ;; any number >=0
height ;; any number >=0
strait-length ;; any number >=0
)(number? number? number?)
"Draw a curved arrow with variable length and height."
(interpret-markup layout props
(markup
(#:override (cons (quote filled) #t)
(#:path 0.15
`((curveto 0 ,(+ 0.1 height) ,(+ 2.8 arrow-length) ,(+ 3.3
height) ,(+ 11.3 arrow-length) ,(+ 3.3 height))
(rlineto ,strait-length 0)
(rcurveto 0 0.4 -0.2 0.4 -0.2 0.9)
(rcurveto 0 0.1 1.2 -0.5 1.8 -0.7)
(rcurveto 0.6 -0.2 1.5 -0.4 1.5 -0.6)
(rcurveto 0.0 -0.2 -0.9 -0.3 -1.5 -0.5)
(rcurveto -0.7 -0.2 -1.8 -0.8 -1.8 -0.7)
(rcurveto 0 0.5 0.2 0.5 0.2 0.9)
(rlineto ,(* -1 strait-length) 0)
(curveto ,(+ 3.1 arrow-length) ,(+ 2.6 height) 0 ,(+ -0.1
height) 0 0)
(closepath)))))))
%% Test:
{
c'^\markup\curvedArrow #0 #0 #0
c'^\markup\curvedArrow #2 #5 #0
c'_\markup\scale #'(-.5 . -.5)\curvedArrow #10 #10 #30
}
Thickness and direction can be change bay using \scale and \rotate
Hope you'll find it useful.
Cheers,
Pierre
2017-03-07 11:23 GMT+01:00 David Kastrup <[email protected]>:
> Pierre Perol-Schneider <[email protected]> writes:
>
> > Hi Kieren,
> > As said, I worked on it yesterday but the result is not good enough.
> > Nevertheless, here's a cleaner version :
> >
> > \version "2.19"
> >
> > #(define-markup-command (curvedArrow layout props X-scale Y-scale)
> > (number? number?)
> > (interpret-markup layout props
> > (markup
> > (#:stencil
> > (make-path-stencil
> > '(M 12.0 4.0
> > C 12.0 4.0 16.0 2.5 16 2.5
> > C 16.0 2.5 12.0 1.0 12 1.0
> > C 12.2 2.0 12.0 2.0 12 2.0
> > C 8.0 2.2 2.0 1.2 0 0.0
> > C 2.0 2.0 8.0 3.0 12 3.0
> > C 12.0 3.0 12.2 3.0 12 4.0
> > Z)
> > .15 X-scale Y-scale #t)))))
>
> Huh. Maybe this kind of work could benefit a whole lot from xfig
> <http://mcj.sourceforge.net/> getting a LilyPond markup export option?
>
> --
> David Kastrup
>
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user