zng::layout

Struct Align

source
pub struct Align {
    pub x: Factor,
    pub x_rtl_aware: bool,
    pub y: Factor,
}
Expand description

x and y alignment.

The values indicate how much to the right and bottom the content is moved within a larger available space. An x value of 0.0 means the content left border touches the container left border, a value of 1.0 means the content right border touches the container right border.

There is a constant for each of the usual alignment values, the alignment is defined as two factors like this primarily for animating transition between alignments.

Values outside of the [0.0..=1.0] range places the content outside of the container bounds.

§Special Values

The f32::INFINITY value can be used in x or y to indicate that the content must fill the available space.

The f32::NEG_INFINITY value can be used in y to indicate that a panel widget must align its items by each baseline, for most widgets this is the same as BOTTOM, but for texts this aligns to the baseline of the texts (bottom + baseline).

You can use the is_fill_x, is_fill_y and is_baseline methods to probe for these special values.

§Right-to-Left

The x alignment can be flagged as x_rtl_aware, in widgets that implement right-to-left the x value is flipped around 0.5.fct(). The named const values that contain START and END are x_rtl_aware, the others are not. The x_rtl_aware flag is sticky, all arithmetic operations between aligns output an x_rtl_aware align if any of the inputs is flagged. The flag is only resolved explicitly, arithmetic operations apply on the

Fields§

§x: Factor

x alignment in a [0.0..=1.0] range.

§x_rtl_aware: bool

If x is flipped (around 0.5) in right-to-left contexts.

§y: Factor

y alignment in a [0.0..=1.0] range.

Implementations§

source§

impl Align

source

pub fn x(self, direction: LayoutDirection) -> Factor

Gets the best finite x align value.

Replaces FILL with START, flips x for right-to-left if applicable.

source

pub fn y(self) -> Factor

Gets the best finite y align value.

Returns 1.fct() for is_baseline, implementers must add the baseline offset to that.

source

pub fn xy(self, direction: LayoutDirection) -> Factor2d

Gets the best finite x and y align values.

source

pub fn is_fill_x(self) -> bool

Returns true if x is a special value that indicates the content width must be the container width.

source

pub fn is_fill_y(self) -> bool

Returns true if y is a special value that indicates the content height must be the container height.

source

pub fn is_baseline(self) -> bool

Returns true if y is a special value that indicates the contents must be aligned by their baseline.

If this is true the y alignment must be BOTTOM plus the baseline offset.

source

pub fn fill_vector(self) -> BoolVector2D

Returns a boolean vector of the fill values.

source

pub fn child_constraints( self, parent_constraints: PxConstraints2d, ) -> PxConstraints2d

Constraints that must be used to layout a child node with the alignment.

source

pub fn child_offset( self, child_size: Size2D<Px, Px>, parent_size: Size2D<Px, Px>, direction: LayoutDirection, ) -> Vector2D<Px, Px>

Compute the offset for a given child size, parent size and layout direction.

Note that this does not flag baseline offset, you can use Align::layout to cover all corner cases.

source

pub fn measure( self, child_size: Size2D<Px, Px>, parent_constraints: PxConstraints2d, ) -> Size2D<Px, Px>

Computes the size returned by layout for the given child size and constraints.

source

pub fn measure_x( self, child_width: Px, parent_constraints_x: PxConstraints, ) -> Px

Computes the width returned by layout for the given child width and x constraints.

source

pub fn measure_y( self, child_height: Px, parent_constraints_y: PxConstraints, ) -> Px

Computes the height returned by layout for the given child height and y constraints.

source

pub fn layout( self, child_size: Size2D<Px, Px>, parent_constraints: PxConstraints2d, direction: LayoutDirection, ) -> (Size2D<Px, Px>, Vector2D<Px, Px>, bool)

Applies the alignment transform to wl and returns the size of the parent align node, the translate offset and if baseline must be translated.

source§

impl Align

source

pub const TOP_START: Align = _

(0.0, 0.0)

source

pub const TOP_LEFT: Align = _

(0.0, 0.0)

source

pub const BOTTOM_START: Align = _

(0.0, 1.0)

