XyzD65

Struct XyzD65 

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ยง

ยง

impl Clone for XyzD65

ยง

fn clone(&self) -> XyzD65

Returns a duplicate of the value. Read more
1.0.0ยง

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

Performs copy-assignment from source. Read more
ยง

impl ColorSpace for XyzD65

ยง

const IS_LINEAR: bool = true

Whether the color space is linear. Read more
ยง

const TAG: Option<ColorSpaceTag>

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

const WHITE_COMPONENTS: [f32; 3]

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

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

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

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

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

fn clip(_: [f32; 3]) -> [f32; 3]

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

const LAYOUT: ColorSpaceLayout = ColorSpaceLayout::Rectangular

The layout of the color space. Read more
ยง

const WHITE_POINT: Chromaticity = Chromaticity::D65

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

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

Convert to a different color space. Read more
ยง

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

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

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

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

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

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

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

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

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

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

impl Debug for XyzD65

ยง

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

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

impl From<XyzD65> for ColorSpaceTag

ยง

fn from(_: XyzD65) -> ColorSpaceTag

Converts to this type from the input type.
ยง

impl Copy for XyzD65

Auto Trait Implementationsยง

Blanket Implementationsยง

ยง

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

ยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
ยง

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

ยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
ยง

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

ยง

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

Mutably borrows from an owned value. Read more
ยง

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

ยง

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> Discard for T

Sourceยง

fn discard(&self)

Simply returns ()
Sourceยง

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

ยง

impl<T> From<T> for T

ยง

fn from(t: T) -> T

Returns the argument unchanged.

ยง

impl<T> Instrument for T

ยง

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
ยง

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
ยง

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

ยง

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> IntoEither for T

Sourceยง

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Sourceยง

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Sourceยง

impl<T> StaticAnim for T
where T: StaticAnimRequirement + 'static,

Sourceยง

fn show(&self) -> AnimationCell<T>

Show the item
Sourceยง

fn hide(&self) -> AnimationCell<T>

Hide the item
ยง

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

ยง

type Owned = T

The resulting type after obtaining ownership.
ยง

fn to_owned(&self) -> T

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

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

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

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

ยง

type Error = Infallible

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

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

Performs the conversion.
ยง

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

ยง

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

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

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

Performs the conversion.
Sourceยง

impl<T> With for T

Sourceยง

fn with(self, f: impl Fn(&mut Self)) -> Self
where Self: Sized,

Mutating a value in place
ยง

impl<T> WithSubscriber for T

ยง

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
ยง

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Sourceยง

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