[mcclim-cvs] CVS mcclim/Examples

thenriksen thenriksen at common-lisp.net
Tue Apr 15 10:19:21 UTC 2008


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

Modified Files:
	image-viewer.lisp 
Log Message:
Improved the image-viewer demo.


--- /project/mcclim/cvsroot/mcclim/Examples/image-viewer.lisp	2008/04/14 16:46:28	1.1
+++ /project/mcclim/cvsroot/mcclim/Examples/image-viewer.lisp	2008/04/15 10:19:21	1.2
@@ -43,17 +43,23 @@
   ;; Clear the old image.
   (with-bounding-rectangle* (x1 y1 x2 y2) (sheet-region pane)    
     (draw-rectangle* (sheet-medium pane) x1 y1 x2 y2 :ink +background-ink+))
+  ;; Draw the new one, if there is one.
   (when (gadget-value pane)
-    ;; Try to ensure there is room for the new image.
-    (change-space-requirements pane
-     :height (pattern-height (gadget-value pane))
-     :width (pattern-width (gadget-value pane)))
-    ;; Draw the new one, if there is one.
-    (handler-case (draw-pattern* pane (gadget-value pane) 0 0)
-      (error ()
-        (with-text-style (pane (make-text-style nil :italic nil))
-          (draw-text* pane (format nil "Error while drawing image")
-                      0 0 :align-y :top))))))
+    (let ((image-height (pattern-height (gadget-value pane)))
+          (image-width (pattern-width (gadget-value pane))))
+      ;; Try to ensure there is room for the new image.
+      (change-space-requirements pane :height image-height :width image-width)
+      ;; Draw it in the center.
+      (handler-case (draw-pattern*
+                     pane (gadget-value pane)
+                     (/ (- (bounding-rectangle-width pane) image-width)
+                        2)
+                     (/ (- (bounding-rectangle-height pane) image-height)
+                        2))
+        (error ()
+          (with-text-style (pane (make-text-style nil :italic nil))
+            (draw-text* pane (format nil "Error while drawing image")
+                        0 0 :align-y :top)))))))
 
 (define-application-frame image-viewer ()
   ((%image-pathname :accessor image-pathname
@@ -93,6 +99,10 @@
             (format t "Image format ~A not recognized" type))))
       (format t "No such file: ~A" image-pathname)))
 
+(define-image-viewer-command (com-blank-image :name t :menu t)
+    ()
+  (setf (gadget-value (find-pane-named *application-frame* 'viewer)) nil))
+
 (defun image-viewer (&key (new-process t))
   (flet ((run ()
            (let ((frame (make-application-frame 'image-viewer)))




More information about the Mcclim-cvs mailing list