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]

type Epsilon = T::Epsilon

Used for specifying relative comparisons.

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.

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.

impl<C: AddAssign, T: Float + AddAssign> AddAssign<PreAlpha<C, T>> for PreAlpha<C, T>[src]

impl<T: Float + AddAssign, C: AddAssign<T>> AddAssign<T> for PreAlpha<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> 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]

type Color = C

The core color type. Typically Self for color types without alpha.

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.

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]

type Target = C

The resulting type after dereferencing.

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.

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.

impl<C: DivAssign, T: Float + DivAssign> DivAssign<PreAlpha<C, T>> for PreAlpha<C, T>[src]

impl<T: Float + DivAssign, C: DivAssign<T>> DivAssign<T> for PreAlpha<C, T>[src]

impl<C, T> From<Alpha<C, T>> for PreAlpha<C, T> where
    C: ComponentWise<Scalar = T>,
    T: Float
[src]

impl<C, T> From<PreAlpha<C, T>> for Alpha<C, T> where
    C: ComponentWise<Scalar = T>,
    T: Float
[src]

impl<C: Mix> Mix for PreAlpha<C, C::Scalar>[src]

type Scalar = C::Scalar

The type of the mixing factor.

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.

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.

impl<C: MulAssign, T: Float + MulAssign> MulAssign<PreAlpha<C, T>> for PreAlpha<C, T>[src]

impl<T: Float + MulAssign, C: MulAssign<T>> MulAssign<T> for PreAlpha<C, T>[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<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: 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.

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.

impl<C: SubAssign, T: Float + SubAssign> SubAssign<PreAlpha<C, T>> for PreAlpha<C, T>[src]

impl<T: Float + SubAssign, C: SubAssign<T>> SubAssign<T> for PreAlpha<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: 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]

Auto Trait Implementations

impl<C, T> RefUnwindSafe for PreAlpha<C, T> where
    C: RefUnwindSafe,
    T: RefUnwindSafe

impl<C, T> Send for PreAlpha<C, T> where
    C: Send,
    T: Send

impl<C, T> Sync for PreAlpha<C, T> where
    C: Sync,
    T: Sync

impl<C, T> Unpin for PreAlpha<C, T> where
    C: Unpin,
    T: Unpin

impl<C, T> UnwindSafe for PreAlpha<C, T> where
    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<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, 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> 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]