Struct palette::Lch[][src]

#[repr(C)]
pub struct Lch<Wp = D65, T = f32> where
    T: FloatComponent,
    Wp: WhitePoint
{ pub l: T, pub chroma: T, pub hue: LabHue<T>, pub white_point: PhantomData<Wp>, }

CIE L*C*h°, a polar version of CIE L*a*b*.

L*C*h° shares its range and perceptual uniformity with L*a*b*, but it’s a cylindrical color space, like HSL and HSV. This gives it the same ability to directly change the hue and colorfulness of a color, while preserving other visual aspects.

Fields

l: T

L* is the lightness of the color. 0.0 gives absolute black and 100.0 gives the brightest white.

chroma: T

C* is the colorfulness of the color. It’s similar to saturation. 0.0 gives gray scale colors, and numbers around 128-181 gives fully saturated colors. The upper limit of 128 should include the whole L*a*b* space and some more.

hue: LabHue<T>

The hue of the color, in degrees. Decides if it’s red, blue, purple, etc.

white_point: PhantomData<Wp>

The white point associated with the color’s illuminant and observer. D65 for 2 degree observer is used by default.

Implementations

impl<T> Lch<D65, T> where
    T: FloatComponent
[src]

pub fn new<H: Into<LabHue<T>>>(l: T, chroma: T, hue: H) -> Lch<D65, T>[src]

CIE L*C*h° with white point D65.

impl<Wp, T> Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

pub fn with_wp<H: Into<LabHue<T>>>(l: T, chroma: T, hue: H) -> Lch<Wp, T>[src]

CIE L*C*h°.

pub fn into_components(self) -> (T, T, LabHue<T>)[src]

Convert to a (L\*, C\*, h°) tuple.

pub fn from_components<H: Into<LabHue<T>>>((l, chroma, hue): (T, T, H)) -> Self[src]

Convert from a (L\*, C\*, h°) tuple.

pub fn min_l() -> T[src]

Return the l value minimum.

pub fn max_l() -> T[src]

Return the l value maximum.

pub fn min_chroma() -> T[src]

Return the chroma value minimum.

pub fn max_chroma() -> T[src]

Return the chroma value maximum. This value does not cover the entire color space, but covers enough to be practical for downsampling to smaller color spaces like sRGB.

pub fn max_extended_chroma() -> T[src]

Return the chroma extended maximum value. This value covers the entire color space and is included for completeness, but the additional range should be unnecessary for most use cases.

Trait Implementations

impl<Wp, T> AbsDiffEq<Lch<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent + AbsDiffEq,
    T::Epsilon: Copy + FloatComponent,
    Wp: WhitePoint + PartialEq
[src]

type Epsilon = T::Epsilon

Used for specifying relative comparisons.

impl<Wp, T> Add<Lch<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

type Output = Lch<Wp, T>

The resulting type after applying the + operator.

impl<Wp, T> Add<T> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

type Output = Lch<Wp, T>

The resulting type after applying the + operator.

impl<Wp, T> AddAssign<Lch<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent + AddAssign,
    Wp: WhitePoint
[src]

impl<Wp, T> AddAssign<T> for Lch<Wp, T> where
    T: FloatComponent + AddAssign,
    Wp: WhitePoint
[src]

impl<Wp, T, P: ?Sized> AsMut<P> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    P: RawPixel<T>, 
[src]

impl<Wp, T, P: ?Sized> AsRef<P> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    P: RawPixel<T>, 
[src]

impl<Wp, T> Clamp for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

impl<Wp, T> Clone for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

impl<Wp, T> ColorDifference for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

CIEDE2000 distance metric for color difference.

type Scalar = T

The type of the calculated color difference

impl<Wp: Debug, T: Debug> Debug for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

impl<Wp, T> Default for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

impl<Wp: WhitePoint, T: FloatComponent, H: Into<LabHue<T>>> From<(T, T, H)> for Lch<Wp, T>[src]

impl<Wp, T, _C, _A> FromColorUnclamped<Alpha<_C, _A>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    _C: IntoColorUnclamped<Self>,
    _A: Component
[src]

impl<Wp, T, _S> FromColorUnclamped<Hsl<_S, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    _S: RgbStandard,
    _S::Space: RgbSpace<WhitePoint = Wp>, 
[src]

impl<Wp, T> FromColorUnclamped<Hsluv<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T, _S> FromColorUnclamped<Hsv<_S, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    _S: RgbStandard,
    _S::Space: RgbSpace<WhitePoint = Wp>, 
[src]

impl<Wp, T, _S> FromColorUnclamped<Hwb<_S, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    _S: RgbStandard,
    _S::Space: RgbSpace<WhitePoint = Wp>, 
[src]

impl<Wp, T> FromColorUnclamped<Lab<Wp, T>> for Lch<Wp, T> where
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<S, T> FromColorUnclamped<Lch<<<S as RgbStandard>::Space as RgbSpace>::WhitePoint, T>> for Hsl<S, T> where
    T: FloatComponent,
    S: RgbStandard,
    T: FloatComponent,
    T: FloatComponent
[src]

impl<S, T> FromColorUnclamped<Lch<<<S as RgbStandard>::Space as RgbSpace>::WhitePoint, T>> for Hsv<S, T> where
    T: FloatComponent,
    S: RgbStandard,
    T: FloatComponent,
    T: FloatComponent
[src]

impl<S, T> FromColorUnclamped<Lch<<<S as RgbStandard>::Space as RgbSpace>::WhitePoint, T>> for Hwb<S, T> where
    T: FloatComponent,
    S: RgbStandard,
    T: FloatComponent,
    T: FloatComponent
[src]