source

pub const BOTTOM_LEFT: Align = _

(0.0, 1.0)

source

pub const TOP_END: Align = _

(1.0, 0.0)

source

pub const TOP_RIGHT: Align = _

(1.0, 0.0)

source

pub const BOTTOM_END: Align = _

(1.0, 1.0)

source

pub const BOTTOM_RIGHT: Align = _

(1.0, 1.0)

source

pub const START: Align = _

(0.0, 0.5)

source

pub const LEFT: Align = _

(0.0, 0.5)

source

pub const END: Align = _

(1.0, 0.5)

source

pub const RIGHT: Align = _

(1.0, 0.5)

source

pub const TOP: Align = _

(0.5, 0.0)

source

pub const BOTTOM: Align = _

(0.5, 1.0)

source

pub const CENTER: Align = _

(0.5, 0.5)

source

pub const FILL_TOP: Align = _

(f32::INFINITY, 0.0)

source

pub const FILL_BOTTOM: Align = _

(f32::INFINITY, 1.0)

source

pub const FILL_START: Align = _

(0.0, f32::INFINITY)

source

pub const FILL_LEFT: Align = _

(0.0, f32::INFINITY)

source

pub const FILL_RIGHT: Align = _

(1.0, f32::INFINITY)

source

pub const FILL_END: Align = _

(1.0, f32::INFINITY)

source

pub const FILL_X: Align = _

(f32::INFINITY, 0.5)

source

pub const FILL_Y: Align = _

(0.5, f32::INFINITY)

source

pub const FILL: Align = _

(f32::INFINITY, f32::INFINITY)

source

pub const BASELINE_START: Align = _

(0.0, f32::NEG_INFINITY)

source

pub const BASELINE_LEFT: Align = _

(0.0, f32::NEG_INFINITY)

source

pub const BASELINE_CENTER: Align = _

(0.5, f32::NEG_INFINITY)

source

pub const BASELINE_END: Align = _

(1.0, f32::NEG_INFINITY)

source

pub const BASELINE_RIGHT: Align = _

(1.0, f32::NEG_INFINITY)

source

pub const BASELINE: Align = _

(f32::INFINITY, f32::NEG_INFINITY)

source

pub fn name(self) -> Option<&'static str>

Returns the alignment const name if self is equal to one of then.

source

pub fn from_name(name: &str) -> Option<Align>

Returns the named alignment.

Trait Implementations§

source§

impl Clone for Align

source§

fn clone(&self) -> Align

Returns a copy 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 Align

source§

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

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

impl Default for Align

source§

impl<'de> Deserialize<'de> for Align

source§

fn deserialize<D>( deserializer: D, ) -> Result<Align, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Align

source§

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

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

impl<S> Div<S> for Align
where S: Into<Factor2d>,

source§

type Output = Align

The resulting type after applying the / operator.
source§

fn div(self, rhs: S) -> Align

Performs the / operation. Read more
source§

impl<S> DivAssign<S> for Align
where S: Into<Factor2d>,

source§

fn div_assign(&mut self, rhs: S)

Performs the /= operation. Read more
source§

impl<X, Y> From<(X, Y)> for Align
where X: Into<Factor>, Y: Into<Factor>,

source§

fn from(_: (X, Y)) -> Align

Converts to this type from the input type.
source§

impl<X, Y> From<(X, bool, Y)> for Align
where X: Into<Factor>, Y: Into<Factor>,

source§

fn from(_: (X, bool, Y)) -> Align

Converts to this type from the input type.
source§

impl From<Align> for Point

source§

fn from(alignment: Align) -> Point

To relative length x and y.

source§

impl From<Factor> for Align

source§

fn from(xy: Factor) -> Align

Converts to this type from the input type.
source§

impl From<Factor2d> for Align

source§

fn from(factor2d: Factor2d) -> Align

Converts to this type from the input type.
source§

impl From<FactorPercent> for Align

source§

fn from(xy: FactorPercent) -> Align

Converts to this type from the input type.
source§

impl<X, Y> IntoVar<Align> for (X, Y)
where X: Into<Factor>, Y: Into<Factor>,

