Trait Pixel
pub trait Pixel: Copy + Clone
A generalized pixel.
A pixel object is usually not used standalone but as a view into an image buffer.
Associated Types
type Subpixel: Primitive;The scalar type that is used to store each channel in this pixel.
Associated Constants
const CHANNEL_COUNT: u8;The number of channels of this pixel type.
const COLOR_MODEL: &'static str;A string that can help to interpret the meaning each channel See gimp babl.
const HAS_ALPHA: bool = false;Returns true if the alpha channel is contained.
Required Methods
fn channels(&self) -> &[Self::Subpixel]Returns the components as a slice.
fn channels_mut(&mut self) -> &mut [Self::Subpixel]Returns the components as a mutable slice
fn channels4(&self) -> (Self::Subpixel, Self::Subpixel, Self::Subpixel, Self::Subpixel)Returns the channels of this pixel as a 4 tuple. If the pixel has less than 4 channels the remainder is filled with the maximum value
fn from_channels(a: Self::Subpixel, b: Self::Subpixel, c: Self::Subpixel, d: Self::Subpixel) -> SelfConstruct a pixel from the 4 channels a, b, c and d. If the pixel does not contain 4 channels the extra are ignored.
fn from_slice(slice: &[Self::Subpixel]) -> &SelfReturns a view into a slice.
Note: The slice length is not checked on creation. Thus the caller has to ensure that the slice is long enough to prevent panics if the pixel is used later on.
fn from_slice_mut(slice: &mut [Self::Subpixel]) -> &mut SelfReturns mutable view into a mutable slice.
Note: The slice length is not checked on creation. Thus the caller has to ensure that the slice is long enough to prevent panics if the pixel is used later on.
fn to_rgb(&self) -> Rgb<Self::Subpixel>Convert this pixel to RGB
fn to_rgba(&self) -> Rgba<Self::Subpixel>Convert this pixel to RGB with an alpha channel
fn to_luma(&self) -> Luma<Self::Subpixel>Convert this pixel to luma
fn to_luma_alpha(&self) -> LumaA<Self::Subpixel>Convert this pixel to luma with an alpha channel
fn map<F>(&self, f: F) -> Self where F: FnMut(Self::Subpixel) -> Self::Subpixel,Apply the function
fto each channel of this pixel.fn apply<F>(&mut self, f: F) where F: FnMut(Self::Subpixel) -> Self::Subpixel,Apply the function
fto each channel of this pixel.fn map_with_alpha<F, G>(&self, f: F, g: G) -> Self where F: FnMut(Self::Subpixel) -> Self::Subpixel, G: FnMut(Self::Subpixel) -> Self::Subpixel,Apply the function
fto each channel except the alpha channel. Apply the functiongto the alpha channel.fn apply_with_alpha<F, G>(&mut self, f: F, g: G) where F: FnMut(Self::Subpixel) -> Self::Subpixel, G: FnMut(Self::Subpixel) -> Self::Subpixel,Apply the function
fto each channel except the alpha channel. Apply the functiongto the alpha channel. Works in-place.fn map2<F>(&self, other: &Self, f: F) -> Self where F: FnMut(Self::Subpixel, Self::Subpixel) -> Self::Subpixel,Apply the function
fto each channel of this pixel andotherpairwise.fn apply2<F>(&mut self, other: &Self, f: F) where F: FnMut(Self::Subpixel, Self::Subpixel) -> Self::Subpixel,Apply the function
fto each channel of this pixel andotherpairwise. Works in-place.fn invert(&mut self)Invert this pixel
fn blend(&mut self, other: &Self)Blend the color of a given pixel into ourself, taking into account alpha channels
Provided Methods
fn alpha(&self) -> Self::SubpixelRetrieve the value of the alpha channel for this pixel.
If there is no alpha channel, returns [Primitive::DEFAULT_MAX_VALUE].
Note for Pixel trait implementors
While this is a provided method, it is a good idea to override it for efficiency if your pixel type does have an alpha channel.
fn map_without_alpha<F>(&self, f: F) -> Self where F: FnMut(Self::Subpixel) -> Self::Subpixel,Apply the function
fto each channel except the alpha channel.fn apply_without_alpha<F>(&mut self, f: F) where F: FnMut(Self::Subpixel) -> Self::Subpixel,Apply the function
fto each channel except the alpha channel. Works in place.