[gsharp-cvs] CVS update: gsharp/drawing.lisp

Robert Strandh rstrandh at common-lisp.net
Fri Nov 11 18:47:09 UTC 2005


Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv16724

Modified Files:
	drawing.lisp 
Log Message:
Some preventive maintenance.  Used `top' and `bot' instead of `max' and
'min' to refer to the extreme notes of a cluster. 

Date: Fri Nov 11 19:47:08 2005
Author: rstrandh

Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.16 gsharp/drawing.lisp:1.17
--- gsharp/drawing.lisp:1.16	Fri Nov 11 03:11:19 2005
+++ gsharp/drawing.lisp	Fri Nov 11 19:47:08 2005
@@ -172,20 +172,16 @@
    ;; the yoffset of the staff relative to which the end of the
    ;; stem is located
    (final-stem-yoffset :initform 0 :accessor final-stem-yoffset)
-   ;; the position, in staff steps, of the bottom not in the element.
-   ;; Rename this bot-note-pos or something like that
-   (minpos :accessor element-minpos)
+   ;; the position, in staff steps, of the bottom note in the element.
+   (bot-note-pos :accessor bot-note-pos)
    ;; the yoffset of the staff that contains the top note of
    ;; the element
-   ;; Rename this top-staff-yoffset 
-   (min-yoffset :accessor element-min-yoffset)
+   (top-note-staff-yoffset :accessor top-note-staff-yoffset)
    ;; the position, in staff steps, of the top not in the element.
-   ;; Rename this top-note-pos or something like that
-   (maxpos :accessor element-maxpos)
+   (top-note-pos :accessor top-note-pos)
    ;; the yoffset of the staff that contains the bottom note of
    ;; the element
