[mcclim-cvs] CVS mcclim

ahefner ahefner at common-lisp.net
Sun Apr 13 07:32:40 UTC 2008


Update of /project/mcclim/cvsroot/mcclim
In directory clnet:/tmp/cvs-serv28221

Modified Files:
	recording.lisp 
Log Message:
Fix the zero coordinate kludge in output-record-children in the case
where a a max coordinate is less than zero, which previously resulted
in an invalid rectangle.


--- /project/mcclim/cvsroot/mcclim/recording.lisp	2008/02/03 22:54:13	1.140
+++ /project/mcclim/cvsroot/mcclim/recording.lisp	2008/04/13 07:32:40	1.141
@@ -991,23 +991,24 @@
   (remhash entry (%tree-record-children-cache record)))
 
 (defmethod output-record-children ((record standard-tree-output-record))
-  (map 'list
-       #'tree-output-record-entry-record
-       (spatial-trees:search 
-        (%record-to-spatial-tree-rectangle record)
-        ;; The form below intends to fix output-record-children not
-        ;; reporting empty children, which may lie outside the reported
-        ;; bounding rectangle of their parent.
-        ;; Assumption: null bounding records are always at the origin.
-        ;; I've never noticed this violated, but it's out of line with
-        ;; what null-bounding-rectangle-p checks, and setf of
-        ;; output-record-position may invalidate it. Seems to work, but
-        ;; fix that and try again later.
-        #+NIL
-        (rectangles:make-rectangle
-         :lows (list 0 0) #| `(,(bounding-rectangle-min-x r) ,(bounding-rectangle-min-y r)) |#
-         :highs `(,(bounding-rectangle-max-x record) ,(bounding-rectangle-max-y record)))
-       (%tree-record-children record))))
+  (with-bounding-rectangle* (min-x min-y max-x max-y) record
+    (map 'list
+         #'tree-output-record-entry-record
+         (spatial-trees:search 
+          ;; Originally, (%record-to-spatial-tree-rectangle record).
+          ;; The form below intends to fix output-record-children not
+          ;; reporting empty children, which may lie outside the reported
+          ;; bounding rectangle of their parent.
+          ;; Assumption: null bounding records are always at the origin.
+          ;; I've never noticed this violated, but it's out of line with
+          ;; what null-bounding-rectangle-p checks, and setf of
+          ;; output-record-position may invalidate it. Seems to work, but
+          ;; fix that and try again later.
+          ;; Note that max x or y may be less than zero..
+          (rectangles:make-rectangle
+           :lows  (list (min 0 min-x) (min 0 min-y))
+           :highs (list (max 0 max-x) (max 0 max-y)))
+          (%tree-record-children record)))))
 
 (defmethod add-output-record (child (record standard-tree-output-record))
   (let ((entry (make-tree-output-record-entry child (incf (last-insertion-nr record)))))




More information about the Mcclim-cvs mailing list