RawLabel

Struct RawLabel 

Source
pub struct RawLabel<T> { /* private fields */ }
Expand description

A widget that displays text data.

This requires the Data to implement TextStorage; to handle static, dynamic, or localized text, use Label.

Implementations§

Source§

impl<T: TextStorage> RawLabel<T>

Source

pub fn new() -> Self

Create a new RawLabel.

Examples found in repository?
examples/markdown_preview.rs (line 117)
115fn build_root_widget() -> impl Widget<AppState> {
116    let label = Scroll::new(
117        RawLabel::new()
118            .with_text_color(Color::BLACK)
119            .with_line_break_mode(LineBreaking::WordWrap)
120            .lens(AppState::rendered)
121            .expand_width()
122            .padding((SPACER_SIZE * 4.0, SPACER_SIZE)),
123    )
124    .vertical()
125    .background(Color::grey8(222))
126    .expand();
127
128    let textbox = TextBox::multiline()
129        .lens(AppState::raw)
130        .controller(RichTextRebuilder)
131        .expand()
132        .padding(5.0);
133
134    Split::columns(label, textbox)
135}
More examples
Hide additional examples
examples/text.rs (line 113)
111fn build_root_widget() -> impl Widget<AppState> {
112    let label = Scroll::new(
113        RawLabel::new()
114            .with_text_color(Color::BLACK)
115            .controller(LabelController)
116            .background(Color::WHITE)
117            .expand_width()
118            .padding((SPACER_SIZE * 4.0, SPACER_SIZE))
119            .background(Color::grey8(222)),
120    )
121    .vertical();
122
123    let line_break_chooser = Flex::column()
124        .with_child(Label::new("Line break mode"))
125        .with_spacer(SPACER_SIZE)
126        .with_child(RadioGroup::column(vec![
127            ("Clip", LineBreaking::Clip),
128            ("Wrap", LineBreaking::WordWrap),
129            ("Overflow", LineBreaking::Overflow),
130        ]))
131        .lens(AppState::line_break_mode);
132
133    let alignment_picker = Flex::column()
134        .with_child(Label::new("Justification"))
135        .with_spacer(SPACER_SIZE)
136        .with_child(RadioGroup::column(vec![
137            ("Start", TextAlignment::Start),
138            ("End", TextAlignment::End),
139            ("Center", TextAlignment::Center),
140            ("Justified", TextAlignment::Justified),
141        ]))
142        .lens(AppState::alignment);
143
144    let controls = Flex::row()
145        .cross_axis_alignment(druid::widget::CrossAxisAlignment::Start)
146        .with_child(alignment_picker)
147        .with_spacer(SPACER_SIZE)
148        .with_child(line_break_chooser)
149        .padding(SPACER_SIZE);
150
151    Flex::column()
152        .cross_axis_alignment(druid::widget::CrossAxisAlignment::Start)
153        .with_child(controls)
154        .with_flex_child(label, 1.0)
155}
Source

pub fn with_text_color(self, color: impl Into<KeyOrValue<Color>>) -> Self

Builder-style method for setting the text color.

The argument can be either a Color or a Key<Color>.

Examples found in repository?
examples/markdown_preview.rs (line 118)
115fn build_root_widget() -> impl Widget<AppState> {
116    let label = Scroll::new(
117        RawLabel::new()
118            .with_text_color(Color::BLACK)
119            .with_line_break_mode(LineBreaking::WordWrap)
120            .lens(AppState::rendered)
121            .expand_width()
122            .padding((SPACER_SIZE * 4.0, SPACER_SIZE)),
123    )
124    .vertical()
125    .background(Color::grey8(222))
126    .expand();
127
128    let textbox = TextBox::multiline()
129        .lens(AppState::raw)
130        .controller(RichTextRebuilder)
131        .expand()
132        .padding(5.0);
133
134    Split::columns(label, textbox)
135}
More examples
Hide additional examples
examples/text.rs (line 114)
111fn build_root_widget() -> impl Widget<AppState> {
112    let label = Scroll::new(
113        RawLabel::new()
114            .with_text_color(Color::BLACK)
115            .controller(LabelController)
116            .background(Color::WHITE)
117            .expand_width()
118            .padding((SPACER_SIZE * 4.0, SPACER_SIZE))
119            .background(Color::grey8(222)),
120    )
121    .vertical();
122
123    let line_break_chooser = Flex::column()
124        .with_child(Label::new("Line break mode"))
125        .with_spacer(SPACER_SIZE)
126        .with_child(RadioGroup::column(vec![
127            ("Clip", LineBreaking::Clip),
128            ("Wrap", LineBreaking::WordWrap),
129            ("Overflow", LineBreaking::Overflow),
130        ]))
131        .lens(AppState::line_break_mode);
132
133    let alignment_picker = Flex::column()
134        .with_child(Label::new("Justification"))
135        .with_spacer(SPACER_SIZE)
136        .with_child(RadioGroup::column(vec![
137            ("Start", TextAlignment::Start),
138            ("End", TextAlignment::End),
139            ("Center", TextAlignment::Center),
140            ("Justified", TextAlignment::Justified),
141        ]))
142        .lens(AppState::alignment);
143
144    let controls = Flex::row()
145        .cross_axis_alignment(druid::widget::CrossAxisAlignment::Start)
146        .with_child(alignment_picker)
147        .with_spacer(SPACER_SIZE)
148        .with_child(line_break_chooser)
149        .padding(SPACER_SIZE);
150
151    Flex::column()
152        .cross_axis_alignment(druid::widget::CrossAxisAlignment::Start)
153        .with_child(controls)
154        .with_flex_child(label, 1.0)
155}
Source

