pub trait ImagePixels:
Any
+ Debug
+ Send
+ Sync {
// Required methods
fn width(&self) -> u32;
fn height(&self) -> u32;
fn level_count(&self) -> usize;
fn level_size(&self, level: usize) -> (u32, u32);
fn texel(&self, level: usize, column: usize, row: usize) -> [f32; 4];
fn content_eq(&self, other: &dyn ImagePixels) -> bool;
fn as_any(&self) -> &dyn Any;
// Provided method
fn extend_level(&self, level: usize, out: &mut Vec<f32>) { ... }
}Expand description
A predecoded immutable linear-premultiplied image mip chain. Content owns decoding/storage; backends consume this shared logical contract.
Required Methods§
Sourcefn level_count(&self) -> usize
fn level_count(&self) -> usize
Number of immutable mip levels.
Sourcefn level_size(&self, level: usize) -> (u32, u32)
fn level_size(&self, level: usize) -> (u32, u32)
Width/height of an existing mip level.
Sourcefn texel(&self, level: usize, column: usize, row: usize) -> [f32; 4]
fn texel(&self, level: usize, column: usize, row: usize) -> [f32; 4]
One in-bounds finite linear-premultiplied texel.
Sourcefn content_eq(&self, other: &dyn ImagePixels) -> bool
fn content_eq(&self, other: &dyn ImagePixels) -> bool
Whether another implementation owns the same immutable pixel content.
Provided Methods§
Sourcefn extend_level(&self, level: usize, out: &mut Vec<f32>)
fn extend_level(&self, level: usize, out: &mut Vec<f32>)
Appends every texel of an existing level in row-major order, four f32 each.
Overriding this avoids one dynamic call per texel for backends that upload whole levels.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".