use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "UIDynamicBehavior")]
pub struct UIDynamicItemBehavior;
#[cfg(feature = "UIDynamicBehavior")]
unsafe impl ClassType for UIDynamicItemBehavior {
#[inherits(NSObject)]
type Super = UIDynamicBehavior;
type Mutability = MainThreadOnly;
}
);
#[cfg(feature = "UIDynamicBehavior")]
unsafe impl NSObjectProtocol for UIDynamicItemBehavior {}
extern_methods!(
#[cfg(feature = "UIDynamicBehavior")]
unsafe impl UIDynamicItemBehavior {
#[method_id(@__retain_semantics Init initWithItems:)]
pub unsafe fn initWithItems(
this: Allocated<Self>,
items: &NSArray<ProtocolObject<dyn UIDynamicItem>>,
) -> Retained<Self>;
#[method(addItem:)]
pub unsafe fn addItem(&self, item: &ProtocolObject<dyn UIDynamicItem>);
#[method(removeItem:)]
pub unsafe fn removeItem(&self, item: &ProtocolObject<dyn UIDynamicItem>);
#[method_id(@__retain_semantics Other items)]
pub unsafe fn items(&self) -> Retained<NSArray<ProtocolObject<dyn UIDynamicItem>>>;
#[method(elasticity)]
pub unsafe fn elasticity(&self) -> CGFloat;
#[method(setElasticity:)]
pub unsafe fn setElasticity(&self, elasticity: CGFloat);
#[method(friction)]
pub unsafe fn friction(&self) -> CGFloat;
#[method(setFriction:)]
pub unsafe fn setFriction(&self, friction: CGFloat);
#[method(density)]
pub unsafe fn density(&self) -> CGFloat;
#[method(setDensity:)]
pub unsafe fn setDensity(&self, density: CGFloat);
#[method(resistance)]
pub unsafe fn resistance(&self) -> CGFloat;
#[method(setResistance:)]
pub unsafe fn setResistance(&self, resistance: CGFloat);
#[method(angularResistance)]
pub unsafe fn angularResistance(&self) -> CGFloat;
#[method(setAngularResistance:)]
pub unsafe fn setAngularResistance(&self, angular_resistance: CGFloat);
#[method(charge)]
pub unsafe fn charge(&self) -> CGFloat;
#[method(setCharge:)]
pub unsafe fn setCharge(&self, charge: CGFloat);
#[method(isAnchored)]
pub unsafe fn isAnchored(&self) -> bool;
#[method(setAnchored:)]
pub unsafe fn setAnchored(&self, anchored: bool);
#[method(allowsRotation)]
pub unsafe fn allowsRotation(&self) -> bool;
#[method(setAllowsRotation:)]
pub unsafe fn setAllowsRotation(&self, allows_rotation: bool);
#[method(addLinearVelocity:forItem:)]
pub unsafe fn addLinearVelocity_forItem(
&self,
velocity: CGPoint,
item: &ProtocolObject<dyn UIDynamicItem>,
);
#[method(linearVelocityForItem:)]
pub unsafe fn linearVelocityForItem(
&self,
item: &ProtocolObject<dyn UIDynamicItem>,
) -> CGPoint;
#[method(addAngularVelocity:forItem:)]
pub unsafe fn addAngularVelocity_forItem(
&self,
velocity: CGFloat,
item: &ProtocolObject<dyn UIDynamicItem>,
);
#[method(angularVelocityForItem:)]
pub unsafe fn angularVelocityForItem(
&self,
item: &ProtocolObject<dyn UIDynamicItem>,
) -> CGFloat;
}
);
extern_methods!(
#[cfg(feature = "UIDynamicBehavior")]
unsafe impl UIDynamicItemBehavior {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
}
);