cosmic::cosmic_theme::palette::cam16

Struct Cam16

source
#[repr(C)]
pub struct Cam16<T> { pub lightness: T, pub chroma: T, pub hue: Cam16Hue<T>, pub brightness: T, pub colorfulness: T, pub saturation: T, }
Expand description

The CIE CAM16 color appearance model.

It’s a set of six technically defined attributes that describe the appearance of a color under certain viewing conditions, and it’s a successor of CIECAM02. The viewing conditions are defined using Parameters, and two sets of parameters can be used to translate the appearance of a color from one set of viewing conditions to another.

The use of the viewing conditions parameters sets Cam16 and its derived types apart from most other color types in this library. It’s, for example, not possible to use FromColor and friends to convert to and from other types, since that would require default viewing conditions to exist. Instead, the explicit Cam16::from_xyz and Cam16::into_xyz are there to bridge the gap.

Not all attributes are used when converting from CAM16, since they are correlated and derived from each other. This library also provides partial versions of this struct, to make it easier to correctly specify a minimum attribute set.

The full list of partial CAM16 variants is:

§CAM16-UCS

While CIE CAM16 is a model of color appearance, it’s not necessarily suitable as a color space. Instead, there is the CAM16-UCS (CAM16 uniform color space), that’s based off of the lightness, colorfulness and hue attributes. This colorspace is represented by the Cam16UcsJmh and Cam16UcsJab types.

§Creating a Value

A Cam16 value would typically come from another color space, or one of the partial sets of CAM16 attributes. All of which require known viewing conditions.

use palette::{
    Srgb, FromColor, IntoColor,
    cam16::{Cam16, Parameters, Cam16Jmh, Cam16UcsJmh},
};

// Customize these according to the viewing conditions:
let mut example_parameters = Parameters::default_static_wp(40.0);

// CAM16 from sRGB, or most other color spaces:
let rgb = Srgb::new(0.3f32, 0.8, 0.1);
let cam16_from_rgb = Cam16::from_xyz(rgb.into_color(), example_parameters);

// Full CAM16 from a partial set (any partial set can be used):
let partial = Cam16Jmh::new(50.0f32, 80.0, 120.0);
let cam16_from_partial = partial.into_full(example_parameters);

// Full CAM16 from CAM16-UCS J'M'h':
let ucs = Cam16UcsJmh::new(50.0f32, 80.0, 120.0);
let cam16_from_ucs = Cam16Jmh::from_color(ucs).into_full(example_parameters);

Fields§

§lightness: T

The lightness (J) of the color.

It’s a perception of the color’s luminance, but not linear to it, and is relative to the reference white. The lightness of black is 0.0 and the lightness of white is 100.0.

Lightness behaves similarly to L* in Lch or lightness in Hsl.

See also https://en.wikipedia.org/wiki/Lightness.

§chroma: T

The chroma (C) of the color.

It’s how chromatic the color appears in comparison with a grey color of the same lightness. Changing the perceived chroma doesn’t change the perceived lightness, and vice versa.

Chroma behaves similarly to chroma in Lch or saturation in Hsl.

See also https://en.wikipedia.org/wiki/Colorfulness#Chroma.

§hue: Cam16Hue<T>

The hue (h) of the color.

The color’s position around a color circle, in degrees.

See also https://en.wikipedia.org/wiki/Hue.

§brightness: T

The brightness (Q) of the color.

It’s the perception of how much light appears to shine from an object. As opposed to lightness, this is not in comparison to a reference white, but in more absolute terms. Lightness and brightness area also not linearly correlated in CAM16.

Brightness behaves similarly to value in Hsv.

See also https://en.wikipedia.org/wiki/Brightness.

§colorfulness: T

The colorfulness (M) of the color.

It’s a perception of how chromatic the color is and usually increases with luminance, unless the brightness is very high.

See also https://en.wikipedia.org/wiki/Colorfulness.

§saturation: T

The saturation (s) of the color.

It’s the colorfulness of a color in proportion to its own brightness. The perceived saturation should stay the same when the perceived brightness changes, and vice versa.

Saturation behaves similarly to saturation in Hsv.

