Struct egui::Ui[][src]

pub struct Ui { /* fields omitted */ }

This is what you use to place widgets.

Represents a region of the screen with a type of layout (horizontal or vertical).

ui.add(egui::Label::new("Hello World!"));
ui.label("A shorter and more convenient way to add a label.");
ui.horizontal(|ui| {
    ui.label("Add widgets");
    if ui.button("on the same row!").clicked() {
        /* … */
    }
});

Implementations

impl Ui[src]

pub fn new(
    ctx: CtxRef,
    layer_id: LayerId,
    id: Id,
    max_rect: Rect,
    clip_rect: Rect
) -> Self
[src]

Create a new Ui.

Normally you would not use this directly, but instead use SidePanel, TopPanel, CentralPanel, Window or Area.

pub fn child_ui(&mut self, max_rect: Rect, layout: Layout) -> Self[src]

Create a new Ui at a specific region.

pub fn __test() -> Self[src]

Empty Ui for use in tests.

pub fn id(&self) -> Id[src]

A unique identity of this Ui.

pub fn style(&self) -> &Arc<Style>[src]

Style options for this Ui and its children.

pub fn style_mut(&mut self) -> &mut Style[src]

Mutably borrow internal Style. Changes apply to this Ui and its subsequent children.

To set the style of all Ui:s, use Context::set_style.

Example:

ui.style_mut().body_text_style = egui::TextStyle::Heading;

pub fn set_style(&mut self, style: impl Into<Arc<Style>>)[src]

Changes apply to this Ui and its subsequent children.

To set the visuals of all Ui:s, use Context::set_visuals.

pub fn spacing(&self) -> &Spacing[src]

The current spacing options for this Ui. Short for ui.style().spacing.

pub fn spacing_mut(&mut self) -> &mut Spacing[src]

Mutably borrow internal Spacing. Changes apply to this Ui and its subsequent children.

Example:

ui.spacing_mut().item_spacing = egui::vec2(10.0, 2.0);

pub fn visuals(&self) -> &Visuals[src]

The current visuals settings of this Ui. Short for ui.style().visuals.

pub fn visuals_mut(&mut self) -> &mut Visuals[src]

Mutably borrow internal visuals. Changes apply to this Ui and its subsequent children.

To set the visuals of all Ui:s, use Context::set_visuals.

Example:

ui.visuals_mut().override_text_color = Some(egui::Color32::RED);

pub fn ctx(&self) -> &CtxRef[src]

Get a reference to the parent CtxRef.

pub fn painter(&self) -> &Painter[src]

Use this to paint stuff within this Ui.

pub fn enabled(&self) -> bool[src]

If false, the Ui does not allow any interaction and the widgets in it will draw with a gray look.

pub fn set_enabled(&mut self, enabled: bool)[src]

Calling set_enabled(false) will cause the Ui to deny all future interaction and all the widgets will draw with a gray look.

Calling set_enabled(true) has no effect - it will NOT re-enable the Ui once disabled.

Example

ui.group(|ui|{
    ui.checkbox(&mut enabled, "Enable subsection");
    ui.set_enabled(enabled);
    if ui.button("Button that is not always clickable").clicked() {
        /* … */
    }
});

pub fn layout(&self) -> &Layout[src]

pub fn wrap_text(&self) -> bool[src]

Should text wrap in this Ui? This is determined first by Style::wrap, and then by the layout of this Ui.

pub fn painter_at(&self, rect: Rect) -> Painter[src]

Create a painter for a sub-region of this Ui.

The clip-rect of the returned Painter will be the intersection of the given rectangle and the clip_rect() of this Ui.

pub fn layer_id(&self) -> LayerId[src]

Use this to paint stuff within this Ui.

pub fn input(&self) -> &InputState[src]

The Input of the Context associated with the Ui. Equivalent to .ctx().input().

pub fn memory(&self) -> MutexGuard<'_, Memory>[src]

