use crate::core_graphics::{CGFloat, CGPoint, CGRect, CGRectEdge, CGSize};
pub type NSPoint = CGPoint;
pub type NSSize = CGSize;
pub type NSRect = CGRect;
pub type NSRectEdge = CGRectEdge;
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, PartialOrd, PartialEq)]
pub struct NSEdgeInsets {
pub top: CGFloat,
pub left: CGFloat,
pub bottom: CGFloat,
pub right: CGFloat,
}
impl From<(CGFloat, CGFloat, CGFloat, CGFloat)> for NSEdgeInsets {
#[inline]
fn from((top, left, bottom, right): (CGFloat, CGFloat, CGFloat, CGFloat)) -> Self {
Self::new(top, left, bottom, right)
}
}
impl NSEdgeInsets {
pub const ZERO: Self = Self::all(0.0);
#[inline]
pub const fn new(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) -> Self {
Self {
top,
left,
bottom,
right,
}
}
#[inline]
pub const fn all(inset: CGFloat) -> Self {
Self::new(inset, inset, inset, inset)
}
#[inline]
pub fn is_zero(&self) -> bool {
*self == Self::ZERO
}
#[inline]
pub fn is_finite(&self) -> bool {
self.top.is_finite()
&& self.left.is_finite()
&& self.bottom.is_finite()
&& self.right.is_finite()
}
}