[gsharp-cvs] CVS update: gsharp/drawing.lisp
Robert Strandh
rstrandh at common-lisp.net
Mon Dec 5 04:00:14 UTC 2005
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv1250
Modified Files:
drawing.lisp
Log Message:
Implemented the new spacing algorithm. To see the difference, load
Scores/spacetest.gsh and compare the result to that of the old
algorithm.
There are still some problems:
* We do not yet take into account the left bulge of the first
element on a bar;
* The left-bulge and right-bulge methods on a cluster do not yet
take into account the offsets of accidentals (though this is
no worse than it was with the old algorithm);
* If a measure has a single timeline, we should position it in the
middle of the measure.
I think I will leave the code for the old algorithm in there for a
while in case I discover some fundamental flaw with the new one. The
new one does look reasonable on rapsoden-sjunger.gsh though.
Date: Mon Dec 5 05:00:13 2005
Author: rstrandh
Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.47 gsharp/drawing.lisp:1.48
--- gsharp/drawing.lisp:1.47 Mon Dec 5 04:27:26 2005
+++ gsharp/drawing.lisp Mon Dec 5 05:00:13 2005
@@ -296,7 +296,7 @@
;;; eventually replace the existing compute-measure-coordinates
;;; by this one
-(defun new-compute-measure-coordinates (measure x force)
+(defun new-compute-measure-coordinates (measure x y force)
(loop with timelines = (timelines measure)
for i from 0 below (flexichain:nb-elements timelines)
for timeline = (flexichain:element* timelines i)
@@ -306,7 +306,7 @@
do (loop for element in (elements timeline)
do (setf (final-absolute-element-xoffset element) xx)))
(loop for bar in (measure-bars measure)
- do (compute-bar-coordinates bar x (size-at-force (elasticity-function measure) force))))
+ do (compute-bar-coordinates bar x y (size-at-force (elasticity-function measure) force))))
(defun compute-measure-coordinates (measure min-dist compress x y method)
(let* ((width (/ (nat-width method (measure-coeff measure) min-dist)
@@ -323,9 +323,9 @@
method
coeff min-dist))
compress))))))
- (setf (system-y-position measure) y
- (final-absolute-measure-xoffset measure) x
- (final-width measure) width)
+;; (setf (system-y-position measure) y
+;; (final-absolute-measure-xoffset measure) x
+;; (final-width measure) width)
(loop for bar in (measure-bars measure) do
(compute-bar-coordinates bar x y width)
(compute-element-x-positions bar x time-alist))))
@@ -335,19 +335,20 @@
(if (gsharp-cursor::cursors (slice bar))
(draw-bar pane bar)
(score-pane:with-light-glyphs pane (draw-bar pane bar))))
- (let ((x (final-absolute-measure-xoffset measure))
- (y (system-y-position measure))
- (width (final-width measure))
- (staves (staves (buffer (segment (layer (slice (car (measure-bars measure)))))))))
- (score-pane:draw-bar-line pane (+ x width)
- (+ y (- (score-pane:staff-step 8)))
- (+ y (staff-yoffset (car (last staves)))))))
+ (let ((first-bar (car (measure-bars measure))))
+ (let ((x (final-absolute-measure-xoffset first-bar))
+ (y (system-y-position first-bar))
+ (width (final-width first-bar))
+ (staves (staves (buffer (segment (layer (slice first-bar)))))))
+ (score-pane:draw-bar-line pane (+ x width)
+ (+ y (- (score-pane:staff-step 8)))
+ (+ y (staff-yoffset (car (last staves))))))))
;;; eventually remove the existing compute-system-coordinates
;;; and rename this one
-(defun new-compute-system-coordinates (measures x force)
+(defun new-compute-system-coordinates (measures x y force)
(loop for measure in measures
- do (new-compute-measure-coordinates measure x force)
+ do (new-compute-measure-coordinates measure x y force)
do (incf x (size-at-force (elasticity-function measure) force))))
(defun compute-system-coordinates (measures x y widths method)
@@ -398,11 +399,14 @@
(force (if (> (zero-force-size e-fun) (line-width method))
0
(force-at-size e-fun (line-width method)))))
- nil)
+ (new-compute-system-coordinates measures
+ (+ x (left-offset buffer) timesig-offset) yy
+ force)
+ )
(let ((widths (compute-widths measures method)))
- (compute-system-coordinates measures
- (+ x (left-offset buffer) timesig-offset) yy
- widths method)
+;; (compute-system-coordinates measures
+;; (+ x (left-offset buffer) timesig-offset) yy
+;; widths method)
(draw-system pane measures)
(score-pane:draw-bar-line pane x
(+ yy (- (score-pane:staff-step 8)))
More information about the Gsharp-cvs
mailing list