The Memory of the Context associated with the Ui. Equivalent to .ctx().memory().

pub fn output(&self) -> MutexGuard<'_, Output>[src]

The Output of the Context associated with the Ui. Equivalent to .ctx().output().

pub fn fonts(&self) -> &Fonts[src]

The Fonts of the Context associated with the Ui. Equivalent to .ctx().fonts().

pub fn clip_rect(&self) -> Rect[src]

Screen-space rectangle for clipping what we paint in this ui. This is used, for instance, to avoid painting outside a window that is smaller than its contents.

pub fn set_clip_rect(&mut self, clip_rect: Rect)[src]

Screen-space rectangle for clipping what we paint in this ui. This is used, for instance, to avoid painting outside a window that is smaller than its contents.

impl Ui[src]

pub fn min_rect(&self) -> Rect[src]

Where and how large the Ui is already. All widgets that have been added ot this Ui fits within this rectangle.

No matter what, the final Ui will be at least this large.

This will grow as new widgets are added, but never shrink.

pub fn min_size(&self) -> Vec2[src]

Size of content; same as min_rect().size()

pub fn max_rect(&self) -> Rect[src]

New widgets will try to fit within this rectangle.

Text labels will wrap to fit within max_rect. Separator lines will span the max_rect.

If a new widget doesn’t fit within the max_rect then the Ui will make room for it by expanding both min_rect and max_rect.

pub fn max_rect_finite(&self) -> Rect[src]

This is like max_rect(), but will never be infinite. This can be useful for widgets that expand to fit the available space.

pub fn set_max_size(&mut self, size: Vec2)[src]

Set the maximum size of the ui. You won’t be able to shrink it below the current minimum size.

pub fn set_max_width(&mut self, width: f32)[src]

Set the maximum width of the ui. You won’t be able to shrink it below the current minimum size.

pub fn set_max_height(&mut self, height: f32)[src]

Set the maximum height of the ui. You won’t be able to shrink it below the current minimum size.

pub fn set_min_size(&mut self, size: Vec2)[src]

Set the minimum size of the ui. This can’t shrink the ui, only make it larger.

pub fn set_min_width(&mut self, width: f32)[src]

Set the minimum width of the ui. This can’t shrink the ui, only make it larger.

pub fn set_min_height(&mut self, height: f32)[src]

Set the minimum height of the ui. This can’t shrink the ui, only make it larger.

pub fn shrink_width_to_current(&mut self)[src]

Helper: shrinks the max width to the current width, so further widgets will try not to be wider than previous widgets. Useful for normal vertical layouts.

pub fn shrink_height_to_current(&mut self)[src]

Helper: shrinks the max height to the current height, so further widgets will try not to be wider than previous widgets.

pub fn expand_to_include_rect(&mut self, rect: Rect)[src]

Expand the min_rect and max_rect of this ui to include a child at the given rect.

pub fn set_width_range(&mut self, width: RangeInclusive<f32>)[src]

ui.set_width_range(min..=max); is equivalent to ui.set_min_width(min); ui.set_max_width(max);.

pub fn set_width(&mut self, width: f32)[src]

ui.set_width_range(width); is equivalent to ui.set_min_width(width); ui.set_max_width(width);.

pub fn expand_to_include_x(&mut self, x: f32)[src]

Ensure we are big enough to contain the given x-coordinate. This is sometimes useful to expand an ui to stretch to a certain place.

pub fn available_size(&self) -> Vec2[src]

The available space at the moment, given the current cursor. This how much more space we can take up without overflowing our parent. Shrinks as widgets allocate space and the cursor moves. A small size should be interpreted as “as little as possible”. An infinite size should be interpreted as “as much as you want”.

pub fn available_width(&self) -> f32[src]

pub fn available_size_before_wrap(&self) -> Vec2[src]

In case of a wrapping layout, how much space is left on this row/column?

pub fn available_size_before_wrap_finite(&self) -> Vec2[src]

