\section{\module{colorsys} ---
         Conversions between color systems}

\declaremodule{standard}{colorsys}
\modulesynopsis{Conversion functions between RGB and other color systems.}
\sectionauthor{David Ascher}{da@python.net}

The \module{colorsys} module defines bidirectional conversions of
color values between colors expressed in the RGB (Red Green Blue)
color space used in computer monitors and three other coordinate
systems: YIQ, HLS (Hue Lightness Saturation) and HSV (Hue Saturation
Value).  Coordinates in all of these color spaces are floating point
values.  In the YIQ space, the Y coordinate is between 0 and 1, but
the I and Q coordinates can be positive or negative.  In all other
spaces, the coordinates are all between 0 and 1.

More information about color spaces can be found at 
\url{http://www.poynton.com/ColorFAQ.html}.

The \module{colorsys} module defines the following functions:

\begin{funcdesc}{rgb_to_yiq}{r, g, b}
Convert the color from RGB coordinates to YIQ coordinates.
\end{funcdesc}

\begin{funcdesc}{yiq_to_rgb}{y, i, q}
Convert the color from YIQ coordinates to RGB coordinates.
\end{funcdesc}

\begin{funcdesc}{rgb_to_hls}{r, g, b}
Convert the color from RGB coordinates to HLS coordinates.
\end{funcdesc}

\begin{funcdesc}{hls_to_rgb}{h, l, s}
Convert the color from HLS coordinates to RGB coordinates.
\end{funcdesc}

\begin{funcdesc}{rgb_to_hsv}{r, g, b}
Convert the color from RGB coordinates to HSV coordinates.
\end{funcdesc}

\begin{funcdesc}{hsv_to_rgb}{h, s, v}
Convert the color from HSV coordinates to RGB coordinates.
\end{funcdesc}

Example:

\begin{verbatim}
>>> import colorsys
>>> colorsys.rgb_to_hsv(.3, .4, .2)
(0.25, 0.5, 0.4)
>>> colorsys.hsv_to_rgb(0.25, 0.5, 0.4)
(0.3, 0.4, 0.2)
\end{verbatim}
