<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link rel="previous" href="Gg.Box3.html"> <link rel="next" href="Gg.Raster.html"> <link rel="Up" href="Gg.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Gg" rel="Chapter" href="Gg.html"><link title="Constructors, accessors and constants" rel="Section" href="#colors"> <link title="Functions" rel="Section" href="#1_Functions"> <link title="Color conversions" rel="Section" href="#conversions"> <link title="Color spaces" rel="Section" href="#1_Colorspaces"> <link title="Color profiles" rel="Section" href="#colorprofiles"> <link title="sRGB" rel="Subsection" href="#srgb"> <link title="CIE L*u*v*" rel="Subsection" href="#luv"> <link title="CIE L*C*h^{uv}" rel="Subsection" href="#lch_uv"> <link title="CIE L*a*b*" rel="Subsection" href="#lab"> <link title="CIE L*C*h^{ab}" rel="Subsection" href="#lch_ab"> <title>Gg.Color</title> </head> <body> <div class="navbar"><a class="pre" href="Gg.Box3.html" title="Gg.Box3">Previous</a> <a class="up" href="Gg.html" title="Gg">Up</a> <a class="post" href="Gg.Raster.html" title="Gg.Raster">Next</a> </div> <h1>Module <a href="type_Gg.Color.html">Gg.Color</a></h1> <pre><span class="keyword">module</span> Color: <code class="code"><span class="keyword">sig</span></code> <a href="Gg.Color.html">..</a> <code class="code"><span class="keyword">end</span></code></pre><div class="info"> Colors and color profiles. <p> <code class="code"><span class="constructor">Color</span></code> provides some function to operate on <a href="Gg.Color.html#TYPEt">color</a> values and basic support for ICC based <a href="Gg.Color.html#TYPEprofile">color profiles</a> to precisely specify how to interpret raw color samples. <p> <h3 id="3_References">References.</h3> <ul> <li>Charles Poynton. <em><a href="http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html"> Frequently asked questions about color</a></em>. 2006</li> <li>Charles Poynton. <em><a href="http://www.poynton.com/PDFs/Guided_tour.pdf">A guided tour of color space</a></em>. 1997</li> <li>Bruce MacEvoy. <a href="http://www.handprint.com/LS/CVS/color.html">Color vision</a> and <a href="http://www.handprint.com/HP/WCL/color7.html">modern color models</a>.</li> <li>International Color Consortium. <em><a href="http://www.color.org/icc_specs2.xalter">ICC.1:2010-12 Image technology colour management - Architecture, profile format, and data structure</a></em>. 2010.</li> </ul> <br> </div> <hr width="100%"> <br> <h1 id="colors">Constructors, accessors and constants</h1><br> <pre><span id="TYPEt"><span class="keyword">type</span> <code class="type"></code>t</span> = <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a></code> </pre> <div class="info"> The type for colors in a device independent RGB color space with an alpha component. The color space is defined by a D65 white point and the ITU-R BT.709 primaries (corresponds to a <em> linearized</em> <a href="http://www.color.org/chardata/rgb/srgb.xalter">sRGB</a> space). The <em>alpha</em> component represent the color's opacity ranging from <code class="code">0.</code>, a fully transparent color, to <code class="code">1.</code> a completly opaque one.<br> </div> <pre><span id="TYPEstops"><span class="keyword">type</span> <code class="type"></code>stops</span> = <code class="type">(float * <a href="Gg.html#TYPEcolor">Gg.color</a>) list</code> </pre> <div class="info"> The type for color stops. A piecewise linear color curve.<br> </div> <pre><span id="VALv"><span class="keyword">val</span> v</span> : <code class="type">float -> float -> float -> float -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">v r g b a</code> is the <em>linear</em> sRGB color <code class="code">(r, g, b, a)</code> as a color value.<br> </div> <pre><span id="VALv_srgb"><span class="keyword">val</span> v_srgb</span> : <code class="type">?a:float -> float -> float -> float -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">v r g b ~a</code> is the sRGB color <code class="code">(r, g, b, a)</code> converted to a color value.<br> </div> <pre><span id="VALv_srgbi"><span class="keyword">val</span> v_srgbi</span> : <code class="type">?a:float -> int -> int -> int -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">v_srgbi r g b ~a</code> is the sRGB color <code class="code">(r,g,b,a)</code> converted to a color value by <code class="code">(v_srgb (float r /. 255.) (float g /. 255.) (float b /. 255.) ~a</code>)<br> </div> <pre><span id="VALr"><span class="keyword">val</span> r</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> float</code></pre><div class="info"> <code class="code">r c</code> is the red component of <code class="code">c</code>.<br> </div> <pre><span id="VALg"><span class="keyword">val</span> g</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> float</code></pre><div class="info"> <code class="code">g c</code> is the green component of <code class="code">c</code>.<br> </div> <pre><span id="VALb"><span class="keyword">val</span> b</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> float</code></pre><div class="info"> <code class="code">b c</code> is the blue component of <code class="code">c</code>.<br> </div> <pre><span id="VALa"><span class="keyword">val</span> a</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> float</code></pre><div class="info"> <code class="code">a c</code> is the alpha component of <code class="code">c</code>.<br> </div> <pre><span id="VALvoid"><span class="keyword">val</span> void</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">void</code> is <code class="code">(v 0. 0. 0. 0.)</code> an invisible color.<br> </div> <pre><span id="VALblack"><span class="keyword">val</span> black</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">black</code> is <code class="code">(v 0. 0. 0. 1.)</code><br> </div> <pre><span id="VALgray"><span class="keyword">val</span> gray</span> : <code class="type">?a:float -> float -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">gray a g</code> is the sRGB color <code class="code">(g, g, g, a)</code> converted to color a value.<br> </div> <pre><span id="VALwhite"><span class="keyword">val</span> white</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">white</code> is <code class="code">(v 1. 1. 1. 1.)</code><br> </div> <pre><span id="VALred"><span class="keyword">val</span> red</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">red</code> is <code class="code">(v 1. 0. 0. 1.)</code><br> </div> <pre><span id="VALgreen"><span class="keyword">val</span> green</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">green</code> is <code class="code">(v 0. 1. 0. 1.)</code><br> </div> <pre><span id="VALblue"><span class="keyword">val</span> blue</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">blue</code> is <code class="code">(v 0. 0. 1. 1.)</code><br> </div> <br> <h1 id="1_Functions">Functions</h1><br> <pre><span id="VALblend"><span class="keyword">val</span> blend</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> <a href="Gg.html#TYPEcolor">Gg.color</a> -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">blend src dst</code> is <code class="code">src</code> blended over <code class="code">dst</code> using source over destination alpha blending. See Alvy Ray Smith. <em> <a href="http://alvyray.com/Memos/MemosCG.htm#ImageCompositing">Image compositing fundamentals</a></em>. 1995.<br> </div> <pre><span id="VALclamp"><span class="keyword">val</span> clamp</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">clamp c</code> is <code class="code">c</code> with all components clamped to [<code class="code">0;1</code>]. <code class="code">nan</code> components are left untouched.<br> </div> <pre><span id="VALwith_a"><span class="keyword">val</span> with_a</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> float -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">with_a c a</code> is the same color as <code class="code">c</code> but with the alpha component <code class="code">a</code>.<br> </div> <br> <h1 id="conversions">Color conversions</h1> <p> <b>Note.</b> In the following conversions all color spaces carry an alpha component. The alpha component is always left untouched by the conversions.<br> <br> <h2 id="srgb">sRGB</h2><br> <pre><span id="TYPEsrgb"><span class="keyword">type</span> <code class="type"></code>srgb</span> = <code class="type"><a href="Gg.html#TYPEv4">Gg.v4</a></code> </pre> <div class="info"> The type for colors in the <a href="http://www.color.org/chardata/rgb/srgb.xalter">sRGB</a> color space with an alpha component. This is the color space used, for example, by CSS.<br> </div> <pre><span id="VALof_srgb"><span class="keyword">val</span> of_srgb</span> : <code class="type"><a href="Gg.Color.html#TYPEsrgb">srgb</a> -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">of_srgb c</code> is the sRGB color <code class="code">c</code> as a <code class="code"><span class="constructor">Gg</span></code> color.<br> </div> <pre><span id="VALto_srgb"><span class="keyword">val</span> to_srgb</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> <a href="Gg.Color.html#TYPEsrgb">srgb</a></code></pre><div class="info"> <code class="code">to_srgb c</code> is the <code class="code"><span class="constructor">Gg</span></code> color <code class="code">c</code> as a sRGB color.<br> </div> <br> <h2 id="luv">CIE L*u*v*</h2><br> <pre><span id="TYPEluv"><span class="keyword">type</span> <code class="type"></code>luv</span> = <code class="type"><a href="Gg.html#TYPEv4">Gg.v4</a></code> </pre> <div class="info"> The type for colors in the CIE L*u*v* color space with a D65 reference white point and an alpha component. The meaning and range of the components is: <ul> <li>L* is lightness in the range <code class="code">0.</code> to <code class="code">100.</code></li> <li>u*'s practical range is <code class="code">-134.</code> to <code class="code">220.</code></li> <li>v*'s practical range is <code class="code">-140.</code> to <code class="code">122.</code></li> </ul> <br> </div> <pre><span id="VALof_luv"><span class="keyword">val</span> of_luv</span> : <code class="type"><a href="Gg.Color.html#TYPEluv">luv</a> -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">of_luv c</code> is the L*u*v* color <code class="code">c</code> as a <code class="code"><span class="constructor">Gg</span></code> color.<br> </div> <pre><span id="VALto_luv"><span class="keyword">val</span> to_luv</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> <a href="Gg.Color.html#TYPEluv">luv</a></code></pre><div class="info"> <code class="code">to_luv c</code> is the <code class="code"><span class="constructor">Gg</span></code> color <code class="code">c</code> as a L*u*v* color.<br> </div> <br> <h2 id="lch_uv">CIE L*C*h<sub class="subscript">uv</sub></h2><br> <pre><span id="TYPElch_uv"><span class="keyword">type</span> <code class="type"></code>lch_uv</span> = <code class="type"><a href="Gg.html#TYPEv4">Gg.v4</a></code> </pre> <div class="info"> The type for colors in the CIE L*C*h<sub class="subscript">uv</sub> color space with a D65 reference white point and an alpha component. This color space is CIE L*u*v* with polar coordinates, the meaning and range of the components is: <ul> <li>L* is the lightness in the range <code class="code">0.</code> to <code class="code">100.</code></li> <li>C* represents chroma, in the range <code class="code">0.</code> to <code class="code">260.77</code> in practice.</li> <li>h represents hue in degrees in the range <code class="code">0.</code> to <code class="code">2pi</code>.</li> </ul> <br> </div> <pre><span id="VALof_lch_uv"><span class="keyword">val</span> of_lch_uv</span> : <code class="type"><a href="Gg.Color.html#TYPElch_uv">lch_uv</a> -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">of_lch_uv c</code> is the L*C*h<sub class="subscript">uv</sub> color <code class="code">c</code> as a <code class="code"><span class="constructor">Gg</span></code> color.<br> </div> <pre><span id="VALto_lch_uv"><span class="keyword">val</span> to_lch_uv</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> <a href="Gg.Color.html#TYPElch_uv">lch_uv</a></code></pre><div class="info"> <code class="code">to_lch_uv c</code> is the <code class="code"><span class="constructor">Gg</span></code> color <code class="code">c</code> as a L*C*h<sub class="subscript">uv</sub>.<br> </div> <br> <h2 id="lab">CIE L*a*b*</h2><br> <pre><span id="TYPElab"><span class="keyword">type</span> <code class="type"></code>lab</span> = <code class="type"><a href="Gg.html#TYPEv4">Gg.v4</a></code> </pre> <div class="info"> The type for colors in the CIE L*a*b* color space with a D50 reference white point and an alpha component. The meaning and range of the components is: <ul> <li>L* is lightness in the range <code class="code">0.</code> to <code class="code">100.</code></li> <li>a* and b*'s practical range is <code class="code">-128.</code> to <code class="code">127.</code></li> </ul> <br> </div> <pre><span id="VALof_lab"><span class="keyword">val</span> of_lab</span> : <code class="type"><a href="Gg.html#TYPEv4">Gg.v4</a> -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">of_lab c</code> is the L*a*b* color <code class="code">c</code> as a <code class="code"><span class="constructor">Gg</span></code> color value.<br> </div> <pre><span id="VALto_lab"><span class="keyword">val</span> to_lab</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> <a href="Gg.html#TYPEv4">Gg.v4</a></code></pre><div class="info"> <code class="code">to_lab c</code> is the <code class="code"><span class="constructor">Gg</span></code> color <code class="code">c</code> as a L*a*b* color.<br> </div> <br> <h2 id="lch_ab">CIE L*C*h<sub class="subscript">ab</sub></h2><br> <pre><span id="TYPElch_ab"><span class="keyword">type</span> <code class="type"></code>lch_ab</span> = <code class="type"><a href="Gg.html#TYPEv4">Gg.v4</a></code> </pre> <div class="info"> The type for colors in the CIE L*C*h*<sub class="subscript">ab</sub> color space with a D50 reference white point and an alpha component. This color space is CIE L*a*b* with polar coordinates, the meaning and range of the components is: <ul> <li>L* is the lightness in the range <code class="code">0.</code> to <code class="code">100.</code></li> <li>C* represents chroma, in the range <code class="code">0.</code> to <code class="code">181.02</code>, but less in practice.</li> <li>h represents hue in degrees in the range <code class="code">0.</code> to <code class="code">2pi</code>.</li> </ul> <br> </div> <pre><span id="VALof_lch_ab"><span class="keyword">val</span> of_lch_ab</span> : <code class="type"><a href="Gg.Color.html#TYPElch_ab">lch_ab</a> -> <a href="Gg.html#TYPEcolor">Gg.color</a></code></pre><div class="info"> <code class="code">of_lch_ab c</code> is the L*C*h<sub class="subscript">ab</sub> color <code class="code">c</code> as a <code class="code"><span class="constructor">Gg</span></code> color.<br> </div> <pre><span id="VALto_lch_ab"><span class="keyword">val</span> to_lch_ab</span> : <code class="type"><a href="Gg.html#TYPEcolor">Gg.color</a> -> <a href="Gg.Color.html#TYPElch_ab">lch_ab</a></code></pre><div class="info"> <code class="code">to_lch_ab c</code> is the <code class="code"><span class="constructor">Gg</span></code> color <code class="code">c</code> as a L*C*h<sub class="subscript">ab</sub>.<br> </div> <br> <h1 id="1_Colorspaces">Color spaces</h1><br> <pre><span id="TYPEspace"><span class="keyword">type</span> <code class="type"></code>space</span> = <code class="type">[ `CLR2<br> | `CLR3<br> | `CLR4<br> | `CLR5<br> | `CLR6<br> | `CLR7<br> | `CLR8<br> | `CLR9<br> | `CLRA<br> | `CLRB<br> | `CLRC<br> | `CLRD<br> | `CLRE<br> | `CLRF<br> | `CMY<br> | `CMYK<br> | `Gray<br> | `HLS<br> | `HSV<br> | `Lab<br> | `Luv<br> | `RGB<br> | `XYZ<br> | `YCbr<br> | `Yxy ]</code> </pre> <div class="info"> The type for color spaces. These correspond to the ICC v4 supported color space, see the <a href="http://www.color.org/icc_specs2.xalter">specification</a>, section 7.2.6.<br> </div> <pre><span id="VALspace_dim"><span class="keyword">val</span> space_dim</span> : <code class="type"><a href="Gg.Color.html#TYPEspace">space</a> -> int</code></pre><div class="info"> <code class="code">space_dim s</code> is the dimension of the color space <code class="code">s</code>.<br> </div> <pre><span id="VALpp_space"><span class="keyword">val</span> pp_space</span> : <code class="type">Format.formatter -> <a href="Gg.Color.html#TYPEspace">space</a> -> unit</code></pre><div class="info"> <code class="code">pp_space s</code> prints a textual representation of <code class="code">s</code> on <code class="code">ppf</code>.<br> </div> <br> <h1 id="colorprofiles">Color profiles</h1><br> <pre><span id="TYPEprofile"><span class="keyword">type</span> <code class="type"></code>profile</span> </pre> <div class="info"> The type for <a href="http://www.color.org/">ICC</a> color profiles. A color profile can describe the characteristics of a color space, an input or output device and provide a mapping to a profile connection space (PCS), which is either CIE L*a*b* or XYZ with a D50 white point. For more information about ICC profile consult the <a href="http://www.color.org/faqs.xalter">ICC FAQ</a> and the <a href="http://color.org/icc_specs2.xalter">ICC v4 specification</a>. <p> This module defines only a profile for the color space of <a href="Gg.html#TYPEcolor"><code class="code"><span class="constructor">Gg</span>.color</code></a> and a grayscale color space.<br> </div> <pre><span id="VALprofile_of_icc"><span class="keyword">val</span> profile_of_icc</span> : <code class="type">string -> <a href="Gg.Color.html#TYPEprofile">profile</a> option</code></pre><div class="info"> <code class="code">profile_of_icc s</code> is a profile from the ICC profile byte stream <code class="code">s</code>. <code class="code"><span class="constructor">None</span></code> is returned if <code class="code">s</code> doesn't seem to be a ICC profile. <p> <b>Note</b> A profile value is returned if a color space can be extracted, it doesn't guarantee a correct ICC profile byte stream.<br> </div> <pre><span id="VALprofile_to_icc"><span class="keyword">val</span> profile_to_icc</span> : <code class="type"><a href="Gg.Color.html#TYPEprofile">profile</a> -> string</code></pre><div class="info"> <code class="code">profile_to_icc p</code> is <code class="code">p</code>'s ICC profile byte stream.<br> </div> <pre><span id="VALprofile_space"><span class="keyword">val</span> profile_space</span> : <code class="type"><a href="Gg.Color.html#TYPEprofile">profile</a> -> <a href="Gg.Color.html#TYPEspace">space</a></code></pre><div class="info"> <code class="code">profile_space p</code> is <code class="code">p</code>'s color space.<br> </div> <pre><span id="VALprofile_dim"><span class="keyword">val</span> profile_dim</span> : <code class="type"><a href="Gg.Color.html#TYPEprofile">profile</a> -> int</code></pre><div class="info"> <code class="code">profile_space p</code> is <code class="code">space_dim (profile_space d)</code>.<br> </div> <pre><span id="VALp_gray_l"><span class="keyword">val</span> p_gray_l</span> : <code class="type"><a href="Gg.Color.html#TYPEprofile">profile</a></code></pre><div class="info"> <code class="code">p_gray_l</code> is a linear gray color profile<br> </div> <pre><span id="VALp_rgb_l"><span class="keyword">val</span> p_rgb_l</span> : <code class="type"><a href="Gg.Color.html#TYPEprofile">profile</a></code></pre><div class="info"> <code class="code">p_rgb_l</code> is the color profile of <a href="Gg.Color.html#TYPEt">color</a> values.<br> </div> </body></html>