#[repr(C)]pub struct Cam16Qmh<T> {
    pub brightness: T,
    pub colorfulness: T,
    pub hue: Cam16Hue<T>,
}Expand description
Partial CIE CAM16, with brightness and colorfulness.
It contains enough information for converting CAM16 to other color spaces. See Cam16 for more details about CIE CAM16.
The full list of partial CAM16 variants is:
Cam16Jch: lightness and chroma.Cam16Jmh: lightness and colorfulness.Cam16Jsh: lightness and saturation.Cam16Qch: brightness and chroma.Cam16Qmh: brightness and colorfulness.Cam16Qsh: brightness and saturation.
§Creating a Value
Any partial CAM16 set can be obtained from the full set of
attributes. It’s also possible to convert directly to it, using
from_xyz,
or to create a new value by calling
new.
use palette::{
    Srgb, FromColor, IntoColor, hues::Cam16Hue,
    cam16::{Cam16, Parameters, Cam16Qmh},
};
let partial = Cam16Qmh::new(50.0f32, 80.0, 120.0);
// There's also `new_const`:
const PARTIAL: Cam16Qmh<f32> = Cam16Qmh::new_const(50.0, 80.0, Cam16Hue::new(120.0));
// Customize these according to the viewing conditions:
let mut example_parameters = Parameters::default_static_wp(40.0);
// Partial CAM16 from sRGB, or most other color spaces:
let rgb = Srgb::new(0.3f32, 0.8, 0.1);
let partial_from_rgb = Cam16Qmh::from_xyz(rgb.into_color(), example_parameters);
// Partial CAM16 from sRGB, via full CAM16:
let rgb = Srgb::new(0.3f32, 0.8, 0.1);
let cam16_from_rgb = Cam16::from_xyz(rgb.into_color(), example_parameters);
let partial_from_full = Cam16Qmh::from(cam16_from_rgb);
// Direct conversion has the same result as going via full CAM16.
assert_eq!(partial_from_rgb, partial_from_full);
// It's also possible to convert from (and to) arrays and tuples:
let partial_from_array = Cam16Qmh::from([50.0f32, 80.0, 120.0]);
let partial_from_tuple = Cam16Qmh::from((50.0f32, 80.0, 120.0));Fields§
§brightness: TThe brightness (Q) of the color.
See Cam16::brightness.
colorfulness: TThe colorfulness (M) of the color.
See Cam16::colorfulness.
hue: Cam16Hue<T>The hue (h) of the color.
See Cam16::hue.
Implementations§
Source§impl<T> Cam16Qmh<T>
 
impl<T> Cam16Qmh<T>
Sourcepub fn new<H>(brightness: T, colorfulness: T, hue: H) -> Cam16Qmh<T>
 
pub fn new<H>(brightness: T, colorfulness: T, hue: H) -> Cam16Qmh<T>
Create a partial CIE CAM16 color.
Sourcepub const fn new_const(
    brightness: T,
    colorfulness: T,
    hue: Cam16Hue<T>,
) -> Cam16Qmh<T>
 
pub const fn new_const( brightness: T, colorfulness: T, hue: Cam16Hue<T>, ) -> Cam16Qmh<T>
Create a partial CIE CAM16 color. This is the same as Cam16Qmh::new
without the generic hue type. It’s temporary until const fn
supports traits.
Sourcepub fn into_components(self) -> (T, T, Cam16Hue<T>)
 
pub fn into_components(self) -> (T, T, Cam16Hue<T>)
Convert to a (brightness, colorfulness, hue) tuple.
Sourcepub fn from_components<H>(_: (T, T, H)) -> Cam16Qmh<T>
 
