Skip to main content

RubberBand

Struct RubberBand 

Source
pub struct RubberBand { /* private fields */ }
Expand description

A rectangle drawn with a drag, in the units of the content. The selection follows the drag through its binding, and on_select gets it on release; a press and release without moving clears it. Escape cancels a drag.

Keyboard: the arrows move it, with Alt they resize it (and with Shift, further), Enter selects it, Delete or Escape clears it. With nothing selected, an arrow starts from the middle quarter of the content.

While dragging it paints without a build, so it costs no rebuilds if nothing else reads the selection.

use ravenrs_core::Rect;
use ravenrs_reactive::State;
use ravenrs_widgets::RubberBand;

let selection = State::new(None::<Rect>);
let band = RubberBand::new(selection.binding())
    .keep(false)
    .on_select(|rect| println!("zoom to {rect:?}"))
    .size(320.0, 200.0);

Implementations§

Source§

impl RubberBand

Source

pub fn new(selection: Binding<Option<Rect>>) -> Self

A band bound to selection, in the units of its space.

Source

pub fn on_select(self, handler: impl Fn(Rect) + 'static) -> Self

Runs handler with the rectangle when a drag ends, or on Enter.

Source

pub fn keep(self, keep: bool) -> Self

Whether the rectangle stays after the release (it does by default). A box for zooming, say, goes away as soon as it is used.

Source

pub fn disabled(self, disabled: bool) -> Self

Takes no input while disabled, which leaves the pointer to what is underneath: for a band that only works in one mode or with a key held.

Source

pub fn label(self, label: impl Into<String>) -> Self

The name screen readers announce, instead of the one in Labels.

Source§

impl RubberBand

Source

pub fn size(self, width: f32, height: f32) -> Self

Fixed size in logical pixels, instead of taking the free space.

Source

pub fn grow(self, grow: f32) -> Self

How much of the free space along the parent stack it takes: 1 by default, or 0 over a stage, which then decides the size.

Source

pub fn stage(self, stage: impl View + 'static) -> Self

The view it goes over, such as an Image or a ZoomPanView, which gives it its size. Without one, put it in a ZStack with a fixed size.

Source

pub fn space(self, space: ContentSpace) -> Self

Where the content is, and so the units of its coordinates: by default, its own box.

Trait Implementations§

Source§

impl Debug for RubberBand

Source§

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

Formats the value using the given formatter. Read more
Source§

impl View for RubberBand

Source§

fn build(&self, cx: &mut BuildCx<'_>) -> NodeId

Creates this view’s node for the current build.
Source§

fn type_name(&self) -> &'static str

The name the diagnostics panel shows this view’s cost under.

Auto Trait Implementations§

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
§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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, 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<V> ViewExt for V
where V: View,

Source§

fn padding(self, padding: impl Into<Insets>) -> Styled<Self>

Adds padding inside the box, in logical pixels.
Source§

fn background(self, fill: impl Into<Fill>) -> Styled<Self>

Paints a background behind the content.
Source§

fn frame(self, width: Option<f32>, height: Option<f32>) -> Styled<Self>

Fixes the width and/or height in logical pixels; None keeps the content size.
Source§

fn width(self, width: f32) -> Styled<Self>

Fixes the width in logical pixels.
Source§

fn height(self, height: f32) -> Styled<Self>

Fixes the height in logical pixels.
Source§

fn grow(self, grow: f32) -> Styled<Self>

Takes a share of the free space in the parent stack.
Source§

fn stretch(self) -> Styled<Self>

Stretches across the parent stack’s cross axis.
Source§

fn centered(self) -> Styled<Self>

Centers the content inside the box.
Source§

fn tooltip(self, text: impl Into<String>) -> Tooltip<Self>

Shows text above the view while the pointer is over it; see Tooltip.
Source§

fn opacity(self, opacity: f32) -> Faded<Self>

Draws the view and everything in it at this opacity, from 0.0 to 1.0, easing to it when it changes. Layout and input stay as they are; see Faded.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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