Struct kurbo::Insets

source ·
pub struct Insets {
    pub x0: f64,
    pub y0: f64,
    pub x1: f64,
    pub y1: f64,
}
Expand description

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

source§

impl Insets

source

pub const ZERO: Insets = _

Zeroed insets.

source

pub const fn uniform(d: f64) -> Insets

New uniform insets.

source

pub const fn uniform_xy(x: f64, y: f64) -> Insets

New insets with uniform values along each axis.

source

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.

source

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.);
source

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.);
source

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 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()));
source

pub fn are_nonnegative(self) -> bool

Return true iff all values are nonnegative.

source

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);
source

pub fn is_finite(&self) -> bool

Are these insets finite?

source

pub fn is_nan(&self) -> bool

Are these insets NaN?

Trait Implementations§

source§

impl Add<Insets> for Rect

§

type Output = Rect

The resulting type after applying the + operator.
source§

fn add(self, other: Insets) -> Rect

Performs the + operation. Read more
source§

impl Add<Rect> for Insets

§

type Output = Rect

The resulting type after applying the + operator.
source§

fn add(self, other: Rect) -> Rect

Performs the + operation. Read more
source§

impl Clone for Insets

source§

fn clone(&self) -> Insets

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for Insets

source§

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

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

impl Default for Insets

source§

fn default() -> Insets

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

impl<'de> Deserialize<'de> for Insets

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<(f64, f64)> for Insets

source§

fn from(src: (f64, f64)) -> Insets

Converts to this type from the input type.
source§

impl From<(f64, f64, f64, f64)> for Insets

source§

fn from(src: (f64, f64, f64, f64)) -> Insets

Converts to this type from the input type.
source§

impl From<f64> for Insets

source§

fn from(src: f64) -> Insets

Converts to this type from the input type.
source§

impl JsonSchema for Insets

source§

fn schema_name() -> String

The name of the generated JSON Schema. Read more
source§

fn json_schema(gen: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
source§

fn is_referenceable() -> bool

Whether JSON Schemas generated for this type should be re-used where possible using the $ref keyword. Read more
source§

impl Neg for Insets

§

type Output = Insets

The resulting type after applying the - operator.
source§

fn neg(self) -> Insets

Performs the unary - operation. Read more
source§

impl PartialEq<Insets> for Insets

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Insets

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub<Insets> for Rect

§

type Output = Rect

The resulting type after applying the - operator.
source§

fn sub(self, other: Insets) -> Rect

Performs the - operation. Read more
source§

impl Sub<Rect> for Insets

§

type Output = Rect

The resulting type after applying the - operator.
source§

fn sub(self, other: Rect) -> Rect

Performs the - operation. Read more
source§

impl Copy for Insets

source§

impl StructuralPartialEq for Insets

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> DynClone for Twhere T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,