*IMPORTANT* This library is [[https://tpapp.github.io/post/orphaned-lisp-libraries/][unsupported]].

* cl-colors: a simple color library for Common Lisp

This is a very simple color library for Common Lisp, providing

1. Types for representing colors in HSV and RGB spaces.
2. Simple conversion functions between the above types (and also hexadecimal representation for RGB).
3. Some predefined colors (currently X11 color names -- of course the library does not depend on X11).

** Examples

#+BEGIN_SRC lisp
(let ((color1 (hsv 107 62/100 52/100))          ; greenish
      (color2 (rgb 14/15 26/51 14/15))  ; = violet from X11
      (color3 (as-rgb "ff9e00")))        ; from hexadecimal
  (list                                 ;
   (as-rgb color1)                    ; converting to RGB
   (rgb-combination color1 +blue+ 0.4) ; HSV autoconverted to RGB
   (hsv-combination color2 +blue+ 0.4) ; RGB autoconverted to HSV
   color3))
#+END_SRC
evaluates to
#+BEGIN_EXAMPLE
'(#S(RGB :RED 20059/75000 :GREEN 13/25 :BLUE 247/1250)
  #S(RGB :RED 0.160472 :GREEN 0.312 :BLUE 0.51856) ; observe float contagion
  #S(HSV :HUE 60.0 :SATURATION 0.6722689 :VALUE 0.96000004)
  #S(RGB :RED 1 :GREEN 158/255 :BLUE 0))
#+END_EXAMPLE

Observe the float contagion: =cl-colors= functions don't care about the type of the numbers as long as they are a subtype of =real= and within the right range.

** Documentation

This library is so simple that it does not need a lot of documentation --- just look at the docsstrings in =colors.lisp=.

** Regeneration of the X11 color names

Normally you should not need to do this, the sources already contain the autogenerated file =colornames.lisp=.  However, if for some reason you need to regenerate this, you can use =make=.  Even though the library itself does not depend on X11, regenerating this file will require the appropriate file in X11.

** Bugs and issues

Please report them on [[https://github.com/tpapp/cl-colors/issues][Github]].