This is like available_size_before_wrap(), but will never be infinite. This can be useful for widgets that expand to fit the available space. In most layouts the next widget will be put in the top left corner of this Rect.

pub fn available_rect_before_wrap(&self) -> Rect[src]

pub fn available_rect_before_wrap_finite(&self) -> Rect[src]

This is like available_rect_before_wrap(), but will never be infinite. This can be useful for widgets that expand to fit the available space. In most layouts the next widget will be put in the top left corner of this Rect.

impl Ui[src]

pub fn make_persistent_id<IdSource>(&self, id_source: IdSource) -> Id where
    IdSource: Hash + Debug
[src]

Use this to generate widget ids for widgets that have persistent state in Memory.

impl Ui[src]

pub fn interact(&self, rect: Rect, id: Id, sense: Sense) -> Response[src]

Check for clicks, drags and/or hover on a specific region of this Ui.

pub fn rect_contains_pointer(&self, rect: Rect) -> bool[src]

Is the pointer (mouse/touch) above this rectangle in this Ui?

The clip_rect and layer of this Ui will be respected, so, for instance, if this Ui is behind some other window, this will always return false.

pub fn ui_contains_pointer(&self) -> bool[src]

Is the pointer (mouse/touch) above this Ui? Equivalent to ui.rect_contains_pointer(ui.min_rect())

pub fn rect_contains_mouse(&self, rect: Rect) -> bool[src]

👎 Deprecated:

renamed rect_contains_pointer

pub fn ui_contains_mouse(&self) -> bool[src]

👎 Deprecated:

renamed ui_contains_pointer

pub fn interact_hover(&self, rect: Rect) -> Response[src]

👎 Deprecated:

Use: interact(rect, id, Sense::hover())

pub fn hovered(&self, rect: Rect) -> bool[src]

👎 Deprecated:

Use: rect_contains_pointer()

impl Ui[src]

pub fn allocate_response(
    &mut self,
    desired_size: Vec2,
    sense: Sense
) -> Response
[src]

Allocate space for a widget and check for interaction in the space. Returns a Response which contains a rectangle, id, and interaction info.

How sizes are negotiated

Each widget should have a minimum desired size and a desired size. When asking for space, ask AT LEAST for your minimum, and don’t ask for more than you need. If you want to fill the space, ask about available().size() and use that.

You may get MORE space than you asked for, for instance for justified layouts, like in menus.

You will never get a rectangle that is smaller than the amount of space you asked for.

let response = ui.allocate_response(egui::vec2(100.0, 200.0), egui::Sense::click());
if response.clicked() { /* … */ }
ui.painter().rect_stroke(response.rect, 0.0, (1.0, egui::Color32::WHITE));

pub fn allocate_exact_size(
    &mut self,
    desired_size: Vec2,
    sense: Sense
) -> (Rect, Response)
[src]

Returns a Rect with exactly what you asked for.

The response rect will be larger if this is part of a justified layout or similar. This means that if this is a narrow widget in a wide justified layout, then the widget will react to interactions outside the returned Rect.

pub fn allocate_at_least(
    &mut self,
    desired_size: Vec2,
    sense: Sense
) -> (Rect, Response)
[src]

Allocate at least as much space as needed, and interact with that rect.

The returned Rect will be the same size as Response::rect.

pub fn allocate_space(&mut self, desired_size: Vec2) -> (Id, Rect)[src]

Reserve this much space and move the cursor. Returns where to put the widget.

How sizes are negotiated

Each widget should have a minimum desired size and a desired size. When asking for space, ask AT LEAST for your minimum, and don’t ask for more than you need. If you want to fill the space, ask about available().size() and use that.

You may get MORE space than you asked for, for instance for justified layouts, like in menus.

You will never get a rectangle that is smaller than the amount of space you asked for.

Returns an automatic Id (which you can use for interaction) and the Rect of where to put your widget.

