Struct StatefulProtocol

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

A stateful resizing image protocol for the crate::StatefulImage widget.

The [create::thread::ThreadImage] widget also uses this, and is the reason why resizing is split from rendering.

Implementations§

Source§

impl StatefulProtocol

Source

pub fn new( source: ImageSource, font_size: FontSize, protocol_type: StatefulProtocolType, ) -> Self

Source

pub fn protocol_type(&self) -> &StatefulProtocolType

Source

pub fn protocol_type_owned(self) -> StatefulProtocolType

Source

pub fn last_encoding_result(&mut self) -> Option<Result<(), Errors>>

This returns the latest Result returned when encoding, and none if there was no encoding since the last result read. It is encouraged but not required to handle it

Source

pub fn background_color(&self) -> Rgba<u8>

Source

pub fn resize_encode_render( &mut self, resize: &Resize, area: Rect, buf: &mut Buffer, )

Resize and encode if necessary, and render immediately.

This blocks the UI thread but requires neither threads nor async.

Source

pub fn needs_resize(&mut self, resize: &Resize, area: Rect) -> Option<Rect>

Check if the current image state would need resizing (grow or shrink) for the given area.

This can be called by the UI thread to check if this StatefulProtocol should be sent off to some background thread/task to do the resizing and encoding, instead of rendering. The thread should then return the StatefulProtocol so that it can be rendered.protoco

Source

pub fn resize_encode(&mut self, resize: &Resize, area: Rect)

Resize the image and encode it for rendering. The result should be stored statefully so that next call for the given area does not need to redo the work.

This can be done in a background thread, and the result is stored in this StatefulProtocol.

Source

pub fn render(&mut self, area: Rect, buf: &mut Buffer)

Render the currently resized and encoded data to the buffer.

Source

pub fn size_for(&self, resize: &Resize, area: Rect) -> Rect

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V