ScrollMetrics

Struct ScrollMetrics 

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

Precomputed values for proportional scrollbars.

All positions are tracked in subcell units (1/8 of a terminal cell). Use this type to compute thumb length, travel, and hit testing without rendering anything. The inputs are:

  • content_len and viewport_len in logical units (zero treated as 1)
  • track_cells in terminal cells

Implementations§

Source§

impl ScrollMetrics

Source

pub fn from_lengths( lengths: ScrollLengths, offset: usize, track_cells: u16, ) -> Self

Build metrics using a crate::ScrollLengths helper.

Source

pub fn new(lengths: ScrollLengths, offset: usize, track_cells: u16) -> Self

Build metrics for the given content and viewport lengths.

The track_cells parameter is the number of terminal cells available for the track (height for vertical scrollbars, width for horizontal). The lengths are logical units. When content_len is smaller than viewport_len, the thumb fills the track to indicate no scrolling. Zero lengths are treated as 1.

Source

pub const fn content_len(&self) -> usize

Returns the current content length in logical units.

Source

pub const fn viewport_len(&self) -> usize

Returns the current viewport length in logical units.

Source

pub const fn offset(&self) -> usize

Returns the current content offset in logical units.

Source

pub const fn track_cells(&self) -> usize

Returns the track length in terminal cells.

Source

pub const fn track_len(&self) -> usize

Returns the track length in subcells.

Source

pub const fn thumb_len(&self) -> usize

Returns the thumb length in subcells.

Source

pub const fn thumb_start(&self) -> usize

Returns the thumb start position in subcells.

Source

pub const fn max_offset(&self) -> usize

Returns the maximum scrollable offset in subcells.

Source

pub const fn thumb_travel(&self) -> usize

Returns the maximum thumb travel in subcells.

Source

pub const fn thumb_range(&self) -> Range<usize>

Returns the thumb range in subcell coordinates.

Source

pub const fn hit_test(&self, position: usize) -> HitTest

Returns whether a subcell position hits the thumb or the track.

Source

pub fn thumb_start_for_offset(&self, offset: usize) -> usize

Converts an offset (in subcells) to a thumb start position (in subcells).

Larger offsets move the thumb toward the end of the track, clamped to the maximum travel.

Source

pub fn offset_for_thumb_start(&self, thumb_start: usize) -> usize

Converts a thumb start position (in subcells) to an offset (in subcells).

Thumb positions beyond the end of travel are clamped to the maximum offset.

Source

pub fn cell_fill(&self, cell_index: usize) -> CellFill

Returns how much of a cell is filled by the thumb.

The cell_index is in terminal cells, not subcells. Use this to select the correct glyph for the track or thumb.

Trait Implementations§

Source§

impl Clone for ScrollMetrics

Source§

fn clone(&self) -> ScrollMetrics

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
Source§

impl Debug for ScrollMetrics

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ScrollMetrics

Source§

fn eq(&self, other: &ScrollMetrics) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for ScrollMetrics

Source§

impl Eq for ScrollMetrics

Source§

impl StructuralPartialEq for ScrollMetrics

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> 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.