let (id, rect) = ui.allocate_space(egui::vec2(100.0, 200.0));
let response = ui.interact(rect, id, egui::Sense::click());

pub fn allocate_rect(&mut self, rect: Rect, sense: Sense) -> Response[src]

Allocate a specific part of the `Ui‘.

Ignore the layout of the Ui‘: just put my widget here! The layout cursor will advance to past this rect`.

pub fn allocate_ui<R>(
    &mut self,
    desired_size: Vec2,
    add_contents: impl FnOnce(&mut Self) -> R
) -> InnerResponse<R>
[src]

Allocated the given space and then adds content to that space. If the contents overflow, more space will be allocated. When finished, the amount of space actually used (min_rect) will be allocated. So you can request a lot of space and then use less.

pub fn allocate_ui_with_layout<R>(
    &mut self,
    desired_size: Vec2,
    layout: Layout,
    add_contents: impl FnOnce(&mut Self) -> R
) -> InnerResponse<R>
[src]

Allocated the given space and then adds content to that space. If the contents overflow, more space will be allocated. When finished, the amount of space actually used (min_rect) will be allocated. So you can request a lot of space and then use less.

pub fn allocate_ui_at_rect<R>(
    &mut self,
    max_rect: Rect,
    add_contents: impl FnOnce(&mut Self) -> R
) -> InnerResponse<R>
[src]

Allocated the given rectangle and then adds content to that rectangle. If the contents overflow, more space will be allocated. When finished, the amount of space actually used (min_rect) will be allocated. So you can request a lot of space and then use less.

pub fn allocate_painter(
    &mut self,
    desired_size: Vec2,
    sense: Sense
) -> (Response, Painter)
[src]

Convenience function to get a region to paint on

pub fn scroll_to_cursor(&mut self, align: Align)[src]

Move the scroll to this cursor position with the specified alignment.

egui::ScrollArea::auto_sized().show(ui, |ui| {
    let scroll_bottom = ui.button("Scroll to bottom.").clicked();
    for i in 0..1000 {
        ui.label(format!("Item {}", i));
    }

    if scroll_bottom {
        ui.scroll_to_cursor(Align::BOTTOM);
    }
});

impl Ui[src]

pub fn add(&mut self, widget: impl Widget) -> Response[src]

Add a Widget to this Ui at a location dependent on the current Layout.

The returned Response can be used to check for interactions, as well as adding tooltips using Response::on_hover_text.

See also Self::add_sized and Self::put.

let response = ui.add(egui::Slider::new(&mut my_value, 0..=100));
response.on_hover_text("Drag me!");

pub fn add_sized(
    &mut self,
    max_size: impl Into<Vec2>,
    widget: impl Widget
) -> Response
[src]

Add a Widget to this Ui with a given size. The widget will attempt to fit within the given size, but some widgets may overflow.

To fill all remaining area, use ui.add_sized(ui.available_size(), widget);

See also Self::add and Self::put.

ui.add_sized([40.0, 20.0], egui::DragValue::new(&mut my_value));

pub fn put(&mut self, max_rect: Rect, widget: impl Widget) -> Response[src]

Add a Widget to this Ui at a specific location (manual layout).

See also Self::add and Self::add_sized.

pub fn add_space(&mut self, amount: f32)[src]

Add extra space before the next widget.

The direction is dependent on the layout. This will be in addition to the [Spacing::item_spacing}.

Self::min_rect will expand to contain the space.

pub fn advance_cursor(&mut self, amount: f32)[src]

👎 Deprecated:

Use add_space instead

pub fn label(&mut self, label: impl Into<Label>) -> Response[src]

Shortcut for add(Label::new(text))

See also Label.

pub fn colored_label(
    &mut self,
    color: impl Into<Color32>,
    label: impl Into<Label>
) -> Response
[src]

Shortcut for add(Label::new(text).text_color(color))

pub fn heading(&mut self, label: impl Into<Label>) -> Response[src]

Shortcut for add(Label::new(text).heading())

