pub enum AtomKind<'a> {
Empty,
Text(WidgetText),
Image(Image<'a>),
Custom(Id),
}
Expand description
The different kinds of crate::Atom
s.
Variants§
Empty
Empty, that can be used with crate::AtomExt::atom_grow
to reserve space.
Text(WidgetText)
Text atom.
§Truncation within crate::AtomLayout
works like this:
- if
wrap_mode
is not Extend- if no atom is
shrink
- the first text atom is selected and will be marked as
shrink
- the first text atom is selected and will be marked as
- the atom marked as
shrink
will shrink / wrap based on the selected wrap mode - any other text atoms will have
wrap_mode
extend
- if no atom is
- if
wrap_mode
is extend, Text will extend as expected.
Unless crate::AtomExt::atom_max_width
is set, wrap_mode
should only be set via crate::Style
or
crate::AtomLayout::wrap_mode
, as setting a wrap mode on a WidgetText
atom
that is not shrink
will have unexpected results.
The size is determined by converting the WidgetText
into a galley and using the galleys
size. You can use crate::AtomExt::atom_size
to override this, and crate::AtomExt::atom_max_width
to limit the width (Causing the text to wrap or truncate, depending on the wrap_mode
.
crate::AtomExt::atom_max_height
has no effect on text.
Image(Image<'a>)
Image atom.
By default the size is determined via Image::calc_size
.
You can use crate::AtomExt::atom_max_size
or crate::AtomExt::atom_size
to customize the size.
There is also a helper crate::AtomExt::atom_max_height_font_size
to set the max height to the
default font height, which is convenient for icons.
Custom(Id)
For custom rendering.
You can get the crate::Rect
with the Id
from crate::AtomLayoutResponse
and use a
crate::Painter
or Ui::put
to add/draw some custom content.
Example:
let id = Id::new("my_button");
let response = Button::new(("Hi!", Atom::custom(id, Vec2::splat(18.0)))).atom_ui(ui);
let rect = response.rect(id);
if let Some(rect) = rect {
ui.put(rect, Button::new("⏵"));
}
Implementations§
Source§impl<'a> AtomKind<'a>
impl<'a> AtomKind<'a>
pub fn text(text: impl Into<WidgetText>) -> Self
pub fn image(image: impl Into<Image<'a>>) -> Self
Sourcepub fn into_sized(
self,
ui: &Ui,
available_size: Vec2,
wrap_mode: Option<TextWrapMode>,
) -> (Vec2, SizedAtomKind<'a>)
pub fn into_sized( self, ui: &Ui, available_size: Vec2, wrap_mode: Option<TextWrapMode>, ) -> (Vec2, SizedAtomKind<'a>)
Turn this AtomKind
into a SizedAtomKind
.
This converts WidgetText
into crate::Galley
and tries to load and size Image
.
The first returned argument is the preferred size.