pub struct LayoutJob {
pub text: String,
pub sections: Vec<LayoutSection>,
pub wrap: TextWrapping,
pub first_row_min_height: f32,
pub break_on_newline: bool,
pub halign: Align,
pub justify: bool,
pub round_output_to_gui: bool,
}Expand description
Describes the task of laying out text.
This supports mixing different fonts, color and formats (underline etc).
Pass this to crate::FontsView::layout_job or crate::text::layout.
§Example:
use epaint::{Color32, text::{LayoutJob, TextFormat}, FontFamily, FontId};
let mut job = LayoutJob::default();
job.append(
"Hello ",
0.0,
TextFormat {
font_id: FontId::new(14.0, FontFamily::Proportional),
color: Color32::WHITE,
..Default::default()
},
);
job.append(
"World!",
0.0,
TextFormat {
font_id: FontId::new(14.0, FontFamily::Monospace),
color: Color32::BLACK,
..Default::default()
},
);As you can see, constructing a LayoutJob is currently a lot of work.
It would be nice to have a helper macro for it!
Fields§
§text: StringThe complete text of this job, referenced by LayoutSection.
sections: Vec<LayoutSection>The different section, which can have different fonts, colors, etc.
wrap: TextWrappingControls the text wrapping and elision.
first_row_min_height: f32The first row must be at least this high.
This is in case we lay out text that is the continuation
of some earlier text (sharing the same row),
in which case this will be the height of the earlier text.
In other cases, set this to 0.0.
break_on_newline: boolIf true, all \n characters will result in a new paragraph,
starting on a new row.
If false, all \n characters will be ignored
and show up as the replacement character.
Default: true.
halign: AlignHow to horizontally align the text (Align::LEFT, Align::Center, Align::RIGHT).
justify: boolJustify text so that word-wrapped rows fill the whole TextWrapping::max_width.
round_output_to_gui: boolRound output sizes using emath::GuiRounding, to avoid rounding errors in layout code.
Implementations§
Source§impl LayoutJob
impl LayoutJob
Sourcepub fn simple(
text: String,
font_id: FontId,
color: Color32,
wrap_width: f32,
) -> LayoutJob
pub fn simple( text: String, font_id: FontId, color: Color32, wrap_width: f32, ) -> LayoutJob
Break on \n and at the given wrap width.
Sourcepub fn simple_format(text: String, format: TextFormat) -> LayoutJob
pub fn simple_format(text: String, format: TextFormat) -> LayoutJob
Break on \n
Sourcepub fn simple_singleline(
text: String,
font_id: FontId,
color: Color32,
) -> LayoutJob
pub fn simple_singleline( text: String, font_id: FontId, color: Color32, ) -> LayoutJob
Does not break on \n, but shows the replacement character instead.
pub fn single_section(text: String, format: TextFormat) -> LayoutJob
pub fn is_empty(&self) -> bool
Sourcepub fn append(&mut self, text: &str, leading_space: f32, format: TextFormat)
pub fn append(&mut self, text: &str, leading_space: f32, format: TextFormat)
Helper for adding a new section when building a LayoutJob.
Sourcepub fn font_height(&self, fonts: &mut FontsView<'_>) -> f32
pub fn font_height(&self, fonts: &mut FontsView<'_>) -> f32
The height of the tallest font used in the job.
Returns a value rounded to emath::GUI_ROUNDING.
Sourcepub fn effective_wrap_width(&self) -> f32
pub fn effective_wrap_width(&self) -> f32
The wrap with, with a small margin in some cases.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for LayoutJob
impl<'de> Deserialize<'de> for LayoutJob
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<LayoutJob, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<LayoutJob, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl From<LayoutJob> for WidgetText
impl From<LayoutJob> for WidgetText
Source§impl Serialize for LayoutJob
impl Serialize for LayoutJob
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for LayoutJob
Auto Trait Implementations§
impl Freeze for LayoutJob
impl RefUnwindSafe for LayoutJob
impl Send for LayoutJob
impl Sync for LayoutJob
impl Unpin for LayoutJob
impl UnwindSafe for LayoutJob
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