Skip to main content

ElementBuilder

Struct ElementBuilder 

Source
pub struct ElementBuilder<'ply, CustomElementData: Clone + Default + Debug = ()> { /* private fields */ }
Expand description

Builder for creating elements with closure-based syntax. Methods return self by value for chaining. Finalize with .children() or .empty().

Implementations§

Source§

impl<'ply, CustomElementData: Clone + Default + Debug> ElementBuilder<'ply, CustomElementData>

Source

pub fn width(self, width: Sizing) -> Self

Sets the width of the element.

Source

pub fn height(self, height: Sizing) -> Self

Sets the height of the element.

Source

pub fn background_color(self, color: impl Into<Color>) -> Self

Sets the background color of the element.

Source

pub fn corner_radius(self, radius: impl Into<CornerRadius>) -> Self

Sets the corner radius. Accepts f32 (all corners) or (f32, f32, f32, f32) in CSS order (top-left, top-right, bottom-right, bottom-left).

Source

pub fn id(self, id: impl Into<Id>) -> Self

Sets the element’s ID.

Accepts an Id or a &'static str label.

Source

pub fn aspect_ratio(self, aspect_ratio: f32) -> Self

Sets the aspect ratio of the element.

Source

pub fn overflow( self, f: impl for<'a> FnOnce(&'a mut OverflowBuilder) -> &'a mut OverflowBuilder, ) -> Self

Configures overflow (clip and scroll) properties.

Source

pub fn custom_element(self, data: CustomElementData) -> Self

Sets custom element data.

Source

pub fn layout( self, f: impl for<'a> FnOnce(&'a mut LayoutBuilder) -> &'a mut LayoutBuilder, ) -> Self

Configures layout properties using a closure.

Source

pub fn floating( self, f: impl for<'a> FnOnce(&'a mut FloatingBuilder) -> &'a mut FloatingBuilder, ) -> Self

Configures floating properties using a closure.

Source

pub fn border( self, f: impl for<'a> FnOnce(&'a mut BorderBuilder) -> &'a mut BorderBuilder, ) -> Self

Configures border properties using a closure.

Source

pub fn image(self, data: impl Into<ImageSource>) -> Self

Sets the image data for this element.

Accepts anything that implements Into<ImageSource>:

  • &'static GraphicAsset: static file path or embedded bytes
  • Texture2D: pre-existing GPU texture handle
  • tinyvg::format::Image: procedural TinyVG scene graph (requires tinyvg feature)
Source