pub fn monospace(&mut self, label: impl Into<Label>) -> Response[src]

Shortcut for add(Label::new(text).monospace())

pub fn code(&mut self, label: impl Into<Label>) -> Response[src]

Show text as monospace with a gray background.

Shortcut for add(Label::new(text).code())

pub fn small(&mut self, label: impl Into<Label>) -> Response[src]

Shortcut for add(Label::new(text).small())

Shortcut for add(Hyperlink::new(url))

See also Hyperlink.

Shortcut for add(Hyperlink::new(url).text(label))

ui.hyperlink_to("egui on GitHub", "https://www.github.com/emilk/egui/");

See also Hyperlink.

pub fn text_edit(&mut self, text: &mut String) -> Response[src]

👎 Deprecated:

Use text_edit_singleline or text_edit_multiline

pub fn text_edit_singleline(&mut self, text: &mut String) -> Response[src]

No newlines (\n) allowed. Pressing enter key will result in the TextEdit losing focus (response.lost_focus).

See also TextEdit.

pub fn text_edit_multiline(&mut self, text: &mut String) -> Response[src]

A TextEdit for multiple lines. Pressing enter key will create a new line.

See also TextEdit.

pub fn code_editor(&mut self, text: &mut String) -> Response[src]

A TextEdit for code editing.

This will be multiline, monospace, and will insert tabs instead of moving focus.

See also TextEdit::code_editor.

#[must_use = "You should check if the user clicked this with `if ui.button(…).clicked() { … } "]
pub fn button(&mut self, text: impl ToString) -> Response
[src]

Usage: if ui.button("Click me").clicked() { … }

Shortcut for add(Button::new(text))

See also Button.

#[must_use = "You should check if the user clicked this with `if ui.small_button(…).clicked() { … } "]
pub fn small_button(&mut self, text: impl ToString) -> Response
[src]

A button as small as normal body text.

Usage: if ui.small_button("Click me").clicked() { … }

Shortcut for add(Button::new(text).small())

pub fn checkbox(&mut self, checked: &mut bool, text: impl ToString) -> Response[src]

Show a checkbox.

#[must_use = "You should check if the user clicked this with `if ui.radio(…).clicked() { … } "]
pub fn radio(&mut self, selected: bool, text: impl ToString) -> Response
[src]

Show a RadioButton. Often you want to use Self::radio_value instead.

pub fn radio_value<Value: PartialEq>(
    &mut self,
    current_value: &mut Value,
    selected_value: Value,
    text: impl ToString
) -> Response
[src]

Show a RadioButton. It is selected if *current_value == selected_value. If clicked, selected_value is assigned to *current_value.


#[derive(PartialEq)]
enum Enum { First, Second, Third }
let mut my_enum = Enum::First;

ui.radio_value(&mut my_enum, Enum::First, "First");

// is equivalent to:

if ui.add(egui::RadioButton::new(my_enum == Enum::First, "First")).clicked() {
    my_enum = Enum::First
}

#[must_use = "You should check if the user clicked this with `if ui.selectable_label(…).clicked() { … } "]
pub fn selectable_label(
    &mut self,
    checked: bool,
    text: impl ToString
) -> Response
[src]

Show a label which can be selected or not.

See also SelectableLabel.

pub fn selectable_value<Value: PartialEq>(
    &mut self,
    current_value: &mut Value,
    selected_value: Value,
    text: impl ToString
) -> Response
[src]

Show selectable text. It is selected if *current_value == selected_value. If clicked, selected_value is assigned to *current_value.

Example: ui.selectable_value(&mut my_enum, Enum::Alternative, "Alternative").

See also SelectableLabel.

pub fn separator(&mut self) -> Response[src]

Shortcut for add(Separator::default()) (see Separator).

pub fn drag_angle(&mut self, radians: &mut f32) -> Response[src]