pub fn with_text_size(self, size: impl Into<KeyOrValue<f64>>) -> Self

Builder-style method for setting the text size.

The argument can be either an f64 or a Key<f64>.

Source

pub fn with_font(self, font: impl Into<KeyOrValue<FontDescriptor>>) -> Self

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.

Source

pub fn with_line_break_mode(self, mode: LineBreaking) -> Self

Builder-style method to set the LineBreaking behaviour.

Examples found in repository?
examples/markdown_preview.rs (line 119)
115fn build_root_widget() -> impl Widget<AppState> {
116    let label = Scroll::new(
117        RawLabel::new()
118            .with_text_color(Color::BLACK)
119            .with_line_break_mode(LineBreaking::WordWrap)
120            .lens(AppState::rendered)
121            .expand_width()
122            .padding((SPACER_SIZE * 4.0, SPACER_SIZE)),
123    )
124    .vertical()
125    .background(Color::grey8(222))
126    .expand();
127
128    let textbox = TextBox::multiline()
129        .lens(AppState::raw)
130        .controller(RichTextRebuilder)
131        .expand()
132        .padding(5.0);
133
134    Split::columns(label, textbox)
135}
Source

pub fn with_text_alignment(self, alignment: TextAlignment) -> Self

Builder-style method to set the TextAlignment.

Source

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.

Source

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.

Source

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.

Source

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.

Examples found in repository?
examples/text.rs (line 72)
63    fn update(
64        &mut self,
65        child: &mut RawLabel<AppState>,
66        ctx: &mut UpdateCtx,
67        old_data: &AppState,
68        data: &AppState,
69        env: &Env,
70    ) {
71        if old_data.line_break_mode != data.line_break_mode {
72            child.set_line_break_mode(data.line_break_mode);
73            ctx.request_layout();
74        }
75        if old_data.alignment != data.alignment {
76            child.set_text_alignment(data.alignment);
77            ctx.request_layout();
78        }
79        child.update(ctx, old_data, data, env);
80    }
Source

pub fn set_text_alignment(&mut self, alignment: TextAlignment)

Set the TextAlignment for this layout.

Examples found in repository?
examples/text.rs (line 76)
63    fn update(
64        &mut self,
65        child: &mut RawLabel<AppState>,
66        ctx: &mut UpdateCtx,
67        old_data: &AppState,
68        data: &AppState,
69        env: &Env,
70    ) {
71        if old_data.line_break_mode != data.line_break_mode {
72            child.set_line_break_mode(data.line_break_mode);
73            ctx.request_layout();
74        }
75        if old_data.alignment != data.alignment {
76            child.set_text_alignment(data.alignment);
77            ctx.request_layout();
78        }
79        child.update(ctx, old_data, data, env);
80    }
Source

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.

Source

pub fn baseline_offset(&self) -> f64

Return the offset of the first baseline relative to the bottom of the widget.

Trait Implementations§

Source§

impl<T: TextStorage> Default for RawLabel<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<T: TextStorage> Widget<T> for RawLabel<T>

Source§

fn event( &mut self, ctx: &mut EventCtx<'_, '_>, event: &Event, _data: &mut T, _env: &Env, )

Handle an event. Read more
Source§

fn lifecycle( &mut self, ctx: &mut LifeCycleCtx<'_, '_>, event: &LifeCycle, data: &T, _env: &Env, )

Handle a life cycle notification. Read more
Source§

fn update( &mut self, ctx: &mut UpdateCtx<'_, '_>, old_data: &T, data: &T, _env: &Env, )

Update the widget’s appearance in response to a change in the app’s Data or Env. Read more
Source§

fn layout( &mut self, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, _data: &T, env: &Env, ) -> Size

Compute layout. Read more
Source§

fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, _data: &T, _env: &Env)

Paint the widget appearance. Read more
Source§

fn compute_max_intrinsic( &mut self, axis: Axis, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, data: &T, env: &Env, ) -> f64

