Skip to main content

LayoutSpec

Struct LayoutSpec 

Source
pub struct LayoutSpec {
Show 20 fields pub width: Sizing, pub height: Sizing, pub min_w: Min, pub max_w: f32, pub min_h: Min, pub max_h: f32, pub dir: Dir, pub padding: Edges, pub gap: f32, pub wrap: bool, pub table: bool, pub cross_gap: f32, pub main_align: Align, pub cross_align: Align, pub aspect: f32, pub clip: bool, pub scroll_x: bool, pub scroll_y: bool, pub anchor: bool, pub float: Option<FloatConfig>,
}
Expand description

The layout half of a NodeSpec: sizing, clamps, direction, padding, gap, alignment, overflow and floating. Set through the NodeSpec builders; read by the solver.

Fields§

§width: Sizing§height: Sizing§min_w: Min

Clamps applied after width/height resolve (Fit, Grow, Percent and Fixed alike), so “grow but at most N” and “fit but at least N” work. A min may also be Min::FIT: “grow but never below my content”.

§max_w: f32

A ceiling in px, or, as a negative, a size expression layout has yet to resolve (max_of_calc); set it through NodeSpec::max_width, which keeps a px one at or above zero (px_ceiling). max_h is the same.

§min_h: Min§max_h: f32§dir: Dir§padding: Edges§gap: f32§wrap: bool

Row children that don’t fit the main-axis content box start a new line instead of overflowing (or shrinking). Rows only: breaking needs a definite main size, and the pass order gives a row one — its width is final before its height is measured — where a column would need its height first. Ignored on a column and on a scroll_x row, both with a warning (diag::WRAP_IGNORED).

§table: bool

A column whose rows’ children line up in columns: the nth in-flow child of every in-flow row is a cell of column n, and a column is as wide as its widest cell — its cells’ own widths say how the column sizes (a Fixed or Fit cell is content that sets the column’s fit width, a Grow cell makes the column grow, a Percent one takes its cut of the row) and their minWidth / maxWidth clamp it. The rows are ordinary rows — a row’s gap is the space between its cells, its padding its own, and it takes its background, its click and its hover as any row does — except that a row of a table never wraps (diag::WRAP_IGNORED). Set by NodeSpec::table, which is a column; dir stays Column, and the flag is read on a column only (LayoutSpec::is_table): a Row carrying it — a shape only these public fields can build — is the row it says it is. The rows are the in-flow Row children; a column, a table or a leaf straight under the table is a child with its own width and no cells.

§cross_gap: f32

Space between wrap lines, across the main axis. gap is still the space between children along it.

§main_align: Align

Alignment of children along the main axis, the spreads (SpaceBetween / SpaceAround / SpaceEvenly) included.

§cross_align: Align

Alignment of children across the main axis; Baseline on a row.

§aspect: f32

Width over height (CSS’s aspect-ratio); 0 = none. It sizes the axis whose sizing is Fit: a fit height is the final width over the ratio, and a fit width under a Fixed height is that height times it. With both axes declared it has nothing to set. The derived axis is neither shrunk nor fitted to the children, which overflow it — min_h: Min::FIT floors it at them.

§clip: bool

Clip children to this node’s rect.

§scroll_x: bool

Overflowing content scrolls (implies clipping). Offsets are retained across frames in the core, keyed by this node’s Key.

§scroll_y: bool§anchor: bool

Scroll anchoring (CSS’s overflow-anchor): the first child in view keeps its place on screen when the content before it changes size — a chat that prepends history, a log that inserts above the viewport, a row whose estimate was corrected. On the scroll axis that is the container’s main axis only.

§float: Option<FloatConfig>

Out-of-flow positioning; see FloatConfig.

Implementations§

Source§

impl LayoutSpec

Source

pub fn clips(&self) -> bool

Whether this node clips its children.

Source

pub fn is_table(&self) -> bool

Whether this node is a table: the flag, on a column. Every reader asks this and not the field, so a Row with the field set is a row everywhere.

Source§

impl LayoutSpec

Source

pub fn max_w_px(&self) -> f32

max_w as px: a calc layout has not resolved yet is no ceiling.

Source

pub fn max_h_px(&self) -> f32

max_h as px, as Self::max_w_px.

Trait Implementations§

Source§

impl Clone for LayoutSpec

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for LayoutSpec

Source§

impl Debug for LayoutSpec

Source§

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

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

impl Default for LayoutSpec

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for LayoutSpec

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for LayoutSpec

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.