See also https://en.wikipedia.org/wiki/Colorfulness#Saturation.

Implementations§

source§

impl<T> Cam16<T>

source

pub fn from_xyz<WpParam>( color: Xyz<<WpParam as WhitePointParameter<<T as FromScalar>::Scalar>>::StaticWp, T>, parameters: impl Into<BakedParameters<WpParam, <T as FromScalar>::Scalar>>, ) -> Cam16<T>
where Xyz<<WpParam as WhitePointParameter<<T as FromScalar>::Scalar>>::StaticWp, T>: IntoCam16Unclamped<WpParam, Cam16<T>, Scalar = <T as FromScalar>::Scalar>, T: FromScalar, WpParam: WhitePointParameter<<T as FromScalar>::Scalar>,

Derive CIE CAM16 attributes for the provided color, under the provided viewing conditions.

use palette::{Srgb, IntoColor, cam16::{Cam16, Parameters}};

// Customize these according to the viewing conditions:
let mut example_parameters = Parameters::default_static_wp(40.0);

let rgb = Srgb::new(0.3f32, 0.8, 0.1);
let cam16 = Cam16::from_xyz(rgb.into_color(), example_parameters);

It’s also possible to “pre-bake” the parameters, to avoid recalculate some of the derived values when converting multiple color value.

use palette::{Srgb, IntoColor, cam16::{Cam16, Parameters}};

// Customize these according to the viewing conditions:
let mut example_parameters = Parameters::default_static_wp(40.0);

let baked_parameters = example_parameters.bake();

let rgb = Srgb::new(0.3f32, 0.8, 0.1);
let cam16 = Cam16::from_xyz(rgb.into_color(), baked_parameters);
source

pub fn into_xyz<WpParam>( self, parameters: impl Into<BakedParameters<WpParam, <T as FromScalar>::Scalar>>, ) -> Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>
where Cam16<T>: Cam16IntoUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>, Scalar = <T as FromScalar>::Scalar>, WpParam: WhitePointParameter<T>, T: FromScalar,

Construct an XYZ color that matches these CIE CAM16 attributes, under the provided viewing conditions.

This assumes that all of the correlated attributes are consistent, as only some of them are actually used. You may want to use one of the partial CAM16 representations for more control over which set of attributes that should be.

use palette::{Srgb, FromColor, cam16::{Cam16, Parameters}};

// Customize these according to the viewing conditions:
let mut example_parameters = Parameters::default_static_wp(40.0);

let cam16: Cam16<f32> = get_cam16_value();
let rgb = Srgb::from_color(cam16.into_xyz(example_parameters));

It’s also possible to “pre-bake” the parameters, to avoid recalculate some of the derived values when converting multiple color value.

use palette::{Srgb, FromColor, cam16::{Cam16, Parameters}};

// Customize these according to the viewing conditions:
let mut example_parameters = Parameters::default_static_wp(40.0);

let baked_parameters = example_parameters.bake();

let cam16: Cam16<f32> = get_cam16_value();
let rgb = Srgb::from_color(cam16.into_xyz(baked_parameters));

Trait Implementations§

source§

impl<T> AbsDiffEq for Cam16<T>
where T: AbsDiffEq, <T as AbsDiffEq>::Epsilon: Clone, Cam16Hue<T>: AbsDiffEq<Epsilon = <T as AbsDiffEq>::Epsilon>,

source§

type Epsilon = <T as AbsDiffEq>::Epsilon

Used for specifying relative comparisons.
source§

fn default_epsilon() -> <Cam16<T> as AbsDiffEq>::Epsilon

The default tolerance to use when testing values that are close together. Read more
source§

fn abs_diff_eq( &self, other: &Cam16<T>, epsilon: <T as AbsDiffEq>::Epsilon, ) -> bool

A test for equality that uses the absolute difference to compute the approximate equality of two numbers.
source§

fn abs_diff_ne( &self, other: &Cam16<T>, epsilon: <T as AbsDiffEq>::Epsilon, ) -> bool

The inverse of AbsDiffEq::abs_diff_eq.
source§

