pub struct DrawCx<'a> { /* private fields */ }
Expand description
Draw interface
This interface is provided to widgets in crate::Layout::draw
.
Lower-level interfaces may be accessed through Self::draw_device
.
DrawCx
is not a Copy
or Clone
type; instead it may be “reborrowed”
via Self::re_id
or Self::re_clone
.
draw.check_box(&*self, self.state);
— note&*self
to convert from to&W
from&mut W
, since the latter would cause borrow conflicts
Implementations§
source§impl<'a> DrawCx<'a>
impl<'a> DrawCx<'a>
sourcepub fn re_id<'b>(&'b mut self, id: Id) -> DrawCx<'b>where
'a: 'b,
pub fn re_id<'b>(&'b mut self, id: Id) -> DrawCx<'b>where
'a: 'b,
Reborrow with a new lifetime and new id
Rust allows references like &T
or &mut T
to be “reborrowed” through
coercion: essentially, the pointer is copied under a new, shorter, lifetime.
Until rfcs#1403 lands, reborrows on user types require a method call.
sourcepub fn re_clone<'b>(&'b mut self) -> DrawCx<'b>where
'a: 'b,
pub fn re_clone<'b>(&'b mut self) -> DrawCx<'b>where
'a: 'b,
Reborrow with a new lifetime and same id
Rust allows references like &T
or &mut T
to be “reborrowed” through
coercion: essentially, the pointer is copied under a new, shorter, lifetime.
Until rfcs#1403 lands, reborrows on user types require a method call.
sourcepub fn ev_state(&mut self) -> &mut EventState
pub fn ev_state(&mut self) -> &mut EventState
Access event-management state
Access a DrawShared
sourcepub fn draw_device(&mut self) -> &mut dyn Draw
pub fn draw_device(&mut self) -> &mut dyn Draw
Access the low-level draw device
Note: this drawing API is modular, with limited functionality in the
base trait Draw
. To access further functionality, it is necessary
to downcast with crate::draw::DrawIface::downcast_from
.
sourcepub fn draw_iface<DS>(&mut self) -> Option<DrawIface<'_, DS>>where
DS: DrawSharedImpl,
pub fn draw_iface<DS>(&mut self) -> Option<DrawIface<'_, DS>>where
DS: DrawSharedImpl,
Access the low-level draw device (implementation type)
The implementing type must be specified. See DrawIface::downcast_from
.
sourcepub fn with_pass<F>(&mut self, f: F)
pub fn with_pass<F>(&mut self, f: F)
Draw to a new pass
Adds a new draw pass for purposes of enforcing draw order. Content of the new pass will be drawn after content in the parent pass.
sourcepub fn with_clip_region<F>(&mut self, rect: Rect, offset: Offset, f: F)
pub fn with_clip_region<F>(&mut self, rect: Rect, offset: Offset, f: F)
Draw to a new pass with clipping and offset (e.g. for scrolling)
Adds a new draw pass of type PassType::Clip
, with draw operations
clipped to rect
and translated by `offset.
sourcepub fn with_overlay<F>(&mut self, rect: Rect, offset: Offset, f: F)
pub fn with_overlay<F>(&mut self, rect: Rect, offset: Offset, f: F)
Draw to a new pass as an overlay (e.g. for pop-up menus)
Adds a new draw pass of type PassType::Overlay
, with draw operations
clipped to rect
.
The theme is permitted to enlarge the rect
for the purpose of drawing
a frame or shadow around this overlay, thus the
Self::get_clip_rect
may be larger than expected.
sourcepub fn get_clip_rect(&mut self) -> Rect
pub fn get_clip_rect(&mut self) -> Rect
Target area for drawing
Drawing is restricted to this Rect
, which may be the whole window, a
clip region or an
overlay. This may be used to cull hidden
items from lists inside a scrollable view.
sourcepub fn frame(&mut self, rect: Rect, style: FrameStyle, bg: Background)
pub fn frame(&mut self, rect: Rect, style: FrameStyle, bg: Background)
Draw a frame inside the given rect
The frame dimensions are given by SizeCx::frame
.
sourcepub fn selection(&mut self, rect: Rect, style: SelectionStyle)
pub fn selection(&mut self, rect: Rect, style: SelectionStyle)
Draw a selection highlight / frame
Adjusts the background color and/or draws a line around the given rect.
In the latter case, a margin of size SizeCx::inner_margins
around
rect
is expected.
sourcepub fn text(
&mut self,
rect: Rect,
text: impl AsRef<TextDisplay>,
class: TextClass
)
pub fn text( &mut self, rect: Rect, text: impl AsRef<TextDisplay>, class: TextClass )
Draw text
Text is drawn from rect.pos
and clipped to rect
. If the text
scrolls, rect
should be the size of the whole text, not the window.
ConfigCx::text_set_size
should be called prior to this method to
select a font, font size and wrap options (based on the TextClass
).
sourcepub fn text_effects(&mut self, rect: Rect, text: &dyn TextApi, class: TextClass)
pub fn text_effects(&mut self, rect: Rect, text: &dyn TextApi, class: TextClass)
Draw text with effects
Text is drawn from rect.pos
and clipped to rect
. If the text
scrolls, rect
should be the size of the whole text, not the window.
Self::text
already supports font effects: bold,
emphasis, text size. In addition, this method supports underline and
strikethrough effects.
ConfigCx::text_set_size
should be called prior to this method to
select a font, font size and wrap options (based on the TextClass
).
sourcepub fn text_selected<R>(
&mut self,
rect: Rect,
text: impl AsRef<TextDisplay>,
range: R,
class: TextClass
)where
R: RangeBounds<usize>,
pub fn text_selected<R>(
&mut self,
rect: Rect,
text: impl AsRef<TextDisplay>,
range: R,
class: TextClass
)where
R: RangeBounds<usize>,
Draw some text using the standard font, with a subset selected
Other than visually highlighting the selection, this method behaves
identically to Self::text
. It is likely to be replaced in the
future by a higher-level API.
sourcepub fn text_cursor(
&mut self,
rect: Rect,
text: impl AsRef<TextDisplay>,
class: TextClass,
byte: usize
)
pub fn text_cursor( &mut self, rect: Rect, text: impl AsRef<TextDisplay>, class: TextClass, byte: usize )
Draw an edit marker at the given byte
index on this text
The text cursor is draw from rect.pos
and clipped to rect
. If the text
scrolls, rect
should be the size of the whole text, not the window.
ConfigCx::text_set_size
should be called prior to this method to
select a font, font size and wrap options (based on the TextClass
).
sourcepub fn check_box(
&mut self,
rect: Rect,
checked: bool,
last_change: Option<Instant>
)
pub fn check_box( &mut self, rect: Rect, checked: bool, last_change: Option<Instant> )
Draw UI element: check box (without label)
The check box is a small visual element, typically a distinctive square box with or without a “check” selection mark.
The theme may animate transitions. To achieve this, last_change
should be
the time of the last state change caused by the user, or none when the
last state change was programmatic.
sourcepub fn radio_box(
&mut self,
rect: Rect,
checked: bool,
last_change: Option<Instant>
)
pub fn radio_box( &mut self, rect: Rect, checked: bool, last_change: Option<Instant> )
Draw UI element: radio box (without label)
The radio box is a small visual element, typically a disinctive circular box with or without a “radio” selection mark.
The theme may animate transitions. To achieve this, last_change
should be
the time of the last state change caused by the user, or none when the
last state change was programmatic.
sourcepub fn scroll_bar<W>(&mut self, track_rect: Rect, grip: &W, dir: Direction)where
W: Layout,
pub fn scroll_bar<W>(&mut self, track_rect: Rect, grip: &W, dir: Direction)where
W: Layout,
Draw UI element: scroll bar
sourcepub fn slider<W>(&mut self, track_rect: Rect, grip: &W, dir: Direction)where
W: Layout,
pub fn slider<W>(&mut self, track_rect: Rect, grip: &W, dir: Direction)where
W: Layout,
Draw UI element: slider
sourcepub fn progress_bar(&mut self, rect: Rect, dir: Direction, value: f32)
pub fn progress_bar(&mut self, rect: Rect, dir: Direction, value: f32)
Draw UI element: progress bar
rect
: area of whole widgetdir
: direction of progress barstate
: highlighting informationvalue
: progress value, between 0.0 and 1.0
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for DrawCx<'a>
impl<'a> !Send for DrawCx<'a>
impl<'a> !Sync for DrawCx<'a>
impl<'a> Unpin for DrawCx<'a>
impl<'a> !UnwindSafe for DrawCx<'a>
Blanket Implementations§
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
§impl<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
impl<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
§fn try_cast_approx(self) -> Result<T, Error>
fn try_cast_approx(self) -> Result<T, Error>
§fn cast_approx(self) -> T
fn cast_approx(self) -> T
§impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
§fn cast_trunc(self) -> T
fn cast_trunc(self) -> T
§fn cast_nearest(self) -> T
fn cast_nearest(self) -> T
§fn cast_floor(self) -> T
fn cast_floor(self) -> T
§fn try_cast_trunc(self) -> Result<T, Error>
fn try_cast_trunc(self) -> Result<T, Error>
§fn try_cast_nearest(self) -> Result<T, Error>
fn try_cast_nearest(self) -> Result<T, Error>
§fn try_cast_floor(self) -> Result<T, Error>
fn try_cast_floor(self) -> Result<T, Error>
§fn try_cast_ceil(self) -> Result<T, Error>
fn try_cast_ceil(self) -> Result<T, Error>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.