Standard library - color

Module:

module color   // since PR 1085
  // Types
  type t

  // Create colors from components
  def SRGB_unit : number -> number -> number -> t
  def SRGBA_unit : number -> number -> number -> number -> t
  def SRGB_8bit : number -> number -> number -> t
  def SRGBA_8bit : number -> number -> number -> number -> t
  def LinRGB : number -> number -> number -> t
  def LinRGBA : number -> number -> number -> number -> t
  def HSL : number -> number -> number -> t
  def HSLA : number -> number -> number -> number -> t
  def HWB : number -> number -> number -> t
  def HWBA : number -> number -> number -> number -> t

  // Import and export
  def importSRGB_unit : data -> t
  def importSRGB_8bit : data -> t
  def importLinRGB : data -> t
  def importHSL : data -> t
  def importHWB : data -> t
  def exportSRGB_unit : t -> { red:number, green:number, blue:number, alpha:number }
  def exportSRGB_8bit : t -> { red:number, green:number, blue:number, alpha:number }
  def exportLinRGB : t -> { red:number, green:number, blue:number, alpha:number }
  def exportHSL : t -> { hue:number, sat:number, light:number, alpha:number }
  def exportHWB : t -> { hue:number, white:number, black:number, alpha:number }

  // Conversion
  def toSRGB : t -> t
  def toLinRGB : t -> t
  def toHSL : t -> t
  def toHWB : t -> t

  // Parsing and printing
  def parseHex : string -> t
  def formatHex : t -> string
  def formatCSS : t -> string

  // Mixing colors
  def add : t -> t -> t
  def sub : t -> t -> t
  def blend : t -> t -> number -> t
  def blendMany : array([t, number]) -> t

  // Adjusting brightness and black/white tone
  def lighter : number -> t -> t
  def darker : number -> t -> t
  def updateLightness : (number -> number) -> t -> t
  def addWhite : number -> t -> t
  def subWhite : number -> t -> t
  def updateWhiteness : (number -> number) -> t -> t
  def addBlack : number -> t -> t
  def subBlack : number -> t -> t
  def updateBlackness : (number -> number) -> t -> t
  def setLuminance : number -> t -> t
  def blackAndWhite : t -> t

  // Inspecting color(s)
  def luminance : t -> number
  def perceivedLightness : t -> number
  def contrastRatio : t -> t -> number // since PR #1107

  // Alpha channel
  def alpha : t -> number
  def updateAlpha : (number -> number) -> t -> t
module end

Types

  type t

The type t is the type of the colors. This modules supports four color spaces:

All four color spaces support alpha channels.

All four color spaces are encoded with double precision numbers, i.e. colors are not limited to just 8 bits.

Create colors from components

  def SRGB_unit : number -> number -> number -> t
  def SRGBA_unit : number -> number -> number -> number -> t
  def SRGB_8bit : number -> number -> number -> t
  def SRGBA_8bit : number -> number -> number -> number -> t
  def LinRGB : number -> number -> number -> t
  def LinRGBA : number -> number -> number -> number -> t
  def HSL : number -> number -> number -> t
  def HSLA : number -> number -> number -> number -> t
  def HWB : number -> number -> number -> t
  def HWBA : number -> number -> number -> number -> t