Struct palette::blend::PreAlpha [−][src]
#[repr(C)]pub struct PreAlpha<C, T: Float> { pub color: C, pub alpha: T, }
Premultiplied alpha wrapper.
Premultiplied colors are commonly used in composition algorithms to simplify the calculations. It may also be preferred when interpolating between colors, which is one of the reasons why it’s offered as a separate type. The other reason is to make it easier to avoid unnecessary computations in composition chains.
use palette::{Blend, LinSrgb, LinSrgba}; use palette::blend::PreAlpha; let a = PreAlpha::from(LinSrgba::new(0.4, 0.5, 0.5, 0.3)); let b = PreAlpha::from(LinSrgba::new(0.3, 0.8, 0.4, 0.4)); let c = PreAlpha::from(LinSrgba::new(0.7, 0.1, 0.8, 0.8)); let res = LinSrgb::from_premultiplied(a.screen(b).overlay(c));
Note that converting to and from premultiplied alpha will cause the alpha component to be clamped to [0.0, 1.0].
Fields
color: C
The premultiplied color components (original.color * original.alpha
).
alpha: T
The transparency component. 0.0 is fully transparent and 1.0 is fully opaque.
Trait Implementations
impl<C, T> AbsDiffEq<PreAlpha<C, T>> for PreAlpha<C, T> where
C: AbsDiffEq<Epsilon = T::Epsilon>,
T: AbsDiffEq + Float,
T::Epsilon: Copy,
[src]
impl<C, T> AbsDiffEq<PreAlpha<C, T>> for PreAlpha<C, T> where
C: AbsDiffEq<Epsilon = T::Epsilon>,
T: AbsDiffEq + Float,
T::Epsilon: Copy,
[src]type Epsilon = T::Epsilon
Used for specifying relative comparisons.
fn default_epsilon() -> Self::Epsilon
[src]
fn abs_diff_eq(&self, other: &PreAlpha<C, T>, epsilon: Self::Epsilon) -> bool
[src]
pub fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
[src]
impl<C: AddAssign, T: Float + AddAssign> AddAssign<PreAlpha<C, T>> for PreAlpha<C, T>
[src]
impl<C: AddAssign, T: Float + AddAssign> AddAssign<PreAlpha<C, T>> for PreAlpha<C, T>
[src]fn add_assign(&mut self, other: PreAlpha<C, T>)
[src]
impl<T: Float + AddAssign, C: AddAssign<T>> AddAssign<T> for PreAlpha<C, T>
[src]
impl<T: Float + AddAssign, C: AddAssign<T>> AddAssign<T> for PreAlpha<C, T>
[src]fn add_assign(&mut self, c: T)
[src]
impl<C, T, P: ?Sized> AsMut<P> for PreAlpha<C, T> where
C: Pixel<T>,
T: Float,
P: RawPixel<T>,
[src]
impl<C, T, P: ?Sized> AsMut<P> for PreAlpha<C, T> where
C: Pixel<T>,
T: Float,
P: RawPixel<T>,
[src]impl<C, T, P: ?Sized> AsRef<P> for PreAlpha<C, T> where
C: Pixel<T>,
T: Float,
P: RawPixel<T>,
[src]
impl<C, T, P: ?Sized> AsRef<P> for PreAlpha<C, T> where
C: Pixel<T>,
T: Float,
P: RawPixel<T>,
[src]impl<C, T> Blend for PreAlpha<C, T> where
C: Blend<Color = C> + ComponentWise<Scalar = T>,
T: Float,
[src]
impl<C, T> Blend for PreAlpha<C, T> where
C: Blend<Color = C> + ComponentWise<Scalar = T>,
T: Float,
[src]type Color = C
The core color type. Typically Self
for color types without alpha.
fn into_premultiplied(self) -> PreAlpha<C, T>
[src]
fn from_premultiplied(color: PreAlpha<C, T>) -> PreAlpha<C, T>
[src]
fn blend<F>(self, destination: Self, blend_function: F) -> Self where
F: BlendFunction<Self::Color>,
[src]
F: BlendFunction<Self::Color>,
fn over(self, other: Self) -> Self
[src]
fn inside(self, other: Self) -> Self
[src]
fn outside(self, other: Self) -> Self
[src]
fn atop(self, other: Self) -> Self
[src]
fn xor(self, other: Self) -> Self
[src]
fn plus(self, other: Self) -> Self
[src]
fn multiply(self, other: Self) -> Self
[src]
fn screen(self, other: Self) -> Self
[src]
fn overlay(self, other: Self) -> Self
[src]
fn darken(self, other: Self) -> Self
[src]
fn lighten(self, other: Self) -> Self
[src]
fn dodge(self, other: Self) -> Self
[src]
fn burn(self, other: Self) -> Self
[src]
fn hard_light(self, other: Self) -> Self
[src]
fn soft_light(self, other: Self) -> Self
[src]
fn difference(self, other: Self) -> Self
[src]
fn exclusion(self, other: Self) -> Self
[src]
impl<C: ComponentWise<Scalar = T>, T: Float> ComponentWise for PreAlpha<C, T>
[src]
impl<C: ComponentWise<Scalar = T>, T: Float> ComponentWise for PreAlpha<C, T>
[src]type Scalar = T
The scalar type for color components.
fn component_wise<F: FnMut(T, T) -> T>(
&self,
other: &PreAlpha<C, T>,
f: F
) -> PreAlpha<C, T>
[src]
&self,
other: &PreAlpha<C, T>,
f: F
) -> PreAlpha<C, T>
fn component_wise_self<F: FnMut(T) -> T>(&self, f: F) -> PreAlpha<C, T>
[src]
impl<C: DivAssign, T: Float + DivAssign> DivAssign<PreAlpha<C, T>> for PreAlpha<C, T>
[src]
impl<C: DivAssign, T: Float + DivAssign> DivAssign<PreAlpha<C, T>> for PreAlpha<C, T>
[src]fn div_assign(&mut self, other: PreAlpha<C, T>)
[src]
impl<T: Float + DivAssign, C: DivAssign<T>> DivAssign<T> for PreAlpha<C, T>
[src]
impl<T: Float + DivAssign, C: DivAssign<T>> DivAssign<T> for PreAlpha<C, T>
[src]fn div_assign(&mut self, c: T)
[src]
impl<C: MulAssign, T: Float + MulAssign> MulAssign<PreAlpha<C, T>> for PreAlpha<C, T>
[src]
impl<C: MulAssign, T: Float + MulAssign> MulAssign<PreAlpha<C, T>> for PreAlpha<C, T>
[src]fn mul_assign(&mut self, other: PreAlpha<C, T>)
[src]
impl<T: Float + MulAssign, C: MulAssign<T>> MulAssign<T> for PreAlpha<C, T>
[src]
impl<T: Float + MulAssign, C: MulAssign<T>> MulAssign<T> for PreAlpha<C, T>
[src]fn mul_assign(&mut self, c: T)
[src]
impl<C, T> PartialEq<PreAlpha<C, T>> for PreAlpha<C, T> where
T: Float + PartialEq,
C: PartialEq,
[src]
impl<C, T> PartialEq<PreAlpha<C, T>> for PreAlpha<C, T> where
T: Float + PartialEq,
C: PartialEq,
[src]impl<T: Float, C: Pixel<T>> Pixel<T> for PreAlpha<C, T>
[src]
impl<T: Float, C: Pixel<T>> Pixel<T> for PreAlpha<C, T>
[src]const CHANNELS: usize
[src]
fn as_raw<P: RawPixel<T> + ?Sized>(&self) -> &P
[src]
fn as_raw_mut<P: RawPixel<T> + ?Sized>(&mut self) -> &mut P
[src]
fn into_raw<P: RawPixelSized<T>>(self) -> P
[src]
fn from_raw<P: RawPixel<T> + ?Sized>(pixel: &P) -> &Self
[src]
fn from_raw_mut<P: RawPixel<T> + ?Sized>(pixel: &mut P) -> &mut Self
[src]
fn from_raw_slice(slice: &[T]) -> &[Self]
[src]
fn from_raw_slice_mut(slice: &mut [T]) -> &mut [Self]
[src]
fn into_raw_slice(slice: &[Self]) -> &[T]
[src]
fn into_raw_slice_mut(slice: &mut [Self]) -> &mut [T]
[src]
impl<C, T> RelativeEq<PreAlpha<C, T>> for PreAlpha<C, T> where
C: RelativeEq<Epsilon = T::Epsilon>,
T: RelativeEq + Float,
T::Epsilon: Copy,
[src]
impl<C, T> RelativeEq<PreAlpha<C, T>> for PreAlpha<C, T> where
C: RelativeEq<Epsilon = T::Epsilon>,
T: RelativeEq + Float,
T::Epsilon: Copy,
[src]fn default_max_relative() -> Self::Epsilon
[src]
fn relative_eq(
&self,
other: &PreAlpha<C, T>,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
[src]
&self,
other: &PreAlpha<C, T>,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
pub fn relative_ne(
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
[src]
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
impl<C: SubAssign, T: Float + SubAssign> SubAssign<PreAlpha<C, T>> for PreAlpha<C, T>
[src]
impl<C: SubAssign, T: Float + SubAssign> SubAssign<PreAlpha<C, T>> for PreAlpha<C, T>
[src]fn sub_assign(&mut self, other: PreAlpha<C, T>)
[src]
impl<T: Float + SubAssign, C: SubAssign<T>> SubAssign<T> for PreAlpha<C, T>
[src]
impl<T: Float + SubAssign, C: SubAssign<T>> SubAssign<T> for PreAlpha<C, T>
[src]fn sub_assign(&mut self, c: T)
[src]
impl<C, T> UlpsEq<PreAlpha<C, T>> for PreAlpha<C, T> where
C: UlpsEq<Epsilon = T::Epsilon>,
T: UlpsEq + Float,
T::Epsilon: Copy,
[src]
impl<C, T> UlpsEq<PreAlpha<C, T>> for PreAlpha<C, T> where
C: UlpsEq<Epsilon = T::Epsilon>,
T: UlpsEq + Float,
T::Epsilon: Copy,
[src]impl<C: Copy, T: Copy + Float> Copy for PreAlpha<C, T>
[src]
impl<C, T> Eq for PreAlpha<C, T> where
T: Float + Eq,
C: Eq,
[src]
T: Float + Eq,
C: Eq,
Auto Trait Implementations
impl<C, T> RefUnwindSafe for PreAlpha<C, T> where
C: RefUnwindSafe,
T: RefUnwindSafe,
C: RefUnwindSafe,
T: RefUnwindSafe,
impl<C, T> Send for PreAlpha<C, T> where
C: Send,
T: Send,
C: Send,
T: Send,
impl<C, T> Sync for PreAlpha<C, T> where
C: Sync,
T: Sync,
C: Sync,
T: Sync,
impl<C, T> Unpin for PreAlpha<C, T> where
C: Unpin,
T: Unpin,
C: Unpin,
T: Unpin,
impl<C, T> UnwindSafe for PreAlpha<C, T> where
C: UnwindSafe,
T: UnwindSafe,
C: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
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<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]pub fn adapt_into_using<M>(Self, M) -> D where
M: TransformMatrix<Swp, Dwp, T>,
[src]
M: TransformMatrix<Swp, Dwp, T>,
fn adapt_into(self) -> D
[src]
impl<T, U> IntoColor<U> for T where
U: FromColor<T>,
[src]
impl<T, U> IntoColor<U> for T where
U: FromColor<T>,
[src]pub fn into_color(Self) -> U
[src]
impl<T, U> IntoColorUnclamped<U> for T where
U: FromColorUnclamped<T>,
[src]
impl<T, U> IntoColorUnclamped<U> for T where
U: FromColorUnclamped<T>,
[src]pub fn into_color_unclamped(Self) -> U
[src]
impl<T, U> TryIntoColor<U> for T where
U: TryFromColor<T>,
[src]
impl<T, U> TryIntoColor<U> for T where
U: TryFromColor<T>,
[src]