pub struct Label<T> { /* private fields */ }
Expand description
A label that displays static or dynamic text.
This type manages an inner RawLabel
, updating its text based on the
current Data
and Env
as required.
If your Data
is already text, you may use a RawLabel
directly.
As a convenience, you can create a RawLabel
with the Label::raw
constructor method.
A label is the easiest way to display text in Druid. A label is instantiated
with some LabelText
type, such as an ArcStr
or a LocalizedString
,
and also has methods for setting the default font, font-size, text color,
and other attributes.
In addition to being a Widget
, Label
is also regularly used as a
component in other widgets that wish to display text; to facilitate this
it has a draw_at
method that allows the caller to easily draw the label’s
text at the desired position on screen.
Examples
Make a label to say something very important:
let font = FontDescriptor::new(FontFamily::SYSTEM_UI)
.with_weight(FontWeight::BOLD)
.with_size(48.0);
let important_label = Label::new("WATCH OUT!")
.with_font(font)
.with_text_color(Color::rgb(1.0, 0.2, 0.2));
Implementations§
§impl<T> Label<T>where
T: TextStorage,
impl<T> Label<T>where T: TextStorage,
§impl<T> Label<T>where
T: Data,
impl<T> Label<T>where T: Data,
pub fn new(text: impl Into<LabelText<T>>) -> Label<T>
pub fn new(text: impl Into<LabelText<T>>) -> Label<T>
Construct a new Label
widget.
use druid::LocalizedString;
use druid::widget::Label;
// Construct a new Label using static string.
let _: Label<u32> = Label::new("Hello world");
// Construct a new Label using localized string.
let text = LocalizedString::new("hello-counter").with_arg("count", |data: &u32, _env| (*data).into());
let _: Label<u32> = Label::new(text);
// Construct a new dynamic Label. Text will be updated when data changes.
let _: Label<u32> = Label::new(|data: &u32, _env: &_| format!("Hello world: {}", data));
pub fn dynamic(text: impl Fn(&T, &Env) -> String + 'static) -> Label<T>
pub fn dynamic(text: impl Fn(&T, &Env) -> String + 'static) -> Label<T>
Construct a new dynamic label.
The contents of this label are generated from the data using a closure.
This is provided as a convenience; a closure can also be passed to new
,
but due to limitations of the implementation of that method, the types in
the closure need to be annotated, which is not true for this method.
Examples
The following are equivalent.
use druid::Env;
use druid::widget::Label;
let label1: Label<u32> = Label::new(|data: &u32, _: &Env| format!("total is {}", data));
let label2: Label<u32> = Label::dynamic(|data, _| format!("total is {}", data));
pub fn set_text(&mut self, text: impl Into<LabelText<T>>)
pub fn set_text(&mut self, text: impl Into<LabelText<T>>)
Set the label’s text.
Note
If you change this property, at runtime, you must ensure that update
is called in order to correctly recompute the text. If you are unsure,
call request_update
explicitly.
pub fn with_text_color(self, color: impl Into<KeyOrValue<Color>>) -> Label<T>
pub fn with_text_color(self, color: impl Into<KeyOrValue<Color>>) -> Label<T>
Builder-style method for setting the text color.
The argument can be either a Color
or a Key<Color>
.
pub fn with_text_size(self, size: impl Into<KeyOrValue<f64>>) -> Label<T>
pub fn with_text_size(self, size: impl Into<KeyOrValue<f64>>) -> Label<T>
Builder-style method for setting the text size.
The argument can be either an f64
or a Key<f64>
.
pub fn with_font(self, font: impl Into<KeyOrValue<FontDescriptor>>) -> Label<T>
pub fn with_font(self, font: impl Into<KeyOrValue<FontDescriptor>>) -> Label<T>
Builder-style method for setting the font.
The argument can be a FontDescriptor
or a Key<FontDescriptor>
that refers to a font defined in the Env
.
pub fn with_line_break_mode(self, mode: LineBreaking) -> Label<T>
pub fn with_line_break_mode(self, mode: LineBreaking) -> Label<T>
Builder-style method to set the LineBreaking
behaviour.
pub fn with_text_alignment(self, alignment: TextAlignment) -> Label<T>
pub fn with_text_alignment(self, alignment: TextAlignment) -> Label<T>
Builder-style method to set the TextAlignment
.
pub fn draw_at(&self, ctx: &mut PaintCtx<'_, '_, '_>, origin: impl Into<Point>)
pub fn draw_at(&self, ctx: &mut PaintCtx<'_, '_, '_>, origin: impl Into<Point>)
Draw this label’s text at the provided Point
, without internal padding.
This is a convenience for widgets that want to use Label as a way of managing a dynamic or localized string, but want finer control over where the text is drawn.
Methods from Deref<Target = RawLabel<Arc<str>>>§
pub fn set_text_color(&mut self, color: impl Into<KeyOrValue<Color>>)
pub fn set_text_color(&mut self, color: impl Into<KeyOrValue<Color>>)
Set the text color.
The argument can be either a Color
or a Key<Color>
.
If you change this property, you are responsible for calling
request_layout
to ensure the label is updated.
pub fn set_text_size(&mut self, size: impl Into<KeyOrValue<f64>>)
pub fn set_text_size(&mut self, size: impl Into<KeyOrValue<f64>>)
Set the text size.
The argument can be either an f64
or a Key<f64>
.
If you change this property, you are responsible for calling
request_layout
to ensure the label is updated.
pub fn set_font(&mut self, font: impl Into<KeyOrValue<FontDescriptor>>)
pub fn set_font(&mut self, font: impl Into<KeyOrValue<FontDescriptor>>)
Set the font.
The argument can be a FontDescriptor
or a Key<FontDescriptor>
that refers to a font defined in the Env
.
If you change this property, you are responsible for calling
request_layout
to ensure the label is updated.
pub fn set_line_break_mode(&mut self, mode: LineBreaking)
pub fn set_line_break_mode(&mut self, mode: LineBreaking)
Set the LineBreaking
behaviour.
If you change this property, you are responsible for calling
request_layout
to ensure the label is updated.
pub fn set_text_alignment(&mut self, alignment: TextAlignment)
pub fn set_text_alignment(&mut self, alignment: TextAlignment)
Set the TextAlignment
for this layout.
pub fn draw_at(&self, ctx: &mut PaintCtx<'_, '_, '_>, origin: impl Into<Point>)
pub fn draw_at(&self, ctx: &mut PaintCtx<'_, '_, '_>, origin: impl Into<Point>)
Draw this label’s text at the provided Point
, without internal padding.
This is a convenience for widgets that want to use Label as a way of managing a dynamic or localized string, but want finer control over where the text is drawn.
pub fn baseline_offset(&self) -> f64
pub fn baseline_offset(&self) -> f64
Return the offset of the first baseline relative to the bottom of the widget.
Trait Implementations§
§impl<T> Widget<T> for Label<T>where
T: Data,
impl<T> Widget<T> for Label<T>where T: Data,
§fn event(
&mut self,
_ctx: &mut EventCtx<'_, '_>,
_event: &Event,
_data: &mut T,
_env: &Env
)
fn event( &mut self, _ctx: &mut EventCtx<'_, '_>, _event: &Event, _data: &mut T, _env: &Env )
§fn lifecycle(
&mut self,
ctx: &mut LifeCycleCtx<'_, '_>,
event: &LifeCycle,
data: &T,
env: &Env
)
fn lifecycle( &mut self, ctx: &mut LifeCycleCtx<'_, '_>, event: &LifeCycle, data: &T, env: &Env )
§fn layout(
&mut self,
ctx: &mut LayoutCtx<'_, '_>,
bc: &BoxConstraints,
_data: &T,
env: &Env
) -> Size
fn layout( &mut self, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, _data: &T, env: &Env ) -> Size
§fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, _data: &T, env: &Env)
fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, _data: &T, env: &Env)
§fn compute_max_intrinsic(
&mut self,
axis: Axis,
ctx: &mut LayoutCtx<'_, '_>,
bc: &BoxConstraints,
_data: &T,
env: &Env
) -> f64
fn compute_max_intrinsic( &mut self, axis: Axis, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, _data: &T, env: &Env ) -> f64
Auto Trait Implementations§
impl<T> !RefUnwindSafe for Label<T>
impl<T> !Send for Label<T>
impl<T> !Sync for Label<T>
impl<T> Unpin for Label<T>
impl<T> !UnwindSafe for Label<T>
Blanket Implementations§
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> RoundFrom<T> for T
impl<T> RoundFrom<T> for T
§fn round_from(x: T) -> T
fn round_from(x: T) -> T
§impl<T, U> RoundInto<U> for Twhere
U: RoundFrom<T>,
impl<T, U> RoundInto<U> for Twhere U: RoundFrom<T>,
§fn round_into(self) -> U
fn round_into(self) -> U
§impl<T, W> TestWidgetExt<T> for Wwhere
T: Data,
W: Widget<T> + 'static,
impl<T, W> TestWidgetExt<T> for Wwhere T: Data, W: Widget<T> + 'static,
§impl<T, W> WidgetExt<T> for Wwhere
T: Data,
W: Widget<T> + 'static,
impl<T, W> WidgetExt<T> for Wwhere T: Data, W: Widget<T> + 'static,
§fn align_left(self) -> Align<T>
fn align_left(self) -> Align<T>
Align
widget, configured to align left.§fn align_right(self) -> Align<T>
fn align_right(self) -> Align<T>
Align
widget, configured to align right.§fn align_vertical(self, align: UnitPoint) -> Align<T>
fn align_vertical(self, align: UnitPoint) -> Align<T>
Align
widget, configured to align vertically.§fn align_horizontal(self, align: UnitPoint) -> Align<T>
fn align_horizontal(self, align: UnitPoint) -> Align<T>
Align
widget, configured to align horizontally.§fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
SizedBox
with an explicit width.§fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
SizedBox
with an explicit height.§fn fix_size(
self,
width: impl Into<KeyOrValue<f64>>,
height: impl Into<KeyOrValue<f64>>
) -> SizedBox<T>
fn fix_size( self, width: impl Into<KeyOrValue<f64>>, height: impl Into<KeyOrValue<f64>> ) -> SizedBox<T>
SizedBox
with an explicit width and height§fn expand_width(self) -> SizedBox<T>
fn expand_width(self) -> SizedBox<T>
§fn expand_height(self) -> SizedBox<T>
fn expand_height(self) -> SizedBox<T>
§fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
§fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
§fn border(
self,
color: impl Into<KeyOrValue<Color>>,
width: impl Into<KeyOrValue<f64>>
) -> Container<T>
fn border( self, color: impl Into<KeyOrValue<Color>>, width: impl Into<KeyOrValue<f64>> ) -> Container<T>
§fn controller<C>(self, controller: C) -> ControllerHost<Self, C>where
C: Controller<T, Self>,
fn controller<C>(self, controller: C) -> ControllerHost<Self, C>where C: Controller<T, Self>,
Controller
.§fn on_added(
self,
f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static
) -> ControllerHost<Self, Added<T, Self>>
fn on_added( self, f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static ) -> ControllerHost<Self, Added<T, Self>>
§fn on_click(
self,
f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static
) -> ControllerHost<Self, Click<T>>
fn on_click( self, f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static ) -> ControllerHost<Self, Click<T>>
§fn debug_paint_layout(self) -> EnvScope<T, Self>
fn debug_paint_layout(self) -> EnvScope<T, Self>
layout
Rect
s of this widget and its children.§fn debug_widget_id(self) -> EnvScope<T, Self>
fn debug_widget_id(self) -> EnvScope<T, Self>
WidgetId
s for this widget and its children, when hot. Read more§fn debug_invalidation(self) -> DebugInvalidation<T, Self>
fn debug_invalidation(self) -> DebugInvalidation<T, Self>
§fn debug_widget(self) -> EnvScope<T, Self>
fn debug_widget(self) -> EnvScope<T, Self>
DEBUG_WIDGET
env variable for this widget (and its descendants). Read more§fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>
fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>
§fn disabled_if(
self,
disabled_if: impl Fn(&T, &Env) -> bool + 'static
) -> DisabledIf<T, Self>
fn disabled_if( self, disabled_if: impl Fn(&T, &Env) -> bool + 'static ) -> DisabledIf<T, Self>
DisabledIf
widget. Read more