Skip to main content

Image888Fixed

Struct Image888Fixed 

Source
pub struct Image888Fixed<const W: usize, const H: usize, const N: usize> {
    pub pixels: [[u8; 3]; N],
}
Expand description

A fixed-size RGB888 source image stored directly in the value.

W and H are the image dimensions and N is the pixel count (W * H). Use tga! to embed and decode an image file at compile time, then convert it to display-ready RGB565 storage or a visibility mask. See the visual MaskFixed example for color-key transparency.

§Example

use device_envoy_core::cyd::display::{Image565Fixed, Image888Fixed, tga};

const SOURCE: Image888Fixed<45, 73, { 45 * 73 }> = tga!(concat!(
    env!("CARGO_MANIFEST_DIR"),
    "/docs/assets/cyd_fill_contiguous.tga"
));
const IMAGE: Image565Fixed<45, 73, { 45 * 73 }> = SOURCE.to_565();

assert_eq!(SOURCE.pixels.len(), 45 * 73);
assert_eq!(IMAGE.pixels.len(), 45 * 73);

Fields§

§pixels: [[u8; 3]; N]

Row-major, top-left-origin pixels stored as [red, green, blue].

Implementations§

Source§

impl<const W: usize, const H: usize, const N: usize> Image888Fixed<W, H, N>

Source

pub const fn from_tga(bytes: &[u8]) -> Self

Decodes a supported TGA at compile time, preserving RGB and discarding alpha.

Prefer the public tga! macro shown in its compiled example. This constructor powers that macro when raw TGA bytes are already available.

Panics during const evaluation if N != W * H or the bytes do not contain a supported TGA with matching dimensions.

Source

pub const fn to_565(&self) -> Image565Fixed<W, H, N>

Converts this source image to RGB565.

Each channel is reduced to the RGB565 bit depth. See the Image565Fixed example.

Source

pub const fn to_mask_magenta<const MASK_N: usize>( &self, ) -> MaskFixed<W, H, MASK_N>

Derives a binary visibility mask using magenta as the transparent color.

Pixels with red and blue at least 200 and green at most 60 become transparent; all other pixels remain visible. See the MaskFixed example.

Panics during const evaluation if MASK_N does not equal mask_byte_count(W, H).

Auto Trait Implementations§

§

impl<const W: usize, const H: usize, const N: usize> Freeze for Image888Fixed<W, H, N>
where [[u8; 3]; N]: Freeze,

§

impl<const W: usize, const H: usize, const N: usize> RefUnwindSafe for Image888Fixed<W, H, N>
where [[u8; 3]; N]: RefUnwindSafe,

§

impl<const W: usize, const H: usize, const N: usize> Send for Image888Fixed<W, H, N>
where [[u8; 3]; N]: Send,

§

impl<const W: usize, const H: usize, const N: usize> Sync for Image888Fixed<W, H, N>
where [[u8; 3]; N]: Sync,

§

impl<const W: usize, const H: usize, const N: usize> Unpin for Image888Fixed<W, H, N>
where [[u8; 3]; N]: Unpin,

§

impl<const W: usize, const H: usize, const N: usize> UnsafeUnpin for Image888Fixed<W, H, N>
where [[u8; 3]; N]: UnsafeUnpin,

§

impl<const W: usize, const H: usize, const N: usize> UnwindSafe for Image888Fixed<W, H, N>
where [[u8; 3]; N]: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> StrictAs for T

Source§

fn strict_as<Dst>(self) -> Dst
where T: StrictCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> StrictCastFrom<Src> for Dst
where Src: StrictCast<Dst>,

Source§

fn strict_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.