[imago-cvs] CVS update: imago/src/image.lisp

Matthieu Villeneuve mvilleneuve at common-lisp.net
Mon Jan 3 20:45:46 UTC 2005


Update of /project/imago/cvsroot/imago/src
In directory common-lisp.net:/tmp/cvs-serv5020

Modified Files:
	image.lisp 
Log Message:
Use correct pixel types in declarations
Date: Mon Jan  3 21:45:42 2005
Author: mvilleneuve

Index: imago/src/image.lisp
diff -u imago/src/image.lisp:1.1.1.1 imago/src/image.lisp:1.2
--- imago/src/image.lisp:1.1.1.1	Thu Oct 14 00:01:46 2004
+++ imago/src/image.lisp	Mon Jan  3 21:45:41 2005
@@ -12,6 +12,7 @@
 
 (in-package :imago)
 
+
 (defclass image ()
   ()
   (:documentation "The protocol class for images."))
@@ -22,29 +23,30 @@
 (defgeneric image-width (image)
   (:documentation "Returns the width of the image."))
 
+(defgeneric image-height (image)
+  (:documentation "Returns the height of the image."))
+
+(defgeneric image-pixel (image x y)
+  (:documentation "Returns the color of the pixel at specified coordinates
+in the image."))
+
+(defgeneric (setf image-pixel) (pixel image x y)
+  (:documentation "Sets the color of the pixel at specified coordinates
+in the image."))
+
 (defgeneric pixel-size (image)
   (:documentation "Returns the number of bytes used to represent a pixel."))
 
+
 (defmethod image-width ((image image))
   (second (array-dimensions (image-pixels image))))
 
-(defgeneric image-height (image)
-  (:documentation "Returns the height of the image."))
-
 (defmethod image-height ((image image))
   (first (array-dimensions (image-pixels image))))
 
-(defgeneric image-pixel (image x y)
-  (:documentation "Returns the color of the pixel at specified coordinates
-in the image."))
-
 (defmethod image-pixel ((image image) x y)
   (aref (image-pixels image) y x))
 
-(defgeneric (setf image-pixel) (pixel image x y)
-  (:documentation "Sets the color of the pixel at specified coordinates
-in the image."))
-
 (defmethod (setf image-pixel) (pixel (image image) x y)
   (setf (aref (image-pixels image) y x) pixel))
 
@@ -52,8 +54,9 @@
   (print-unreadable-object (object stream :type t :identity t)
     (format stream "(~Dx~D)" (image-width object) (image-height object))))
 
+
 (defclass rgb-image (image)
-  ((pixels :type (simple-array (unsigned-byte 32) (* *))
+  ((pixels :type (simple-array rgb-pixel (* *))
            :reader image-pixels))
   (:documentation "The class for RGB images. Image dimensions must be
 provided to MAKE-INSTANCE, through the :WIDTH and :HEIGHT keyword
@@ -66,13 +69,15 @@
          (setf (slot-value image 'pixels) pixels))
         ((and (numberp width) (numberp height))
          (setf (slot-value image 'pixels)
-               (make-array (list height width) :initial-element 0)))
+               (make-array (list height width)
+                           :element-type 'rgb-pixel)))
         (t (error "Invalid initialization arguments"))))
 
 (defmethod pixel-size ((image rgb-image)) 4)
 
+
 (defclass grayscale-image (image)
-  ((pixels :type (simple-array (unsigned-byte 8) (* *))
+  ((pixels :type (simple-array grayscale-pixel (* *))
            :reader image-pixels))
   (:documentation "The class for grayscale images. Image dimensions must be
 provided to MAKE-INSTANCE, through the :WIDTH and :HEIGHT keyword
@@ -85,13 +90,15 @@
          (setf (slot-value image 'pixels) pixels))
         ((and (numberp width) (numberp height))
          (setf (slot-value image 'pixels)
-               (make-array (list height width) :initial-element 0)))
+               (make-array (list height width)
+                           :element-type 'grayscale-pixel)))
         (t (error "Invalid initialization arguments"))))
 
 (defmethod pixel-size ((image grayscale-image)) 2)
 
+
 (defclass indexed-image (image)
-  ((pixels :type (simple-array unsigned-byte (* *))
+  ((pixels :type (simple-array indexed-pixel (* *))
            :reader image-pixels)
    (colormap :initarg :colormap :reader image-colormap))
   (:documentation "The class for indexed images. Image dimensions must be
@@ -113,7 +120,8 @@
          (setf (slot-value image 'pixels) pixels))
         ((and (numberp width) (numberp height))
          (setf (slot-value image 'pixels)
-               (make-array (list height width) :initial-element 0)))
+               (make-array (list height width)
+                           :element-type 'indexed-pixel)))
         (t (error "Invalid initialization arguments"))))
 
 (defmethod pixel-size ((image indexed-image)) 1)




More information about the Imago-cvs mailing list