Skip to main content

Modifier

Enum Modifier 

Source
pub enum Modifier {
Show 27 variants Empty, Padding(f32), FillMaxWidth, FillMaxHeight, Width(f32), Height(f32), Size { width: f32, height: f32, }, Background(Paint), Clickable { handler_id: u64, }, PaddingRole(SpaceRole), PaddingEach { start: f32, top: f32, end: f32, bottom: f32, }, Weight(f32), Shape { top_start: f32, top_end: f32, bottom_end: f32, bottom_start: f32, }, ShapeRole(ShapeRole), Border { width: f32, paint: Paint, }, Elevation(f32), ObserveSize { token: u32, }, Motion(MotionRole), Material(MaterialRole), Offset { x: f32, y: f32, }, RequiredSize { width: f32, height: f32, }, BorderEach { top: f32, right: f32, bottom: f32, left: f32, top_paint: Paint, right_paint: Paint, bottom_paint: Paint, left_paint: Paint, }, CornerEach { top_left: f32, top_right: f32, bottom_right: f32, bottom_left: f32, }, Shadow { x: f32, y: f32, blur: f32, spread: f32, paint: Paint, }, Clip(bool), Alpha(f32), Transform { a: f32, b: f32, c: f32, d: f32, e: f32, f: f32, origin_x: f32, origin_y: f32, },
}

Variants§

§

Empty

§

Padding(f32)

§

FillMaxWidth

§

FillMaxHeight

§

Width(f32)

§

Height(f32)

§

Size

Fields

§width: f32
§height: f32
§

Background(Paint)

A Paint, not a raw ARGB. Colour has exactly one wire representation.

§

Clickable

Fields

§handler_id: u64
§

PaddingRole(SpaceRole)

§

PaddingEach

Fields

§start: f32
§top: f32
§end: f32
§bottom: f32
§

Weight(f32)

§

Shape

Fields

§top_start: f32
§top_end: f32
§bottom_end: f32
§bottom_start: f32
§

ShapeRole(ShapeRole)

§

Border

Fields

§width: f32
§paint: Paint
§

Elevation(f32)

One dp value. How the shadow is drawn is the design system’s rule: tonal lift plus a shadow, a wide soft shadow, or layered shadow plus a hairline stroke.

§

ObserveSize

Asks the Renderer to report this node’s measured size, the way it reports the window’s.

The token is the application’s own name for the node. A node id belongs to the Renderer and is never something the Host chose, so a screen that wants to know how wide one of its own containers ended up needs a name it gave itself. The Renderer does not read it.

Fields

§token: u32
§

Motion(MotionRole)

Which curve and length this node’s changes run along.

The node says how important the change is, not how long it takes. Appearing, disappearing, a selection moving and a size changing all read this.

§

Material(MaterialRole)

What this node’s surface is made of.

A role, so that a system which blurs blurs and a system which does not lifts its surface instead. Nothing here claims a particular effect was achieved.

§

Offset

Where this node sits inside its parent, in dp from the parent’s top left corner.

The position a layout engine on the Host already computed. Left and right are the screen’s, not the reading direction’s: the Host’s coordinates are physical, so a right-to-left page is not mirrored a second time here.

Fields

§

RequiredSize

This node’s size in dp, whatever its parent’s constraints say. The size a layout engine on the Host already computed, which is not open to negotiation.

Fields

§width: f32
§height: f32
§

BorderEach

A border whose four sides each have their own width and paint. A node whose four sides are the same uses Border.

Fields

§top: f32
§right: f32
§bottom: f32
§left: f32
§top_paint: Paint
§right_paint: Paint
§bottom_paint: Paint
§left_paint: Paint
§

CornerEach

A radius in dp for each corner, cut as plain circular arcs. The background, the border, the shadow and a Clip all follow it. A node with one radius for every corner uses Shape.

Fields

§top_left: f32
§top_right: f32
§bottom_right: f32
§bottom_left: f32
§

Shadow

One shadow cast by this node’s outline: an offset, a blur radius and a spread in dp, and its paint, drawn only outside the node as CSS draws box-shadow. Several shadows are several of these. A modifier list draws in its order, so a later shadow lies over an earlier one; CSS puts the first of its list on top, so a Host sends that list last to first.

Fields

§blur: f32
§spread: f32
§paint: Paint
§

Clip(bool)

Whether this node’s content is cut to its outline: the CornerEach shape where it has one, its rectangle otherwise.

§

Alpha(f32)

The opacity of this node and everything in it, from 0 to 1, applied once to the whole group rather than to each child.

§

Transform

Draws this node and everything in it through a 2D affine matrix, the way CSS transform does, without changing its layout. Pointer input follows the drawn shape.

The matrix means what CSS matrix(a, b, c, d, e, f) means: a point (x, y) goes to (a x + c y + e, b x + d y + f), with e and f in dp. The origin is a fraction of the node’s measured size, (0.5, 0.5) being its centre, so it stays right when the size is decided on the Renderer’s side. An origin given as a length is folded into the matrix by the Host, which then sends (0, 0). A matrix with no inverse draws nothing and takes no input. No value may be NaN or infinite.

Fields

§origin_x: f32
§origin_y: f32

Implementations§

Source§

impl Modifier

Source

pub fn border_sides(widths: [f32; 4], paints: [Paint; 4]) -> Self

A border with a width and a paint for each side, in CSS order: top, right, bottom, left.

Four equal sides are one Border, which is the record every node with an ordinary border already sends. BorderEach is written only where the sides differ, so a screen that never mixes them never sends the longer record.

Source

pub fn corner_radii(radii: [f32; 4]) -> Self

A radius for each corner, in CSS order: top left, top right, bottom right, bottom left.

One radius for every corner is one Shape, the record an ordinary rounded node already sends. CornerEach is written only where the corners differ.

Trait Implementations§

Source§

impl Clone for Modifier

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 Debug for Modifier

Source§

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

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

impl PartialEq for Modifier

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 Modifier

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

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.