pub fn from_components<H>(_: (T, T, H)) -> Cam16Qmh<T>
Convert from a (brightness, colorfulness, hue) tuple.
Sourcepub fn from_xyz<WpParam>(
    color: Xyz<<WpParam as WhitePointParameter<<T as FromScalar>::Scalar>>::StaticWp, T>,
    parameters: impl Into<BakedParameters<WpParam, <T as FromScalar>::Scalar>>,
) -> Cam16Qmh<T>where
    Xyz<<WpParam as WhitePointParameter<<T as FromScalar>::Scalar>>::StaticWp, T>: IntoCam16Unclamped<WpParam, Cam16Qmh<T>, Scalar = <T as FromScalar>::Scalar>,
    T: FromScalar,
    WpParam: WhitePointParameter<<T as FromScalar>::Scalar>,
 
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>>,
) -> Cam16Qmh<T>where
    Xyz<<WpParam as WhitePointParameter<<T as FromScalar>::Scalar>>::StaticWp, T>: IntoCam16Unclamped<WpParam, Cam16Qmh<T>, Scalar = <T as FromScalar>::Scalar>,
    T: FromScalar,
    WpParam: WhitePointParameter<<T as FromScalar>::Scalar>,
Derive partial CIE CAM16 attributes for the provided color, under the provided viewing conditions.
use palette::{Srgb, IntoColor, cam16::{Cam16Qmh, 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 partial = Cam16Qmh::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::{Cam16Qmh, 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 partial = Cam16Qmh::from_xyz(rgb.into_color(), baked_parameters);Sourcepub fn into_xyz<WpParam>(
    self,
    parameters: impl Into<BakedParameters<WpParam, <T as FromScalar>::Scalar>>,
) -> Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>where
    Cam16Qmh<T>: Cam16IntoUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>, Scalar = <T as FromScalar>::Scalar>,
    WpParam: WhitePointParameter<T>,
    T: FromScalar,
 
pub fn into_xyz<WpParam>(
    self,
    parameters: impl Into<BakedParameters<WpParam, <T as FromScalar>::Scalar>>,
) -> Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>where
    Cam16Qmh<T>: Cam16IntoUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>, Scalar = <T as FromScalar>::Scalar>,
    WpParam: WhitePointParameter<T>,
    T: FromScalar,
Construct an XYZ color from these CIE CAM16 attributes, under the provided viewing conditions.
use palette::{Srgb, FromColor, cam16::{Cam16Qmh, Parameters}};
// Customize these according to the viewing conditions:
let mut example_parameters = Parameters::default_static_wp(40.0);
let partial = Cam16Qmh::new(50.0f32, 80.0, 120.0);
let rgb = Srgb::from_color(partial.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::{Cam16Qmh, 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 partial = Cam16Qmh::new(50.0f32, 80.0, 120.0);
let rgb = Srgb::from_color(partial.into_xyz(baked_parameters));Sourcepub fn from_full(full: Cam16<T>) -> Cam16Qmh<T>
 
pub fn from_full(full: Cam16<T>) -> Cam16Qmh<T>
Create a partial set of CIE CAM16 attributes.
It’s also possible to use Cam16Qmh::from or Cam16::into.
Sourcepub fn into_full<WpParam>(
    self,
    parameters: impl Into<BakedParameters<WpParam, <T as FromScalar>::Scalar>>,
) -> Cam16<T>where
    Cam16Qmh<T>: IntoCam16Unclamped<WpParam, Cam16<T>, Scalar = <T as FromScalar>::Scalar>,
    T: FromScalar,
 
pub fn into_full<WpParam>(
    self,
    parameters: impl Into<BakedParameters<WpParam, <T as FromScalar>::Scalar>>,
) -> Cam16<T>where
    Cam16Qmh<T>: IntoCam16Unclamped<WpParam, Cam16<T>, Scalar = <T as FromScalar>::Scalar>,
    T: FromScalar,
Reconstruct a full set of CIE CAM16 attributes, using the original viewing conditions.
use palette::{Srgb, IntoColor, cam16::{Cam16, Cam16Qmh, Parameters}};
use approx::assert_relative_eq;
// Customize these according to the viewing conditions:
let mut example_parameters = Parameters::default_static_wp(40.0);
// Optional, but saves some work:
let baked_parameters = example_parameters.bake();
let rgb = Srgb::new(0.3f64, 0.8, 0.1);
let cam16 = Cam16::from_xyz(rgb.into_color(), baked_parameters);
let partial = Cam16Qmh::from(cam16);
let reconstructed = partial.into_full(baked_parameters);
assert_relative_eq!(cam16, reconstructed, epsilon = 0.0000000000001);Source§impl<C> Cam16Qmh<C>
 
impl<C> Cam16Qmh<C>
Sourcepub fn iter<'a>(&'a self) -> <&'a Cam16Qmh<C> as IntoIterator>::IntoIterwhere
    &'a Cam16Qmh<C>: IntoIterator,
 
pub fn iter<'a>(&'a self) -> <&'a Cam16Qmh<C> as IntoIterator>::IntoIterwhere
    &'a Cam16Qmh<C>: IntoIterator,
Return an iterator over the colors in the wrapped collections.
Sourcepub fn iter_mut<'a>(
    &'a mut self,
) -> <&'a mut Cam16Qmh<C> as IntoIterator>::IntoIterwhere
    &'a mut Cam16Qmh<C>: IntoIterator,
 
pub fn iter_mut<'a>(
    &'a mut self,
) -> <&'a mut Cam16Qmh<C> as IntoIterator>::IntoIterwhere
    &'a mut Cam16Qmh<C>: IntoIterator,
Return an iterator that allows modifying the colors in the wrapped collections.
Sourcepub fn get<'a, I, T>(
    &'a self,
    index: I,
) -> Option<Cam16Qmh<&'a <I as SliceIndex<[T]>>::Output>>
 
