Skip to main content

ImagePixels

Trait ImagePixels 

Source
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§

Source

fn width(&self) -> u32

Base-level width in texels.

Source

fn height(&self) -> u32

Base-level height in texels.

Source

fn level_count(&self) -> usize

Number of immutable mip levels.

Source

fn level_size(&self, level: usize) -> (u32, u32)

Width/height of an existing mip level.

Source

fn texel(&self, level: usize, column: usize, row: usize) -> [f32; 4]

One in-bounds finite linear-premultiplied texel.

Source

fn content_eq(&self, other: &dyn ImagePixels) -> bool

Whether another implementation owns the same immutable pixel content.

Source

fn as_any(&self) -> &dyn Any

Concrete storage identity, resolved only by its owning content implementation.

Provided Methods§

Source

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

Implementors§