úÎeàb˜;      !"#$%&'()*+,-./0123456789:)This is a special version of the regular ; function. : It works by directly calling the low-level internal GHC ( primitives, and thus is as fast as you'd expect for such  a trivial operation. (The standard ;$ function does something crazy like  converting a Double to a numerator/ denominator Integer > pair and then computing the integer part of the quotient as  an Integer, then truncating that to a Word8 . Which, # obviously, is ludicrously slow.) 6Hopefully one day the need for this low-level hackery  will disappear. >The integral colour. It stores three channels (red, green and  blue) as linear <- values ranging from 0 to 255. (0 represents @ minimum intensity, 255 represents maximum. Black is therefore   Colour8 0 0 0 and white is Colour8 255 255 255.) <The channel values are stored as strict, unboxed fields, so  operating on Colour8(s should be quite efficient in time and  space. The = and >" instances provide arithmetic for  Colour8 s. Note that (*)) acts channel-wise; this is usually what  is wanted. 'Apply a function to every channel of a Colour8. (Mostly used 8 internally; exposed here in case it might be useful.) The colour equivilent of Data.List.zipWith. (Mostly used 8 internally; exposed here in case it might be useful.) -Use a function to fold the three values in a Colour8 into B a single value. No particular order of application is promised.  Convert a Word8 into a shade of grey. Scale a Colour8+ by the specified amount. Recall that 0x00 C means zero, and 0xFF means one. This means that it is impossible  to make a colour brighter", only darker. It also means this ? operation is modestly inefficient due to the renormalisation  steps.  Convert a  to a tuple. Convert a tuple to a . Constant: Black. Constant: Red. Constant: Yellow. Constant: Green. Constant: Cyan. Constant: Blue. Constant: Magenta. Constant: White.    ?The main colour type. It stores three channels (red, green and  blue) as linear ?& values normally ranging from 0 to 1. B (0 represents minimum intensity, 1 represents maximum. Black is  therefore  Colour 0 0 0 and white is  Colour 1 1 1.) <The channel values are stored as strict, unboxed fields, so  operating on Colour/s should be quite efficient in time and space. The = and >" instances provide arithmetic for  Colour s. Note that (*)) acts channel-wise; this is usually what  is wanted. <Apply a function to every channel in a colour. (Mostly used : internally, but exposed here in case it may be useful.) This is similar to Data.List.zipWith. (Mostly used internally, . but exposed here in case it may be useful.) Use a function to collapse a Colour into a Double. No / particular order of application is promised. Turn a Double into a shade of grey. Scale a Colour- by a specified amount. (That is, change the - brightness while not affecting the shade.) Take a Colour) and clip all channels to the range 0--1 ; inclusive. Any value outside that range will be replaced ; with the nearest endpoint (i.e., 0 for negative numbers, 7 1 for positive numbers higher than 1). Values inside  the range are unaffected.  Convert a  into a tuple. !Convert a tuple into a . "Constant: Black. #Constant: Red. $Constant: Yellow. %Constant: Green. &Constant: Cyan. 'Constant: Blue. (Constant: Magenta. )Constant: White.  !"#$%&'() !"#$%&'() !"#$%&'()*AThis is a colour map with has optional repeating behaviour using  . above. BNotice that the parameter range that gets repeated need not cover % the entire range of the underlying -. +Colour map which repeats. ,"Colour map which does not repeat. -<This is the basic colour map type. It consists of a list of ; control points, each one being a parameter value and the 6 colour at that parameter value. The colour at other 8 parameter values is linearly interpolated between the  control points. :Parameter values outside the range (i.e., below the first 8 point or above the last point) take the colour of the 7 end control point. This means that in the degenerate 8 case of a single control point, the colour is applied 3 everywhere (and the parameter value is ignored).  A map with zero" control points is not permitted. .6Takes a range and a value, and returns a value inside 9 the given range. If the value is already in the range,  it is unchanged. Otherwise it " wraps around". For  example, if the range is (0, 1) then, in effect, 0 the fractional part of the value is returned. 8Note that extremely narrow ranges may exhibit numerical  instability. /2Compute the value of a colour map at a particular  parameter value. 07Compute the value of a full colour map at a particular  parameter value, similar to /. *+,-./0.-/*,+0*,++,-./01 Convert a  into a . Recall that 9 0x00 means zero and 0xFF means one; this function will # remap such values appropriately. 2 Convert a  into a . Any values outside  the range 0--1 will be wrapped to that range. You may  want to run ! before calling this function to 8 prevent this behaviour (unless you know the values can't 8 be outside the permitted range). This function is the  exact inverse of 1; 0 is mapped to 0x00 and  1 is mapped to 0xFF. %  !"#$%&'()12%! ")#$%&'( 12123*Type for holding sRGB colour values (with < components).  The standard  type is for linear RGB values. This type - is for sRGB colours, which are non-linear. 45*Type for holding sRGB colour values (with ? components).  The standard  type is for linear RGB values. This type - is for sRGB colours, which are non-linear. 679Convert a linear RGB value into a non-linear sRGB value. 8 Convert from ? components to < components. 9 Convert from < components to ? components. :9Convert a non-linear sRGB value into a linear RGB value. 3456789:5634789:344566789:@      !"#$%&'()*+,-./012345678899:;<=>?@>AB>CD>?EFGHIAC-Colour-1.1.4Data.Colour.FastFloorData.Colour.Word8Data.Colour.DoubleData.Colour.Map Data.ColourData.Colour.Nonlinear fast_floorColour8red8green8blue8c8mapc8zipc8foldgrey8c8scaleunpack8pack8c8Blackc8Redc8Yellowc8Greenc8Cyanc8Blue c8Magentac8WhiteColourredgreenbluecmapczipcfoldgreycscaleclipunpackpackcBlackcRedcYellowcGreencCyancBluecMagentacWhite FullColourMap RepeatingMap SimpleMap ColourMap range_cycle colour_mapfull_colour_mapcpromotecdemote Colour8_sRGB Colour_sRGBcolour_to_sRGB cdemote_sRGB cpromote_sRGBcolour_from_sRGBbaseGHC.RealfloorGHC.WordWord8GHC.NumNum Fractionalghc-prim GHC.TypesDouble