pub fn get<'a, I, T>( &'a self, index: I, ) -> Option<Cam16Qmh<&'a <I as SliceIndex<[T]>>::Output>>
Get a color, or slice of colors, with references to the components at index. See slice::get for details.
Sourcepub fn get_mut<'a, I, T>(
    &'a mut self,
    index: I,
) -> Option<Cam16Qmh<&'a mut <I as SliceIndex<[T]>>::Output>>
 
pub fn get_mut<'a, I, T>( &'a mut self, index: I, ) -> Option<Cam16Qmh<&'a mut <I as SliceIndex<[T]>>::Output>>
Get a color, or slice of colors, that allows modifying the components at index. See slice::get_mut for details.
Source§impl<T> Cam16Qmh<Vec<T>>
 
impl<T> Cam16Qmh<Vec<T>>
Sourcepub fn with_capacity(capacity: usize) -> Cam16Qmh<Vec<T>>
 
pub fn with_capacity(capacity: usize) -> Cam16Qmh<Vec<T>>
Create a struct of vectors with a minimum capacity. See Vec::with_capacity for details.
Sourcepub fn push(&mut self, value: Cam16Qmh<T>)
 
pub fn push(&mut self, value: Cam16Qmh<T>)
Push an additional color’s components onto the component vectors. See Vec::push for details.
Sourcepub fn pop(&mut self) -> Option<Cam16Qmh<T>>
 
pub fn pop(&mut self) -> Option<Cam16Qmh<T>>
Pop a color’s components from the component vectors. See Vec::pop for details.
Sourcepub fn clear(&mut self)
 
pub fn clear(&mut self)
Clear the component vectors. See Vec::clear for details.
Trait Implementations§
Source§impl<T> AbsDiffEq for Cam16Qmh<T>
 
impl<T> AbsDiffEq for Cam16Qmh<T>
Source§fn default_epsilon() -> <Cam16Qmh<T> as AbsDiffEq>::Epsilon
 
fn default_epsilon() -> <Cam16Qmh<T> as AbsDiffEq>::Epsilon
Source§fn abs_diff_eq(
    &self,
    other: &Cam16Qmh<T>,
    epsilon: <T as AbsDiffEq>::Epsilon,
) -> bool
 
fn abs_diff_eq( &self, other: &Cam16Qmh<T>, epsilon: <T as AbsDiffEq>::Epsilon, ) -> bool
Source§fn abs_diff_ne(
    &self,
    other: &Cam16Qmh<T>,
    epsilon: <T as AbsDiffEq>::Epsilon,
) -> bool
 
fn abs_diff_ne( &self, other: &Cam16Qmh<T>, epsilon: <T as AbsDiffEq>::Epsilon, ) -> bool
AbsDiffEq::abs_diff_eq.Source§impl<T> AddAssign<T> for Cam16Qmh<T>
 
impl<T> AddAssign<T> for Cam16Qmh<T>
Source§fn add_assign(&mut self, c: T)
 
fn add_assign(&mut self, c: T)
+= operation. Read moreSource§impl<T> AddAssign for Cam16Qmh<T>where
    T: AddAssign,
 
impl<T> AddAssign for Cam16Qmh<T>where
    T: AddAssign,
