type color = {red: real, green: real, blue: real, alpha: real}The color type, in RGBA format. Each of red, green, blue, and alpha
should be in the range [0,1]. The alpha value is for transparency:
opaque at 1.0, and transparent at 0.0.
(* hue in range [0,360)
* 0-------60-------120-------180-------240-------300-------360
* red yellow green cyan blue purple red
*
* saturation in range [0,1]
* 0--------------1
* grayscale vibrant
*
* value in range [0,1]
* 0--------------1
* dark light
*
* alpha in range [0,1]
* 0--------------1
* transparent opaque
*)
val hsva: {h: real, s: real, v: real, a: real} -> colorConvert from HSVA to the color type. Hue h should be in the range [0,360).
Saturation s, value v, and alpha a should be in the range [0,1].
val overlayColor: {fg: color, bg: color} -> colorComputes a new color by overlaying the (partially transparent)
foreground color fg on top of the background color bg. If the foreground
color is opaque, then the result is just the foreground color.
val colorToPixel: color -> pixelConvert a color to a pixel. For transparency, the background is assumed to
be white. (If a different background is desired, use overlayColor and pick
an opaque background.)
val pixelToColor: pixel -> colorConvert a pixel to a color. The resulting color is opaque.
type channel = Word8.word
type pixel = {red: channel, green: channel, blue: channel}Pixels stored in RGB format, with three color channels (each with 256 distinct values).
(* hue in range [0,360)
* 0-------60-------120-------180-------240-------300-------360
* red yellow green cyan blue purple red
*
* saturation in range [0,1]
* 0--------------1
* grayscale vibrant
*
* value in range [0,1]
* 0--------------1
* dark light
*)
val hsv: {h: real, s: real, v: real} -> pixelConvert from HSV format to the pixel type. Hue h should be in the range
[0,360), and saturation s and value v should be in the range [0,1].
val white: pixel
val black: pixel
val red: pixel
val blue: pixelA few colors.
val distance: pixel * pixel -> real
val approxHumanPerceptionDistance: pixel * pixel -> realVarious distance metrics between colors.
The distance function computes
simple Euclidean distance, which is cheap to compute but does not accurately
characterize human perceived distance.
The approxHumanPerceptionDistance function computes a decent approximation
for the distance between colors, accounting for non-linearities in human
perception. This is based on the low-cost approximation described
here.