diff options
Diffstat (limited to 'color.lisp')
-rw-r--r-- | color.lisp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/color.lisp b/color.lisp new file mode 100644 index 0000000..d9ed800 --- /dev/null +++ b/color.lisp @@ -0,0 +1,28 @@ +(in-package #:color) + +(defun hsl->rgb (h s l) + (let* ((c (* (- 1 (abs (- (* 2 l) 1))) s)) + (x (* c (- 1 (abs (- (mod (/ h 60) 2) 1))))) + (m (- l (/ c 2))) + (r m) + (g m) + (b m)) + (cond ((<= 0 h 59) + (incf r c) + (incf g x)) + ((<= 60 h 119) + (incf r x) + (incf g c)) + ((<= 120 h 179) + (incf g c) + (incf b x)) + ((<= 180 239) + (incf g x) + (incf b c)) + ((<= 240 299) + (incf r x) + (incf b c)) + ((<= 300 359) + (incf r c) + (incf b x))) + (values r g b))) |