Skip to main content

ViewContext

Struct ViewContext 

Source
pub struct ViewContext {
    pub size: Size,
    pub theme: Arc<Theme>,
    /* private fields */
}
Expand description

The size this render call may draw into, plus the Theme in effect.

A ViewContext describes an allocated size, not the terminal size. When a parent component renders a child, it is responsible for narrowing the context to the child’s slot before calling Component::render. Children should treat size as authoritative — only the root component should assume the full terminal width.

§Size contract

  • Parents allocate sizes and pass size-scoped contexts to children.
  • Children render into the size they were given. They do not negotiate width upward.
  • Composition (stacking, side-by-side layout, padding) happens on Frame, not by reaching back into the parent’s ViewContext.

§Construction

use tui::ViewContext;

// Default theme
let ctx = ViewContext::new((80, 24));

// Custom theme
use tui::Theme;
let ctx = ViewContext::new_with_theme((120, 40), Theme::default());

§Size helpers

When rendering a child into part of the parent’s size, derive a new context with one of:

  • with_size((w, h)) — Replace the entire size.
  • with_width(w) — Replace just the width, keep the height.
  • with_height(h) — Replace just the height, keep the width.
  • inset(insets) — Shrink the size by Insets on each edge. Saturates at zero on each axis.

All helpers preserve the theme and (when the syntax feature is enabled) the syntax highlighter.

use tui::{Insets, ViewContext};

let parent = ViewContext::new((80, 24));

// Render a child in a left half of width 40.
let left = parent.with_width(40);

// Render a child inside a 2-column horizontal padding.
let padded = parent.inset(Insets::horizontal(2));

§Size

Size holds the dimensions of an allocated render area as width (columns) and height (rows), both u16. Implements From<(u16, u16)> for convenient construction.

§Other methods

§See also

  • Frame — The render artifact returned by Component::render. Composition primitives like fit, indent, vstack, and hstack operate on frames, not on the parent context.
  • Insets — Edge insets used by inset().
  • Theme — The semantic color palette.
  • Renderer — Creates ViewContext automatically from its own state.

Fields§

§size: Size

The size this context allows the component to draw into. This is not the terminal size — parents pass child contexts whose size is the slice of the terminal allocated to the child.

§theme: Arc<Theme>

Implementations§

Source§

impl ViewContext

Source

pub fn new(size: impl Into<Size>) -> Self

Source

pub fn new_with_theme(size: impl Into<Size>, theme: Theme) -> Self

Source

pub fn highlighter(&self) -> &SyntaxHighlighter

Source

pub fn with_size(&self, size: impl Into<Size>) -> Self

Clone this context with a new size, preserving theme state.

Source

pub fn with_width(&self, width: u16) -> Self

Clone this context with the width replaced, preserving height and theme.

Source

pub fn with_height(&self, height: u16) -> Self

Clone this context with the height replaced, preserving width and theme.

Source

pub fn inset(&self, insets: Insets) -> Self

Clone this context with the size shrunk by insets on each side. Saturates at zero on each axis.

Trait Implementations§

Source§

impl Clone for ViewContext

Source§

fn clone(&self) -> ViewContext

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. 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> 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> 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