Source§fn add_assign(&mut self, other: Cam16Qmh<T>)
 
fn add_assign(&mut self, other: Cam16Qmh<T>)
+= operation. Read moreSource§impl<WpParam, T> Cam16FromUnclamped<WpParam, Cam16Qmh<T>> for Cam16<T>where
    WpParam: WhitePointParameter<T>,
    T: Real + FromScalar + Zero + Arithmetics + Sqrt + PartialCmp + Clone,
    <T as HasBoolMask>::Mask: LazySelect<T> + Clone,
    <T as FromScalar>::Scalar: Clone,
 
impl<WpParam, T> Cam16FromUnclamped<WpParam, Cam16Qmh<T>> for Cam16<T>where
    WpParam: WhitePointParameter<T>,
    T: Real + FromScalar + Zero + Arithmetics + Sqrt + PartialCmp + Clone,
    <T as HasBoolMask>::Mask: LazySelect<T> + Clone,
    <T as FromScalar>::Scalar: Clone,
Source§type Scalar = <T as FromScalar>::Scalar
 
type Scalar = <T as FromScalar>::Scalar
parameters when converting.Source§fn cam16_from_unclamped(
    cam16: Cam16Qmh<T>,
    parameters: BakedParameters<WpParam, <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qmh<T>>>::Scalar>,
) -> Cam16<T>
 
fn cam16_from_unclamped( cam16: Cam16Qmh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qmh<T>>>::Scalar>, ) -> Cam16<T>
color into Self, using the provided parameters.Source§impl<WpParam, T> Cam16FromUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>> for Cam16Qmh<T>where
    Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>: IntoCam16Unclamped<WpParam, Cam16<T>>,
    WpParam: WhitePointParameter<T>,
 
impl<WpParam, T> Cam16FromUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>> for Cam16Qmh<T>where
    Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>: IntoCam16Unclamped<WpParam, Cam16<T>>,
    WpParam: WhitePointParameter<T>,
Source§type Scalar = <Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T> as IntoCam16Unclamped<WpParam, Cam16<T>>>::Scalar
 
type Scalar = <Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T> as IntoCam16Unclamped<WpParam, Cam16<T>>>::Scalar
parameters when converting.Source§fn cam16_from_unclamped(
    color: Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>,
    parameters: BakedParameters<WpParam, <Cam16Qmh<T> as Cam16FromUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>>>::Scalar>,
) -> Cam16Qmh<T>
 
fn cam16_from_unclamped( color: Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>, parameters: BakedParameters<WpParam, <Cam16Qmh<T> as Cam16FromUnclamped<WpParam, Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>>>::Scalar>, ) -> Cam16Qmh<T>
color into Self, using the provided parameters.Source§impl<T> ClampAssign for Cam16Qmh<T>where
    T: ClampAssign + Zero,
 
impl<T> ClampAssign for Cam16Qmh<T>where
    T: ClampAssign + Zero,
Source§fn clamp_assign(&mut self)
 
fn clamp_assign(&mut self)
Source§impl<T, C> Extend<Cam16Qmh<T>> for Cam16Qmh<C>where
    C: Extend<T>,
 
impl<T, C> Extend<Cam16Qmh<T>> for Cam16Qmh<C>where
    C: Extend<T>,
Source§fn extend<I>(&mut self, iter: I)where
    I: IntoIterator<Item = Cam16Qmh<T>>,
 
fn extend<I>(&mut self, iter: I)where
    I: IntoIterator<Item = Cam16Qmh<T>>,
Source§fn extend_one(&mut self, item: A)
 
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
 
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Qmh<T>> for Cam16<T>
 
impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Qmh<T>> for Cam16<T>
Source§type Scalar = <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qmh<T>>>::Scalar
 
type Scalar = <Cam16<T> as Cam16FromUnclamped<WpParam, Cam16Qmh<T>>>::Scalar
parameters when converting.Source§fn from_cam16_unclamped(
    cam16: Cam16Qmh<T>,
    parameters: BakedParameters<WpParam, <Cam16<T> as FromCam16Unclamped<WpParam, Cam16Qmh<T>>>::Scalar>,
) -> Cam16<T>
 