impl<WpParam, T> Cam16FromUnclamped<WpParam, Cam16Jch<T>> for Cam16<T>

source§

type Scalar = <T as FromScalar>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_from_unclamped( cam16: Cam16Jch<T>, parameters: BakedParameters<WpParam, <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Jch<T>>>::Scalar>, ) -> Cam16<T>

Converts color into Self, using the provided parameters.
source§

impl<WpParam, T> Cam16FromUnclamped<WpParam, Cam16Jmh<T>> for Cam16<T>

source§

type Scalar = <T as FromScalar>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_from_unclamped( cam16: Cam16Jmh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Jmh<T>>>::Scalar>, ) -> Cam16<T>

Converts color into Self, using the provided parameters.
source§

impl<WpParam, T> Cam16FromUnclamped<WpParam, Cam16Jsh<T>> for Cam16<T>

source§

type Scalar = <T as FromScalar>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_from_unclamped( cam16: Cam16Jsh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Jsh<T>>>::Scalar>, ) -> Cam16<T>

Converts color into Self, using the provided parameters.
source§

impl<WpParam, T> Cam16FromUnclamped<WpParam, Cam16Qch<T>> for Cam16<T>

source§

type Scalar = <T as FromScalar>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_from_unclamped( cam16: Cam16Qch<T>, parameters: BakedParameters<WpParam, <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qch<T>>>::Scalar>, ) -> Cam16<T>

Converts color into Self, using the provided parameters.
source§

impl<WpParam, T> Cam16FromUnclamped<WpParam, Cam16Qmh<T>> for Cam16<T>

source§

type Scalar = <T as FromScalar>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_from_unclamped( cam16: Cam16Qmh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qmh<T>>>::Scalar>, ) -> Cam16<T>

Converts color into Self, using the provided parameters.
source§

impl<WpParam, T> Cam16FromUnclamped<WpParam, Cam16Qsh<T>> for Cam16<T>

source§

type Scalar = <T as FromScalar>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_from_unclamped( cam16: Cam16Qsh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qsh<T>>>::Scalar>, ) -> Cam16<T>

Converts color into Self, using the provided parameters.
source§

impl<WpParam, T> Cam16FromUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<<T as FromScalar>::Scalar>>::StaticWp, T>> for Cam16<T>

source§

type Scalar = <T as FromScalar>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_from_unclamped( color: Xyz<<WpParam as WhitePointParameter<<T as FromScalar>::Scalar>>::StaticWp, T>, parameters: BakedParameters<WpParam, <Cam16<T> as Cam16FromUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<<T as FromScalar>::Scalar>>::StaticWp, T>>>::Scalar>, ) -> Cam16<T>

Converts color into Self, using the provided parameters.
source§

impl<T> Clamp for Cam16<T>
where T: Clamp + Zero,

source§

fn clamp(self) -> Cam16<T>

Return a new color where out-of-bounds components have been changed to the nearest valid values. Read more
source§

impl<T> ClampAssign for Cam16<T>
where T: ClampAssign + Zero,

source§

fn clamp_assign(&mut self)

Changes out-of-bounds components to the nearest valid values. Read more
source§

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

source§

fn clone(&self) -> Cam16<T>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<T> Debug for Cam16<T>
where T: Debug,

source§

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

Formats the value using the given formatter. Read more
source§

impl<T> Default for Cam16<T>
where T: Default,

source§

fn default() -> Cam16<T>

Returns the “default value” for a type. Read more
source§

impl<T, V, const N: usize> From<[Cam16<T>; N]> for Cam16<V>
where [T; N]: Default, V: FromScalarArray<N, Scalar = T>,

source§

fn from(colors: [Cam16<T>; N]) -> Cam16<V>

Converts to this type from the input type.
source§

impl<T> From<Cam16<T>> for Cam16Jch<T>

source§

fn from(value: Cam16<T>) -> Cam16Jch<T>

Converts to this type from the input type.
source§

impl<T> From<Cam16<T>> for Cam16Jmh<T>

source§

fn from(value: Cam16<T>) -> Cam16Jmh<T>

Converts to this type from the input type.
source§

impl<T> From<Cam16<T>> for Cam16Jsh<T>