impl<S: RgbStandard, T: Component> FromColorUnclamped<Lch<<<S as RgbStandard>::Space as RgbSpace>::WhitePoint, T>> for Rgb<S, T> where
    T: FloatComponent,
    T: FloatComponent
[src]

impl<S, T> FromColorUnclamped<Lch<<S as LumaStandard>::WhitePoint, T>> for Luma<S, T> where
    T: Component,
    S: LumaStandard,
    T: FloatComponent,
    T: FloatComponent
[src]

impl<Wp, T> FromColorUnclamped<Lch<Wp, T>> for Hsluv<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T> FromColorUnclamped<Lch<Wp, T>> for Lab<Wp, T> where
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T> FromColorUnclamped<Lch<Wp, T>> for Lch<Wp, T> where
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T> FromColorUnclamped<Lch<Wp, T>> for Lchuv<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T> FromColorUnclamped<Lch<Wp, T>> for Luv<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T> FromColorUnclamped<Lch<Wp, T>> for Xyz<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T> FromColorUnclamped<Lch<Wp, T>> for Yxy<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T> FromColorUnclamped<Lchuv<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T, _S> FromColorUnclamped<Luma<_S, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    _S: LumaStandard<WhitePoint = Wp>, 
[src]

impl<Wp, T> FromColorUnclamped<Luv<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T, _S> FromColorUnclamped<Rgb<_S, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    _S: RgbStandard,
    _S::Space: RgbSpace<WhitePoint = Wp>, 
[src]

impl<Wp, T> FromColorUnclamped<Xyz<Wp, T>> for Lch<Wp, T> where
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T> FromColorUnclamped<Yxy<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent,
    Wp: WhitePoint,
    T: FloatComponent
[src]

impl<Wp, T> GetHue for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

type Hue = LabHue<T>

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

impl<Wp, T> Hue for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

impl<Wp: WhitePoint, T: FloatComponent> Into<(T, T, LabHue<T>)> for Lch<Wp, T>[src]

impl<Wp, T> Mix for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

type Scalar = T

The type of the mixing factor.

impl<Wp, T> PartialEq<Lch<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent + PartialEq,
    Wp: WhitePoint
[src]

impl<Wp, T> Pixel<T> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

impl<Wp, T> RelativeContrast for Lch<Wp, T> where
    Wp: WhitePoint,
    T: FloatComponent
[src]

type Scalar = T

The type of the contrast ratio.

impl<Wp, T> RelativeEq<Lch<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent + RelativeEq,
    T::Epsilon: Copy + FloatComponent,
    Wp: WhitePoint + PartialEq
[src]

impl<Wp, T> Saturate for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

type Scalar = T

The type of the (de)saturation modifier.

impl<Wp, T> Shade for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

type Scalar = T

The type of the lighten/darken modifier.

impl<Wp, T> Sub<Lch<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

type Output = Lch<Wp, T>

The resulting type after applying the - operator.

impl<Wp, T> Sub<T> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

type Output = Lch<Wp, T>

The resulting type after applying the - operator.

impl<Wp, T> SubAssign<Lch<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent + SubAssign,
    Wp: WhitePoint
[src]

impl<Wp, T> SubAssign<T> for Lch<Wp, T> where
    T: FloatComponent + SubAssign,
    Wp: WhitePoint
[src]

impl<Wp, T> UlpsEq<Lch<Wp, T>> for Lch<Wp, T> where
    T: FloatComponent + UlpsEq,
    T::Epsilon: Copy + FloatComponent,
    Wp: WhitePoint + PartialEq
[src]

impl<Wp, T, _A> WithAlpha<_A> for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint,
    _A: Component
[src]

type Color = Self

The opaque color type, without any transparency. Read more

type WithAlpha = Alpha<Self, _A>

The color type with transparency applied. Read more

impl<Wp, T> Copy for Lch<Wp, T> where
    T: FloatComponent,
    Wp: WhitePoint
[src]

impl<Wp, T> Eq for Lch<Wp, T> where
    T: FloatComponent + Eq,
    Wp: WhitePoint
[src]

Auto Trait Implementations

impl<Wp, T> RefUnwindSafe for Lch<Wp, T> where
    T: RefUnwindSafe,
    Wp: RefUnwindSafe

impl<Wp, T> Send for Lch<Wp, T> where
    T: Send,
    Wp: Send

impl<Wp, T> Sync for Lch<Wp, T> where
    T: Sync,
    Wp: Sync

impl<Wp, T> Unpin for Lch<Wp, T> where
    T: Unpin,
    Wp: Unpin

impl<Wp, T> UnwindSafe for Lch<Wp, T> where
    T: UnwindSafe,
    Wp: UnwindSafe

Blanket Implementations

impl<S, D, Swp, Dwp, T> AdaptFrom<S, Swp, Dwp, T> for D where
    T: FloatComponent,
    S: IntoColorUnclamped<Xyz<Swp, T>>,
    Swp: WhitePoint,
    Dwp: WhitePoint,
    D: FromColorUnclamped<Xyz<Dwp, T>>, 
[src]

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S where
    T: FloatComponent,
    Swp: WhitePoint,
    Dwp: WhitePoint,
    D: AdaptFrom<S, Swp, Dwp, T>, 
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> FromColor<T> for U where
    U: FromColorUnclamped<T> + Clamp
[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> IntoColor<U> for T where
    U: FromColor<T>, 
[src]

impl<T, U> IntoColorUnclamped<U> for T where
    U: FromColorUnclamped<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryFromColor<T> for U where
    U: FromColorUnclamped<T> + Clamp
[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T, U> TryIntoColor<U> for T where
    U: TryFromColor<T>, 
[src]