|
From: | David Nalesnik |
Subject: | Re: again: problem with hide curves |
Date: | Fri, 21 Mar 2014 08:11:25 -0500 |
Dear community,I have a problem with the functionhideCurvesFrom 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)))
#}))
[Prev in Thread] | Current Thread | [Next in Thread] |