Function: color-rgb-to-hsl

color-rgb-to-hsl is a byte-compiled function defined in color.el.gz.

Signature

(color-rgb-to-hsl RED GREEN BLUE)

Documentation

Convert RGB colors to their HSL representation.

RED, GREEN, and BLUE should each be numbers between 0.0 and 1.0, inclusive. Return a list (HUE SATURATION LUMINANCE), where each element is between 0.0 and 1.0, inclusive.

Source Code

;; Defined in /usr/src/emacs/lisp/color.el.gz
(defun color-rgb-to-hsl (red green blue)
  "Convert RGB colors to their HSL representation.
RED, GREEN, and BLUE should each be numbers between 0.0 and 1.0,
inclusive.  Return a list (HUE SATURATION LUMINANCE), where
each element is between 0.0 and 1.0, inclusive."
  (let* ((r red)
         (g green)
         (b blue)
         (max (max r g b))
         (min (min r g b))
         (delta (- max min))
         (l (/ (+ max min) 2.0)))
    (if (= delta 0)
	(list 0.0 0.0 l)
      (let* ((s (if (<= l 0.5) (/ delta (+ max min))
		  (/ delta (- 2.0 max min))))
	     (rc (/ (- max r) delta))
	     (gc (/ (- max g) delta))
	     (bc (/ (- max b) delta))
	     (h  (mod
		  (/
		   (cond
		    ((= r max)      (- bc gc))
		    ((= g max)      (+ 2.0 rc (- bc)))
		    (t              (+ 4.0 gc (- rc))))
		   6.0)
                  1.0)))
	(list h s l)))))