source§

fn from(value: Cam16<T>) -> Cam16Jsh<T>

Converts to this type from the input type.
source§

impl<T> From<Cam16<T>> for Cam16Qch<T>

source§

fn from(value: Cam16<T>) -> Cam16Qch<T>

Converts to this type from the input type.
source§

impl<T> From<Cam16<T>> for Cam16Qmh<T>

source§

fn from(value: Cam16<T>) -> Cam16Qmh<T>

Converts to this type from the input type.
source§

impl<T> From<Cam16<T>> for Cam16Qsh<T>

source§

fn from(value: Cam16<T>) -> Cam16Qsh<T>

Converts to this type from the input type.
source§

impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16<T>> for Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>
where WpParam: WhitePointParameter<T>, T: FromScalar, Cam16Jch<T>: Cam16IntoUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>, Scalar = <T as FromScalar>::Scalar>,

source§

type Scalar = <T as FromScalar>::Scalar

The number type that’s used in parameters when converting.
source§

fn from_cam16_unclamped( cam16: Cam16<T>, parameters: BakedParameters<WpParam, <Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T> as FromCam16Unclamped<WpParam, Cam16<T>>>::Scalar>, ) -> Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>

Converts cam16 into Self, using the provided parameters.
source§

impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Jch<T>> for Cam16<T>
where Cam16<T>: Cam16FromUnclamped<WpParam, Cam16Jch<T>>,

source§

type Scalar = <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Jch<T>>>::Scalar

The number type that’s used in parameters when converting.
source§

fn from_cam16_unclamped( cam16: Cam16Jch<T>, parameters: BakedParameters<WpParam, <Cam16<T> as FromCam16Unclamped<WpParam, Cam16Jch<T>>>::Scalar>, ) -> Cam16<T>

Converts cam16 into Self, using the provided parameters.
source§

impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Jmh<T>> for Cam16<T>
where Cam16<T>: Cam16FromUnclamped<WpParam, Cam16Jmh<T>>,

source§

type Scalar = <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Jmh<T>>>::Scalar

The number type that’s used in parameters when converting.
source§

fn from_cam16_unclamped( cam16: Cam16Jmh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as FromCam16Unclamped<WpParam, Cam16Jmh<T>>>::Scalar>, ) -> Cam16<T>

Converts cam16 into Self, using the provided parameters.
source§

impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Jsh<T>> for Cam16<T>
where Cam16<T>: Cam16FromUnclamped<WpParam, Cam16Jsh<T>>,

source§

type Scalar = <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Jsh<T>>>::Scalar

The number type that’s used in parameters when converting.
source§

fn from_cam16_unclamped( cam16: Cam16Jsh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as FromCam16Unclamped<WpParam, Cam16Jsh<T>>>::Scalar>, ) -> Cam16<T>

Converts cam16 into Self, using the provided parameters.
source§

impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Qch<T>> for Cam16<T>
where Cam16<T>: Cam16FromUnclamped<WpParam, Cam16Qch<T>>,

source§

type Scalar = <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qch<T>>>::Scalar

The number type that’s used in parameters when converting.
source§

fn from_cam16_unclamped( cam16: Cam16Qch<T>, parameters: BakedParameters<WpParam, <Cam16<T> as FromCam16Unclamped<WpParam, Cam16Qch<T>>>::Scalar>, ) -> Cam16<T>

Converts cam16 into Self, using the provided parameters.
source§

impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Qmh<T>> for Cam16<T>
where Cam16<T>: Cam16FromUnclamped<WpParam, Cam16Qmh<T>>,

source§

type Scalar = <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qmh<T>>>::Scalar

The number type that’s used in parameters when converting.
source§

fn from_cam16_unclamped( cam16: Cam16Qmh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as FromCam16Unclamped<WpParam, Cam16Qmh<T>>>::Scalar>, ) -> Cam16<T>

Converts cam16 into Self, using the provided parameters.
source§

impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Qsh<T>> for Cam16<T>
where Cam16<T>: Cam16FromUnclamped<WpParam, Cam16Qsh<T>>,

source§

type Scalar = <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qsh<T>>>::Scalar

