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::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>,
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.
Trait Implementations§
Source§impl<'a> From<ImageSource<'a>> for AtomKind<'a>
impl<'a> From<ImageSource<'a>> for AtomKind<'a>
Source§fn from(value: ImageSource<'a>) -> Self
fn from(value: ImageSource<'a>) -> Self
Auto Trait Implementations§
impl<'a> Freeze for AtomKind<'a>
impl<'a> RefUnwindSafe for AtomKind<'a>
impl<'a> Send for AtomKind<'a>
impl<'a> Sync for AtomKind<'a>
impl<'a> Unpin for AtomKind<'a>
impl<'a> UnwindSafe for AtomKind<'a>
Blanket Implementations§
Source§impl<'a, T> AtomExt<'a> for T
impl<'a, T> AtomExt<'a> for T
Source§fn atom_shrink(self, shrink: bool) -> Atom<'a>
fn atom_shrink(self, shrink: bool) -> Atom<'a>
Source§fn atom_max_size(self, max_size: Vec2) -> Atom<'a>
fn atom_max_size(self, max_size: Vec2) -> Atom<'a>
Source§fn atom_max_width(self, max_width: f32) -> Atom<'a>
fn atom_max_width(self, max_width: f32) -> Atom<'a>
Source§fn atom_max_height(self, max_height: f32) -> Atom<'a>
fn atom_max_height(self, max_height: f32) -> Atom<'a>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 more