DrawCx

Struct DrawCx 

Source
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.

  • 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>

Source

pub fn re<'b>(&'b mut self) -> DrawCx<'b>
where 'a: 'b,

Reborrow with a new lifetime

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.

Source

pub fn set_id(&mut self, id: Id)

Set the identity of the current widget

This struct tracks the Id of the calling widget to allow evaluation of widget state (e.g. is disabled, is under the mouse, has key focus). Usually you don’t need to worry about this since the #[widget] macro injects a call to this method at the start of Layout::draw.

Source

pub fn ev_state(&mut self) -> &mut EventState

Access event-management state

Source

pub fn size_cx(&mut self) -> SizeCx<'_>

Access a SizeCx

Source

pub fn config_cx<F: FnOnce(&mut ConfigCx<'_>) -> T, T>(&mut self, f: F) -> T

Access a ConfigCx

Source

pub fn draw_shared(&mut self) -> &mut dyn DrawShared

Access a DrawShared

Source

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.

Source

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.

Source

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.

Warning: the number of passes used can have a substantial performance impact, potentially more on GPU communication than CPU usage.

Source

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.

Warning: the number of passes used can have a substantial performance impact, potentially more on GPU communication than CPU usage.

Source

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.

Warning: the number of passes used can have a substantial performance impact, potentially more on GPU communication than CPU usage.

Source

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.

Source

pub fn access_key(&mut self, id: &Id, key: &Key) -> bool

Register widget id as handler of an access key

An access key (also known as mnemonic) is a shortcut key able to directly open menus, activate buttons, etc. Usually this requires that the Alt is held, though alt-bypass mode is available.

The widget id is bound to the given key, if available. When the access key is pressed (assuming that this binding succeeds), widget id will receive navigation focus (if supported; otherwise an ancestor may receive focus) and is sent Command::Activate (likewise, an ancestor may handle this if widget id does not).

If multiple widgets attempt to register themselves as handlers of the same key, then only the first succeeds.

Returns true when the key should be underlined.

Source

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.

Source

pub fn separator(&mut self, rect: Rect)

Draw a separator in the given rect

Source

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.

Source

pub fn text<T: FormattableText>(&mut self, rect: Rect, text: &Text<T>)

Draw text with effects

Text is drawn from rect.pos and clipped to rect.

This method supports a number of text effects: bold, emphasis, text size, underline and strikethrough.

ConfigCx::text_configure should be called prior to this method to select a font, font size and wrap options (based on the TextClass).

Source

pub fn text_pos<T: FormattableText>( &mut self, pos: Coord, rect: Rect, text: &Text<T>, )

Draw text with effects and an offset

Text is drawn from pos and clipped to rect.

This method supports a number of text effects: bold, emphasis, text size, underline and strikethrough.

ConfigCx::text_configure should be called prior to this method to select a font, font size and wrap options (based on the TextClass).

Source

pub fn text_with_effects<T: FormattableText>( &mut self, pos: Coord, rect: Rect, text: &Text<T>, effects: &[Effect], )

Draw text with a given effect list

Text is drawn from pos and clipped to rect.

This method supports a number of text effects: bold, emphasis, text size, underline and strikethrough.

This method is similar to Self::text_pos except that an effect list is passed explicitly instead of inferred from text.

Source

pub fn text_selected<T: FormattableText>( &mut self, pos: Coord, rect: Rect, text: &Text<T>, range: Range<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.

Source

pub fn text_cursor<T: FormattableText>( &mut self, pos: Coord, rect: Rect, text: &Text<T>, 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.

ConfigCx::text_configure should be called prior to this method to select a font, font size and wrap options (based on the TextClass).

Source

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.

Source

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.

Source

pub fn mark(&mut self, rect: Rect, style: MarkStyle)

Draw UI element: mark

Source

pub fn scroll_bar<W: Tile>( &mut self, track_rect: Rect, grip: &W, dir: Direction, )

Draw UI element: scroll bar

Source

pub fn slider<W: Tile>(&mut self, track_rect: Rect, grip: &W, dir: Direction)

Draw UI element: slider

Source

pub fn progress_bar(&mut self, rect: Rect, dir: Direction, value: f32)

Draw UI element: progress bar

  • rect: area of whole widget
  • dir: direction of progress bar
  • state: highlighting information
  • value: progress value, between 0.0 and 1.0
Source

pub fn image(&mut self, rect: Rect, id: ImageId)

Draw an image

Trait Implementations§

Source§

impl<'a> Debug for DrawCx<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for DrawCx<'a>

§

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> 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<S, T> Cast<T> for S
where T: Conv<S>,

Source§

fn cast(self) -> T

Cast from Self to T Read more
Source§

fn try_cast(self) -> Result<T, Error>

Try converting from Self to T Read more
Source§

impl<S, T> CastApprox<T> for S
where T: ConvApprox<S>,

Source§

fn try_cast_approx(self) -> Result<T, Error>

Try approximate conversion from Self to T Read more
Source§

fn cast_approx(self) -> T

Cast approximately from Self to T Read more
Source§

impl<S, T> CastFloat<T> for S
where T: ConvFloat<S>,

Source§

fn cast_trunc(self) -> T

Cast to integer, truncating Read more
Source§

fn cast_nearest(self) -> T

Cast to the nearest integer Read more
Source§

fn cast_floor(self) -> T

Cast the floor to an integer Read more
Source§

fn cast_ceil(self) -> T

Cast the ceiling to an integer Read more
Source§

fn try_cast_trunc(self) -> Result<T, Error>

Try converting to integer with truncation Read more
Source§

fn try_cast_nearest(self) -> Result<T, Error>

Try converting to the nearest integer Read more
Source§

fn try_cast_floor(self) -> Result<T, Error>

Try converting the floor to an integer Read more
Source§

fn try_cast_ceil(self) -> Result<T, Error>

Try convert the ceiling to an integer Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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> 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