pub struct ImagePreview {
pub protocol: Box<dyn StatefulProtocol>,
pub caption: String,
pub draws_over_cells: bool,
pub placed_at: Option<Rect>,
}Expand description
A decoded image ready to be drawn into the preview pane.
Held in PreviewContent::Image. The protocol state is mutable because
ratatui-image re-encodes the image whenever the pane it is drawn into
changes size, caching the result until the next resize.
Fields§
§protocol: Box<dyn StatefulProtocol>Encoder state for the active protocol.
caption: StringOne-line summary drawn beneath the image (format, dimensions, size and the protocol in use).
draws_over_cells: boolWhether the terminal draws this image over cells ratatui skips, fixed when the image is built because a preview keeps its protocol.
placed_at: Option<Rect>The preview pane this image was last drawn into, or None if it has not
been drawn or the pane was hidden since.
The cells an image reserves are never repainted by ratatui, yet the
picture may not reach all of them: Trail assumes a cell size, and where
the real cells are larger the image stops short. Whatever the screen held
in that gap therefore stays visible. ui::render clears the screen when
this differs from the pane about to be drawn, which is the only moment
such leftovers can appear.
Implementations§
Source§impl ImagePreview
impl ImagePreview
Sourcepub fn new(protocol: Box<dyn StatefulProtocol>, caption: String) -> ImagePreview
pub fn new(protocol: Box<dyn StatefulProtocol>, caption: String) -> ImagePreview
Wraps a built encoder as a preview that has not been drawn yet, under the protocol currently in effect.
Trait Implementations§
Source§impl Clone for ImagePreview
impl Clone for ImagePreview
Auto Trait Implementations§
impl !RefUnwindSafe for ImagePreview
impl !UnwindSafe for ImagePreview
impl Freeze for ImagePreview
impl Send for ImagePreview
impl Sync for ImagePreview
impl Unpin for ImagePreview
impl UnsafeUnpin for ImagePreview
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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