source§

type Var = LocalVar<Align>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> <(X, Y) as IntoVar<Align>>::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl<X, Y> IntoVar<Align> for (X, bool, Y)
where X: Into<Factor>, Y: Into<Factor>,

source§

type Var = LocalVar<Align>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> <(X, bool, Y) as IntoVar<Align>>::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<Align> for Factor

source§

type Var = LocalVar<Align>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> <Factor as IntoVar<Align>>::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<Align> for Factor2d

source§

type Var = LocalVar<Align>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> <Factor2d as IntoVar<Align>>::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<Align> for FactorPercent

source§

type Var = LocalVar<Align>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> <FactorPercent as IntoVar<Align>>::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<Point> for Align

source§

fn into_var(self) -> <Align as IntoVar<Point>>::Var

To relative length x and y.

source§

type Var = LocalVar<Point>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl<S> Mul<S> for Align
where S: Into<Factor2d>,

source§

type Output = Align

The resulting type after applying the * operator.
source§

fn mul(self, rhs: S) -> Align

Performs the * operation. Read more
source§

impl<S> MulAssign<S> for Align
where S: Into<Factor2d>,

source§

fn mul_assign(&mut self, rhs: S)

Performs the *= operation. Read more
source§

impl PartialEq for Align

source§

fn eq(&self, other: &Align) -> 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 Serialize for Align

source§

fn serialize<S>( &self, serializer: S, ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Transitionable for Align

source§

fn lerp(self, to: &Align, step: Factor) -> Align

Sample the linear interpolation from self -> to by step.
source§

impl Copy for Align

source§

impl<X, Y> IntoValue<Align> for (X, Y)
where X: Into<Factor>, Y: Into<Factor>,

source§

impl<X, Y> IntoValue<Align> for (X, bool, Y)
where X: Into<Factor>, Y: Into<Factor>,

source§

impl IntoValue<Align> for Factor

source§

impl IntoValue<Align> for Factor2d

source§

impl IntoValue<Align> for FactorPercent

source§

impl IntoValue<Point> for Align

Auto Trait Implementations§

§

impl Freeze for Align

§

impl RefUnwindSafe for Align

§

impl Send for Align

§

impl Sync for Align

§

impl Unpin for Align

§

impl UnwindSafe for Align

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
§

impl<T> AnyEq for T
where T: Any + PartialEq,

§

fn equals(&self, other: &(dyn Any + 'static)) -> bool

§

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

source§

impl<T> AnyVarValue for T
where T: VarValue,

source§

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

Access to dyn Any methods.
source§

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

Access to mut dyn Any methods.
source§

fn clone_boxed(&self) -> Box<dyn AnyVarValue>

Clone the value.
source§

fn clone_boxed_var(&self) -> Box<dyn AnyVar>

Clone the value into a new boxed LocalVar<Self>.
source§

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

Access to Box<dyn Any> methods.
source§

fn eq_any(&self, other: &(dyn AnyVarValue + 'static)) -> bool

Gets if self equals other.
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, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> DataNoteValue for T
where T: Debug + Display + Send + Sync + Any + 'static,

source§

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

/// Access to dyn Any methods.
§

impl<T> Downcast for T
where T: Any,

§

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

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

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

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

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

§

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<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

source§

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

Access any.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoVar<T> for T
where T: VarValue,

source§

type Var = LocalVar<T>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> <T as IntoVar<T>>::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
§

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

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

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

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
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
§

impl<T> ToSmolStr for T
where T: Display + ?Sized,

§

fn to_smolstr(&self) -> SmolStr

source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T> ToTxt for T
where T: ToString,

source§

fn to_txt(&self) -> Txt

Converts the given value to an owned Txt. 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
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
source§

impl<T> ConfigValue for T

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> IntoValue<T> for T
where T: VarValue,

source§

impl<T> IpcValue for T
where T: Debug + Serialize + for<'d> Deserialize<'d> + Send + 'static,

§

impl<T> MaybeSendSync for T

source§

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

source§

impl<T> VarValue for T
where T: Debug + Clone + PartialEq + Any + Send + Sync,