The number type that’s used in parameters when converting.
source§

fn from_cam16_unclamped( cam16: Cam16Qsh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as FromCam16Unclamped<WpParam, Cam16Qsh<T>>>::Scalar>, ) -> Cam16<T>

Converts cam16 into Self, using the provided parameters.
source§

impl<T> FromColorUnclamped<Cam16<T>> for Cam16Jch<T>

source§

fn from_color_unclamped(val: Cam16<T>) -> Cam16Jch<T>

Convert from T. The resulting color might be invalid in its color space. Read more
source§

impl<T> FromColorUnclamped<Cam16<T>> for Cam16Jmh<T>

source§

fn from_color_unclamped(val: Cam16<T>) -> Cam16Jmh<T>

Convert from T. The resulting color might be invalid in its color space. Read more
source§

impl<T> FromColorUnclamped<Cam16<T>> for Cam16Jsh<T>

source§

fn from_color_unclamped(val: Cam16<T>) -> Cam16Jsh<T>

Convert from T. The resulting color might be invalid in its color space. Read more
source§

impl<T> FromColorUnclamped<Cam16<T>> for Cam16Qch<T>

source§

fn from_color_unclamped(val: Cam16<T>) -> Cam16Qch<T>

Convert from T. The resulting color might be invalid in its color space. Read more
source§

impl<T> FromColorUnclamped<Cam16<T>> for Cam16Qmh<T>

source§

fn from_color_unclamped(val: Cam16<T>) -> Cam16Qmh<T>

Convert from T. The resulting color might be invalid in its color space. Read more
source§

impl<T> FromColorUnclamped<Cam16<T>> for Cam16Qsh<T>

source§

fn from_color_unclamped(val: Cam16<T>) -> Cam16Qsh<T>

Convert from T. The resulting color might be invalid in its color space. Read more
source§

impl<T> FromColorUnclamped<Cam16<T>> for Cam16UcsJab<T>

source§

fn from_color_unclamped(color: Cam16<T>) -> Cam16UcsJab<T>

Convert from T. The resulting color might be invalid in its color space. Read more
source§

impl<T> FromColorUnclamped<Cam16<T>> for Cam16UcsJmh<T>

source§

fn from_color_unclamped(color: Cam16<T>) -> Cam16UcsJmh<T>

Convert from T. The resulting color might be invalid in its color space. Read more
source§

impl<T> GetHue for Cam16<T>
where T: Clone,

source§

type Hue = Cam16Hue<T>

The kind of hue unit this color space uses. Read more
source§

fn get_hue(&self) -> Cam16Hue<T>

Calculate a hue if possible. Read more
source§

impl<T> HasBoolMask for Cam16<T>
where T: HasBoolMask,

source§

type Mask = <T as HasBoolMask>::Mask

The mask type to use for selecting Self values.
source§

impl<T> IsWithinBounds for Cam16<T>
where T: PartialCmp + Zero, <T as HasBoolMask>::Mask: BitAnd<Output = <T as HasBoolMask>::Mask>,

source§

fn is_within_bounds(&self) -> <T as HasBoolMask>::Mask

Check if the color’s components are within the expected range bounds. Read more
source§

impl<T> PartialEq for Cam16<T>

source§

