pub struct Layout {
pub main_dir: Direction,
pub main_wrap: bool,
pub main_align: Align,
pub main_justify: bool,
pub cross_align: Align,
pub cross_justify: bool,
}
Expand description
The layout of a Ui
, e.g. “vertical & centered”.
ui.with_layout(egui::Layout::right_to_left(egui::Align::TOP), |ui| {
ui.label("world!");
ui.label("Hello");
});
Fields§
§main_dir: Direction
Main axis direction
main_wrap: bool
If true, wrap around when reading the end of the main direction.
For instance, for main_dir == Direction::LeftToRight
this will
wrap to a new row when we reach the right side of the max_rect
.
main_align: Align
How to align things on the main axis.
main_justify: bool
Justify the main axis?
cross_align: Align
How to align things on the cross axis. For vertical layouts: put things to left, center or right? For horizontal layouts: put things to top, center or bottom?
cross_justify: bool
Justify the cross axis? For vertical layouts justify mean all widgets get maximum width. For horizontal layouts justify mean all widgets get maximum height.
Implementations§
§impl Layout
impl Layout
§Constructors
pub fn left_to_right(valign: Align) -> Layout
pub fn left_to_right(valign: Align) -> Layout
Place elements horizontally, left to right.
The valign
parameter controls how to align elements vertically.
pub fn right_to_left(valign: Align) -> Layout
pub fn right_to_left(valign: Align) -> Layout
Place elements horizontally, right to left.
The valign
parameter controls how to align elements vertically.
pub fn top_down(halign: Align) -> Layout
pub fn top_down(halign: Align) -> Layout
Place elements vertically, top to bottom.
Use the provided horizontal alignment.
pub fn top_down_justified(halign: Align) -> Layout
pub fn top_down_justified(halign: Align) -> Layout
Top-down layout justified so that buttons etc fill the full available width.
pub fn bottom_up(halign: Align) -> Layout
pub fn bottom_up(halign: Align) -> Layout
Place elements vertically, bottom up.
Use the provided horizontal alignment.
pub fn from_main_dir_and_cross_align( main_dir: Direction, cross_align: Align ) -> Layout
pub fn centered_and_justified(main_dir: Direction) -> Layout
pub fn centered_and_justified(main_dir: Direction) -> Layout
For when you want to add a single widget to a layout, and that widget should use up all available space.
Only one widget may be added to the inner Ui
!
pub fn with_main_wrap(self, main_wrap: bool) -> Layout
pub fn with_main_wrap(self, main_wrap: bool) -> Layout
Wrap widgets when we overflow the main axis?
For instance, for left-to-right layouts, setting this to true
will
put widgets on a new row if we would overflow the right side of crate::Ui::max_rect
.
pub fn with_main_align(self, main_align: Align) -> Layout
pub fn with_main_align(self, main_align: Align) -> Layout
The alignment to use on the main axis.
pub fn with_cross_align(self, cross_align: Align) -> Layout
pub fn with_cross_align(self, cross_align: Align) -> Layout
The alignment to use on the cross axis.
The “cross” axis is the one orthogonal to the main axis. For instance: in left-to-right layout, the main axis is horizontal and the cross axis is vertical.
pub fn with_main_justify(self, main_justify: bool) -> Layout
pub fn with_main_justify(self, main_justify: bool) -> Layout
Justify widgets on the main axis?
Justify here means “take up all available space”.
pub fn with_cross_justify(self, cross_justify: bool) -> Layout
pub fn with_cross_justify(self, cross_justify: bool) -> Layout
Justify widgets along the cross axis?
Justify here means “take up all available space”.
The “cross” axis is the one orthogonal to the main axis. For instance: in left-to-right layout, the main axis is horizontal and the cross axis is vertical.
§impl Layout
impl Layout
§Inspectors
pub fn main_dir(&self) -> Direction
pub fn main_wrap(&self) -> bool
pub fn cross_align(&self) -> Align
pub fn cross_justify(&self) -> bool
pub fn is_horizontal(&self) -> bool
pub fn is_vertical(&self) -> bool
pub fn prefer_right_to_left(&self) -> bool
pub fn horizontal_placement(&self) -> Align
pub fn horizontal_placement(&self) -> Align
e.g. for adjusting the placement of something.
- in horizontal layout: left or right?
- in vertical layout: same as
Self::horizontal_align
.
pub fn horizontal_align(&self) -> Align
pub fn horizontal_align(&self) -> Align
e.g. for when aligning text within a button.
pub fn vertical_align(&self) -> Align
pub fn vertical_align(&self) -> Align
e.g. for when aligning text within a button.
pub fn horizontal_justify(&self) -> bool
pub fn vertical_justify(&self) -> bool
impl Layout
§Debug stuff
Trait Implementations§
impl Copy for Layout
impl Eq for Layout
impl StructuralPartialEq for Layout
Auto Trait Implementations§
impl Freeze for Layout
impl RefUnwindSafe for Layout
impl Send for Layout
impl Sync for Layout
impl Unpin for Layout
impl UnwindSafe for Layout
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request