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) -> LayoutSpec

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<(), Error>

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

impl Default for LayoutSpec

Source§

fn default() -> LayoutSpec

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

impl PartialEq for LayoutSpec

Source§

fn eq(&self, other: &LayoutSpec) -> 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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

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<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
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> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

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

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

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