#[repr(C)]pub struct Bounds<T: Clone + Debug + Default + PartialEq> {
pub origin: Point<T>,
pub size: Size<T>,
}Expand description
A rectangle, defined by its top left corner and its size.
The rectangle covers the area from origin to the bottom right corner.
Bounds::contains treats the left and top edges as inside and the right and bottom edges
as outside, so adjacent bounds don’t overlap. Elements receive their bounds in logical pixels
when they are laid out and painted. See layout and style.
§Examples
use gpui::{Bounds, Point, Size};
let bounds = Bounds::new(Point { x: 10, y: 20 }, Size { width: 30, height: 40 });
assert_eq!(bounds.right(), 40);
assert_eq!(bounds.bottom(), 60);Fields§
§origin: Point<T>The top left corner of the rectangle.
size: Size<T>The width and height of the rectangle.
Implementations§
Source§impl Bounds<Pixels>
impl Bounds<Pixels>
Sourcepub fn centered(
display_id: Option<DisplayId>,
size: Size<Pixels>,
cx: &App,
) -> Self
pub fn centered( display_id: Option<DisplayId>, size: Size<Pixels>, cx: &App, ) -> Self
Returns bounds of size centered on a display.
Uses the display with display_id, or the primary display if display_id is None or
doesn’t match a connected display. If there is no display at all, the bounds start at
(0, 0).
§Examples
app.read(|cx| {
// The test platform has one 1920 by 1080 display.
let window = Bounds::centered(None, size(px(800.), px(600.)), cx);
assert_eq!(window, bounds(point(px(560.), px(240.)), size(px(800.), px(600.))));
});Sourcepub fn maximized(display_id: Option<DisplayId>, cx: &App) -> Self
pub fn maximized(display_id: Option<DisplayId>, cx: &App) -> Self
Returns bounds that cover a display.
Uses the display with display_id, or the primary display if display_id is None or
doesn’t match a connected display. If there is no display at all, returns 1024 by 768
pixels at (0, 0).
§Examples
app.read(|cx| {
// The test platform has one 1920 by 1080 display.
let screen = Bounds::maximized(None, cx);
assert_eq!(screen, bounds(point(px(0.), px(0.)), size(px(1920.), px(1080.))));
});Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn from_corners(top_left: Point<T>, bottom_right: Point<T>) -> Self
pub fn from_corners(top_left: Point<T>, bottom_right: Point<T>) -> Self
Creates bounds from its top left and bottom right corners.
The size is bottom_right - top_left and is not clamped. A bottom_right above or to the
left of top_left gives a negative width or height, which Bounds::is_empty reports as
empty.
§Examples
let top_left = Point { x: 0, y: 0 };
let bottom_right = Point { x: 10, y: 10 };
let bounds = Bounds::from_corners(top_left, bottom_right);
assert_eq!(bounds.origin, top_left);
assert_eq!(bounds.size.width, 10);
assert_eq!(bounds.size.height, 10);Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn from_anchor_and_size(
corner: Anchor,
origin: Point<T>,
size: Size<T>,
) -> Bounds<T>
pub fn from_anchor_and_size( corner: Anchor, origin: Point<T>, size: Size<T>, ) -> Bounds<T>
Creates bounds of size whose corner sits at origin.
Use this to place a box by one of its corners or edge centers: the box’s top left corner is
origin minus the offset of corner within the size.
§Examples
let b = Bounds::from_anchor_and_size(
Anchor::BottomRight,
point(px(10.), px(10.)),
size(px(4.), px(2.)),
);
assert_eq!(b.origin, point(px(6.), px(8.)));
assert_eq!(b.bottom_right(), point(px(10.), px(10.)));Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn centered_at(center: Point<T>, size: Size<T>) -> Self
pub fn centered_at(center: Point<T>, size: Size<T>) -> Self
Creates bounds of size centered on center.
§Examples
let b = Bounds::centered_at(point(px(50.), px(50.)), size(px(20.), px(10.)));
assert_eq!(b.origin, point(px(40.), px(45.)));
assert_eq!(b.center(), point(px(50.), px(50.)));Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn top_center(&self) -> Point<T>
pub fn top_center(&self) -> Point<T>
Returns the midpoint of the top edge.
§Examples
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 20 },
};
assert_eq!(bounds.top_center(), Point { x: 5, y: 0 });Sourcepub fn bottom_center(&self) -> Point<T>
pub fn bottom_center(&self) -> Point<T>
Returns the midpoint of the bottom edge.
§Examples
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 20 },
};
assert_eq!(bounds.bottom_center(), Point { x: 5, y: 20 });Sourcepub fn left_center(&self) -> Point<T>
pub fn left_center(&self) -> Point<T>
Returns the midpoint of the left edge.
§Examples
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 20 },
};
assert_eq!(bounds.left_center(), Point { x: 0, y: 10 });Sourcepub fn right_center(&self) -> Point<T>
pub fn right_center(&self) -> Point<T>
Returns the midpoint of the right edge.
§Examples
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 20 },
};
assert_eq!(bounds.right_center(), Point { x: 10, y: 10 });Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn intersects(&self, other: &Bounds<T>) -> bool
pub fn intersects(&self, other: &Bounds<T>) -> bool
Returns true if this rectangle and other share some area.
Bounds that only touch along an edge don’t intersect.
§Examples
let bounds1 = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 10 },
};
let bounds2 = Bounds {
origin: Point { x: 5, y: 5 },
size: Size { width: 10, height: 10 },
};
let bounds3 = Bounds {
origin: Point { x: 20, y: 20 },
size: Size { width: 10, height: 10 },
};
assert_eq!(bounds1.intersects(&bounds2), true);
assert_eq!(bounds1.intersects(&bounds3), false);Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn half_perimeter(&self) -> T
pub fn half_perimeter(&self) -> T
Returns the width plus the height.
The perimeter of the bounds is twice this value.
§Examples
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 20 },
};
assert_eq!(bounds.half_perimeter(), 30);Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn dilate(&self, amount: T) -> Bounds<T>
pub fn dilate(&self, amount: T) -> Bounds<T>
Returns the bounds grown by amount on every side.
The origin moves by -amount and the width and height grow by twice amount, so the
center stays in place. A negative amount shrinks the bounds. Use Bounds::inset to
shrink by a positive amount.
§Examples
let bounds = Bounds {
origin: Point { x: 10, y: 10 },
size: Size { width: 10, height: 10 },
};
assert_eq!(bounds.dilate(5), Bounds {
origin: Point { x: 5, y: 5 },
size: Size { width: 20, height: 20 },
});Sourcepub fn extend(&self, amount: Edges<T>) -> Bounds<T>
pub fn extend(&self, amount: Edges<T>) -> Bounds<T>
Returns the bounds grown by a different amount on each side.
Each side of amount moves the matching edge outward: top grows upward, right grows to
the right, and so on.
§Examples
let bounds = Bounds {
origin: Point { x: 10, y: 10 },
size: Size { width: 10, height: 10 },
};
let amount = Edges { top: 1, right: 2, bottom: 3, left: 4 };
assert_eq!(bounds.extend(amount), Bounds {
origin: Point { x: 6, y: 9 },
size: Size { width: 16, height: 14 },
});Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn inset(&self, amount: T) -> Self
pub fn inset(&self, amount: T) -> Self
Returns the bounds shrunk by amount on every side.
Same as Bounds::dilate with amount negated.
§Examples
let bounds = Bounds {
origin: Point { x: 0.0, y: 0.0 },
size: Size { width: 10.0, height: 10.0 },
};
assert_eq!(bounds.inset(2.0), Bounds {
origin: Point { x: 2.0, y: 2.0 },
size: Size { width: 6.0, height: 6.0 },
});Source§impl<T: PartialOrd + Add<T, Output = T> + Sub<Output = T> + Clone + Debug + Default + PartialEq> Bounds<T>
impl<T: PartialOrd + Add<T, Output = T> + Sub<Output = T> + Clone + Debug + Default + PartialEq> Bounds<T>
Sourcepub fn intersect(&self, other: &Self) -> Self
pub fn intersect(&self, other: &Self) -> Self
Returns the area that this rectangle and other share.
If the bounds don’t overlap, the result has zero width or zero height. Its origin is then the larger of the two origins in each coordinate, which may lie outside both bounds.
§Examples
let bounds1 = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 10 },
};
let bounds2 = Bounds {
origin: Point { x: 5, y: 5 },
size: Size { width: 10, height: 10 },
};
assert_eq!(bounds1.intersect(&bounds2), Bounds {
origin: Point { x: 5, y: 5 },
size: Size { width: 5, height: 5 },
});Sourcepub fn union(&self, other: &Self) -> Self
pub fn union(&self, other: &Self) -> Self
Returns the smallest bounds that contain both rectangles.
§Examples
let bounds1 = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 10 },
};
let bounds2 = Bounds {
origin: Point { x: 5, y: 5 },
size: Size { width: 15, height: 15 },
};
assert_eq!(bounds1.union(&bounds2), Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 20, height: 20 },
});Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn space_within(&self, outer: &Self) -> Edges<T>
pub fn space_within(&self, outer: &Self) -> Edges<T>
Returns the distance from each edge of this rectangle to the matching edge of outer.
A positive value means this rectangle lies inside outer on that side. A negative value means
it extends past outer.
§Examples
let outer = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 100, height: 100 },
};
let inner = Bounds {
origin: Point { x: 10, y: 20 },
size: Size { width: 30, height: 40 },
};
assert_eq!(inner.space_within(&outer), Edges { top: 20, right: 60, bottom: 40, left: 10 });Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn bottom(&self) -> T
pub fn bottom(&self) -> T
Returns the y coordinate of the bottom edge, which is outside the bounds.
Sourcepub fn right(&self) -> T
pub fn right(&self) -> T
Returns the x coordinate of the right edge, which is outside the bounds.
Sourcepub fn top_right(&self) -> Point<T>
pub fn top_right(&self) -> Point<T>
Returns the top right corner point of the bounds.
§Examples
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 20 },
};
assert_eq!(bounds.top_right(), Point { x: 10, y: 0 });Sourcepub fn bottom_right(&self) -> Point<T>
pub fn bottom_right(&self) -> Point<T>
Returns the bottom right corner point of the bounds.
This point is outside the bounds: Bounds::contains returns false for it.
§Examples
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 20 },
};
assert_eq!(bounds.bottom_right(), Point { x: 10, y: 20 });Sourcepub fn bottom_left(&self) -> Point<T>
pub fn bottom_left(&self) -> Point<T>
Returns the bottom left corner point of the bounds.
§Examples
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 20 },
};
assert_eq!(bounds.bottom_left(), Point { x: 0, y: 20 });Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn corner(&self, corner: Anchor) -> Point<T>
pub fn corner(&self, corner: Anchor) -> Point<T>
Returns the point at corner on this rectangle.
Accepts the four corners and the four edge midpoints.
§Examples
use gpui::{Anchor, Bounds, Point, Size};
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 20 },
};
assert_eq!(bounds.corner(Anchor::BottomLeft), Point { x: 0, y: 20 });Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn contains(&self, point: &Point<T>) -> bool
pub fn contains(&self, point: &Point<T>) -> bool
Returns true if point lies inside the bounds.
The left and top edges are inside, and the right and bottom edges are outside. A point at
(right, y) or (x, bottom) returns false. With integer coordinates, a rectangle of
width 10 at x = 0 contains x = 0 through x = 9 only.
§Examples
let bounds = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 10, height: 10 },
};
assert!(bounds.contains(&Point { x: 5, y: 5 }));
assert!(bounds.contains(&Point { x: 0, y: 0 }));
assert!(!bounds.contains(&Point { x: 10, y: 5 }));
assert!(!bounds.contains(&Point { x: 15, y: 15 }));Sourcepub fn is_contained_within(&self, other: &Self) -> bool
pub fn is_contained_within(&self, other: &Self) -> bool
Returns true if this rectangle lies entirely inside other.
Checks that the top left and bottom right corners of this rectangle are inside other, using
the rules of Bounds::contains.
§Examples
let outer = Bounds {
origin: Point { x: 0, y: 0 },
size: Size { width: 20, height: 20 },
};
let inner = Bounds {
origin: Point { x: 5, y: 5 },
size: Size { width: 10, height: 10 },
};
let overlapping = Bounds {
origin: Point { x: 15, y: 15 },
size: Size { width: 10, height: 10 },
};
assert!(inner.is_contained_within(&outer));
assert!(!overlapping.is_contained_within(&outer));Sourcepub fn map<U>(&self, f: impl Fn(T) -> U) -> Bounds<U>
pub fn map<U>(&self, f: impl Fn(T) -> U) -> Bounds<U>
Returns bounds with f applied to the origin and the size, converting T to U.
§Examples
let bounds = Bounds {
origin: Point { x: 10.0, y: 10.0 },
size: Size { width: 10.0, height: 20.0 },
};
let new_bounds = bounds.map(|value| value as f64 * 1.5);
assert_eq!(new_bounds, Bounds {
origin: Point { x: 15.0, y: 15.0 },
size: Size { width: 15.0, height: 30.0 },
});Sourcepub fn map_origin(self, f: impl Fn(T) -> T) -> Bounds<T>
pub fn map_origin(self, f: impl Fn(T) -> T) -> Bounds<T>
Returns bounds with f applied to each coordinate of the origin. The size is unchanged.
§Examples
let bounds = Bounds {
origin: Point { x: 10.0, y: 10.0 },
size: Size { width: 10.0, height: 20.0 },
};
let new_bounds = bounds.map_origin(|value| value * 1.5);
assert_eq!(new_bounds, Bounds {
origin: Point { x: 15.0, y: 15.0 },
size: Size { width: 10.0, height: 20.0 },
});Sourcepub fn map_size(self, f: impl Fn(T) -> T) -> Bounds<T>
pub fn map_size(self, f: impl Fn(T) -> T) -> Bounds<T>
Returns bounds with f applied to the width and the height. The origin is unchanged.
§Examples
let bounds = Bounds {
origin: Point { x: 10.0, y: 10.0 },
size: Size { width: 10.0, height: 20.0 },
};
let new_bounds = bounds.map_size(|value| value * 1.5);
assert_eq!(new_bounds, Bounds {
origin: Point { x: 10.0, y: 10.0 },
size: Size { width: 15.0, height: 30.0 },
});Source§impl<T> Bounds<T>
impl<T> Bounds<T>
Sourcepub fn localize(&self, point: &Point<T>) -> Option<Point<T>>
pub fn localize(&self, point: &Point<T>) -> Option<Point<T>>
Returns point relative to the origin of this rectangle, or None if point is outside.
Use it to turn a window position into a position inside an element. The result follows
the rules of Bounds::contains.
§Examples
let panel = bounds(point(px(100.), px(50.)), size(px(200.), px(100.)));
assert_eq!(panel.localize(&point(px(110.), px(60.))), Some(point(px(10.), px(10.))));
assert_eq!(panel.localize(&point(px(10.), px(10.))), None);Source§impl Bounds<Pixels>
impl Bounds<Pixels>
Sourcepub fn scale(&self, factor: f32) -> Bounds<ScaledPixels>
pub fn scale(&self, factor: f32) -> Bounds<ScaledPixels>
Multiplies the origin and the size by factor, producing ScaledPixels.
Pass the display’s scale factor to convert logical bounds into the scaled space. The values
aren’t rounded: use Bounds::to_device_pixels to get whole device pixels.
§Examples
let bounds = Bounds {
origin: Point { x: Pixels::from(10.0), y: Pixels::from(20.0) },
size: Size { width: Pixels::from(30.0), height: Pixels::from(40.0) },
};
let scaled_bounds = bounds.scale(2.0);
assert_eq!(scaled_bounds, Bounds {
origin: Point {
x: ScaledPixels::from(20.0),
y: ScaledPixels::from(40.0),
},
size: Size {
width: ScaledPixels::from(60.0),
height: ScaledPixels::from(80.0)
},
});Sourcepub fn to_device_pixels(self, factor: f32) -> Bounds<DevicePixels>
pub fn to_device_pixels(self, factor: f32) -> Bounds<DevicePixels>
Converts these logical bounds to device pixels.
Multiplies each coordinate and size by factor, rounding each to the nearest whole device
pixel. The origin and the size are rounded separately, so the bottom right corner can differ
by one pixel from rounding the corner directly.
§Examples
let logical = bounds(point(px(10.), px(20.)), size(px(30.), px(40.)));
assert_eq!(
logical.to_device_pixels(1.5),
bounds(point(DevicePixels(15), DevicePixels(30)), size(DevicePixels(45), DevicePixels(60))),
);Source§impl Bounds<DevicePixels>
impl Bounds<DevicePixels>
Sourcepub fn to_pixels(self, scale_factor: f32) -> Bounds<Pixels>
pub fn to_pixels(self, scale_factor: f32) -> Bounds<Pixels>
Converts these device pixel bounds to logical pixels by dividing by scale_factor.
§Examples
let device = bounds(point(DevicePixels(200), DevicePixels(100)), size(DevicePixels(400), DevicePixels(300)));
assert_eq!(device.to_pixels(2.), bounds(point(px(100.), px(50.)), size(px(200.), px(150.))));Trait Implementations§
impl<T: Copy + Clone + Debug + Default + PartialEq> Copy for Bounds<T>
Source§impl<'de, T> Deserialize<'de> for Bounds<T>
impl<'de, T> Deserialize<'de> for Bounds<T>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<T: Clone + Debug + Default + PartialEq + Display + Add<T, Output = T>> Display for Bounds<T>
impl<T: Clone + Debug + Default + PartialEq + Display + Add<T, Output = T>> Display for Bounds<T>
impl<T: Eq + Clone + Debug + Default + PartialEq> Eq for Bounds<T>
Source§impl<T: Clone + Debug + Default + PartialEq> From<BoundsRefinement<T>> for Bounds<T>
impl<T: Clone + Debug + Default + PartialEq> From<BoundsRefinement<T>> for Bounds<T>
Source§fn from(value: BoundsRefinement<T>) -> Self
fn from(value: BoundsRefinement<T>) -> Self
Source§impl<T, S> MulAssign<S> for Bounds<T>
impl<T, S> MulAssign<S> for Bounds<T>
Source§fn mul_assign(&mut self, rhs: S)
fn mul_assign(&mut self, rhs: S)
*= operation. Read moreSource§impl<T: Clone + Debug + Default + PartialEq> Refineable for Bounds<T>
impl<T: Clone + Debug + Default + PartialEq> Refineable for Bounds<T>
type Refinement = BoundsRefinement<T>
Source§fn refine(&mut self, refinement: &Self::Refinement)
fn refine(&mut self, refinement: &Self::Refinement)
Source§fn refined(self, refinement: Self::Refinement) -> Self
fn refined(self, refinement: Self::Refinement) -> Self
self and calling
refine on it.Source§fn is_superset_of(&self, refinement: &Self::Refinement) -> bool
fn is_superset_of(&self, refinement: &Self::Refinement) -> bool
true if this instance would contain all values from the refinement. Read moreSource§fn subtract(&self, refinement: &Self::Refinement) -> Self::Refinement
fn subtract(&self, refinement: &Self::Refinement) -> Self::Refinement
impl<T: PartialEq + Clone + Debug + Default + PartialEq> StructuralPartialEq for Bounds<T>
Auto Trait Implementations§
impl<T> Freeze for Bounds<T>
impl<T> RefUnwindSafe for Bounds<T>
impl<T> Send for Bounds<T>
impl<T> Sync for Bounds<T>
impl<T> Unpin for Bounds<T>
impl<T> UnsafeUnpin for Bounds<T>
impl<T> UnwindSafe for Bounds<T>
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
Source§type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
Source§fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T, C> ComponentsInto<C> for T
impl<T, C> ComponentsInto<C> for T
Source§fn components_into(self) -> C
fn components_into(self) -> C
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more