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§
Sourceconst PIXEL_SIZE: usize
const PIXEL_SIZE: usize
Number of bytes per pixel
Sourceconst EFFECTIVE_PIXEL_SIZE: usize
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§
Sourcefn byte_at(r: u8, g: u8, b: u8, a: u64, idx: usize) -> u8
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
Sourcefn blend_rect_fast(
target: &mut BitMapBackend<'_, Self>,
upper_left: (i32, i32),
bottom_right: (i32, i32),
r: u8,
g: u8,
b: u8,
a: f64,
)
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 backendupper_left
: The upper-left coord for the rectbottom_right
: The bottom-right coord for the rectr
,g
,b
,a
: The blending color and alpha value
Sourcefn fill_rect_fast(
target: &mut BitMapBackend<'_, Self>,
upper_left: (i32, i32),
bottom_right: (i32, i32),
r: u8,
g: u8,
b: u8,
)
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 backendupper_left
: The upper-left coord for the rectbottom_right
: The bottom-right coord for the rectr
,g
,b
: The filling color
Provided Methods§
Sourcefn fill_vertical_line_fast(
target: &mut BitMapBackend<'_, Self>,
x: i32,
ys: (i32, i32),
r: u8,
g: u8,
b: u8,
)
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 backendx
: the X coordinate for the entire lineys
: The range of y coordr
,g
,b
: The blending color and alpha value
Sourcefn draw_pixel(
target: &mut BitMapBackend<'_, Self>,
point: (i32, i32),
(r, g, b): (u8, u8, u8),
alpha: f64,
)
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 backendpoint
: The coord of the pointr
,g
,b
: The filling coloralpha
: The alpha value
Sourcefn can_be_saved() -> bool
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.