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 contain(self, aspect_ratio: f32) -> Self

Sizes the element to the largest box that fits its parent while preserving aspect_ratio.

Source

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

Sizes the element to completely cover its parent while preserving aspect_ratio.

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

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
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<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> RoundFrom<T> for T

Source§

fn round_from(x: T) -> T

Performs the conversion.
Source§

impl<T, U> RoundInto<U> for T
where U: RoundFrom<T>,

Source§

fn round_into(self) -> U

Performs the conversion.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.
Source§

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

Source§

fn vzip(self) -> V

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<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,