Skip to main content

DocumentWidget

Struct DocumentWidget 

Source
pub struct DocumentWidget<'a> { /* private fields */ }
Expand description

Custom widget for rendering document content with proper text wrapping and inline images.

This widget handles the complete layout of document elements including:

  • Text with unicode-aware wrapping
  • Inline images with correct positioning
  • Tables, lists, and other formatted content
  • Search result highlighting

Unlike using the Paragraph widget with image overlays, this widget renders everything in a single pass with full control over layout, ensuring images are positioned correctly even when text wraps across multiple lines.

Implementations§

Source§

impl<'a> DocumentWidget<'a>

Source

pub fn new(elements: &'a [DocumentElement]) -> Self

Create a new DocumentWidget with the given document elements

Source

pub fn scroll_offset(self, offset: usize) -> Self

Set the scroll offset (number of elements to skip from the top)

Source

pub fn color_enabled(self, enabled: bool) -> Self

Enable or disable color rendering

Source

pub fn search_results(self, results: &'a [SearchResult]) -> Self

Set search results for highlighting

Source

pub fn current_search_index(self, index: usize) -> Self

Set the current search result index for highlighting

Source

pub fn render( &mut self, area: Rect, frame: &mut Frame<'_>, image_protocols: &mut [StatefulProtocol], layout_cache: &mut LayoutCache, )

Custom render method that has access to Frame for complete rendering.

This method renders all document elements including text (with wrapping) and images. Unlike the Widget trait’s render method, this has access to Frame which is required for rendering StatefulImage widgets.

Auto Trait Implementations§

§

impl<'a> Freeze for DocumentWidget<'a>

§

impl<'a> RefUnwindSafe for DocumentWidget<'a>

§

impl<'a> Send for DocumentWidget<'a>

§

impl<'a> Sync for DocumentWidget<'a>

§

impl<'a> Unpin for DocumentWidget<'a>

§

impl<'a> UnsafeUnpin for DocumentWidget<'a>

§

impl<'a> UnwindSafe for DocumentWidget<'a>

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

Source§

type Output = T

Should always be Self
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