X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=input%2Fregression%2Fscheme-text-spanner.ly;h=71bc1ff61d9da6f4f56d664cc293db24e502026c;hb=ca342a542bee6a28662c88b497819c86f904fb40;hp=c0204d55c71865f3c35ae69d28387916725b9adf;hpb=ac45f622a1b01a089c056d021741e92933161f82;p=lilypond.git diff --git a/input/regression/scheme-text-spanner.ly b/input/regression/scheme-text-spanner.ly index c0204d55c7..71bc1ff61d 100644 --- a/input/regression/scheme-text-spanner.ly +++ b/input/regression/scheme-text-spanner.ly @@ -1,4 +1,4 @@ -\version "2.15.31" +\version "2.19.21" \header { texidoc = "Use @code{define-event-class}, scheme engraver methods, @@ -6,17 +6,13 @@ and grob creation methods to create a fully functional text spanner in scheme." } -#(define-event-class 'scheme-text-span-event - '(scheme-text-span-event - span-event - music-event - StreamEvent)) +#(define-event-class 'scheme-text-span-event 'span-event) #(define (add-grob-definition grob-name grob-entry) (let* ((meta-entry (assoc-get 'meta grob-entry)) (class (assoc-get 'class meta-entry)) (ifaces-entry (assoc-get 'interfaces meta-entry))) - (set-object-property! grob-name 'translation-type? list?) + (set-object-property! grob-name 'translation-type? ly:grob-properties?) (set-object-property! grob-name 'is-grob? #t) (set! ifaces-entry (append (case class ((Item) '(item-interface)) @@ -64,6 +60,7 @@ in scheme." (interfaces . (font-interface line-interface line-spanner-interface + outside-staff-interface side-position-interface)))))) #(define scheme-event-spanner-types @@ -71,7 +68,7 @@ in scheme." (SchemeTextSpanEvent . ((description . "Used to signal where scheme text spanner brackets start and stop.") - (types . (general-music scheme-text-span-event span-event event)) + (types . (post-event scheme-text-span-event span-event event)) )) )) @@ -100,7 +97,7 @@ start and stop.") (ly:spanner-set-bound! spanner RIGHT item))) #(define (axis-offset-symbol axis) - (if (eq? axis X) 'X-offset 'Y-offset)) + (if (eqv? axis X) 'X-offset 'Y-offset)) #(define (set-axis! grob axis) (if (not (number? (ly:grob-property grob 'side-axis))) @@ -108,68 +105,67 @@ start and stop.") (set! (ly:grob-property grob 'side-axis) axis) (ly:grob-chain-callback grob - (if (eq? axis X) + (if (eqv? axis X) ly:side-position-interface::x-aligned-side - ly:side-position-interface::y-aligned-side) + side-position-interface::y-aligned-side) (axis-offset-symbol axis))))) schemeTextSpannerEngraver = #(lambda (context) (let ((span '()) (finished '()) - (current-event '()) - (event-drul '(() . ()))) + (event-start '()) + (event-stop '())) (make-engraver (listeners ((scheme-text-span-event engraver event) - (if (= START (ly:event-property event 'span-direction)) - (set-car! event-drul event) - (set-cdr! event-drul event)))) + (if (= START (ly:event-property event 'span-direction)) + (set! event-start event) + (set! event-stop event)))) (acknowledgers ((note-column-interface engraver grob source-engraver) - (if (ly:spanner? span) - (begin - (ly:pointer-group-interface::add-grob span 'note-columns grob) - (add-bound-item span grob))) - (if (ly:spanner? finished) - (begin - (ly:pointer-group-interface::add-grob finished 'note-columns grob) - (add-bound-item finished grob))))) + (if (ly:spanner? span) + (begin + (ly:pointer-group-interface::add-grob span 'note-columns grob) + (add-bound-item span grob))) + (if (ly:spanner? finished) + (begin + (ly:pointer-group-interface::add-grob finished 'note-columns grob) + (add-bound-item finished grob))))) ((process-music trans) - (if (ly:stream-event? (cdr event-drul)) - (if (null? span) - (ly:warning "You're trying to end a scheme text spanner but you haven't started one.") - (begin (set! finished span) - (ly:engraver-announce-end-grob trans finished current-event) - (set! span '()) - (set! current-event '()) - (set-cdr! event-drul '())))) - (if (ly:stream-event? (car event-drul)) - (begin (set! current-event (car event-drul)) - (set! span (ly:engraver-make-grob trans 'SchemeTextSpanner current-event)) - (set-axis! span Y) - (set-car! event-drul '())))) + (if (ly:stream-event? event-stop) + (if (null? span) + (ly:warning "You're trying to end a scheme text spanner but you haven't started one.") + (begin (set! finished span) + (ly:engraver-announce-end-grob trans finished event-start) + (set! span '()) + (set! event-stop '())))) + (if (ly:stream-event? event-start) + (begin (set! span (ly:engraver-make-grob trans 'SchemeTextSpanner event-start)) + (set-axis! span Y) + (set! event-start '())))) ((stop-translation-timestep trans) (if (and (ly:spanner? span) - (null? (ly:spanner-bound span LEFT))) - (set! (ly:spanner-bound span LEFT) - (ly:context-property context 'currentMusicalColumn))) + (null? (ly:spanner-bound span LEFT))) + (ly:spanner-set-bound! span LEFT + (ly:context-property context 'currentMusicalColumn))) (if (ly:spanner? finished) - (begin - (if (null? (ly:spanner-bound finished RIGHT)) - (set! (ly:spanner-bound finished RIGHT) - (ly:context-property context 'currentMusicalColumn))) - (set! finished '()) - (set! event-drul '(() . ()))))) + (begin + (if (null? (ly:spanner-bound finished RIGHT)) + (ly:spanner-set-bound! finished RIGHT + (ly:context-property context 'currentMusicalColumn))) + (set! finished '()) + (set! event-start '()) + (set! event-stop '())))) ((finalize trans) (if (ly:spanner? finished) - (begin - (if (null? (ly:spanner-bound finished RIGHT)) - (set! (ly:spanner-bound finished RIGHT) - (ly:context-property context 'currentMusicalColumn))) - (set! finished '()))) + (begin + (if (null? (ly:spanner-bound finished RIGHT)) + (ly:spanner-set-bound! finished RIGHT + (ly:context-property context 'currentMusicalColumn))) + (set! finished '()))) (if (ly:spanner? span) - (begin - (ly:warning "I think there's a dangling scheme text spanner :-(") - (ly:grob-suicide! span) + (begin + (ly:warning "I think there's a dangling scheme text spanner :-(") + (ly:grob-suicide! span) (set! span '()))))))) schemeTextSpannerStart = @@ -189,11 +185,11 @@ schemeTextSpannerEnd = } } -\relative c' { +\relative { a4 b\schemeTextSpannerStart c d | \repeat unfold 20 { a4 b c d | } a4 b c\schemeTextSpannerEnd d | - \override SchemeTextSpanner #'to-barline = ##t + \override SchemeTextSpanner.to-barline = ##t a4\schemeTextSpannerStart b d c | \repeat unfold 20 { a4 b c d | } a1\schemeTextSpannerEnd |