-   ;; Rename this bot-staff-yoffset 
-   (max-yoffset :accessor element-max-yoffset)
+   (bot-note-staff-yoffset :accessor bot-note-staff-yoffset)
    (xpos :accessor element-xpos)))
 
 (define-added-mixin welement () lyrics-element
@@ -194,18 +190,10 @@
 ;;; compute and store several important pieces of information
 ;;; about an element:
 ;;;  * the position, in staff steps of the top note.
-;;;    Currently this is named element-maxpos.
-;;;    Rename it element-top-note-pos or something like that
 ;;;  * the position, in staff steps of the bottom note.
-;;;    Currently this is named element-minpos.
-;;;    Rename it element-bot-note-pos or something like that
 ;;;  * the y-offset of the staff containing the top note.
-;;;    Currently, this is called element-min-yoffset.
-;;;    Rename it element-top-note-staff-yoffset for instance
 ;;;  * the y-offset of the staff containing the bottom note.
-;;;    Currently, this is called element-max-yoffset.
-;;;    Rename it element-bot-note-staff-yoffset for instance
-(defun compute-maxpos-minpos (element)
+(defun compute-top-bot-pos-yoffset (element)
   (if (and (typep element 'cluster) (notes element))
       (let ((top-note (reduce (lambda (n1 n2)
 				(cond ((< (staff-yoffset (staff n1))
@@ -231,30 +219,30 @@
 				       n1)
 				      (t n2)))
 			      (notes element))))
-	(setf (element-maxpos element) (note-position top-note)
-	      (element-minpos element) (note-position bot-note)
-	      (element-max-yoffset element) (staff-yoffset (staff bot-note))
-	      (element-min-yoffset element) (staff-yoffset (staff top-note))))
-      (setf (element-maxpos element) 4
-	    (element-minpos element) 4
+	(setf (top-note-pos element) (note-position top-note)
+	      (bot-note-pos element) (note-position bot-note)
+	      (bot-note-staff-yoffset element) (staff-yoffset (staff bot-note))
+	      (top-note-staff-yoffset element) (staff-yoffset (staff top-note))))
+      (setf (top-note-pos element) 4
+	    (bot-note-pos element) 4
 	    ;; clearly wrong.  should be taken from element or layer.
-	    (element-min-yoffset element) 0
-	    (element-max-yoffset element) 0)))
+	    (top-note-staff-yoffset element) 0
+	    (bot-note-staff-yoffset element) 0)))
 
 (defun compute-stem-direction (element)
   (setf (final-stem-direction element)
 	(if (or (eq (stem-direction element) :up) (eq (stem-direction element) :down))
 	    (stem-direction element)
-	    (let ((top-note-pos (element-maxpos element))
-		  (bot-note-pos (element-minpos element)))
+	    (let ((top-note-pos (top-note-pos element))
+		  (bot-note-pos (bot-note-pos element)))
 	      (if (>= (- top-note-pos 4)
 		      (- 4 bot-note-pos))
 		  :down
 		  :up)))))
 
 (defun compute-stem-length (element)
-  (let* ((top-note-pos (element-maxpos element))
-	 (bot-note-pos (element-minpos element))
+  (let* ((top-note-pos (top-note-pos element))
+	 (bot-note-pos (bot-note-pos element))
 	 (top-note (reduce (lambda (n1 n2)
 			     (cond ((< (staff-yoffset (staff n1))
 				       (staff-yoffset (staff n2)))
@@ -320,8 +308,8 @@
 (defun compute-stem-directions (elements)
   (if (not (eq (stem-direction (car elements)) :auto))
       (stem-direction (car elements))
-      (let ((top-note-pos (reduce #'max elements :key #'element-maxpos))
-	    (bot-note-pos (reduce #'min elements :key #'element-minpos)))
+      (let ((top-note-pos (reduce #'max elements :key #'top-note-pos))
+	    (bot-note-pos (reduce #'min elements :key #'bot-note-pos)))
 	(if (>= (- top-note-pos 4) (- 4 bot-note-pos)) :down :up))))
 
 ;;; the dominating note among a bunch of notes is the 
@@ -346,7 +334,7 @@
 	  notes))
 
 (defun draw-beam-group (pane elements)
-  (mapc #'compute-maxpos-minpos elements)
+  (mapc #'compute-top-bot-pos-yoffset elements)
   (if (null (cdr elements))
       (when (or (typep (car elements) 'rest) (notes (car elements)))
 	(compute-appearance (car elements))
@@ -461,11 +449,11 @@
 (defun draw-ledger-lines (pane x notes)
   (score-pane:with-vertical-score-position (pane (staff-yoffset (staff (car notes))))
     (let* ((positions (mapcar #'note-position notes))
-	   (max-pos (reduce #'max positions))
-	   (min-pos (reduce #'min positions)))
-      (loop for pos from 10 to max-pos by 2
+	   (top-note-pos (reduce #'max positions))
+	   (bot-note-pos (reduce #'min positions)))
+      (loop for pos from 10 to top-note-pos by 2
 	    do (score-pane:draw-ledger-line pane x pos))
-      (loop for pos from -2 downto min-pos by 2
+      (loop for pos from -2 downto bot-note-pos by 2
 	    do (score-pane:draw-ledger-line pane x pos)))))
 
 (defun draw-flags (pane element x direction pos)
@@ -633,11 +621,7 @@
 
 (defmethod draw-element (pane (element cluster) x &optional (flags t))
   (when (notes element)
-    (let ((max-pos (element-maxpos element))
-	  (min-pos (element-minpos element))
-	  (max-yoffset (element-max-yoffset element))
-	  (min-yoffset (element-min-yoffset element))
-	  (direction (final-stem-direction element))
+    (let ((direction (final-stem-direction element))
 	  (stem-pos (final-stem-position element))
 	  (stem-yoffset (final-stem-yoffset element))
 	  (groups (group-notes-by-staff (notes element))))
@@ -652,12 +636,14 @@
 	    (draw-ledger-lines pane x group))
       (unless (eq (notehead element) :whole)
 	(if (eq direction :up)
-	    (score-pane:draw-right-stem pane x
-					(- max-yoffset (score-pane:staff-step min-pos))
-					(- stem-yoffset (score-pane:staff-step stem-pos)))
-	    (score-pane:draw-left-stem pane x
-				       (- min-yoffset (score-pane:staff-step max-pos))
-				       (- stem-yoffset (score-pane:staff-step stem-pos))))))))
+	    (score-pane:draw-right-stem
+	     pane x
+	     (- (bot-note-staff-yoffset element) (score-pane:staff-step (bot-note-pos element)))
+	     (- stem-yoffset (score-pane:staff-step stem-pos)))
+	    (score-pane:draw-left-stem
+	     pane x
+	     (- (top-note-staff-yoffset element) (score-pane:staff-step (top-note-pos element)))
+	     (- stem-yoffset (score-pane:staff-step stem-pos))))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;




More information about the Gsharp-cvs mailing list