Modify an angle. The given angle should be in radians, but is shown to the user in degrees. The angle is NOT wrapped, so the user may select, for instance 720° = 2𝞃 = 4π

pub fn drag_angle_tau(&mut self, radians: &mut f32) -> Response[src]

Modify an angle. The given angle should be in radians, but is shown to the user in fractions of one Tau (i.e. fractions of one turn). The angle is NOT wrapped, so the user may select, for instance 2𝞃 (720°)

pub fn image(
    &mut self,
    texture_id: TextureId,
    size: impl Into<Vec2>
) -> Response
[src]

Show an image here with the given size.

See also Image.

impl Ui[src]

pub fn color_edit_button_srgba(&mut self, srgba: &mut Color32) -> Response[src]

Shows a button with the given color. If the user clicks the button, a full color picker is shown.

pub fn color_edit_button_hsva(&mut self, hsva: &mut Hsva) -> Response[src]

Shows a button with the given color. If the user clicks the button, a full color picker is shown.

pub fn color_edit_button_srgb(&mut self, srgb: &mut [u8; 3]) -> Response[src]

Shows a button with the given color. If the user clicks the button, a full color picker is shown. The given color is in sRGB space.

pub fn color_edit_button_rgb(&mut self, rgb: &mut [f32; 3]) -> Response[src]

Shows a button with the given color. If the user clicks the button, a full color picker is shown. The given color is in linear RGB space.

pub fn color_edit_button_srgba_premultiplied(
    &mut self,
    srgba: &mut [u8; 4]
) -> Response
[src]

Shows a button with the given color. If the user clicks the button, a full color picker is shown. The given color is in sRGBA space with premultiplied alpha

pub fn color_edit_button_srgba_unmultiplied(
    &mut self,
    srgba: &mut [u8; 4]
) -> Response
[src]

Shows a button with the given color. If the user clicks the button, a full color picker is shown. The given color is in sRGBA space without premultiplied alpha. If unsure, what “premultiplied alpha” is, then this is probably the function you want to use.

pub fn color_edit_button_rgba_premultiplied(
    &mut self,
    rgba: &mut [f32; 4]
) -> Response
[src]

Shows a button with the given color. If the user clicks the button, a full color picker is shown. The given color is in linear RGBA space with premultiplied alpha

pub fn color_edit_button_rgba_unmultiplied(
    &mut self,
    rgba: &mut [f32; 4]
) -> Response
[src]

Shows a button with the given color. If the user clicks the button, a full color picker is shown. The given color is in linear RGBA space without premultiplied alpha. If unsure, what “premultiplied alpha” is, then this is probably the function you want to use.

impl Ui[src]