fn eq(&self, other: &Cam16<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T> RelativeEq for Cam16<T>
where T: RelativeEq, <T as AbsDiffEq>::Epsilon: Clone, Cam16Hue<T>: RelativeEq<Epsilon = <T as AbsDiffEq>::Epsilon> + AbsDiffEq,

source§

fn default_max_relative() -> <T as AbsDiffEq>::Epsilon

The default relative tolerance for testing values that are far-apart. Read more
source§

fn relative_eq( &self, other: &Cam16<T>, epsilon: <T as AbsDiffEq>::Epsilon, max_relative: <T as AbsDiffEq>::Epsilon, ) -> bool

A test for equality that uses a relative comparison if the values are far apart.
source§

fn relative_ne( &self, other: &Cam16<T>, epsilon: <T as AbsDiffEq>::Epsilon, max_relative: <T as AbsDiffEq>::Epsilon, ) -> bool

The inverse of RelativeEq::relative_eq.
source§

impl<T> UlpsEq for Cam16<T>
where T: UlpsEq, <T as AbsDiffEq>::Epsilon: Clone, Cam16Hue<T>: UlpsEq<Epsilon = <T as AbsDiffEq>::Epsilon> + AbsDiffEq,

source§

fn default_max_ulps() -> u32

The default ULPs to tolerate when testing values that are far-apart. Read more
source§

fn ulps_eq( &self, other: &Cam16<T>, epsilon: <T as AbsDiffEq>::Epsilon, max_ulps: u32, ) -> bool

A test for equality that uses units in the last place (ULP) if the values are far apart.
source§

fn ulps_ne( &self, other: &Cam16<T>, epsilon: <T as AbsDiffEq>::Epsilon, max_ulps: u32, ) -> bool

The inverse of UlpsEq::ulps_eq.
source§

impl<T, _A> WithAlpha<_A> for Cam16<T>
where _A: Stimulus,

source§

type Color = Cam16<T>

The opaque color type, without any transparency. Read more
source§

type WithAlpha = Alpha<Cam16<T>, _A>

The color type with transparency applied. Read more
source§

fn with_alpha(self, alpha: _A) -> <Cam16<T> as WithAlpha<_A>>::WithAlpha

Transforms the color into a transparent color with the provided alpha value. If Self already has a transparency, it is overwritten. Read more
source§

fn without_alpha(self) -> <Cam16<T> as WithAlpha<_A>>::Color

Removes the transparency from the color. If Self::Color has an internal transparency field, that field will be set to A::max_intensity() to make it opaque. Read more
source§

fn split(self) -> (<Cam16<T> as WithAlpha<_A>>::Color, _A)

Splits the color into separate color and transparency values. Read more
source§

fn opaque(self) -> Self::WithAlpha
where A: Stimulus,

Transforms the color into a fully opaque color with a transparency field. If Self already has a transparency, it is overwritten. Read more
source§

fn transparent(self) -> Self::WithAlpha
where A: Zero,

Transforms the color into a fully transparent color. If Self already has a transparency, it is overwritten. Read more
source§

impl<T> Copy for Cam16<T>
where T: Copy,

source§

impl<T> Eq for Cam16<T>
where T: Eq, Cam16Hue<T>: Eq,

Auto Trait Implementations§

§

impl<T> Freeze for Cam16<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Cam16<T>
where T: RefUnwindSafe,

§

impl<T> Send for Cam16<T>
where T: Send,

§

impl<T> Sync for Cam16<T>
where T: Sync,

§

impl<T> Unpin for Cam16<T>
where T: Unpin,

§

impl<T> UnwindSafe for Cam16<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
source§

impl<T> Also for T

source§

fn also<F>(self, block: F) -> Self
where F: FnOnce(&mut Self),

Apply a function to this value and return the (possibly) modified value.
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, Res> Apply<Res> for T
where T: ?Sized,

source§

fn apply<F>(self, f: F) -> Res
where F: FnOnce(Self) -> Res, Self: Sized,

Apply a function which takes the parameter by value.
source§

fn apply_ref<F>(&self, f: F) -> Res
where F: FnOnce(&Self) -> Res,

Apply a function which takes the parameter by reference.
source§

fn apply_mut<F>(&mut self, f: F) -> Res
where F: FnOnce(&mut Self) -> Res,

Apply a function which takes the parameter by mutable reference.
source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
source§

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

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
source§

impl<T> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromAngle<T> for T

source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
source§

impl<T> Instrument for T

source§

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

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, U> IntoAngle<U> for T
where U: FromAngle<T>,

source§

fn into_angle(self) -> U

Performs a conversion into T.
source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
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> IntoStimulus<T> for T

source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
source§

impl<T> NoneValue for T
where T: Default,

source§

type NoneType = T

source§

fn null_value() -> T

The none-equivalent value.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
source§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
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, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. 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.
source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

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
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSend for T
where T: Send,

source§

impl<T> MaybeSendSync for T

source§

impl<T> MaybeSync for T
where T: Sync,