Trait PixelFormat

Source
pub trait PixelFormat: Sized {
    const PIXEL_SIZE: usize;
    const EFFECTIVE_PIXEL_SIZE: usize;

    // Required methods
    fn byte_at(r: u8, g: u8, b: u8, a: u64, idx: usize) -> u8;
    fn decode_pixel(data: &[u8]) -> (u8, u8, u8, u64);
    fn blend_rect_fast(
        target: &mut BitMapBackend<'_, Self>,
        upper_left: (i32, i32),
        bottom_right: (i32, i32),
        r: u8,
        g: u8,
        b: u8,
        a: f64,
    );
    fn fill_rect_fast(
        target: &mut BitMapBackend<'_, Self>,
        upper_left: (i32, i32),
        bottom_right: (i32, i32),
        r: u8,
        g: u8,
        b: u8,
    );

    // Provided methods
    fn fill_vertical_line_fast(
        target: &mut BitMapBackend<'_, Self>,
        x: i32,
        ys: (i32, i32),
        r: u8,
        g: u8,
        b: u8,
    ) { ... }
    fn draw_pixel(
        target: &mut BitMapBackend<'_, Self>,
        point: (i32, i32),
        (r, g, b): (u8, u8, u8),
        alpha: f64,
    ) { ... }
    fn can_be_saved() -> bool { ... }
}
Expand description

The trait that describes some details about a particular pixel format

Required Associated Constants§

Source

const PIXEL_SIZE: usize

Number of bytes per pixel

Source

const EFFECTIVE_PIXEL_SIZE: usize

Number of effective bytes per pixel, e.g. for BGRX pixel format, the size of pixel is 4 but the effective size is 3, since the 4th byte isn’t used

Required Methods§

Source

fn byte_at(r: u8, g: u8, b: u8, a: u64, idx: usize) -> u8

Encoding a pixel and returns the idx-th byte for the pixel

Source

fn decode_pixel(data: &[u8]) -> (u8, u8, u8, u64)

Decode a pixel at the given location

Source

fn blend_rect_fast( target: &mut BitMapBackend<'_, Self>, upper_left: (i32, i32), bottom_right: (i32, i32), r: u8, g: u8, b: u8, a: f64, )

The fast alpha blending algorithm for this pixel format

  • target: The target bitmap backend
  • upper_left: The upper-left coord for the rect
  • bottom_right: The bottom-right coord for the rect
  • r, g, b, a: The blending color and alpha value
Source

fn fill_rect_fast( target: &mut BitMapBackend<'_, Self>, upper_left: (i32, i32), bottom_right: (i32, i32), r: u8, g: u8, b: u8, )

The fast rectangle filling algorithm

  • target: The target bitmap backend
  • upper_left: The upper-left coord for the rect
  • bottom_right: The bottom-right coord for the rect
  • r, g, b: The filling color

Provided Methods§

Source

fn fill_vertical_line_fast( target: &mut BitMapBackend<'_, Self>, x: i32, ys: (i32, i32), r: u8, g: u8, b: u8, )

The fast vertical line filling algorithm

  • target: The target bitmap backend
  • x: the X coordinate for the entire line
  • ys: The range of y coord
  • r, g, b: The blending color and alpha value
Source

fn draw_pixel( target: &mut BitMapBackend<'_, Self>, point: (i32, i32), (r, g, b): (u8, u8, u8), alpha: f64, )

Drawing a single pixel in this format

  • target: The target bitmap backend
  • point: The coord of the point
  • r, g, b: The filling color
  • alpha: The alpha value
Source

fn can_be_saved() -> bool

Indicates if this pixel format can be saved as image. Note: Currently we only using RGB pixel format in the image crate, but later we may lift this restriction

  • returns: If the image can be saved as image file

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§