fn from_cam16_unclamped( cam16: Cam16Qmh<T>, parameters: BakedParameters<WpParam, <Cam16<T> as FromCam16Unclamped<WpParam, Cam16Qmh<T>>>::Scalar>, ) -> Cam16<T>
cam16 into Self, using the provided parameters.Source§impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Qmh<T>> for Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>where
    WpParam: WhitePointParameter<T>,
    T: Real + FromScalar + One + Zero + Sqrt + Powf + Abs + Signum + Arithmetics + Trigonometry + RealAngle + SignedAngle + PartialCmp + Clone,
    <T as HasBoolMask>::Mask: LazySelect<T> + Clone,
    <T as FromScalar>::Scalar: Clone,
 
impl<WpParam, T> FromCam16Unclamped<WpParam, Cam16Qmh<T>> for Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>where
    WpParam: WhitePointParameter<T>,
    T: Real + FromScalar + One + Zero + Sqrt + Powf + Abs + Signum + Arithmetics + Trigonometry + RealAngle + SignedAngle + PartialCmp + Clone,
    <T as HasBoolMask>::Mask: LazySelect<T> + Clone,
    <T as FromScalar>::Scalar: Clone,
Source§type Scalar = <T as FromScalar>::Scalar
 
type Scalar = <T as FromScalar>::Scalar
parameters when converting.Source§fn from_cam16_unclamped(
    cam16: Cam16Qmh<T>,
    parameters: BakedParameters<WpParam, <Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T> as FromCam16Unclamped<WpParam, Cam16Qmh<T>>>::Scalar>,
) -> Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>
 
fn from_cam16_unclamped( cam16: Cam16Qmh<T>, parameters: BakedParameters<WpParam, <Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T> as FromCam16Unclamped<WpParam, Cam16Qmh<T>>>::Scalar>, ) -> Xyz<<WpParam as WhitePointParameter<T>>::StaticWp, T>
cam16 into Self, using the provided parameters.Source§impl<T, _C, _A> FromColorUnclamped<Alpha<_C, _A>> for Cam16Qmh<T>where
    _C: IntoColorUnclamped<Cam16Qmh<T>>,
 
impl<T, _C, _A> FromColorUnclamped<Alpha<_C, _A>> for Cam16Qmh<T>where
    _C: IntoColorUnclamped<Cam16Qmh<T>>,
Source§impl<T> FromColorUnclamped<Cam16<T>> for Cam16Qmh<T>
 
impl<T> FromColorUnclamped<Cam16<T>> for Cam16Qmh<T>
Source§impl<T> FromColorUnclamped<Cam16Qmh<T>> for Cam16Qmh<T>
 
impl<T> FromColorUnclamped<Cam16Qmh<T>> for Cam16Qmh<T>
Source§impl<T, C> FromIterator<Cam16Qmh<T>> for Cam16Qmh<C>
 
impl<T, C> FromIterator<Cam16Qmh<T>> for Cam16Qmh<C>
Source§impl<T> HasBoolMask for Cam16Qmh<T>where
    T: HasBoolMask,
 
impl<T> HasBoolMask for Cam16Qmh<T>where
    T: HasBoolMask,
Source§type Mask = <T as HasBoolMask>::Mask
 
type Mask = <T as HasBoolMask>::Mask
Self values.Source§impl<'a, 'b, T> IntoIterator for &'a Cam16Qmh<&'b [T]>
 
impl<'a, 'b, T> IntoIterator for &'a Cam16Qmh<&'b [T]>
Source§impl<'a, 'b, T> IntoIterator for &'a Cam16Qmh<&'b mut [T]>
 
impl<'a, 'b, T> IntoIterator for &'a Cam16Qmh<&'b mut [T]>
Source§impl<'a, T> IntoIterator for &'a Cam16Qmh<Vec<T>>
 
impl<'a, T> IntoIterator for &'a Cam16Qmh<Vec<T>>
Source§impl<'a, 'b, T> IntoIterator for &'a mut Cam16Qmh<&'b mut [T]>
 
impl<'a, 'b, T> IntoIterator for &'a mut Cam16Qmh<&'b mut [T]>
Source§impl<'a, T> IntoIterator for &'a mut Cam16Qmh<Vec<T>>
 
