Skip to main content

ColorMatrix

Struct ColorMatrix 

Source
pub struct ColorMatrix {
    pub matrix: [[f32; 5]; 4],
}
Expand description

A 4×5 colour transformation matrix.

Each output channel is:

out_R = m[0][0]*R + m[0][1]*G + m[0][2]*B + m[0][3]*A + m[0][4]
out_G = m[1][0]*R + m[1][1]*G + m[1][2]*B + m[1][3]*A + m[1][4]
out_B = m[2][0]*R + m[2][1]*G + m[2][2]*B + m[2][3]*A + m[2][4]
out_A = m[3][0]*R + m[3][1]*G + m[3][2]*B + m[3][3]*A + m[3][4]

Fields§

§matrix: [[f32; 5]; 4]

Row-major 4×5 matrix: rows are [R, G, B, A] output channels.

Implementations§

Source§

impl ColorMatrix

Source

pub fn identity() -> Self

Identity matrix — no change to colours.

Source

pub fn brightness(factor: f32) -> Self

Scale all RGB channels by factor. Alpha is unchanged.

Source

pub fn contrast(factor: f32) -> Self

Contrast adjustment around the midpoint 0.5.

A factor of 1.0 is a no-op; values above 1.0 increase contrast.

Source

pub fn saturation(factor: f32) -> Self

Saturation adjustment.

Uses ITU-R BT.601 luma weights. factor = 0 → greyscale, factor = 1 → no change, factor > 1 → more saturated.

Source

pub fn hue_rotate(degrees: f32) -> Self

Hue rotation by degrees.

Implemented as a rotation in the colour-opponent plane after projecting out the luminance axis (Hacker-level approximation suitable for real-time use).

Source

pub fn invert() -> Self

Invert all RGB channels (1.0 - channel). Alpha is unchanged.

Source

pub fn grayscale() -> Self

Greyscale conversion using ITU-R BT.601 luma weights.

Source

pub fn sepia() -> Self

Sepia-tone matrix (classic film emulation).

Source

pub fn apply(&self, pixel: Rgba) -> Rgba

Apply the matrix to a single pixel, clamping the result to [0, 1].

Source

pub fn compose(&self, other: &ColorMatrix) -> ColorMatrix

Compose two matrices: self ∘ other (apply other first, then self).

The 4×5 matrices are augmented to 5×5 (with an implicit row [0,0,0,0,1]) for standard homogeneous composition, then the result is trimmed back to 4×5.

Trait Implementations§

Source§

impl Clone for ColorMatrix

Source§

fn clone(&self) -> ColorMatrix

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ColorMatrix

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for ColorMatrix

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,