pub struct ColorMatrix {
pub rows: [[f32; 4]; 5],
}Expand description
A colour transform of the form out = in * M: in is the row
[R, G, B, A, 1] of a colour with straight (not premultiplied) alpha,
each channel from 0 to 1, and M has five rows of four columns.
Row i holds what input channel i (red, green, blue, alpha) adds to
each output channel (red, green, blue, alpha); the fifth row is the
offset of each output channel. This is the layout of the Matrix5x4 of
WinUI (M11 .. M54).
Fields§
§rows: [[f32; 4]; 5]The rows: red, green, blue and alpha in, then the offsets.
Implementations§
Source§impl ColorMatrix
impl ColorMatrix
Sourcepub const IDENTITY: ColorMatrix
pub const IDENTITY: ColorMatrix
The matrix that changes nothing.
Sourcepub fn from_matrix5x4(m: [f32; 20]) -> ColorMatrix
pub fn from_matrix5x4(m: [f32; 20]) -> ColorMatrix
A matrix from the twenty members of WinUI’s Matrix5x4, in the order
M11, M12, M13, M14, M21, ..., M54.
Sourcepub fn saturation(saturation: f32) -> ColorMatrix
pub fn saturation(saturation: f32) -> ColorMatrix
The saturation matrix of Win2D’s SaturationEffect (the
saturate colour matrix of SVG): 0 is grey, 1 changes nothing,
values above 1 saturate more.
Sourcepub fn luminance_to_alpha() -> ColorMatrix
pub fn luminance_to_alpha() -> ColorMatrix
Win2D’s LuminanceToAlphaEffect: the luminance of the colour becomes
its alpha, the colour black.
Sourcepub fn tint(tint: [f32; 4]) -> ColorMatrix
pub fn tint(tint: [f32; 4]) -> ColorMatrix
Win2D’s TintEffect: each channel multiplied by the channel of
tint (red, green, blue, alpha from 0 to 1).
Sourcepub fn invert() -> ColorMatrix
pub fn invert() -> ColorMatrix
Win2D’s InvertEffect: each colour channel c becomes 1 - c; the
alpha is kept.
Sourcepub fn grayscale() -> ColorMatrix
pub fn grayscale() -> ColorMatrix
Win2D’s GrayscaleEffect: each colour channel becomes
0.299 R + 0.587 G + 0.114 B.
Sourcepub fn scale_and_offset(scale: [f32; 4], offset: [f32; 4]) -> ColorMatrix
pub fn scale_and_offset(scale: [f32; 4], offset: [f32; 4]) -> ColorMatrix
The matrix that scales each channel and adds an offset:
out = in * scale + offset, channel by channel.
Sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Whether the matrix changes nothing.
Sourcepub fn then(&self, next: &ColorMatrix) -> ColorMatrix
pub fn then(&self, next: &ColorMatrix) -> ColorMatrix
The matrix that applies self, then next.
Sourcepub fn apply(&self, color: [f32; 4]) -> [f32; 4]
pub fn apply(&self, color: [f32; 4]) -> [f32; 4]
Applies the matrix to a colour with straight alpha, each channel from 0 to 1. The result is clamped to 0..1.
Sourcepub fn apply_premultiplied(
&self,
color: [f32; 4],
mode: ColorMatrixAlphaMode,
) -> [f32; 4]
pub fn apply_premultiplied( &self, color: [f32; 4], mode: ColorMatrixAlphaMode, ) -> [f32; 4]
Applies the matrix to a premultiplied colour, each channel from 0 to
1, in mode; the result is premultiplied, clamped to 0..1, its colour
channels no larger than its alpha.
Sourcepub fn apply_to_rgba8(&self, pixels: &mut [u8], mode: ColorMatrixAlphaMode)
pub fn apply_to_rgba8(&self, pixels: &mut [u8], mode: ColorMatrixAlphaMode)
Applies the matrix in mode to premultiplied RGBA pixels of eight
bits a channel, in place.
Sourcepub fn apply_to_premultiplied_rgba8(&self, pixels: &mut [u8])
pub fn apply_to_premultiplied_rgba8(&self, pixels: &mut [u8])
Applies the matrix to premultiplied RGBA pixels of eight bits a channel, in place: each pixel is unpremultiplied, transformed and premultiplied again (the straight alpha mode).
Sourcepub fn to_row_major_4x5(&self) -> [f32; 20]
pub fn to_row_major_4x5(&self) -> [f32; 20]
The matrix in the row-major 4 x 5 form of Skia and SVG: a row per output channel, its last column the offset.
Trait Implementations§
Source§impl Clone for ColorMatrix
impl Clone for ColorMatrix
impl Copy for ColorMatrix
Source§impl Debug for ColorMatrix
impl Debug for ColorMatrix
Source§impl Default for ColorMatrix
impl Default for ColorMatrix
Source§impl PartialEq for ColorMatrix
impl PartialEq for ColorMatrix
impl StructuralPartialEq for ColorMatrix
Auto Trait Implementations§
impl Freeze for ColorMatrix
impl RefUnwindSafe for ColorMatrix
impl Send for ColorMatrix
impl Sync for ColorMatrix
impl Unpin for ColorMatrix
impl UnsafeUnpin for ColorMatrix
impl UnwindSafe for ColorMatrix
Blanket Implementations§
Source§impl<T> AnyValue for Twhere
T: PartialEq + 'static,
impl<T> AnyValue for Twhere
T: PartialEq + 'static,
fn any_value_as_any(&self) -> &(dyn Any + 'static)
fn any_value_eq(&self, other: &(dyn AnyValue + 'static)) -> bool
fn any_value_type_name(&self) -> &'static str
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> ClassDefaults for Twhere
T: ?Sized,
impl<T> ClassDefaults for Twhere
T: ?Sized,
Source§fn static_constructor()
fn static_constructor()
affects_render, metadata
overrides). Read more