Skip to main content

SpriteAtlas

Struct SpriteAtlas 

Source
pub struct SpriteAtlas { /* private fields */ }
Expand description

A named collection of sprite regions packed into one shared image.

Packing many sprites into a single texture keeps the number of canvas draw calls (and image decode stalls) low. Each entry stores a source rectangle in pixels; SpriteAtlas::uv converts it to normalized coordinates for GPU samplers, and SpriteAtlas::draw blits it directly through the 2D canvas API.

Implementations§

Source§

impl SpriteAtlas

Implements image-backed drawing, UV conversion, and recording for SpriteAtlas.

Source

pub fn create(image: HtmlImageElement) -> SpriteAtlas

Creates an empty atlas backed by the given image.

§Arguments
  • HtmlImageElement - The shared image holding every packed sprite.
§Returns
  • SpriteAtlas - The new empty atlas.
Source

pub fn insert(&mut self, name: &str, region: Rect)

Inserts or replaces the source rectangle stored under a name.

§Arguments
  • &str - The sprite name.
  • Rect - The source rectangle in atlas pixels.
Source

pub fn get(&self, name: &str) -> Option<Rect>

Returns the source rectangle stored under a name.

§Arguments
  • &str - The sprite name.
§Returns
  • Option<Rect> - The source rectangle, or None if the name is unknown.
Source

pub fn contains(&self, name: &str) -> bool

Returns whether a name is present in the atlas.

§Arguments
  • &str - The sprite name.
§Returns
  • bool - true when the name has a stored rectangle.
Source

pub fn len(&self) -> usize

Returns the number of named regions in the atlas.

§Returns
  • usize - The region count.
Source

pub fn is_empty(&self) -> bool

Returns whether the atlas holds no regions.

§Returns
  • bool - true when no region has been inserted.
Source

pub fn uv(&self, region: Rect) -> UvRect

Returns the normalized texture coordinates for one atlas region.

Normalizes against the image’s intrinsic (naturalWidth / naturalHeight) size, which is the atlas’s true texture size regardless of any CSS size applied to the element. A zero-sized atlas — not yet loaded, or decoded with no intrinsic size — yields an all-zero UvRect rather than dividing by zero, so the result is never NaN or infinite.

§Arguments
  • Rect - The source rectangle in atlas pixels.
§Returns
  • UvRect - The normalized (u0, v0, u1, v1) coordinates.
Source

pub fn normalize_uv(region: Rect, width: f64, height: f64) -> UvRect

Normalizes a pixel rectangle against an explicit atlas size.

The pure half of SpriteAtlas::uv, separated so the arithmetic can be exercised without an image element. A non-positive width or height yields an all-zero UvRect instead of dividing by zero.

§Arguments
  • Rect - The source rectangle in atlas pixels.
  • f64 - The atlas width in pixels.
  • f64 - The atlas height in pixels.
§Returns
  • UvRect - The normalized (u0, v0, u1, v1) coordinates.
Source

pub fn draw(&self, context: &CanvasRenderingContext2d, name: &str, dest: Rect)

Blits one named atlas region into a destination rectangle.

Unknown names are a no-op. Uses the canvas transform already in effect, so the caller controls world positioning.

§Arguments
  • &CanvasRenderingContext2d - The canvas context.
  • &str - The sprite name to blit.
  • Rect - The destination rectangle in current canvas space.
Source

pub fn record( &self, list: &mut DrawList, name: &str, dest_position: Vector2D, dest_width: f64, dest_height: f64, )

Records one named atlas region into a deferred draw list.

Unknown names are a no-op, so callers do not need to probe with SpriteAtlas::get first.

§Arguments
  • &mut DrawList - The draw list to record into.
  • &str - The sprite name to blit.
  • Vector2D - The destination top-left position in world space.
  • f64 - The destination width in pixels.
  • f64 - The destination height in pixels.
Source§

impl SpriteAtlas

Source

pub fn get_image(&self) -> HtmlImageElement

Source

pub fn get_mut_image(&mut self) -> &mut HtmlImageElement

Source

pub fn set_image(&mut self, val: HtmlImageElement) -> &mut Self

Source

pub fn get_regions(&self) -> AtlasRegions

Source

pub fn get_mut_regions(&mut self) -> &mut AtlasRegions

Source

pub fn set_regions(&mut self, val: AtlasRegions) -> &mut Self

Source§

impl SpriteAtlas

Source

pub fn new(image: HtmlImageElement, regions: AtlasRegions) -> Self

Trait Implementations§

Source§

impl Clone for SpriteAtlas

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SpriteAtlas

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for SpriteAtlas

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for SpriteAtlas

Auto Trait Implementations§

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> 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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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, !>

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<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more