objc2_sprite_kit/generated/
SKNode.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6#[cfg(feature = "objc2-app-kit")]
7#[cfg(target_os = "macos")]
8use objc2_app_kit::*;
9#[cfg(feature = "objc2-core-foundation")]
10use objc2_core_foundation::*;
11use objc2_foundation::*;
12
13use crate::*;
14
15/// Blend modes that the SKNode uses to compose with the framebuffer to produce blended colors.
16///
17/// See also [Apple's documentation](https://developer.apple.com/documentation/spritekit/skblendmode?language=objc)
18// NS_ENUM
19#[repr(transparent)]
20#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
21pub struct SKBlendMode(pub NSInteger);
22impl SKBlendMode {
23    #[doc(alias = "SKBlendModeAlpha")]
24    pub const Alpha: Self = Self(0);
25    #[doc(alias = "SKBlendModeAdd")]
26    pub const Add: Self = Self(1);
27    #[doc(alias = "SKBlendModeSubtract")]
28    pub const Subtract: Self = Self(2);
29    #[doc(alias = "SKBlendModeMultiply")]
30    pub const Multiply: Self = Self(3);
31    #[doc(alias = "SKBlendModeMultiplyX2")]
32    pub const MultiplyX2: Self = Self(4);
33    #[doc(alias = "SKBlendModeScreen")]
34    pub const Screen: Self = Self(5);
35    #[doc(alias = "SKBlendModeReplace")]
36    pub const Replace: Self = Self(6);
37    #[doc(alias = "SKBlendModeMultiplyAlpha")]
38    pub const MultiplyAlpha: Self = Self(7);
39}
40
41unsafe impl Encode for SKBlendMode {
42    const ENCODING: Encoding = NSInteger::ENCODING;
43}
44
45unsafe impl RefEncode for SKBlendMode {
46    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
47}
48
49/// [Apple's documentation](https://developer.apple.com/documentation/spritekit/sknodefocusbehavior?language=objc)
50// NS_ENUM
51#[repr(transparent)]
52#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
53pub struct SKNodeFocusBehavior(pub NSInteger);
54impl SKNodeFocusBehavior {
55    #[doc(alias = "SKNodeFocusBehaviorNone")]
56    pub const None: Self = Self(0);
57    #[doc(alias = "SKNodeFocusBehaviorOccluding")]
58    pub const Occluding: Self = Self(1);
59    #[doc(alias = "SKNodeFocusBehaviorFocusable")]
60    pub const Focusable: Self = Self(2);
61}
62
63unsafe impl Encode for SKNodeFocusBehavior {
64    const ENCODING: Encoding = NSInteger::ENCODING;
65}
66
67unsafe impl RefEncode for SKNodeFocusBehavior {
68    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
69}
70
71extern_class!(
72    /// [Apple's documentation](https://developer.apple.com/documentation/spritekit/sknode?language=objc)
73    #[unsafe(super(NSResponder, NSObject))]
74    #[derive(Debug, PartialEq, Eq, Hash)]
75    #[cfg(feature = "objc2-app-kit")]
76    #[cfg(target_os = "macos")]
77    pub struct SKNode;
78);
79
80#[cfg(feature = "objc2-app-kit")]
81#[cfg(target_os = "macos")]
82unsafe impl NSCoding for SKNode {}
83
84#[cfg(feature = "objc2-app-kit")]
85#[cfg(target_os = "macos")]
86unsafe impl NSCopying for SKNode {}
87
88#[cfg(feature = "objc2-app-kit")]
89#[cfg(target_os = "macos")]
90unsafe impl CopyingHelper for SKNode {
91    type Result = Self;
92}
93
94#[cfg(feature = "objc2-app-kit")]
95#[cfg(target_os = "macos")]
96unsafe impl NSObjectProtocol for SKNode {}
97
98#[cfg(feature = "objc2-app-kit")]
99#[cfg(target_os = "macos")]
100unsafe impl NSSecureCoding for SKNode {}
101
102#[cfg(feature = "objc2-app-kit")]
103#[cfg(target_os = "macos")]
104impl SKNode {
105    extern_methods!(
106        #[unsafe(method(init))]
107        #[unsafe(method_family = init)]
108        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
109
110        /// Support coding and decoding via NSKeyedArchiver.
111        #[unsafe(method(initWithCoder:))]
112        #[unsafe(method_family = init)]
113        pub unsafe fn initWithCoder(
114            this: Allocated<Self>,
115            a_decoder: &NSCoder,
116        ) -> Option<Retained<Self>>;
117
118        #[unsafe(method(node))]
119        #[unsafe(method_family = none)]
120        pub unsafe fn node(mtm: MainThreadMarker) -> Retained<Self>;
121
122        #[unsafe(method(nodeWithFileNamed:))]
123        #[unsafe(method_family = none)]
124        pub unsafe fn nodeWithFileNamed(
125            filename: &NSString,
126            mtm: MainThreadMarker,
127        ) -> Option<Retained<Self>>;
128
129        #[unsafe(method(nodeWithFileNamed:securelyWithClasses:andError:_))]
130        #[unsafe(method_family = none)]
131        pub unsafe fn nodeWithFileNamed_securelyWithClasses_andError(
132            filename: &NSString,
133            classes: &NSSet<AnyClass>,
134            mtm: MainThreadMarker,
135        ) -> Result<Retained<Self>, Retained<NSError>>;
136
137        #[cfg(feature = "objc2-core-foundation")]
138        #[unsafe(method(frame))]
139        #[unsafe(method_family = none)]
140        pub unsafe fn frame(&self) -> CGRect;
141
142        #[cfg(feature = "objc2-core-foundation")]
143        /// Calculates the bounding box including all child nodes in parents coordinate system.
144        #[unsafe(method(calculateAccumulatedFrame))]
145        #[unsafe(method_family = none)]
146        pub unsafe fn calculateAccumulatedFrame(&self) -> CGRect;
147
148        #[cfg(feature = "objc2-core-foundation")]
149        /// The position of the node in the parent's coordinate system
150        #[unsafe(method(position))]
151        #[unsafe(method_family = none)]
152        pub unsafe fn position(&self) -> CGPoint;
153
154        #[cfg(feature = "objc2-core-foundation")]
155        /// Setter for [`position`][Self::position].
156        #[unsafe(method(setPosition:))]
157        #[unsafe(method_family = none)]
158        pub unsafe fn setPosition(&self, position: CGPoint);
159
160        #[cfg(feature = "objc2-core-foundation")]
161        /// The z-order of the node (used for ordering). Negative z is "into" the screen, Positive z is "out" of the screen. A greater zPosition will sort in front of a lesser zPosition.
162        #[unsafe(method(zPosition))]
163        #[unsafe(method_family = none)]
164        pub unsafe fn zPosition(&self) -> CGFloat;
165
166        #[cfg(feature = "objc2-core-foundation")]
167        /// Setter for [`zPosition`][Self::zPosition].
168        #[unsafe(method(setZPosition:))]
169        #[unsafe(method_family = none)]
170        pub unsafe fn setZPosition(&self, z_position: CGFloat);
171
172        #[cfg(feature = "objc2-core-foundation")]
173        /// The Euler rotation about the z axis (in radians)
174        #[unsafe(method(zRotation))]
175        #[unsafe(method_family = none)]
176        pub unsafe fn zRotation(&self) -> CGFloat;
177
178        #[cfg(feature = "objc2-core-foundation")]
179        /// Setter for [`zRotation`][Self::zRotation].
180        #[unsafe(method(setZRotation:))]
181        #[unsafe(method_family = none)]
182        pub unsafe fn setZRotation(&self, z_rotation: CGFloat);
183
184        #[cfg(feature = "objc2-core-foundation")]
185        /// The scaling in the X axis
186        #[unsafe(method(xScale))]
187        #[unsafe(method_family = none)]
188        pub unsafe fn xScale(&self) -> CGFloat;
189
190        #[cfg(feature = "objc2-core-foundation")]
191        /// Setter for [`xScale`][Self::xScale].
192        #[unsafe(method(setXScale:))]
193        #[unsafe(method_family = none)]
194        pub unsafe fn setXScale(&self, x_scale: CGFloat);
195
196        #[cfg(feature = "objc2-core-foundation")]
197        /// The scaling in the Y axis
198        #[unsafe(method(yScale))]
199        #[unsafe(method_family = none)]
200        pub unsafe fn yScale(&self) -> CGFloat;
201
202        #[cfg(feature = "objc2-core-foundation")]
203        /// Setter for [`yScale`][Self::yScale].
204        #[unsafe(method(setYScale:))]
205        #[unsafe(method_family = none)]
206        pub unsafe fn setYScale(&self, y_scale: CGFloat);
207
208        #[cfg(feature = "objc2-core-foundation")]
209        /// The speed multiplier applied to all actions run on this node. Inherited by its children.
210        #[unsafe(method(speed))]
211        #[unsafe(method_family = none)]
212        pub unsafe fn speed(&self) -> CGFloat;
213
214        #[cfg(feature = "objc2-core-foundation")]
215        /// Setter for [`speed`][Self::speed].
216        #[unsafe(method(setSpeed:))]
217        #[unsafe(method_family = none)]
218        pub unsafe fn setSpeed(&self, speed: CGFloat);
219
220        #[cfg(feature = "objc2-core-foundation")]
221        /// Alpha of this node (multiplied by the output color to give the final result)
222        #[unsafe(method(alpha))]
223        #[unsafe(method_family = none)]
224        pub unsafe fn alpha(&self) -> CGFloat;
225
226        #[cfg(feature = "objc2-core-foundation")]
227        /// Setter for [`alpha`][Self::alpha].
228        #[unsafe(method(setAlpha:))]
229        #[unsafe(method_family = none)]
230        pub unsafe fn setAlpha(&self, alpha: CGFloat);
231
232        /// Controls whether or not the node's actions is updated or paused.
233        #[unsafe(method(isPaused))]
234        #[unsafe(method_family = none)]
235        pub unsafe fn isPaused(&self) -> bool;
236
237        /// Setter for [`isPaused`][Self::isPaused].
238        #[unsafe(method(setPaused:))]
239        #[unsafe(method_family = none)]
240        pub unsafe fn setPaused(&self, paused: bool);
241
242        /// Controls whether or not the node and its children are rendered.
243        #[unsafe(method(isHidden))]
244        #[unsafe(method_family = none)]
245        pub unsafe fn isHidden(&self) -> bool;
246
247        /// Setter for [`isHidden`][Self::isHidden].
248        #[unsafe(method(setHidden:))]
249        #[unsafe(method_family = none)]
250        pub unsafe fn setHidden(&self, hidden: bool);
251
252        /// Controls whether or not the node receives touch events
253        #[unsafe(method(isUserInteractionEnabled))]
254        #[unsafe(method_family = none)]
255        pub unsafe fn isUserInteractionEnabled(&self) -> bool;
256
257        /// Setter for [`isUserInteractionEnabled`][Self::isUserInteractionEnabled].
258        #[unsafe(method(setUserInteractionEnabled:))]
259        #[unsafe(method_family = none)]
260        pub unsafe fn setUserInteractionEnabled(&self, user_interaction_enabled: bool);
261
262        /// Determines how this node participates in the focus system.  The default is SKNodeFocusBehaviorNone.
263        #[unsafe(method(focusBehavior))]
264        #[unsafe(method_family = none)]
265        pub unsafe fn focusBehavior(&self) -> SKNodeFocusBehavior;
266
267        /// Setter for [`focusBehavior`][Self::focusBehavior].
268        #[unsafe(method(setFocusBehavior:))]
269        #[unsafe(method_family = none)]
270        pub unsafe fn setFocusBehavior(&self, focus_behavior: SKNodeFocusBehavior);
271
272        /// The parent of the node.
273        ///
274        /// If this is nil the node has not been added to another group and is thus the root node of its own graph.
275        #[unsafe(method(parent))]
276        #[unsafe(method_family = none)]
277        pub unsafe fn parent(&self) -> Option<Retained<SKNode>>;
278
279        /// The children of this node.
280        #[unsafe(method(children))]
281        #[unsafe(method_family = none)]
282        pub unsafe fn children(&self) -> Retained<NSArray<SKNode>>;
283
284        /// The client assignable name.
285        ///
286        /// In general, this should be unique among peers in the scene graph.
287        #[unsafe(method(name))]
288        #[unsafe(method_family = none)]
289        pub unsafe fn name(&self) -> Option<Retained<NSString>>;
290
291        /// Setter for [`name`][Self::name].
292        #[unsafe(method(setName:))]
293        #[unsafe(method_family = none)]
294        pub unsafe fn setName(&self, name: Option<&NSString>);
295
296        #[cfg(all(feature = "SKEffectNode", feature = "SKScene"))]
297        /// The scene that the node is currently in.
298        #[unsafe(method(scene))]
299        #[unsafe(method_family = none)]
300        pub unsafe fn scene(&self) -> Option<Retained<SKScene>>;
301
302        #[cfg(feature = "SKPhysicsBody")]
303        /// Physics body attached to the node, with synchronized scale, rotation, and position
304        #[unsafe(method(physicsBody))]
305        #[unsafe(method_family = none)]
306        pub unsafe fn physicsBody(&self) -> Option<Retained<SKPhysicsBody>>;
307
308        #[cfg(feature = "SKPhysicsBody")]
309        /// Setter for [`physicsBody`][Self::physicsBody].
310        #[unsafe(method(setPhysicsBody:))]
311        #[unsafe(method_family = none)]
312        pub unsafe fn setPhysicsBody(&self, physics_body: Option<&SKPhysicsBody>);
313
314        /// An optional dictionary that can be used to store your own data in a node. Defaults to nil.
315        #[unsafe(method(userData))]
316        #[unsafe(method_family = none)]
317        pub unsafe fn userData(&self) -> Option<Retained<NSMutableDictionary>>;
318
319        /// Setter for [`userData`][Self::userData].
320        #[unsafe(method(setUserData:))]
321        #[unsafe(method_family = none)]
322        pub unsafe fn setUserData(&self, user_data: Option<&NSMutableDictionary>);
323
324        #[cfg(feature = "SKReachConstraints")]
325        /// Kinematic constraints, used in IK solving
326        #[unsafe(method(reachConstraints))]
327        #[unsafe(method_family = none)]
328        pub unsafe fn reachConstraints(&self) -> Option<Retained<SKReachConstraints>>;
329
330        #[cfg(feature = "SKReachConstraints")]
331        /// Setter for [`reachConstraints`][Self::reachConstraints].
332        #[unsafe(method(setReachConstraints:))]
333        #[unsafe(method_family = none)]
334        pub unsafe fn setReachConstraints(&self, reach_constraints: Option<&SKReachConstraints>);
335
336        #[cfg(feature = "SKConstraint")]
337        /// Optional array of SKConstraints
338        /// Constraints are evaluated each frame after actions and physics.
339        /// The node's transform will be changed to satisfy the constraint.
340        #[unsafe(method(constraints))]
341        #[unsafe(method_family = none)]
342        pub unsafe fn constraints(&self) -> Option<Retained<NSArray<SKConstraint>>>;
343
344        #[cfg(feature = "SKConstraint")]
345        /// Setter for [`constraints`][Self::constraints].
346        #[unsafe(method(setConstraints:))]
347        #[unsafe(method_family = none)]
348        pub unsafe fn setConstraints(&self, constraints: Option<&NSArray<SKConstraint>>);
349
350        #[cfg(feature = "SKAttribute")]
351        /// Optional dictionary of SKAttributeValues
352        /// Attributes can be used with custom SKShaders.
353        /// DEPRECATED: Attributes are only available for node classes supporting SKShader (see SKSpriteNode etc.).
354        #[deprecated]
355        #[unsafe(method(attributeValues))]
356        #[unsafe(method_family = none)]
357        pub unsafe fn attributeValues(&self) -> Retained<NSDictionary<NSString, SKAttributeValue>>;
358
359        #[cfg(feature = "SKAttribute")]
360        /// Setter for [`attributeValues`][Self::attributeValues].
361        #[deprecated]
362        #[unsafe(method(setAttributeValues:))]
363        #[unsafe(method_family = none)]
364        pub unsafe fn setAttributeValues(
365            &self,
366            attribute_values: &NSDictionary<NSString, SKAttributeValue>,
367        );
368
369        #[cfg(feature = "SKAttribute")]
370        #[deprecated]
371        #[unsafe(method(valueForAttributeNamed:))]
372        #[unsafe(method_family = none)]
373        pub unsafe fn valueForAttributeNamed(
374            &self,
375            key: &NSString,
376        ) -> Option<Retained<SKAttributeValue>>;
377
378        #[cfg(feature = "SKAttribute")]
379        #[deprecated]
380        #[unsafe(method(setValue:forAttributeNamed:))]
381        #[unsafe(method_family = none)]
382        pub unsafe fn setValue_forAttributeNamed(&self, value: &SKAttributeValue, key: &NSString);
383
384        #[cfg(feature = "objc2-core-foundation")]
385        /// Sets both the x
386        /// &
387        /// y scale
388        ///
389        ///
390        /// Parameter `scale`: the uniform scale to set.
391        #[unsafe(method(setScale:))]
392        #[unsafe(method_family = none)]
393        pub unsafe fn setScale(&self, scale: CGFloat);
394
395        /// Adds a node as a child node of this node
396        ///
397        /// The added node must not have a parent.
398        ///
399        ///
400        /// Parameter `node`: the child node to add.
401        #[unsafe(method(addChild:))]
402        #[unsafe(method_family = none)]
403        pub unsafe fn addChild(&self, node: &SKNode);
404
405        #[unsafe(method(insertChild:atIndex:))]
406        #[unsafe(method_family = none)]
407        pub unsafe fn insertChild_atIndex(&self, node: &SKNode, index: NSInteger);
408
409        #[unsafe(method(removeChildrenInArray:))]
410        #[unsafe(method_family = none)]
411        pub unsafe fn removeChildrenInArray(&self, nodes: &NSArray<SKNode>);
412
413        #[unsafe(method(removeAllChildren))]
414        #[unsafe(method_family = none)]
415        pub unsafe fn removeAllChildren(&self);
416
417        #[unsafe(method(removeFromParent))]
418        #[unsafe(method_family = none)]
419        pub unsafe fn removeFromParent(&self);
420
421        #[unsafe(method(moveToParent:))]
422        #[unsafe(method_family = none)]
423        pub unsafe fn moveToParent(&self, parent: &SKNode);
424
425        #[unsafe(method(childNodeWithName:))]
426        #[unsafe(method_family = none)]
427        pub unsafe fn childNodeWithName(&self, name: &NSString) -> Option<Retained<SKNode>>;
428
429        #[cfg(feature = "block2")]
430        #[unsafe(method(enumerateChildNodesWithName:usingBlock:))]
431        #[unsafe(method_family = none)]
432        pub unsafe fn enumerateChildNodesWithName_usingBlock(
433            &self,
434            name: &NSString,
435            block: &block2::Block<dyn Fn(NonNull<SKNode>, NonNull<Bool>)>,
436        );
437
438        /// Simplified shorthand for enumerateChildNodesWithName that returns an array of the matching nodes.
439        /// This allows subscripting of the form:
440        /// NSArray *childrenMatchingName = node[
441        /// "
442        /// name"]
443        ///
444        /// or even complex like:
445        /// NSArray *siblingsBeginningWithA = node[
446        /// "
447        /// ../a*"]
448        ///
449        ///
450        /// Parameter `name`: An Xpath style path that can include simple regular expressions for matching node names.
451        ///
452        /// See: enumerateChildNodesWithName:usingBlock:
453        #[unsafe(method(objectForKeyedSubscript:))]
454        #[unsafe(method_family = none)]
455        pub unsafe fn objectForKeyedSubscript(&self, name: &NSString) -> Retained<NSArray<SKNode>>;
456
457        #[unsafe(method(inParentHierarchy:))]
458        #[unsafe(method_family = none)]
459        pub unsafe fn inParentHierarchy(&self, parent: &SKNode) -> bool;
460
461        #[cfg(feature = "SKAction")]
462        #[unsafe(method(runAction:))]
463        #[unsafe(method_family = none)]
464        pub unsafe fn runAction(&self, action: &SKAction);
465
466        #[cfg(all(feature = "SKAction", feature = "block2"))]
467        #[unsafe(method(runAction:completion:))]
468        #[unsafe(method_family = none)]
469        pub unsafe fn runAction_completion(
470            &self,
471            action: &SKAction,
472            block: &block2::Block<dyn Fn()>,
473        );
474
475        #[cfg(feature = "SKAction")]
476        #[unsafe(method(runAction:withKey:))]
477        #[unsafe(method_family = none)]
478        pub unsafe fn runAction_withKey(&self, action: &SKAction, key: &NSString);
479
480        #[unsafe(method(hasActions))]
481        #[unsafe(method_family = none)]
482        pub unsafe fn hasActions(&self) -> bool;
483
484        #[cfg(feature = "SKAction")]
485        #[unsafe(method(actionForKey:))]
486        #[unsafe(method_family = none)]
487        pub unsafe fn actionForKey(&self, key: &NSString) -> Option<Retained<SKAction>>;
488
489        #[unsafe(method(removeActionForKey:))]
490        #[unsafe(method_family = none)]
491        pub unsafe fn removeActionForKey(&self, key: &NSString);
492
493        #[unsafe(method(removeAllActions))]
494        #[unsafe(method_family = none)]
495        pub unsafe fn removeAllActions(&self);
496
497        #[cfg(feature = "objc2-core-foundation")]
498        #[unsafe(method(containsPoint:))]
499        #[unsafe(method_family = none)]
500        pub unsafe fn containsPoint(&self, p: CGPoint) -> bool;
501
502        #[cfg(feature = "objc2-core-foundation")]
503        /// Returns the node itself or a child node at the point given.
504        /// If the receiver is returned there is no child node at the given point.
505        ///
506        /// Returns: a child node or self at the given location.
507        #[unsafe(method(nodeAtPoint:))]
508        #[unsafe(method_family = none)]
509        pub unsafe fn nodeAtPoint(&self, p: CGPoint) -> Retained<SKNode>;
510
511        #[cfg(feature = "objc2-core-foundation")]
512        #[unsafe(method(nodesAtPoint:))]
513        #[unsafe(method_family = none)]
514        pub unsafe fn nodesAtPoint(&self, p: CGPoint) -> Retained<NSArray<SKNode>>;
515
516        #[cfg(feature = "objc2-core-foundation")]
517        #[unsafe(method(convertPoint:fromNode:))]
518        #[unsafe(method_family = none)]
519        pub unsafe fn convertPoint_fromNode(&self, point: CGPoint, node: &SKNode) -> CGPoint;
520
521        #[cfg(feature = "objc2-core-foundation")]
522        #[unsafe(method(convertPoint:toNode:))]
523        #[unsafe(method_family = none)]
524        pub unsafe fn convertPoint_toNode(&self, point: CGPoint, node: &SKNode) -> CGPoint;
525
526        #[unsafe(method(intersectsNode:))]
527        #[unsafe(method_family = none)]
528        pub unsafe fn intersectsNode(&self, node: &SKNode) -> bool;
529
530        #[unsafe(method(isEqualToNode:))]
531        #[unsafe(method_family = none)]
532        pub unsafe fn isEqualToNode(&self, node: &SKNode) -> bool;
533    );
534}
535
536/// Methods declared on superclass `NSObject`.
537#[cfg(feature = "objc2-app-kit")]
538#[cfg(target_os = "macos")]
539impl SKNode {
540    extern_methods!(
541        #[unsafe(method(new))]
542        #[unsafe(method_family = new)]
543        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
544    );
545}
546
547mod private_NSEventSKNodeEvent {
548    pub trait Sealed {}
549}
550
551/// Category "SKNodeEvent" on [`NSEvent`].
552#[doc(alias = "SKNodeEvent")]
553pub unsafe trait NSEventSKNodeEvent:
554    ClassType + Sized + private_NSEventSKNodeEvent::Sealed
555{
556    extern_methods!(
557        #[cfg(all(feature = "objc2-app-kit", feature = "objc2-core-foundation"))]
558        #[cfg(target_os = "macos")]
559        #[unsafe(method(locationInNode:))]
560        #[unsafe(method_family = none)]
561        unsafe fn locationInNode(&self, node: &SKNode) -> CGPoint;
562    );
563}
564
565#[cfg(feature = "objc2-app-kit")]
566#[cfg(target_os = "macos")]
567impl private_NSEventSKNodeEvent::Sealed for NSEvent {}
568#[cfg(feature = "objc2-app-kit")]
569#[cfg(target_os = "macos")]
570unsafe impl NSEventSKNodeEvent for NSEvent {}