Computes max intrinsic/preferred dimension of a widget on the provided axis. Read more

Auto Trait Implementations§

§

impl<T> !Freeze for RawLabel<T>

§

impl<T> !RefUnwindSafe for RawLabel<T>

§

impl<T> !Send for RawLabel<T>

§

impl<T> !Sync for RawLabel<T>

§

impl<T> Unpin for RawLabel<T>
where T: Unpin,

§

impl<T> !UnwindSafe for RawLabel<T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> RoundFrom<T> for T

Source§

fn round_from(x: T) -> T

Performs the conversion.
Source§

impl<T, U> RoundInto<U> for T
where U: RoundFrom<T>,

Source§

fn round_into(self) -> U

Performs the conversion.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, W> TestWidgetExt<T> for W
where T: Data, W: Widget<T> + 'static,

Source§

fn record(self, recording: &Recording) -> Recorder<Self>

Available on non-WebAssembly only.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, W> WidgetExt<T> for W
where T: Data, W: Widget<T> + 'static,

Source§

fn padding(self, insets: impl Into<KeyOrValue<Insets>>) -> Padding<T, Self>

Wrap this widget in a Padding widget with the given Insets. Read more
Source§

fn center(self) -> Align<T>

Wrap this widget in an Align widget, configured to center it.
Source§

fn align_left(self) -> Align<T>

Wrap this widget in an Align widget, configured to align left.
Source§

fn align_right(self) -> Align<T>

Wrap this widget in an Align widget, configured to align right.
Source§

fn align_vertical(self, align: UnitPoint) -> Align<T>

Wrap this widget in an Align widget, configured to align vertically.
Source§

fn align_horizontal(self, align: UnitPoint) -> Align<T>

Wrap this widget in an Align widget, configured to align horizontally.
Source§

fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>

Wrap this widget in a SizedBox with an explicit width.
Source§

fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>

Wrap this widget in a SizedBox with an explicit height.
Source§

fn fix_size( self, width: impl Into<KeyOrValue<f64>>, height: impl Into<KeyOrValue<f64>>, ) -> SizedBox<T>

Wrap this widget in an SizedBox with an explicit width and height
Source§

fn expand(self) -> SizedBox<T>

Wrap this widget in a SizedBox with an infinite width and height. Read more
Source§

fn expand_width(self) -> SizedBox<T>

Wrap this widget in a SizedBox with an infinite width. Read more
Source§

fn expand_height(self) -> SizedBox<T>

Wrap this widget in a SizedBox with an infinite width. Read more
Source§

fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>

Wrap this widget in a Container with the provided background brush. Read more
Source§

fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>

Wrap this widget in a Container with the provided foreground brush. Read more
Source§

fn border( self, color: impl Into<KeyOrValue<Color>>, width: impl Into<KeyOrValue<f64>>, ) -> Container<T>

Wrap this widget in a Container with the given border. Read more
Source§

fn env_scope(self, f: impl Fn(&mut Env, &T) + 'static) -> EnvScope<T, Self>

Wrap this widget in a EnvScope widget, modifying the parent Env with the provided closure.
Source§

fn controller<C: Controller<T, Self>>( self, controller: C, ) -> ControllerHost<Self, C>

Wrap this widget with the provided Controller.
Source§

fn on_added( self, f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static, ) -> ControllerHost<Self, Added<T, Self>>

Provide a closure that will be called when this widget is added to the widget tree. Read more
Source§

fn on_click( self, f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static, ) -> ControllerHost<Self, Click<T>>

Control the events of this widget with a Click widget. The closure provided will be called when the widget is clicked with the left mouse button. Read more
Source§

fn debug_paint_layout(self) -> EnvScope<T, Self>

Draw the layout Rects of this widget and its children.
Source§

fn debug_widget_id(self) -> EnvScope<T, Self>

Display the WidgetIds for this widget and its children, when hot. Read more
Source§

fn debug_invalidation(self) -> DebugInvalidation<T, Self>

Draw a color-changing rectangle over this widget, allowing you to see the invalidation regions.
Source§

fn debug_widget(self) -> EnvScope<T, Self>

Set the DEBUG_WIDGET env variable for this widget (and its descendants). Read more
Source§

fn lens<S: Data, L: Lens<S, T>>(self, lens: L) -> LensWrap<S, T, L, Self>

Wrap this widget in a LensWrap widget for the provided Lens.
Source§

fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>

Assign the widget a specific WidgetId. Read more
Source§

fn boxed(self) -> Box<dyn Widget<T>>

Wrap this widget in a Box.
Source§

fn scroll(self) -> Scroll<T, Self>

Wrap this widget in a Scroll widget.
Source§

fn disabled_if( self, disabled_if: impl Fn(&T, &Env) -> bool + 'static, ) -> DisabledIf<T, Self>

Wrap this widget in a DisabledIf widget. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more