pub fn effect( self, asset: &ShaderAsset, f: impl FnOnce(&mut ShaderBuilder<'_>), ) -> Self

Adds a per-element shader effect.

The shader modifies the fragment output of the element’s draw call directly. Multiple .effect() calls are supported.

§Example
ui.element()
    .effect(&MY_SHADER, |s| s
        .uniform("time", time)
        .uniform("intensity", 0.5f32)
    )
    .empty();
Source

pub fn shader( self, asset: &ShaderAsset, f: impl FnOnce(&mut ShaderBuilder<'_>), ) -> Self

Adds a group shader that captures the lement and its children to an offscreen buffer, then applies a fragment shader as a post-process.

Multiple .shader() calls are supported, each adds a nesting level. The first shader is applied innermost (directly to children), subsequent shaders wrap earlier ones.

§Example
ui.element()
    .shader(&FOIL_EFFECT, |s| s
        .uniform("time", time)
        .uniform("seed", card_seed)
    )
    .children(|ui| {
        // All children captured to offscreen buffer
    });
Source

pub fn rotate_visual( self, f: impl for<'a> FnOnce(&'a mut VisualRotationBuilder) -> &'a mut VisualRotationBuilder, ) -> Self

Applies a visual rotation to the element and all its children.

This renders the element to an offscreen buffer and draws it back with rotation, flip, and pivot applied.

It does not affect layout.

When combined with .shader(), the rotation shares the same render target (no extra GPU cost).

§Example
ui.element()
    .rotate_visual(|r| r
        .degrees(15.0)
        .pivot(0.5, 0.5)
        .flip_x()
    )
    .children(|ui| { /* ... */ });
Source

pub fn rotate_shape( self, f: impl for<'a> FnOnce(&'a mut ShapeRotationBuilder) -> &'a mut ShapeRotationBuilder, ) -> Self

Applies vertex-level shape rotation to this element’s geometry.

Rotates the element’s own rectangle / image / border at the vertex level and adjusts its layout bounding box.

Children, text, and shaders are not affected.

There is no pivot.

§Example
ui.element()
    .rotate_shape(|r| r.degrees(45.0).flip_x())
    .empty();
Source

pub fn accessibility( self, f: impl for<'a> FnOnce(&'a mut AccessibilityBuilder) -> &'a mut AccessibilityBuilder, ) -> Self

Configures accessibility properties and focus ring styling.

§Example
ui.element()
    .id("submit_btn")
    .accessibility(|a| a
        .button("Submit")
        .tab_index(1)
    )
    .empty();
Source

pub fn preserve_focus(self) -> Self

When set, clicking this element will not steal focus. Use this for toolbar buttons that modify a text input’s content without unfocusing it.

Source

pub fn on_hover<F>(self, callback: F) -> Self
where F: FnMut(Id, PointerData) + 'static,

Registers a callback invoked every frame the pointer is over this element.

Source

pub fn on_press<F>(self, callback: F) -> Self
where F: FnMut(Id, PointerData) + 'static,

Registers a callback that fires once when the element is pressed (pointer click or Enter/Space on focused element).

Source

pub fn on_release<F>(self, callback: F) -> Self
where F: FnMut(Id, PointerData) + 'static,

Registers a callback that fires once when the element is released (pointer release or key release on focused element).

Source

pub fn on_focus<F>(self, callback: F) -> Self
where F: FnMut(Id) + 'static,

Registers a callback that fires when this element receives focus (via Tab navigation, arrow keys, or programmatic set_focus).

Source

pub fn on_unfocus<F>(self, callback: F) -> Self
where F: FnMut(Id) + 'static,

Registers a callback that fires when this element loses focus.

Source

pub fn text_input( self, f: impl for<'a> FnOnce(&'a mut TextInputBuilder) -> &'a mut TextInputBuilder, ) -> Self

Configures this element as a text input.

The element will capture keyboard input when focused and render text, cursor, and selection internally.

§Example
ui.element()
    .id("username")
    .text_input(|t| t
        .placeholder("Enter username")
        .max_length(32)
        .font_size(18)
        .on_changed(|text| println!("Text changed: {}", text))
        .on_submit(|text| println!("Submitted: {}", text))
    )
    .empty();
Source

pub fn children(self, f: impl FnOnce(&mut Ui<'_, CustomElementData>)) -> Id

Finalizes the element with children defined in a closure.

Source

pub fn empty(self) -> Id

Finalizes the element with no children.

Auto Trait Implementations§

§

impl<'ply, CustomElementData> Freeze for ElementBuilder<'ply, CustomElementData>
where CustomElementData: Freeze,

§

impl<'ply, CustomElementData = ()> !RefUnwindSafe for ElementBuilder<'ply, CustomElementData>

§

impl<'ply, CustomElementData = ()> !Send for ElementBuilder<'ply, CustomElementData>

§

impl<'ply, CustomElementData = ()> !Sync for ElementBuilder<'ply, CustomElementData>

§

impl<'ply, CustomElementData> Unpin for ElementBuilder<'ply, CustomElementData>
where CustomElementData: Unpin,

§

impl<'ply, CustomElementData> UnsafeUnpin for ElementBuilder<'ply, CustomElementData>
where CustomElementData: UnsafeUnpin,

§

impl<'ply, CustomElementData = ()> !UnwindSafe for ElementBuilder<'ply, CustomElementData>

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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