impl<'a, T> IntoIterator for &'a mut Cam16Qmh<Vec<T>>
Source§impl<'a, T> IntoIterator for Cam16Qmh<&'a [T]>
 
impl<'a, T> IntoIterator for Cam16Qmh<&'a [T]>
Source§impl<'a, T> IntoIterator for Cam16Qmh<&'a mut [T]>
 
impl<'a, T> IntoIterator for Cam16Qmh<&'a mut [T]>
Source§impl<T> IntoIterator for Cam16Qmh<Vec<T>>
 
impl<T> IntoIterator for Cam16Qmh<Vec<T>>
Source§impl<T> IsWithinBounds for Cam16Qmh<T>
 
impl<T> IsWithinBounds for Cam16Qmh<T>
Source§fn is_within_bounds(&self) -> <T as HasBoolMask>::Mask
 
fn is_within_bounds(&self) -> <T as HasBoolMask>::Mask
Source§impl<T> RelativeEq for Cam16Qmh<T>where
    T: RelativeEq,
    <T as AbsDiffEq>::Epsilon: Clone,
    Cam16Hue<T>: RelativeEq<Epsilon = <T as AbsDiffEq>::Epsilon> + AbsDiffEq,
 
impl<T> RelativeEq for Cam16Qmh<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
 
fn default_max_relative() -> <T as AbsDiffEq>::Epsilon
Source§fn relative_eq(
    &self,
    other: &Cam16Qmh<T>,
    epsilon: <T as AbsDiffEq>::Epsilon,
    max_relative: <T as AbsDiffEq>::Epsilon,
) -> bool
 
fn relative_eq( &self, other: &Cam16Qmh<T>, epsilon: <T as AbsDiffEq>::Epsilon, max_relative: <T as AbsDiffEq>::Epsilon, ) -> bool
Source§fn relative_ne(
    &self,
    other: &Cam16Qmh<T>,
    epsilon: <T as AbsDiffEq>::Epsilon,
    max_relative: <T as AbsDiffEq>::Epsilon,
) -> bool
 
fn relative_ne( &self, other: &Cam16Qmh<T>, epsilon: <T as AbsDiffEq>::Epsilon, max_relative: <T as AbsDiffEq>::Epsilon, ) -> bool
RelativeEq::relative_eq.Source§impl<T> SaturatingAdd<T> for Cam16Qmh<T>where
    T: SaturatingAdd<Output = T> + Clone,
 
impl<T> SaturatingAdd<T> for Cam16Qmh<T>where
    T: SaturatingAdd<Output = T> + Clone,
Source§fn saturating_add(self, c: T) -> <Cam16Qmh<T> as SaturatingAdd<T>>::Output
 
fn saturating_add(self, c: T) -> <Cam16Qmh<T> as SaturatingAdd<T>>::Output
self and other, but saturates instead of overflowing.Source§impl<T> SaturatingAdd for Cam16Qmh<T>where
    T: SaturatingAdd<Output = T>,
 
impl<T> SaturatingAdd for Cam16Qmh<T>where
    T: SaturatingAdd<Output = T>,
Source§impl<T> SaturatingSub<T> for Cam16Qmh<T>where
    T: SaturatingSub<Output = T> + Clone,
 
impl<T> SaturatingSub<T> for Cam16Qmh<T>where
    T: SaturatingSub<Output = T> + Clone,
Source§fn saturating_sub(self, c: T) -> <Cam16Qmh<T> as SaturatingSub<T>>::Output
 
fn saturating_sub(self, c: T) -> <Cam16Qmh<T> as SaturatingSub<T>>::Output
self and other, but saturates instead of overflowing.Source§impl<T> SaturatingSub for Cam16Qmh<T>where
    T: SaturatingSub<Output = T>,
 
impl<T> SaturatingSub for Cam16Qmh<T>where
    T: SaturatingSub<Output = T>,
Source§impl<T> ShiftHueAssign for Cam16Qmh<T>where
    T: AddAssign,
 
impl<T> ShiftHueAssign for Cam16Qmh<T>where
    T: AddAssign,
Source§fn shift_hue_assign(&mut self, amount: <Cam16Qmh<T> as ShiftHueAssign>::Scalar)
 
fn shift_hue_assign(&mut self, amount: <Cam16Qmh<T> as ShiftHueAssign>::Scalar)
amount.Source§impl<T> SubAssign<T> for Cam16Qmh<T>
 
