Update of /project/mcclim/cvsroot/mcclim In directory clnet:/tmp/cvs-serv10361
Modified Files: recording.lisp Log Message: Fixed bug reported by Fred Gilham, [mcclim-devel] Tooltip stuff
* recording.lisp (erase-output-record): Lock the bounding rectangle to the pixel grid and add extra safety at the borders to avoid leaving fragments on the border.
--- /project/mcclim/cvsroot/mcclim/recording.lisp 2007/06/03 18:47:03 1.132 +++ /project/mcclim/cvsroot/mcclim/recording.lisp 2007/07/15 12:38:37 1.133 @@ -2048,10 +2048,20 @@ when (eq parent nil) do (return nil) when (eq parent ancestor) do (return t)))
+(defun rounded-bounding-rectangle (region) + ;; return a bounding rectangle whose coordinates have been rounded to + ;; lock into the pixel grid. Includes some extra safety to make + ;; sure antialiasing around the theoretical limits are included, too. + (with-bounding-rectangle* (x1 y1 x2 y2) region + (make-rectangle* (floor (- x1 0.5)) + (floor (- y1 0.5)) + (ceiling (+ x2 0.5)) + (ceiling (+ y2 0.5))))) + (defmethod erase-output-record (record (stream standard-output-recording-stream) &optional (errorp t)) (letf (((stream-recording-p stream) nil)) - (let ((region (bounding-rectangle record))) + (let ((region (rounded-bounding-rectangle record))) (with-bounding-rectangle* (x1 y1 x2 y2) region (if (output-record-ancestor-p (stream-output-history stream) record) (progn