Skip to main content

RasterBuf

Struct RasterBuf 

Source
pub struct RasterBuf {
    pub width: u32,
    pub height: u32,
    pub pixels: Vec<u8>,
}
Expand description

RGBA8 raster, sRGB color space, premultiplied alpha. Layout is row-major, four bytes per pixel [R, G, B, A].

Fields§

§width: u32§height: u32§pixels: Vec<u8>

Implementations§

Source§

impl RasterBuf

Source

pub fn new(width: u32, height: u32) -> Self

Source

pub fn filled(width: u32, height: u32, rgba: [u8; 4]) -> Self

Source

pub fn is_blank(&self) -> bool

Whether every byte is zero — i.e. fully transparent everywhere. For premultiplied RGBA this means no coverage and no color at all (a valid premultiplied pixel with a == 0 also has rgb == 0). Scans in u128-wide chunks, so a canvas-sized buffer costs only tens of microseconds.

Source

pub fn blank_shared(width: u32, height: u32) -> Arc<RasterBuf>

A shared all-zero raster of the given size.

A style with dozens of layers produces dozens of fully transparent rasters on any tile that lacks those features — every one of them identical, and each otherwise costing a full padded canvas. Handing out one interned buffer per size collapses them into a single allocation. The pool keeps at most one buffer per distinct canvas size, which in practice means one.

Callers must treat the result as immutable; RasterBuf is Clone, so any consumer needing to write copies first.

Source

pub fn is_interned_blank(buf: &Arc<RasterBuf>) -> bool

Whether buf is the interned blank for its size — i.e. holding it costs nothing, because every other holder points at the same allocation. Memory accounting uses this to avoid charging one buffer’s worth of bytes to each of its dozens of holders.

Source

pub fn pixel(&self, x: u32, y: u32) -> [u8; 4]

Trait Implementations§

Source§

impl Clone for RasterBuf

Source§

fn clone(&self) -> RasterBuf

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 RasterBuf

Source§

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

Formats the value using the given formatter. Read more

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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 = Infallible

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> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more