pub fn group<R>(
    &mut self,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

Put into a Frame::group, visually grouping the contents together

ui.group(|ui|{
    ui.label("Within a frame");
});

pub fn scope<R>(
    &mut self,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

Create a scoped child ui.

You can use this to temporarily change the Style of a sub-region, for instance:

ui.scope(|ui|{
    ui.spacing_mut().slider_width = 200.0; // Temporary change
    // …
});

pub fn wrap<R>(
    &mut self,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

👎 Deprecated:

Renamed scope()

pub fn with_layer_id<R>(
    &mut self,
    layer_id: LayerId,
    add_contents: impl FnOnce(&mut Self) -> R
) -> InnerResponse<R>
[src]

Redirect shapes to another paint layer.

pub fn add_custom_contents(
    &mut self,
    desired_size: Vec2,
    add_contents: impl FnOnce(&mut Ui)
) -> Rect
[src]

👎 Deprecated:

Use ui.allocate_ui instead

pub fn collapsing<R>(
    &mut self,
    heading: impl ToString,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> CollapsingResponse<R>
[src]

A CollapsingHeader that starts out collapsed.

pub fn indent<R>(
    &mut self,
    id_source: impl Hash,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

Create a child ui which is indented to the right.

pub fn horizontal<R>(
    &mut self,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

Start a ui with horizontal layout. After you have called this, the function registers the contents as any other widget.

Elements will be centered on the Y axis, i.e. adjusted up and down to lie in the center of the horizontal layout. The initial height is style.spacing.interact_size.y. Centering is almost always what you want if you are planning to to mix widgets or use different types of text.

The returned Response will only have checked for mouse hover but can be used for tooltips (on_hover_text). It also contains the Rect used by the horizontal layout.

ui.horizontal(|ui|{
    ui.label("Same");
    ui.label("row");
});

pub fn horizontal_for_text<R>(
    &mut self,
    text_style: TextStyle,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

👎 Deprecated:

Use horizontal instead and set the desired spacing manually with ui.spacing_mut().item_spacing

Like horizontal, but will set up the spacing to match that of a normal label.

In particular, the space between widgets is the same width as the space character.

You can still add any widgets to the layout (not only Labels).

pub fn horizontal_wrapped<R>(
    &mut self,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

Start a ui with horizontal layout that wraps to a new row when it reaches the right edge of the max_size. After you have called this, the function registers the contents as any other widget.

Elements will be centered on the Y axis, i.e. adjusted up and down to lie in the center of the horizontal layout. The initial height is style.spacing.interact_size.y. Centering is almost always what you want if you are planning to to mix widgets or use different types of text.

The returned Response will only have checked for mouse hover but can be used for tooltips (on_hover_text). It also contains the Rect used by the horizontal layout.

pub fn horizontal_wrapped_for_text<R>(
    &mut self,
    text_style: TextStyle,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

👎 Deprecated:

Use horizontal_wrapped instead and set the desired spacing manually with ui.spacing_mut().item_spacing

Like horizontal_wrapped, but will set up the spacing and line size to match that of a normal label.

In particular, the space between widgets is the same width as the space character and the line spacing is the same as that for text.

You can still add any widgets to the layout (not only Labels).

pub fn vertical<R>(
    &mut self,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

Start a ui with vertical layout. Widgets will be left-justified.

ui.vertical(|ui|{
    ui.label("over");
    ui.label("under");
});

pub fn vertical_centered<R>(
    &mut self,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

Start a ui with vertical layout. Widgets will be horizontally centered.

ui.vertical_centered(|ui|{
    ui.label("over");
    ui.label("under");
});

pub fn vertical_centered_justified<R>(
    &mut self,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> InnerResponse<R>
[src]

Start a ui with vertical layout. Widgets will be horizontally centered and justified (fill full width).

ui.vertical_centered_justified(|ui|{
    ui.label("over");
    ui.label("under");
});

pub fn with_layout<R>(
    &mut self,
    layout: Layout,
    add_contents: impl FnOnce(&mut Self) -> R
) -> InnerResponse<R>
[src]

The new layout will take up all available space.

Consider using Self::allocate_ui_with_layout instead, or the helpers [Self::horizontal], Self::vertical, etc.

pub fn centered_and_justified<R>(
    &mut self,
    add_contents: impl FnOnce(&mut Self) -> R
) -> InnerResponse<R>
[src]

This will make the next added widget centered and justified in the available space.

pub fn end_row(&mut self)[src]

Move to the next row in a grid layout or wrapping layout. Otherwise does nothing.

pub fn set_row_height(&mut self, height: f32)[src]

Set row height in horizontal wrapping layout.

pub fn columns<F, R>(&mut self, num_columns: usize, add_contents: F) -> R where
    F: FnOnce(&mut [Self]) -> R, 
[src]

Temporarily split split an Ui into several columns.

ui.columns(2, |columns| {
    columns[0].label("First column");
    columns[1].label("Second column");
});

impl Ui[src]

pub fn debug_paint_cursor(&self)[src]

Shows where the next widget is going to be placed

Auto Trait Implementations

impl !RefUnwindSafe for Ui

impl Send for Ui

impl Sync for Ui

impl Unpin for Ui

impl !UnwindSafe for Ui

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.