pub enum AtomKind<'a> {
Empty,
Text(WidgetText),
Image(Image<'a>),
Custom(Id),
}Expand description
The different kinds of crate::Atoms.
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_modeis 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
shrinkwill shrink / wrap based on the selected wrap mode - any other text atoms will have
wrap_modeextend
- if no atom is
- if
wrap_modeis 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::place 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.place(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>,
fallback_font: FontSelection,
) -> (Vec2, SizedAtomKind<'a>)
pub fn into_sized( self, ui: &Ui, available_size: Vec2, wrap_mode: Option<TextWrapMode>, fallback_font: FontSelection, ) -> (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.