Update of /project/gsharp/cvsroot/gsharp In directory common-lisp.net:/tmp/cvs-serv6462
Modified Files: drawing.lisp Log Message: Improved the calculation of the left and right bulge for clusters with suspended notes.
Date: Tue Dec 6 17:36:03 2005 Author: rstrandh
Index: gsharp/drawing.lisp diff -u gsharp/drawing.lisp:1.50 gsharp/drawing.lisp:1.51 --- gsharp/drawing.lisp:1.50 Mon Dec 5 06:53:30 2005 +++ gsharp/drawing.lisp Tue Dec 6 17:36:03 2005 @@ -161,9 +161,13 @@ (/ (text-size pane (map 'string 'code-char (text element))) 2)))
(defmethod left-bulge ((element cluster) pane) - (+ (- (loop for note in (notes element) - when (final-accidental note) - minimize (final-relative-accidental-xoffset note))) + (+ (max (- (loop for note in (notes element) + when (final-accidental note) + minimize (final-relative-accidental-xoffset note))) + (if (and (eq (final-stem-direction element) :down) + (element-has-suspended-notes element)) + (score-pane:staff-step 3) + (score-pane:staff-step 0))) (score-pane:staff-step 2)))
(defmethod right-bulge ((element element) pane) @@ -174,7 +178,10 @@ (/ (text-size pane (map 'string 'code-char (text element))) 2)))
(defmethod right-bulge ((element cluster) pane) - (score-pane:staff-step 2)) + (if (and (eq (final-stem-direction element) :up) + (element-has-suspended-notes element)) + (score-pane:staff-step 5) + (score-pane:staff-step 2)))
;;; As it turns out, the spacing algorithm would be very complicated ;;; if we were to take into account exactly how elements with