use crate::{core_graphics::CGFloat, foundation::NSEdgeInsets};
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, PartialOrd, PartialEq)]
pub struct NSDirectionalEdgeInsets {
pub top: CGFloat,
pub leading: CGFloat,
pub bottom: CGFloat,
pub trailing: CGFloat,
}
impl From<NSEdgeInsets> for NSDirectionalEdgeInsets {
#[inline]
fn from(insets: NSEdgeInsets) -> Self {
Self::from_edge_insets(insets)
}
}
impl NSDirectionalEdgeInsets {
pub const ZERO: Self = Self::all(0.0);
#[inline]
#[doc(alias = "NSDirectionalEdgeInsetsMake")]
pub const fn new(top: CGFloat, leading: CGFloat, bottom: CGFloat, trailing: CGFloat) -> Self {
Self {
top,
leading,
bottom,
trailing,
}
}
#[inline]
pub const fn all(inset: CGFloat) -> Self {
Self::new(inset, inset, inset, inset)
}
#[inline]
pub const fn from_edge_insets(insets: NSEdgeInsets) -> Self {
Self {
top: insets.top,
leading: insets.left,
bottom: insets.bottom,
trailing: insets.right,
}
}
#[inline]
pub fn is_zero(&self) -> bool {
*self == Self::ZERO
}
#[inline]
pub fn is_finite(&self) -> bool {
self.top.is_finite()
&& self.leading.is_finite()
&& self.bottom.is_finite()
&& self.trailing.is_finite()
}
}