Color.Oklch
(Color v0.4.0)
Copy Markdown
Cylindrical representation of Oklab: lightness, chroma, hue.
Hue h is expressed in degrees in [0, 360).
Summary
Types
Cylindrical Oklab. l is lightness in [0.0, 1.0], c is chroma
≥ 0, and h is hue in degrees [0.0, 360.0). Defined against D65.
Functions
Converts an Oklab color to Oklch.
Converts a CIE XYZ color (D65/2°) to Oklch via Oklab.
Converts an Oklch color to Oklab.
Converts an Oklch color to CIE XYZ (D65/2°) via Oklab.
Types
@type t() :: %Color.Oklch{ alpha: Color.Types.alpha(), c: float() | nil, h: float() | nil, l: float() | nil }
Cylindrical Oklab. l is lightness in [0.0, 1.0], c is chroma
≥ 0, and h is hue in degrees [0.0, 360.0). Defined against D65.
Functions
Converts an Oklab color to Oklch.
Arguments
oklabis aColor.Oklabstruct.
Returns
- A
Color.Oklchstruct.
Examples
iex> {:ok, oklch} = Color.Oklch.from_oklab(%Color.Oklab{l: 0.5, a: 0.0, b: 0.0})
iex> {oklch.l, oklch.c, oklch.h}
{0.5, 0.0, 0.0}
Converts a CIE XYZ color (D65/2°) to Oklch via Oklab.
Arguments
xyzis aColor.XYZstruct.
Returns
- A
Color.Oklchstruct.
Examples
iex> xyz = %Color.XYZ{x: 0.95047, y: 1.0, z: 1.08883, illuminant: :D65, observer_angle: 2}
iex> {:ok, oklch} = Color.Oklch.from_xyz(xyz)
iex> {Float.round(oklch.l, 3), Float.round(oklch.c, 3)}
{1.0, 0.0}
Converts an Oklch color to Oklab.
Arguments
oklchis aColor.Oklchstruct.
Returns
- A
Color.Oklabstruct.
Examples
iex> {:ok, oklab} = Color.Oklch.to_oklab(%Color.Oklch{l: 0.5, c: 0.0, h: 0.0})
iex> {oklab.l, oklab.a, oklab.b}
{0.5, 0.0, 0.0}
Converts an Oklch color to CIE XYZ (D65/2°) via Oklab.
Arguments
oklchis aColor.Oklchstruct.
Returns
- A
Color.XYZstruct.
Examples
iex> {:ok, xyz} = Color.Oklch.to_xyz(%Color.Oklch{l: 1.0, c: 0.0, h: 0.0})
iex> {Float.round(xyz.x, 4), Float.round(xyz.y, 4), Float.round(xyz.z, 4)}
{0.9505, 1.0, 1.0883}