impl<T> SubAssign<T> for Cam16Qmh<T>
Source§fn sub_assign(&mut self, c: T)
 
fn sub_assign(&mut self, c: T)
-= operation. Read moreSource§impl<T> SubAssign for Cam16Qmh<T>where
    T: SubAssign,
 
impl<T> SubAssign for Cam16Qmh<T>where
    T: SubAssign,
Source§fn sub_assign(&mut self, other: Cam16Qmh<T>)
 
fn sub_assign(&mut self, other: Cam16Qmh<T>)
-= operation. Read moreSource§impl<T> UlpsEq for Cam16Qmh<T>
 
impl<T> UlpsEq for Cam16Qmh<T>
Source§fn default_max_ulps() -> u32
 
fn default_max_ulps() -> u32
Source§impl<T, _A> WithAlpha<_A> for Cam16Qmh<T>where
    _A: Stimulus,
 
impl<T, _A> WithAlpha<_A> for Cam16Qmh<T>where
    _A: Stimulus,
Source§fn with_alpha(self, alpha: _A) -> <Cam16Qmh<T> as WithAlpha<_A>>::WithAlpha
 
fn with_alpha(self, alpha: _A) -> <Cam16Qmh<T> as WithAlpha<_A>>::WithAlpha
Self already has a transparency, it is
overwritten. Read moreSource§fn without_alpha(self) -> <Cam16Qmh<T> as WithAlpha<_A>>::Color
 
fn without_alpha(self) -> <Cam16Qmh<T> as WithAlpha<_A>>::Color
Self::Color has
an internal transparency field, that field will be set to
A::max_intensity() to make it opaque. Read moreSource§fn split(self) -> (<Cam16Qmh<T> as WithAlpha<_A>>::Color, _A)
 
fn split(self) -> (<Cam16Qmh<T> as WithAlpha<_A>>::Color, _A)
impl<T> Copy for Cam16Qmh<T>where
    T: Copy,
impl<T> Eq for Cam16Qmh<T>
Auto Trait Implementations§
impl<T> Freeze for Cam16Qmh<T>where
    T: Freeze,
impl<T> RefUnwindSafe for Cam16Qmh<T>where
    T: RefUnwindSafe,
impl<T> Send for Cam16Qmh<T>where
    T: Send,
impl<T> Sync for Cam16Qmh<T>where
    T: Sync,
impl<T> Unpin for Cam16Qmh<T>where
    T: Unpin,
impl<T> UnwindSafe for Cam16Qmh<T>where
    T: UnwindSafe,
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
    T: Real + Zero + Arithmetics + Clone,
    Swp: WhitePoint<T>,
    Dwp: WhitePoint<T>,
    D: AdaptFrom<S, Swp, Dwp, T>,
 
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
    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) -> Dwhere
    M: TransformMatrix<T>,
 
fn adapt_into_using<M>(self, method: M) -> Dwhere
    M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
 
fn adapt_into(self) -> D
Source§impl<T, Res> Apply<Res> for Twhere
    T: ?Sized,
 
impl<T, Res> Apply<Res> for Twhere
    T: ?Sized,
Source§impl<T, C> ArraysFrom<C> for Twhere
    C: IntoArrays<T>,
 
impl<T, C> ArraysFrom<C> for Twhere
    C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
 
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
    C: FromArrays<T>,
 
impl<T, C> ArraysInto<C> for Twhere
    C: FromArrays<T>,
Source§fn arrays_into(self) -> C
 
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
    T: FromCam16Unclamped<WpParam, U>,
 
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
    T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
 
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
    self,
    parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
 
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
    C: IntoComponents<T>,
 
impl<T, C> ComponentsFrom<C> for Twhere
    C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
 
fn components_from(colors: C) -> T
Source§impl<T> Downcast for Twhere
    T: Any,
 
impl<T> Downcast for Twhere
    T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
 
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
 
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
 
fn as_any(&self) -> &(dyn Any + 'static)
&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)
 
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
 
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
 
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
 
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
 
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FromAngle<T> for T
 
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
 
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromColor<T> for Uwhere
    U: FromColorUnclamped<T> + Clamp,
 
