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&*selfto convert from to&Wfrom&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: WidgetId) -> DrawCx<'b>where
'a: 'b,
pub fn re_id<'b>(&'b mut self, id: WidgetId) -> 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: DrawSharedImpl>(&mut self) -> Option<DrawIface<'_, DS>>
pub fn draw_iface<DS: DrawSharedImpl>(&mut self) -> Option<DrawIface<'_, DS>>
Access the low-level draw device (implementation type)
The implementing type must be specified. See DrawIface::downcast_from.
sourcepub fn with_pass<F: FnOnce(DrawCx<'_>)>(&mut self, f: F)
pub fn with_pass<F: FnOnce(DrawCx<'_>)>(&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: FnOnce(DrawCx<'_>)>(
&mut self,
rect: Rect,
offset: Offset,
f: F
)
pub fn with_clip_region<F: FnOnce(DrawCx<'_>)>( &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: FnOnce(DrawCx<'_>)>(
&mut self,
rect: Rect,
offset: Offset,
f: F
)
pub fn with_overlay<F: FnOnce(DrawCx<'_>)>( &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: RangeBounds<usize>>(
&mut self,
rect: Rect,
text: impl AsRef<TextDisplay>,
range: R,
class: TextClass
)
pub fn text_selected<R: RangeBounds<usize>>( &mut self, rect: Rect, text: impl AsRef<TextDisplay>, range: R, class: TextClass )
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: Layout>(
&mut self,
track_rect: Rect,
grip: &W,
dir: Direction
)
pub fn scroll_bar<W: Layout>( &mut self, track_rect: Rect, grip: &W, dir: Direction )
Draw UI element: scroll bar
sourcepub fn slider<W: Layout>(&mut self, track_rect: Rect, grip: &W, dir: Direction)
pub fn slider<W: Layout>(&mut self, track_rect: Rect, grip: &W, dir: Direction)
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
Trait Implementations§
source§impl<'a> BitOrAssign<Action> for DrawCx<'a>
impl<'a> BitOrAssign<Action> for DrawCx<'a>
source§fn bitor_assign(&mut self, action: Action)
fn bitor_assign(&mut self, action: Action)
|= operation. Read moreAuto 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
source§impl<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
impl<S, T> CastApprox<T> for Swhere T: ConvApprox<S>,
source§fn try_cast_approx(self) -> Result<T, Error>
fn try_cast_approx(self) -> Result<T, Error>
source§fn cast_approx(self) -> T
fn cast_approx(self) -> T
source§impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
impl<S, T> CastFloat<T> for Swhere T: ConvFloat<S>,
source§fn cast_trunc(self) -> T
fn cast_trunc(self) -> T
source§fn cast_nearest(self) -> T
fn cast_nearest(self) -> T
source§fn cast_floor(self) -> T
fn cast_floor(self) -> T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
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, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
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.