Skip to main content

XyzD65

Struct XyzD65 

Source
pub struct XyzD65;
Expand description

๐ŸŒŒ The CIE XYZ color space with a 2ยฐ observer and a reference white of D65.

Its components are [X, Y, Z]. The components are unbounded, but are usually positive. Reference white has a luminance Y of 1.

This corresponds to the color space in CSS Color Module Level 4 ยง 10.8. It is defined in CIE 015:2018. Following CSS Color Module Level 4 ยง 11, the conversion between D50 and D65 white points is done with the standard Bradford linear chromatic adaptation transform.

ยงHuman color vision and color spaces

Human color vision uses three types of photoreceptive cell in the eye that are sensitive to light. These cells have their peak sensitivity at different wavelengths of light: roughly 570 nm, 535 nm and 430 nm, usually named Long, Medium and Short (LMS) respectively. The cellsโ€™ sensitivities to light taper off as the wavelength moves away from their peaks, but all three cells overlap in wavelength sensitivity.

Visible light with a combination of wavelengths at specific intensities (the lightโ€™s spectral density), causes excitation of these three cell types in varying amounts. The human brain interprets this as a specific color at a certain luminosity. Importantly, humans do not directly perceive the lightโ€™s wavelength: for example, monochromatic light with a wavelength of 580 nm is perceived as โ€œyellow,โ€ and light made up of two wavelengths at roughly 550nm (โ€œgreenโ€) and 610 nm (โ€œredโ€) is also perceived as โ€œyellow.โ€

The CIE XYZ color space is an experimentally-obtained mapping of monochromatic light at a specific wavelength to the response of human L, M and S photoreceptive cells (with some additional mathematically desirable properties). Light of a specific spectral density maps onto a specific coordinate in the XYZ color space. Light of a different spectral density that maps onto the same XYZ coordinate is predicted by the color space to be perceived as the same color and luminosity.

The XYZ color space is often used in the characterization of other color spaces.

ยงWhite point

An important concept in color spaces is the white point. Whereas pure black is the absence of illumination and has a natural representation in additive color spaces, white is more difficult to define. CIE D65 defines white as the perceived color of diffuse standard noon daylight perfectly reflected off a surface observed under some foveal angle; here 2ยฐ.

In many color spaces, their white point is the brightest illumination they can naturally represent.

For further reading, the Wikipedia article on the CIE XYZ color space provides a good introduction to color theory as relevant to color spaces.

Trait Implementationsยง

Sourceยง

impl Clone for XyzD65

Sourceยง

fn clone(&self) -> XyzD65

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) ยท Sourceยง

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Sourceยง

impl ColorSpace for XyzD65

Sourceยง

const IS_LINEAR: bool = true

Whether the color space is linear. Read more
Sourceยง

const TAG: Option<ColorSpaceTag>

The tag corresponding to this color space, if a matching tag exists.
Sourceยง

const WHITE_COMPONENTS: [f32; 3]

The component values for the color white within this color space.
Sourceยง

fn to_linear_srgb(src: [f32; 3]) -> [f32; 3]

Convert an opaque color to linear sRGB. Read more
Sourceยง

fn from_linear_srgb(src: [f32; 3]) -> [f32; 3]

Convert an opaque color from linear sRGB. Read more
Sourceยง

fn clip([x, y, z]: [f32; 3]) -> [f32; 3]

Clip the colorโ€™s components to fit within the natural gamut of the color space. Read more
Sourceยง

const LAYOUT: ColorSpaceLayout = ColorSpaceLayout::Rectangular

The layout of the color space. Read more
Sourceยง

const WHITE_POINT: Chromaticity = Chromaticity::D65

The white point of the color space. Read more
Sourceยง

fn convert<TargetCS: ColorSpace>(src: [f32; 3]) -> [f32; 3]

Convert to a different color space. Read more
Sourceยง

fn to_linear_srgb_absolute(src: [f32; 3]) -> [f32; 3]

Convert an opaque color to linear sRGB, without chromatic adaptation. Read more
Sourceยง

fn from_linear_srgb_absolute(src: [f32; 3]) -> [f32; 3]

Convert an opaque color from linear sRGB, without chromatic adaptation. Read more
Sourceยง

fn convert_absolute<TargetCS: ColorSpace>(src: [f32; 3]) -> [f32; 3]

Convert to a different color space, without chromatic adaptation. Read more
Sourceยง

fn chromatically_adapt( src: [f32; 3], from: Chromaticity, to: Chromaticity, ) -> [f32; 3]

Chromatically adapt the color between the given white point chromaticities. Read more
Sourceยง

fn scale_chroma(src: [f32; 3], scale: f32) -> [f32; 3]

Scale the chroma by the given amount. Read more
Sourceยง

impl Debug for XyzD65

Sourceยง

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Sourceยง

impl From<XyzD65> for ColorSpaceTag

Sourceยง

fn from(_: XyzD65) -> Self

Converts to this type from the input type.
Sourceยง

impl Copy for XyzD65

Auto Trait Implementationsยง

Blanket Implementationsยง

Sourceยง

impl<T> Any for T
where T: 'static + ?Sized,

Sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Sourceยง

impl<T> Borrow<T> for T
where T: ?Sized,

Sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Sourceยง

impl<T> BorrowMut<T> for T
where T: ?Sized,

Sourceยง

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Sourceยง

impl<T> CloneToUninit for T
where T: Clone,

Sourceยง

unsafe fn clone_to_uninit(&self, dest: *mut u8)

๐Ÿ”ฌThis is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Sourceยง

impl<T> From<T> for T

Sourceยง

fn from(t: T) -> T

Returns the argument unchanged.

Sourceยง

impl<T, U> Into<U> for T
where U: From<T>,

Sourceยง

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Sourceยง

impl<T> ToOwned for T
where T: Clone,

Sourceยง

type Owned = T

The resulting type after obtaining ownership.
Sourceยง

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Sourceยง

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Sourceยง

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Sourceยง

type Error = Infallible

The type returned in the event of a conversion error.
Sourceยง

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Sourceยง

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Sourceยง

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Sourceยง

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.