[−]Struct druid::Insets
Insets from the edges of a rectangle.
The inset value for each edge can be thought of as a delta computed from
the center of the rect to that edge. For instance, with an inset of 2.0
on
the x-axis, a rectange with the origin (0.0, 0.0)
with that inset added
will have the new origin at (-2.0, 0.0)
.
Put alternatively, a positive inset represents increased distance from center, and a negative inset represents decreased distance from center.
Examples
Positive insets added to a Rect
produce a larger Rect
:
let rect = Rect::from_origin_size((0., 0.,), (10., 10.,)); let insets = Insets::uniform_xy(3., 0.,); let inset_rect = rect + insets; assert_eq!(inset_rect.width(), 16.0, "10.0 + 3.0 × 2"); assert_eq!(inset_rect.x0, -3.0);
Negative insets added to a Rect
produce a smaller Rect
:
let rect = Rect::from_origin_size((0., 0.,), (10., 10.,)); let insets = Insets::uniform_xy(-3., 0.,); let inset_rect = rect + insets; assert_eq!(inset_rect.width(), 4.0, "10.0 - 3.0 × 2"); assert_eq!(inset_rect.x0, 3.0);
Insets
operate on the absolute rectangle Rect::abs
, and so ignore
existing negative widths and heights.
let rect = Rect::new(7., 11., 0., 0.,); let insets = Insets::uniform_xy(0., 1.,); assert_eq!(rect.width(), -7.0); let inset_rect = rect + insets; assert_eq!(inset_rect.width(), 7.0); assert_eq!(inset_rect.x0, 0.0); assert_eq!(inset_rect.height(), 13.0);
The width and height of an inset operation can still be negative if the
Insets
' dimensions are greater than the dimensions of the original Rect
.
let rect = Rect::new(0., 0., 3., 5.); let insets = Insets::uniform_xy(0., 7.,); let inset_rect = rect - insets; assert_eq!(inset_rect.height(), -9., "5 - 7 × 2")
Rect - Rect = Insets
:
let rect = Rect::new(0., 0., 5., 11.); let insets = Insets::uniform_xy(1., 7.,); let inset_rect = rect + insets; let insets2 = inset_rect - rect; assert_eq!(insets2.x0, insets.x0); assert_eq!(insets2.y1, insets.y1); assert_eq!(insets2.x_value(), insets.x_value()); assert_eq!(insets2.y_value(), insets.y_value());
Fields
x0: f64
The minimum x coordinate (left edge).
y0: f64
The minimum y coordinate (top edge in y-down spaces).
x1: f64
The maximum x coordinate (right edge).
y1: f64
The maximum y coordinate (bottom edge in y-down spaces).
Implementations
impl Insets
pub const ZERO: Insets
Zero'd insets.
pub const fn uniform(d: f64) -> Insets
New uniform insets.
pub const fn uniform_xy(x: f64, y: f64) -> Insets
New insets with uniform values along each axis.
pub const fn new(x0: f64, y0: f64, x1: f64, y1: f64) -> Insets
New insets. The ordering of the arguments is "left, top, right, bottom", assuming a y-down coordinate space.
pub fn x_value(self) -> f64
The total delta on the x-axis represented by these insets.
Examples
use kurbo::Insets; let insets = Insets::uniform_xy(3., 8.); assert_eq!(insets.x_value(), 6.); let insets = Insets::new(5., 0., -12., 0.,); assert_eq!(insets.x_value(), -7.);
pub fn y_value(self) -> f64
The total delta on the y-axis represented by these insets.
Examples
use kurbo::Insets; let insets = Insets::uniform_xy(3., 7.); assert_eq!(insets.y_value(), 14.); let insets = Insets::new(5., 10., -12., 4.,); assert_eq!(insets.y_value(), 14.);
pub fn size(self) -> Size
Returns the total delta represented by these insets as a Size
.
This is equivalent to creating a Size
from the values returned by
x_value
and y_value
.
This function may return a a size with negative values.
Examples
use kurbo::{Insets, Size}; let insets = Insets::new(11.1, -43.3, 3.333, -0.0); assert_eq!(insets.size(), Size::new(insets.x_value(), insets.y_value()));
pub fn are_nonnegative(self) -> bool
Return true
iff all values are nonnegative.
pub fn nonnegative(self) -> Insets
Return new Insets
with all negative values replaced with 0.0
.
This is provided as a convenience for applications where negative insets are not meaningful.
Examples
use kurbo::Insets; let insets = Insets::new(-10., 3., -0.2, 4.); let nonnegative = insets.nonnegative(); assert_eq!(nonnegative.x_value(), 0.0); assert_eq!(nonnegative.y_value(), 7.0);
Trait Implementations
impl Add<Insets> for Rect
type Output = Rect
The resulting type after applying the +
operator.
pub fn add(self, other: Insets) -> Rect
impl Add<Rect> for Insets
type Output = Rect
The resulting type after applying the +
operator.
pub fn add(self, other: Rect) -> Rect
impl Clone for Insets
pub fn clone(&self) -> Insets
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Copy for Insets
impl Data for Insets
[src]
impl Debug for Insets
impl Default for Insets
impl From<(f64, f64, f64, f64)> for Insets
impl From<(f64, f64)> for Insets
impl From<f64> for Insets
impl Into<Value> for Insets
[src]
impl Neg for Insets
impl PartialEq<Insets> for Insets
impl Scalable for Insets
[src]
pub fn to_px(&self, scale: Scale) -> Insets
[src]
Converts Insets
from display points into pixels,
using the x axis scale factor for x0
and x1
and the y axis scale factor for y0
and y1
.
pub fn to_dp(&self, scale: Scale) -> Insets
[src]
Converts Insets
from pixels into display points,
using the x axis scale factor for x0
and x1
and the y axis scale factor for y0
and y1
.
impl StructuralPartialEq for Insets
impl Sub<Insets> for Rect
type Output = Rect
The resulting type after applying the -
operator.
pub fn sub(self, other: Insets) -> Rect
impl Sub<Rect> for Insets
type Output = Rect
The resulting type after applying the -
operator.
pub fn sub(self, other: Rect) -> Rect
impl ValueType for Insets
[src]
pub fn try_from_value(value: &Value) -> Result<Self, ValueTypeError>
[src]
Auto Trait Implementations
impl RefUnwindSafe for Insets
[src]
impl Send for Insets
[src]
impl Sync for Insets
[src]
impl Unpin for Insets
[src]
impl UnwindSafe for Insets
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> AnyEq for T where
T: PartialEq<T> + Any,
[src]
T: PartialEq<T> + Any,
pub fn equals(&self, other: &(dyn Any + 'static)) -> bool
[src]
pub fn as_any(&self) -> &(dyn Any + 'static)
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> RoundFrom<T> for T
pub fn round_from(x: T) -> T
impl<T, U> RoundInto<U> for T where
U: RoundFrom<T>,
U: RoundFrom<T>,
pub fn round_into(self) -> U
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,