X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Flayout-beam.scm;h=59f3b2fcc6e6c61461dbdc7fb72c624e298773bb;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=f72afacf0dd1c8ffbcc5972ff760a40e375906e7;hpb=d61cf3bbdb1c6670a127ba3baddf2f04d3e34fd3;p=lilypond.git diff --git a/scm/layout-beam.scm b/scm/layout-beam.scm index f72afacf0d..59f3b2fcc6 100644 --- a/scm/layout-beam.scm +++ b/scm/layout-beam.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen +;;;; Copyright (C) 2000--2015 Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -18,57 +18,56 @@ (define check-beam-quant (lambda (posl posr) (lambda (beam posns) - "Check whether BEAM has POSL and POSR quants. POSL are (POSITION -. QUANT) pairs, where QUANT is -1 (hang), 0 (center), 1 (sit) or -2/ 2 (inter) + "Check whether BEAM has POSL and POSR quants. POSL are (POSITION +. QUANT) pairs, where QUANT is -1 (hang), 0 (center), 1 (sit) or -2/ 2 (inter) " - (let* ((thick (ly:grob-property beam 'beam-thickness)) - (layout (ly:grob-layout beam)) - (lthick (ly:output-def-lookup layout 'line-thickness)) - (staff-thick lthick) ; fixme. - (quant->coord (lambda (p q) - (if (= 2 (abs q)) - (+ p (/ q 4.0)) - (+ p (- (* 0.5 q thick) (* 0.5 q lthick)))))) - (want-l (quant->coord (car posl) (cdr posl))) - (want-r (quant->coord (car posr) (cdr posr))) - (almost-equal (lambda (x y) (< (abs (- x y)) 1e-3)))) - - (if (or (not (almost-equal want-l (car posns))) - (not (almost-equal want-r (cdr posns)))) - (begin - (ly:warning (_ "Error in beam quanting. Expected (~S,~S) found ~S.") - want-l want-r posns) - (set! (ly:grob-property beam 'annotation) - (format #f "(~S,~S)" want-l want-r)))) - posns)))) + (let* ((thick (ly:grob-property beam 'beam-thickness)) + (layout (ly:grob-layout beam)) + (lthick (ly:output-def-lookup layout 'line-thickness)) + (staff-thick lthick) ; fixme. + (quant->coord (lambda (p q) + (if (= 2 (abs q)) + (+ p (/ q 4.0)) + (+ p (- (* 0.5 q thick) (* 0.5 q lthick)))))) + (want-l (quant->coord (car posl) (cdr posl))) + (want-r (quant->coord (car posr) (cdr posr))) + (almost-equal (lambda (x y) (< (abs (- x y)) 1e-3)))) + + (if (or (not (almost-equal want-l (car posns))) + (not (almost-equal want-r (cdr posns)))) + (begin + (ly:warning (_ "Error in beam quanting. Expected (~S,~S) found ~S.") + want-l want-r posns) + (set! (ly:grob-property beam 'annotation) + (format #f "(~S,~S)" want-l want-r)))) + posns)))) (define check-beam-slope-sign (lambda (comparison) (lambda (beam posns) - "Check whether the slope of BEAM is correct wrt. COMPARISON." - (let* ((slope-sign (- (cdr posns) (car posns))) - (correct (comparison slope-sign 0))) - (if (not correct) - (begin - (ly:warning (_ "Error in beam quanting. Expected ~S 0, found ~S.") - (procedure-name comparison) slope-sign) - (set! (ly:grob-property beam 'annotation) - (format #f "~S 0" (procedure-name comparison)))) - (set! (ly:grob-property beam 'annotation) "")) - posns)))) + "Check whether the slope of BEAM is correct wrt. COMPARISON." + (let* ((slope-sign (- (cdr posns) (car posns))) + (correct (comparison slope-sign 0))) + (if (not correct) + (begin + (ly:warning (_ "Error in beam quanting. Expected ~S 0, found ~S.") + (procedure-name comparison) slope-sign) + (set! (ly:grob-property beam 'annotation) + (format #f "~S 0" (procedure-name comparison)))) + (set! (ly:grob-property beam 'annotation) "")) + posns)))) (define-public (check-quant-callbacks l r) (lambda (grob) ((check-beam-quant l r) - grob - (beam::place-broken-parts-individually grob)))) + grob + (beam::place-broken-parts-individually grob)))) (define-public (check-slope-callbacks comparison) (lambda (grob) ((check-beam-slope-sign comparison) - grob - (beam::place-broken-parts-individually grob)))) - + grob + (beam::place-broken-parts-individually grob))))