impl<T, U> FromColor<T> for Uwhere
    U: FromColorUnclamped<T> + Clamp,
Source§fn from_color(t: T) -> U
 
fn from_color(t: T) -> U
Source§impl<T, U> FromColorMut<U> for T
 
impl<T, U> FromColorMut<U> for T
Source§fn from_color_mut(color: &mut U) -> FromColorMutGuard<'_, T, U>
 
fn from_color_mut(color: &mut U) -> FromColorMutGuard<'_, T, U>
Source§impl<T, U> FromColorUnclampedMut<U> for Twhere
    T: FromColorUnclamped<U> + ArrayCast + Clone,
    U: FromColorUnclamped<T> + ArrayCast<Array = <T as ArrayCast>::Array> + Clone,
 
impl<T, U> FromColorUnclampedMut<U> for Twhere
    T: FromColorUnclamped<U> + ArrayCast + Clone,
    U: FromColorUnclamped<T> + ArrayCast<Array = <T as ArrayCast>::Array> + Clone,
Source§fn from_color_unclamped_mut(
    color: &mut U,
) -> FromColorUnclampedMutGuard<'_, T, U>
 
fn from_color_unclamped_mut( color: &mut U, ) -> FromColorUnclampedMutGuard<'_, T, U>
Source§impl<T, U> FromStimulus<U> for Twhere
    U: IntoStimulus<T>,
 
impl<T, U> FromStimulus<U> for Twhere
    U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
 
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
 
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
 
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
 
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T, U> IntoAngle<U> for Twhere
    U: FromAngle<T>,
 
impl<T, U> IntoAngle<U> for Twhere
    U: FromAngle<T>,
Source§fn into_angle(self) -> U
 
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
    T: Cam16FromUnclamped<WpParam, U>,
 
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
    T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
 
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
    self,
    parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
 
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
    U: FromColor<T>,
 
impl<T, U> IntoColor<U> for Twhere
    U: FromColor<T>,
Source§fn into_color(self) -> U
 
fn into_color(self) -> U
Source§impl<T, U> IntoColorMut<T> for U
 
impl<T, U> IntoColorMut<T> for U
Source§fn into_color_mut(&mut self) -> FromColorMutGuard<'_, T, U>
 
fn into_color_mut(&mut self) -> FromColorMutGuard<'_, T, U>
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
    U: FromColorUnclamped<T>,
 
impl<T, U> IntoColorUnclamped<U> for Twhere
    U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
 
fn into_color_unclamped(self) -> U
Source§impl<T, U> IntoColorUnclampedMut<T> for U
 
impl<T, U> IntoColorUnclampedMut<T> for U
Source§fn into_color_unclamped_mut(&mut self) -> FromColorUnclampedMutGuard<'_, T, U>
 
fn into_color_unclamped_mut(&mut self) -> FromColorUnclampedMutGuard<'_, T, U>
Source§impl<T> IntoStimulus<T> for T
 
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
 
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<'a, T> ParamCurveMoments<'a> for T
 
impl<'a, T> ParamCurveMoments<'a> for T
Source§impl<T> ToHex for T
 
impl<T> ToHex for T
Source§fn encode_hex<U>(&self) -> Uwhere
    U: FromIterator<char>,
 
fn encode_hex<U>(&self) -> Uwhere
    U: FromIterator<char>,
self into the result. Lower case
letters are used (e.g. f9b4ca)Source§fn encode_hex_upper<U>(&self) -> Uwhere
    U: FromIterator<char>,
 
fn encode_hex_upper<U>(&self) -> Uwhere
    U: FromIterator<char>,
self into the result. Upper case
letters are used (e.g. F9B4CA)Source§impl<T, C> TryComponentsInto<C> for Twhere
    C: TryFromComponents<T>,
 
impl<T, C> TryComponentsInto<C> for Twhere
    C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
 
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
 
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryFromColor<T> for U
 
impl<T, U> TryFromColor<T> for U
Source§fn try_from_color(t: T) -> Result<U, OutOfBounds<U>>
 
fn try_from_color(t: T) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read moreSource§impl<T, U> TryIntoColor<U> for Twhere
    U: TryFromColor<T>,
 
impl<T, U> TryIntoColor<U> for Twhere
    U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
 
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more