In the course of fixing a replay problem in with-room-for-graphics I took it upon myself to rewrite it to be consistent with the spec and the Franz manual, but now I'm thoroughly confused, especially by the menu drawing example. I had believed that the origin of the local coordinate system would be placed at the current cursor, possibly offset vertically by the height (if supplied) or by the maximum y value in the first quadrant case, even if this would result in some output with negative x coordinates being lost of the left edge of the screen. But that means that the menu example in the Franz manual would lose the North and West points of the compass, which can't be right.
Can people with classic CLIM try this function in a listener (I believe classic CLIM has such a thing) and try (draw-compass *standard-output* 'symbol t) and (draw-compass *standard-output* nil)? I would like to know if the entire compass is visible and if it overlaps other graphics in the output stream.
(defun draw-compass (stream &optional (type 'symbol) (quadrant nil)) (labels ((draw-compass-point (stream type symbol x y) (clim:with-output-as-presentation (stream symbol type) (clim:draw-text* stream (symbol-name symbol) x y :align-x :center :align-y :center :text-style '(:sans-serif :roman :large))))) (clim:with-room-for-graphics (stream :first-quadrant quadrant) (clim:draw-line* stream 0 25 0 -25 :line-thickness 2) (clim:draw-line* stream 25 0 -25 0 :line-thickness 2) (dolist (point '((n 0 -30) (s 0 30) (e 30 0) (w -30 0))) (apply #'draw-compass-point stream type point)))))
Thanks a lot, Tim