[−][src]Struct palette::blend::PreAlpha
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]
C: AbsDiffEq<Epsilon = T::Epsilon>,
T: AbsDiffEq + Float,
T::Epsilon: Copy,
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]
fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
[src]
impl<C: Add, T: Float> Add<PreAlpha<C, T>> for PreAlpha<C, T>
[src]
type Output = PreAlpha<C::Output, T>
The resulting type after applying the +
operator.
fn add(self, other: PreAlpha<C, T>) -> Self::Output
[src]
impl<T: Float, C: Add<T>> Add<T> for PreAlpha<C, T>
[src]
type Output = PreAlpha<C::Output, T>
The resulting type after applying the +
operator.
fn add(self, c: T) -> Self::Output
[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]
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]
C: Pixel<T>,
T: Float,
P: RawPixel<T>,
impl<C, T, P: ?Sized> AsRef<P> for PreAlpha<C, T> where
C: Pixel<T>,
T: Float,
P: RawPixel<T>,
[src]
C: Pixel<T>,
T: Float,
P: RawPixel<T>,
impl<C, T> Blend for PreAlpha<C, T> where
C: Blend<Color = C> + ComponentWise<Scalar = T>,
T: Float,
[src]
C: Blend<Color = C> + ComponentWise<Scalar = T>,
T: Float,
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: Clone, T: Clone + Float> Clone 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: Copy, T: Copy + Float> Copy for PreAlpha<C, T>
[src]
impl<C: Debug, T: Debug + Float> Debug for PreAlpha<C, T>
[src]
impl<C: Default, T: Float> Default for PreAlpha<C, T>
[src]
impl<C, T: Float> Deref for PreAlpha<C, T>
[src]
impl<C, T: Float> DerefMut for PreAlpha<C, T>
[src]
impl<C: Div, T: Float> Div<PreAlpha<C, T>> for PreAlpha<C, T>
[src]
type Output = PreAlpha<C::Output, T>
The resulting type after applying the /
operator.
fn div(self, other: PreAlpha<C, T>) -> Self::Output
[src]
impl<T: Float, C: Div<T>> Div<T> for PreAlpha<C, T>
[src]
type Output = PreAlpha<C::Output, T>
The resulting type after applying the /
operator.
fn div(self, c: T) -> Self::Output
[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]
fn div_assign(&mut self, c: T)
[src]
impl<C, T> From<Alpha<C, T>> for PreAlpha<C, T> where
C: ComponentWise<Scalar = T>,
T: Float,
[src]
C: ComponentWise<Scalar = T>,
T: Float,
impl<C, T> From<PreAlpha<C, T>> for Alpha<C, T> where
C: ComponentWise<Scalar = T>,
T: Float,
[src]
C: ComponentWise<Scalar = T>,
T: Float,
impl<C: Mix> Mix for PreAlpha<C, C::Scalar>
[src]
type Scalar = C::Scalar
The type of the mixing factor.
fn mix(
&self,
other: &PreAlpha<C, C::Scalar>,
factor: C::Scalar
) -> PreAlpha<C, C::Scalar>
[src]
&self,
other: &PreAlpha<C, C::Scalar>,
factor: C::Scalar
) -> PreAlpha<C, C::Scalar>
impl<C: Mul, T: Float> Mul<PreAlpha<C, T>> for PreAlpha<C, T>
[src]
type Output = PreAlpha<C::Output, T>
The resulting type after applying the *
operator.
fn mul(self, other: PreAlpha<C, T>) -> Self::Output
[src]
impl<T: Float, C: Mul<T>> Mul<T> for PreAlpha<C, T>
[src]
type Output = PreAlpha<C::Output, T>
The resulting type after applying the *
operator.
fn mul(self, c: T) -> Self::Output
[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]
fn mul_assign(&mut self, c: T)
[src]
impl<C: PartialEq, T: PartialEq + Float> PartialEq<PreAlpha<C, 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]
C: RelativeEq<Epsilon = T::Epsilon>,
T: RelativeEq + Float,
T::Epsilon: Copy,
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
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, T: Float> StructuralPartialEq for PreAlpha<C, T>
[src]
impl<C: Sub, T: Float> Sub<PreAlpha<C, T>> for PreAlpha<C, T>
[src]
type Output = PreAlpha<C::Output, T>
The resulting type after applying the -
operator.
fn sub(self, other: PreAlpha<C, T>) -> Self::Output
[src]
impl<T: Float, C: Sub<T>> Sub<T> for PreAlpha<C, T>
[src]
type Output = PreAlpha<C::Output, T>
The resulting type after applying the -
operator.
fn sub(self, c: T) -> Self::Output
[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]
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]
C: UlpsEq<Epsilon = T::Epsilon>,
T: UlpsEq + Float,
T::Epsilon: Copy,
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
D: AdaptFrom<S, Swp, Dwp, T>,
Dwp: WhitePoint,
Swp: WhitePoint,
T: Component + Float,
[src]
D: AdaptFrom<S, Swp, Dwp, T>,
Dwp: WhitePoint,
Swp: WhitePoint,
T: Component + Float,
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> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,