Skip to main content

InteractiveView

Struct InteractiveView 

Source
pub struct InteractiveView {
    pub scale: f32,
    pub tx: f32,
    pub ty: f32,
}
Expand description

The retained state of an InteractiveViewer: the scale factor and the translation applied to the child. The screen point q receives the content painted flat at p according to q = scale · p + (tx, ty). The identity (scale = 1, zero translation) places the child as is in the viewport.

All the gesture mathematics lives here (pure, testable): the shell merely calls pan and zoom_at, then renders the matrix.

Fields§

§scale: f32

The current scale factor (1.0 = natural size).

§tx: f32

The paint translation, in logical pixels.

§ty: f32

The paint translation along the y axis, in logical pixels; tx is the x axis.

Implementations§

Source§

impl InteractiveView

Source

pub fn matrix(&self) -> Affine

The matrix q = scale · p + t (scaling about the origin, then translation).

Source

pub fn pan(self, dx: f32, dy: f32) -> Self

Pans the content by (dx, dy) screen pixels: the finger or cursor pushes the content by the same delta.

Source

pub fn clamped(self, viewport: Rect) -> Self

Clamps the translation so that the content (at the current scale) always covers the viewport: an edge of the content cannot be dragged inside the viewport. When the content is smaller than the viewport (zoomed out below 1), it is centred. At scale 1, panning is nil (the content fills exactly).

Source

pub fn zoom_at(self, factor: f32, cursor: Point, min: f32, max: f32) -> Self

Zooms by factor while keeping the screen point cursor fixed (a cursor-anchored zoom), with the final scale clamped to [min, max]. The point of the content under the cursor does not move — the behaviour expected of a wheel or a pinch.

Trait Implementations§

Source§

impl Clone for InteractiveView

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for InteractiveView

Source§

impl Debug for InteractiveView

Source§

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

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

impl Default for InteractiveView

Source§

fn default() -> Self

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

impl PartialEq for InteractiveView

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for InteractiveView

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

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<Msg> IntoMsg<Msg> for Msg

Source§

fn defer(work: impl Fn() -> Msg + 'static) -> Msg

The message that stands for work’s result.
Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.