[imago-cvs] CVS imago/src

mvilleneuve mvilleneuve at common-lisp.net
Wed Jan 3 10:25:28 UTC 2007


Update of /project/imago/cvsroot/imago/src
In directory clnet:/tmp/cvs-serv17826

Modified Files:
	color.lisp 
Log Message:
Added type declarations for speed optimization (thanks to Daniel Herring)

--- /project/imago/cvsroot/imago/src/color.lisp	2006/06/03 06:59:55	1.4
+++ /project/imago/cvsroot/imago/src/color.lisp	2007/01/03 10:25:27	1.5
@@ -41,41 +41,54 @@
                  color-rgb color-argb color-intensity invert-color))
 
 (defun make-color (r g b &optional (alpha #xff))
+  (declare (type (unsigned-byte 8) r)
+           (type (unsigned-byte 8) g)
+           (type (unsigned-byte 8) b)
+           (type (unsigned-byte 8) alpha))
   (the rgb-pixel (logior (ash alpha 24) (ash r 16) (ash g 8) b)))
 
 (defun color-red (color)
+  (declare (type rgb-pixel color))
   (the (unsigned-byte 8) (ldb (byte 8 16) color)))
 
 (defun color-green (color)
+  (declare (type rgb-pixel color))
   (the (unsigned-byte 8) (ldb (byte 8 8) color)))
 
 (defun color-blue (color)
+  (declare (type rgb-pixel color))
   (the (unsigned-byte 8) (ldb (byte 8 0) color)))
 
 (defun color-alpha (color)
+  (declare (type rgb-pixel color))
   (the (unsigned-byte 8) (ldb (byte 8 24) color)))
 
 (defun color-rgb (color)
+  (declare (type rgb-pixel color))
   (values (color-red color)
           (color-green color)
           (color-blue color)))
 
 (defun color-argb (color)
+  (declare (type rgb-pixel color))
   (values (color-alpha color)
           (color-red color)
           (color-green color)
           (color-blue color)))
 
 (defun color-intensity (color)
+  (declare (type rgb-pixel color))
   (multiple-value-bind (r g b)
       (color-rgb color)
     (floor (+ r g b) 3)))
 
 (defun invert-color (color)
+  (declare (type rgb-pixel color))
   (logior (lognot (logand color #x00ffffff))
           (logand color #xff000000)))
 
 (defun closest-colortable-entry (color table)
+  (declare (type rgb-pixel color))
   (multiple-value-bind (color-r color-g color-b)
       (color-rgb color)
     (multiple-value-bind (element index score)




More information about the Imago-cvs mailing list