[][src]Struct egui::Ui

pub struct Ui { /* fields omitted */ }

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

Implementations

impl Ui[src]

pub fn new(ctx: Arc<Context>, layer: Layer, id: Id, rect: Rect) -> Self[src]

pub fn child_ui(&self, child_rect: Rect) -> Self[src]

pub fn round_to_pixel(&self, point: f32) -> f32[src]

pub fn round_vec_to_pixels(&self, vec: Vec2) -> Vec2[src]

pub fn round_pos_to_pixels(&self, pos: Pos2) -> Pos2[src]

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

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

Options for this ui, and any child uis we may spawn.

pub fn set_style(&mut self, style: Style)[src]

pub fn ctx(&self) -> &Arc<Context>[src]

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

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

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

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

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]

pub fn top_left(&self) -> Pos2[src]

Screen-space position of this Ui. This may have moved from its original if a child overflowed to the left or up (rare).

pub fn bottom_right(&self) -> Pos2[src]

Screen-space position of the current bottom right corner of this Ui. This may move when we add children that overflow our desired rectangle bounds. This position may be at inifnity if the desired rect is initinite, which mappens when a parent widget says "be as big as you want to be".

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

Position and current size of the ui. The size is the maximum of the origional (minimum/desired) size and the size of the containted children.

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

This is like rect(), but will never be infinite. If the desired rect is infinite ("be as big as you want") this will be bounded by child bounds.

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

Set the width of the ui. You won't be able to shrink it beyond its current child bounds.

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

Set the height of the ui. You won't be able to shrink it beyond its current child bounds.

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

Size of content

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

Expand the bounding rect of this ui to include a child at the given rect.

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

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

Bounding box of all contained children

pub fn force_set_child_bounds(&mut self, child_bounds: Rect)[src]

pub fn available(&self) -> Rect[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 rectangle should be intepreted as "as little as possible". An infinite rectangle should be interpred as "as much as you want". In most layouts the next widget will be put in the top left corner of this Rect.

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

This is like available(), but will never be infinite. Use this for components that want to grow without bounds (but shouldn't). In most layouts the next widget will be put in the top left corner of this Rect.

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

pub fn set_layout(&mut self, layout: Layout)[src]

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

pub fn has_kb_focus(&self, id: Id) -> bool[src]

pub fn request_kb_focus(&self, id: Id)[src]

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

Will warn if the returned id is not guaranteed unique. Use this to generate widget ids for widgets that have persistent state in Memory. If the id_source is not unique within this ui then an error will be printed at the current cursor position.

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

Make an Id that is unique to this positon. Can be used for widgets that do NOT persist state in Memory but you still need to interact with (e.g. buttons, sliders).

pub fn make_child_id(&self, id_seed: impl Hash) -> Id[src]

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

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

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

#[must_use]pub fn response(&mut self, interact: InteractInfo) -> GuiResponse[src]

pub fn allocate_space(&mut self, child_size: Vec2) -> 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 you 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 aligned layouts, like in menus.

You may get LESS space than you asked for if the current layout won't fit what you asked for.

pub fn add_paint_cmd(&mut self, paint_cmd: PaintCmd)[src]

It is up to the caller to make sure there is room for this. Can be used for free painting. NOTE: all coordinates are screen coordinates!

pub fn add_paint_cmds(&mut self, cmds: Vec<PaintCmd>)[src]

pub fn insert_paint_cmd(&mut self, pos: usize, paint_cmd: PaintCmd)[src]

Insert a paint cmd before existing ones

pub fn paint_list_len(&self) -> usize[src]

pub fn debug_text(&self, text: impl Into<String>)[src]

Paint some debug text at current cursor

pub fn debug_text_at(&self, pos: Pos2, text: impl Into<String>)[src]

pub fn debug_rect(&mut self, rect: Rect, text: impl Into<String>)[src]

pub fn floating_text(
    &mut self,
    pos: Pos2,
    text: impl Into<String>,
    text_style: TextStyle,
    align: (Align, Align),
    text_color: Option<Color>
) -> Rect
[src]

Show some text anywhere in the ui. To center the text at the given position, use align: (Center, Center). If you want to draw text floating on top of everything, consider using Context.floating_text instead.

pub fn add_galley(
    &mut self,
    pos: Pos2,
    galley: Galley,
    text_style: TextStyle,
    color: Option<Color>
)
[src]

Already layed out text.

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

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

pub fn button(&mut self, text: impl Into<String>) -> GuiResponse[src]

pub fn checkbox(
    &mut self,
    text: impl Into<String>,
    checked: &mut bool
) -> GuiResponse
[src]

pub fn radio(&mut self, text: impl Into<String>, checked: bool) -> GuiResponse[src]

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

pub fn collapsing<R>(
    &mut self,
    text: impl Into<String>,
    add_contents: impl FnOnce(&mut Ui) -> R
) -> Option<R>
[src]

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

Create a child ui at the current cursor. size is the desired size. Actual size may be much smaller if avilable_size() is not enough. Set size to Vec::infinity() to get as much space as possible. Just because you ask for a lot of space does not mean you have to use it! After add_contents is called the contents of bounding_size will decide how much space will be used in the parent ui.

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

Create a child ui

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

Create a child ui which is indented to the right

pub fn left_column(&mut self, width: f32) -> Ui[src]

pub fn centered_column(&mut self, width: f32) -> Ui[src]

pub fn right_column(&mut self, width: f32) -> Ui[src]

pub fn column(&mut self, column_position: Align, width: f32) -> Ui[src]

A column ui with a given width.

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

Start a ui with horizontal layout

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

Start a ui with vertical layout

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

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.

This example is not tested
ui.columns(2, |columns| {
    columns[0].add(egui::widgets::label!("First column"));
    columns[1].add(egui::widgets::label!("Second column"));
});

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]

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

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

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

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

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.

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.