(defun color-rgb->hex (red green blue)
"Return hexadecimal notation for RED GREEN BLUE color.
-RED GREEN BLUE must be values between [0,1]."
+RED GREEN BLUE must be values between 0 and 1 inclusively."
(format "#%02x%02x%02x"
(* red 255) (* green 255) (* blue 255)))
(defun color-rgb->hsv (red green blue)
"Convert RED GREEN BLUE values to HSV representation.
-Hue is in radian. Saturation and values are between 0 and 1."
+Hue is in radians. Saturation and values are between 0 and 1
+inclusively."
(let* ((r (float red))
(g (float green))
(b (float blue))
(defun color-rgb->hsl (red green blue)
"Convert RED GREEN BLUE colors to their HSL representation.
-RED, GREEN and BLUE must be between [0,1]."
+RED, GREEN and BLUE must be between 0 and 1 inclusively."
(let* ((r red)
(g green)
(b blue)
(/ delta (+ max min))))
l)))
-(defun color-rgb->xyz (red green blue)
- "Converts RED GREEN BLUE colors to CIE XYZ representation.
-RED, BLUE and GREEN must be between [0,1]."
+(defun color-srgb->xyz (red green blue)
+ "Converts RED GREEN BLUE colors from the sRGB color space to CIE XYZ.
+RED, BLUE and GREEN must be between 0 and 1 inclusively."
(let ((r (if (<= red 0.04045)
(/ red 12.95)
(expt (/ (+ red 0.055) 1.055) 2.4)))
(+ (* 0.21266729 r) (* 0.7151522 g) (* 0.0721750 b))
(+ (* 0.0193339 r) (* 0.1191920 g) (* 0.9503041 b)))))
-(defun color-xyz->rgb (X Y Z)
- "Converts CIE X Y Z colors to RGB."
+(defun color-xyz->srgb (X Y Z)
+ "Converts CIE X Y Z colors to sRGB color space."
(let ((r (+ (* 3.2404542 X) (* -1.5371385 Y) (* -0.4985314 Z)))
(g (+ (* -0.9692660 X) (* 1.8760108 Y) (* 0.0415560 Z)))
(b (+ (* 0.0556434 X) (* -0.2040259 Y) (* 1.0572252 Z))))
(* yr Yr) ; Y
(* zr Zr))))) ; Z
-(defun color-rgb->lab (red green blue)
+(defun color-srgb->lab (red green blue)
"Converts RGB to CIE L*a*b*."
- (apply 'color-xyz->lab (color-rgb->xyz red green blue)))
+ (apply 'color-xyz->lab (color-srgb->xyz red green blue)))
(defun color-rgb->normalize (color)
- "Normalize a RGB color to values between [0,1]."
+ "Normalize a RGB color to values between 0 and 1 inclusively."
(mapcar (lambda (x) (/ x 65535.0)) (x-color-values color)))
-(defun color-lab->rgb (L a b)
+(defun color-lab->srgb (L a b)
"Converts CIE L*a*b* to RGB."
- (apply 'color-xyz->rgb (color-lab->xyz L a b)))
+ (apply 'color-xyz->srgb (color-lab->xyz L a b)))
(defun color-cie-de2000 (color1 color2 &optional kL kC kH)
"Computes the CIEDE2000 color distance between COLOR1 and COLOR2.