Trait druid::piet::image_crate::Pixel

pub trait Pixel: Copy + Clone {
    type Subpixel: Primitive;

    const CHANNEL_COUNT: u8;
    const COLOR_MODEL: &'static str;
Show 20 methods // Required methods fn channels(&self) -> &[Self::Subpixel]; fn channels_mut(&mut self) -> &mut [Self::Subpixel]; fn channels4( &self ) -> (Self::Subpixel, Self::Subpixel, Self::Subpixel, Self::Subpixel); fn from_channels( a: Self::Subpixel, b: Self::Subpixel, c: Self::Subpixel, d: Self::Subpixel ) -> Self; fn from_slice(slice: &[Self::Subpixel]) -> &Self; fn from_slice_mut(slice: &mut [Self::Subpixel]) -> &mut Self; fn to_rgb(&self) -> Rgb<Self::Subpixel>; fn to_rgba(&self) -> Rgba<Self::Subpixel>; fn to_luma(&self) -> Luma<Self::Subpixel>; fn to_luma_alpha(&self) -> LumaA<Self::Subpixel>; fn map<F>(&self, f: F) -> Self where F: FnMut(Self::Subpixel) -> Self::Subpixel; fn apply<F>(&mut self, f: F) where F: FnMut(Self::Subpixel) -> Self::Subpixel; 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; 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; fn map2<F>(&self, other: &Self, f: F) -> Self where F: FnMut(Self::Subpixel, Self::Subpixel) -> Self::Subpixel; fn apply2<F>(&mut self, other: &Self, f: F) where F: FnMut(Self::Subpixel, Self::Subpixel) -> Self::Subpixel; fn invert(&mut self); fn blend(&mut self, other: &Self); // Provided methods fn map_without_alpha<F>(&self, f: F) -> Self where F: FnMut(Self::Subpixel) -> Self::Subpixel { ... } fn apply_without_alpha<F>(&mut self, f: F) where F: FnMut(Self::Subpixel) -> Self::Subpixel { ... }
}
Expand description

A generalized pixel.

A pixel object is usually not used standalone but as a view into an image buffer.

Required Associated Types§

type Subpixel: Primitive

The scalar type that is used to store each channel in this pixel.

Required 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.

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)

👎Deprecated since 0.24.0: Use channels() or channels_mut()

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 ) -> Self

👎Deprecated since 0.24.0: Use the constructor of the pixel, for example Rgba([r,g,b,a]) or Pixel::from_slice

Construct 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]) -> &Self

Returns 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 Self

Returns 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) -> Selfwhere F: FnMut(Self::Subpixel) -> Self::Subpixel,

Apply the function f to each channel of this pixel.

fn apply<F>(&mut self, f: F)where F: FnMut(Self::Subpixel) -> Self::Subpixel,

Apply the function f to each channel of this pixel.

fn map_with_alpha<F, G>(&self, f: F, g: G) -> Selfwhere F: FnMut(Self::Subpixel) -> Self::Subpixel, G: FnMut(Self::Subpixel) -> Self::Subpixel,

Apply the function f to each channel except the alpha channel. Apply the function g to 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 f to each channel except the alpha channel. Apply the function g to the alpha channel. Works in-place.

fn map2<F>(&self, other: &Self, f: F) -> Selfwhere F: FnMut(Self::Subpixel, Self::Subpixel) -> Self::Subpixel,

Apply the function f to each channel of this pixel and other pairwise.

fn apply2<F>(&mut self, other: &Self, f: F)where F: FnMut(Self::Subpixel, Self::Subpixel) -> Self::Subpixel,

Apply the function f to each channel of this pixel and other pairwise. 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 map_without_alpha<F>(&self, f: F) -> Selfwhere F: FnMut(Self::Subpixel) -> Self::Subpixel,

Apply the function f to 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 f to each channel except the alpha channel. Works in place.

Implementors§

§

impl<T> Pixel for Luma<T>where T: Primitive,

§

type Subpixel = T

§

const CHANNEL_COUNT: u8 = 1u8

§

const COLOR_MODEL: &'static str = "Y"

§

impl<T> Pixel for LumaA<T>where T: Primitive,

§

type Subpixel = T

§

const CHANNEL_COUNT: u8 = 2u8

§

const COLOR_MODEL: &'static str = "YA"

§

impl<T> Pixel for Rgb<T>where T: Primitive + Enlargeable,

§

type Subpixel = T

§

const CHANNEL_COUNT: u8 = 3u8

§

const COLOR_MODEL: &'static str = "RGB"

§

impl<T> Pixel for Rgba<T>where T: Primitive + Enlargeable,

§

type Subpixel = T

§

const CHANNEL_COUNT: u8 = 4u8

§

const COLOR_MODEL: &'static str = "RGBA"