From mvilleneuve at common-lisp.net Wed Jan 3 10:25:28 2007 From: mvilleneuve at common-lisp.net (mvilleneuve) Date: Wed, 3 Jan 2007 05:25:28 -0500 (EST) Subject: [imago-cvs] CVS imago/src Message-ID: <20070103102528.084C424053@common-lisp.net> 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)