Skip to main content

Bitmap

Struct Bitmap 

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

A shared premultiplied-RGBA buffer, texture, and optional offscreen surface.

Clones share one resource. The final clone releases the texture and offscreen surface on browser and native hosts.

use fui::prelude::*;

let bitmap = Bitmap::new(32, 32);
{
    let mut pixels = bitmap.pixels();
    pixels[0..4].copy_from_slice(&[255, 96, 32, 255]);
}
bitmap.clear_dirty_rects().dirty_rect(0, 0, 1, 1).commit();

Implementations§

Source§

impl Bitmap

Source

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

Allocates a non-empty bitmap and its host texture/offscreen resources.

Source

pub fn width(&self) -> u32

Returns the physical pixel width.

Source

pub fn height(&self) -> u32

Returns the physical pixel height.

Source

pub fn texture_id(&self) -> u32

Returns the texture ID accepted by DrawContext::draw_image.

Source

pub fn pixels(&self) -> RefMut<'_, Vec<u8>>

Mutably borrows premultiplied RGBA bytes.

Drop the returned borrow before invoking any other bitmap method.

Source

pub fn pixel_ptr(&self) -> usize

Returns the current pixel-buffer address for low-level host interop.

Source

pub fn canvas(&self) -> DrawContext

Returns the persistent offscreen drawing context.

Once used, each commit flushes and reads this surface over the pixel buffer before texture upload. Do not subsequently mix direct pixel ownership into the same bitmap.

Source

pub fn render<T: Node>(&self, node: &T, x: f32, y: f32, scale: f32) -> bool

Rasterizes a built, laid-out retained node into the pixel buffer.

Call this after layout, then call commit. scale maps logical node coordinates to physical bitmap pixels.

Source

pub fn render_text_layout( &self, layout: &TextLayout, x: f32, y: f32, scale: f32, ) -> bool

Rasterizes a ready retained text layout into the pixel buffer.

Source

pub fn prepare_text<T: Node>(node: &T)

Builds and prepares a retained text node for bitmap rasterization.

Source

pub fn on_text_ready<T: Node + Clone + 'static>( &self, node: &T, callback: impl FnOnce(BitmapTextReadyEventArgs) + 'static, ) -> &Self

Invokes callback once required fonts and initial app load are ready.

Source

pub fn dirty_rect(&self, x: u32, y: u32, w: u32, h: u32) -> &Self

Adds a clipped dirty upload region for the next commit.

Empty/outside regions are ignored and at most 16 regions are retained.

Source

pub fn clear_dirty_rects(&self) -> &Self

Clears pending dirty regions so the next commit is a full upload unless new regions are added.

Source

pub fn has_dirty_rects(&self) -> bool

Reports whether the next commit contains partial upload regions.

Source

pub fn commit(&self) -> u32

Flushes offscreen drawing if used, uploads full or dirty pixels, consumes dirty regions, marks the texture ready, and returns its texture ID.

Source

pub fn dispose(&self)

Releases the texture and offscreen surface early.

This operation is idempotent. Drawing and pixel operations after disposal are invalid.

Trait Implementations§

Source§

impl Clone for Bitmap

Source§

fn clone(&self) -> Bitmap

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 Drop for Bitmap

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Bitmap

§

impl !Send for Bitmap

§

impl !Sync for Bitmap

§

impl !UnwindSafe for Bitmap

§

impl Freeze for Bitmap

§

impl Unpin for Bitmap

§

impl UnsafeUnpin for Bitmap

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

Source§

fn configure(self, configure: impl FnOnce(&Self)) -> Self

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