Skip to main content

MetricLifecycle

Struct MetricLifecycle 

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

Stateful tracker for font metric changes and cache invalidation.

Maintains the current cell metrics, generation counter, and pending invalidations. The lifecycle ensures a deterministic sequence:

  1. Invalidation event arrives (font load, DPR change, etc.)
  2. Generation is bumped, pending flag is set
  3. Caller calls MetricLifecycle::refit with new metrics
  4. If grid dimensions changed, resize propagates through the pipeline

This prevents stale glyph metrics and geometry jumps by enforcing that all consumers see consistent metric state.

Implementations§

Source§

impl MetricLifecycle

Source

pub fn new(cell_metrics: CellMetrics, policy: FitPolicy) -> Self

Create a new lifecycle with default cell metrics and no viewport.

Source

pub fn cell_metrics(&self) -> &CellMetrics

Current cell metrics.

Source

pub fn generation(&self) -> MetricGeneration

Current metric generation.

Source

pub fn is_pending(&self) -> bool

Whether a refit is pending.

Source

pub fn last_fit(&self) -> Option<&FitResult>

Last computed fit result.

Source

pub fn total_invalidations(&self) -> u64

Total invalidation count.

Source

pub fn total_refits(&self) -> u64

Total refit count.

Source

pub fn invalidate( &mut self, reason: MetricInvalidation, new_metrics: Option<CellMetrics>, )

Record an invalidation event.

Bumps the generation and marks a refit as pending. If cell metrics changed, the new metrics are stored immediately.

Source

pub fn set_viewport(&mut self, viewport: ContainerViewport)

Update the container viewport.

If the viewport changed, marks a refit as pending.

Source

pub fn set_policy(&mut self, policy: FitPolicy)

Update the fit policy.

Source

pub fn refit(&mut self) -> Option<FitResult>

Perform the pending refit computation.

Returns Some(FitResult) if the grid dimensions changed, None if no refit was needed or dimensions are unchanged.

Clears the pending flag regardless of outcome.

Source

pub fn snapshot(&self) -> MetricSnapshot

Diagnostic snapshot for JSONL evidence logging.

Trait Implementations§

Source§

impl Clone for MetricLifecycle

Source§

fn clone(&self) -> MetricLifecycle

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 MetricLifecycle

Source§

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

Formats the value using the given formatter. 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, 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> 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.