lilypond-user
[Top][All Lists]
Advanced

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

again: problem with hide curves


From: Stefan Thomas
Subject: again: problem with hide curves
Date: Fri, 21 Mar 2014 12:00:08 +0100

Dear community,
I have a problem with the function

hideCurvesFrom which I use sometimes.

When I compile the following snippet I get the error message:

Drawing systems...bogenvorzeichenkollision.ly:41:27: In procedure ly:stencil-extent in _expression_ (ly:stencil-extent this-stil 0):
bogenvorzeichenkollision.ly:41:27: Wrong type argument in position 1 (expecting Stencil): ()

I can't see, what's going wrong here.

\version "2.18.2"

#(define (parse-grob-sym grob-sym)

(let* ((grob-str (symbol->string grob-sym))

(dot-index (string-index grob-str #\.))

(context (if dot-index

(string-take grob-str dot-index)

"Voice"))

(grob (if dot-index

(substring grob-str (+ dot-index 1))

grob-str)))

(cons context grob)))


hideCurvesFrom =

#(define-music-function

(parser location grob-sym x-padding y-padding)

(symbol? pair? pair?)

(let* ((context (car (parse-grob-sym grob-sym)))

(top-grob (cdr (parse-grob-sym grob-sym))))

#{

\override Tie.layer = #-2

\override Slur.layer = #-2

\override PhrasingSlur.layer = #-2


\override $context . $top-grob #'avoid-slur = #'ignore

\override $context . $top-grob #'layer = #-1

\override $context . $top-grob #'stencil =

#(lambda (grob)

(define (get-stil-proc alist)

;; removes the first 'stencil entry from the grob-property

;; alist, implicitly created by this callback:

;; (stencil . #<procedure #f (grob)>)

;; and then retrieves the original 'stencil procedure.

(let ((stil-proc (ly:assoc-get 'stencil alist)))

(if (procedure-name stil-proc)

stil-proc

(begin (set! alist (assoc-remove! alist 'stencil))

(get-stil-proc alist)))))

(let* ((basic-props (ly:grob-basic-properties grob))

(stil-proc (get-stil-proc basic-props))

(this-stil (stil-proc grob))

(stil-x-ext (ly:stencil-extent this-stil 0))

(stil-y-ext (ly:stencil-extent this-stil 1))

(box-x-ext (cons (- (car stil-x-ext) (car x-padding))

(+ (cdr stil-x-ext) (cdr x-padding))))

(box-y-ext (cons (- (car stil-y-ext) (car y-padding))

(+ (cdr stil-y-ext) (cdr y-padding))))

(box-w (- (cdr box-x-ext) (car box-x-ext)))

(box-h (- (cdr box-y-ext) (car box-y-ext))))

(ly:stencil-add

(ly:make-stencil

(list 'embedded-ps

(ly:format

(string-append "gsave\n"

"currentpoint translate\n"

"1 setgray\n"

"~4f ~4f ~4f ~4f rectfill\n"

"grestore\n")

(car box-x-ext)

(car box-y-ext)

box-w

box-h))

stil-x-ext

stil-y-ext)

this-stil)))

#}))


revertHideCurvesFrom =

#(define-music-function

(parser location grob-sym)

(symbol?)

(let* ((context (car (parse-grob-sym grob-sym)))

(top-grob (cdr (parse-grob-sym grob-sym))))

#{

\revert Tie.layer

\revert Slur.layer

\revert PhrasingSlur.layer

\revert $context . $top-grob #'avoid-slur

\revert $context . $top-grob #'layer

\revert $context . $top-grob #'stencil

#}))



Musik = {

\override Accidental.avoid-slur = #'inside

\time 5/4

\hideCurvesFrom #'Voice.Accidental #'(0.01 . 0) #'(0 . 0)

b'4( bes''8 g''4 as'8 d'' f'' e''' cis'''~ |

cis'''1 ) r4

}


\new Staff \Musik


reply via email to

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