[][src]Struct prisma::eHsi

#[repr(C)]pub struct eHsi<T, A = Deg<T>> { /* fields omitted */ }

The eHSI device-dependent polar color model

eHSI has the same components as Hsi: hue, saturation, intensity but has additional logic for rescaling saturation in the case of what would be out-of-gamut colors in the original HSI model. eHSI was adapted from the algorithm described in:

This example is not tested
K. Yoshinari, Y. Hoshi and A. Taguchi, "Color image enhancement in HSI color space
without gamut problem," 2014 6th International Symposium on Communications,
Control and Signal Processing (ISCCSP), Athens, 2014, pp. 578-581.

found freely here.

eHSI is fully defined over the cylinder, and is generally visually better at adjusting intensity.

Implementations

impl<T, A> eHsi<T, A> where
    T: PosNormalChannelScalar + Float,
    A: AngularChannelScalar + Angle<Scalar = T>, 
[src]

pub fn new(hue: A, saturation: T, intensity: T) -> Self[src]

Construct an eHsi instance from hue, saturation and intensity.

pub fn color_cast<TOut, AOut>(&self) -> eHsi<TOut, AOut> where
    T: ChannelFormatCast<TOut>,
    A: ChannelFormatCast<AOut>,
    AOut: AngularChannelScalar,
    TOut: PosNormalChannelScalar
[src]

Convert the internal channel scalar format

pub fn hue(&self) -> A[src]

Returns the hue scalar

pub fn saturation(&self) -> T[src]

Returns the saturation scalar

pub fn intensity(&self) -> T[src]

Returns the intensity scalar

pub fn hue_mut(&mut self) -> &mut A[src]

Returns a mutable reference to the hue scalar

pub fn saturation_mut(&mut self) -> &mut T[src]

Returns a mutable reference to the saturation scalar

pub fn intensity_mut(&mut self) -> &mut T[src]

Returns a mutable reference to the intensity scalar

pub fn set_hue(&mut self, val: A)[src]

Set the hue channel value

pub fn set_saturation(&mut self, val: T)[src]

Set the saturation channel value

pub fn set_intensity(&mut self, val: T)[src]

Set the intensity channel value

pub fn is_same_as_hsi(&self) -> bool[src]

Returns whether the eHsi instance would be the same in Hsi

pub fn to_hsi(&self) -> Option<Hsi<T, A>>[src]

Returns an Hsi instance that is the same as self if they would be equivalent, or None otherwise

pub fn from_hsi(hsi: &Hsi<T, A>) -> Option<eHsi<T, A>>[src]

Construct an eHsi instance from an Hsi instance if both would be equivalent

If they would not be equivalent, returns None.

Trait Implementations

impl<T, A> AbsDiffEq<eHsi<T, A>> for eHsi<T, A> where
    T: PosNormalChannelScalar + AbsDiffEq<Epsilon = A::Epsilon>,
    A: AngularChannelScalar + AbsDiffEq,
    A::Epsilon: Clone + Float
[src]

type Epsilon = T::Epsilon

Used for specifying relative comparisons.

impl<T, A> Bounded for eHsi<T, A> where
    T: PosNormalChannelScalar,
    A: AngularChannelScalar
[src]

impl<T: Clone, A: Clone> Clone for eHsi<T, A>[src]

impl<T, A> Color for eHsi<T, A> where
    T: PosNormalChannelScalar,
    A: AngularChannelScalar
[src]

type Tag = EHsiTag

The unique tag unit struct identifying the color type

type ChannelsTuple = (A, T, T)

A tuple of types for each channel in the color

impl<T: Copy, A: Copy> Copy for eHsi<T, A>[src]

impl<T: Debug, A: Debug> Debug for eHsi<T, A>[src]

impl<T, A> Default for eHsi<T, A> where
    T: PosNormalChannelScalar + Zero,
    A: AngularChannelScalar + Zero
[src]

impl<T, A> Display for eHsi<T, A> where
    T: PosNormalChannelScalar + Display,
    A: AngularChannelScalar + Display
[src]

impl<T, A> EncodableColor for eHsi<T, A> where
    T: PosNormalChannelScalar + Float,
    A: AngularChannelScalar + Angle<Scalar = T> + FromAngle<Turns<T>>, 
[src]

impl<T, A> From<Rgb<T>> for eHsi<T, A> where
    T: PosNormalChannelScalar + Float,
    A: AngularChannelScalar + Angle<Scalar = T> + FromAngle<Rad<T>>, 
[src]

impl<T, A> FromColor<Rgb<T>> for eHsi<T, A> where
    T: PosNormalChannelScalar + Float,
    A: AngularChannelScalar + Angle<Scalar = T> + FromAngle<Rad<T>>, 
[src]

impl<T, A> FromColor<eHsi<T, A>> for Rgb<T> where
    T: PosNormalChannelScalar + Float,
    A: AngularChannelScalar + Angle<Scalar = T>, 
[src]

impl<T, A> FromTuple for eHsi<T, A> where
    T: PosNormalChannelScalar + Float,
    A: AngularChannelScalar + Angle<Scalar = T>, 
[src]

impl<T: Hash, A: Hash> Hash for eHsi<T, A>[src]

impl<T, A> Invert for eHsi<T, A> where
    T: PosNormalChannelScalar,
    A: AngularChannelScalar
[src]

impl<T, A> Lerp for eHsi<T, A> where
    T: PosNormalChannelScalar + Lerp,
    A: AngularChannelScalar + Lerp
[src]

type Position = A::Position

The type of the pos argument

impl<T: PartialEq, A: PartialEq> PartialEq<eHsi<T, A>> for eHsi<T, A>[src]

impl<T: PartialOrd, A: PartialOrd> PartialOrd<eHsi<T, A>> for eHsi<T, A>[src]

impl<T, A> PolarColor for eHsi<T, A> where
    T: PosNormalChannelScalar,
    A: AngularChannelScalar
[src]

type Angular = A

The angular channel's scalar type

type Cartesian = T

The remaining channels' scalar types

impl<T, A> RelativeEq<eHsi<T, A>> for eHsi<T, A> where
    T: PosNormalChannelScalar + RelativeEq<Epsilon = A::Epsilon>,
    A: AngularChannelScalar + RelativeEq,
    A::Epsilon: Clone + Float
[src]

impl<T, A> StructuralPartialEq for eHsi<T, A>[src]

impl<T, A> UlpsEq<eHsi<T, A>> for eHsi<T, A> where
    T: PosNormalChannelScalar + UlpsEq<Epsilon = A::Epsilon>,
    A: AngularChannelScalar + UlpsEq,
    A::Epsilon: Clone + Float
[src]

Auto Trait Implementations

impl<T, A> RefUnwindSafe for eHsi<T, A> where
    A: RefUnwindSafe,
    T: RefUnwindSafe

impl<T, A> Send for eHsi<T, A> where
    A: Send,
    T: Send

impl<T, A> Sync for eHsi<T, A> where
    A: Sync,
    T: Sync

impl<T, A> Unpin for eHsi<T, A> where
    A: Unpin,
    T: Unpin

impl<T, A> UnwindSafe for eHsi<T, A> where
    A: UnwindSafe,
    T: UnwindSafe

Blanket Implementations

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> Into<U> for T where
    U: From<T>, 
[src]

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

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

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> 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.