1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

// NS_TYPED_ENUM
pub type CAEmitterLayerEmitterShape = NSString;

// NS_TYPED_ENUM
pub type CAEmitterLayerEmitterMode = NSString;

// NS_TYPED_ENUM
pub type CAEmitterLayerRenderMode = NSString;

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "CALayer")]
    pub struct CAEmitterLayer;

    #[cfg(feature = "CALayer")]
    unsafe impl ClassType for CAEmitterLayer {
        #[inherits(NSObject)]
        type Super = CALayer;
        type Mutability = InteriorMutable;
    }
);

#[cfg(all(feature = "CALayer", feature = "CAMediaTiming"))]
unsafe impl CAMediaTiming for CAEmitterLayer {}

#[cfg(feature = "CALayer")]
unsafe impl NSCoding for CAEmitterLayer {}

#[cfg(feature = "CALayer")]
unsafe impl NSObjectProtocol for CAEmitterLayer {}

#[cfg(feature = "CALayer")]
unsafe impl NSSecureCoding for CAEmitterLayer {}

extern_methods!(
    #[cfg(feature = "CALayer")]
    unsafe impl CAEmitterLayer {
        #[cfg(feature = "CAEmitterCell")]
        #[method_id(@__retain_semantics Other emitterCells)]
        pub unsafe fn emitterCells(&self) -> Option<Retained<NSArray<CAEmitterCell>>>;

        #[cfg(feature = "CAEmitterCell")]
        #[method(setEmitterCells:)]
        pub unsafe fn setEmitterCells(&self, emitter_cells: Option<&NSArray<CAEmitterCell>>);

        #[method(birthRate)]
        pub unsafe fn birthRate(&self) -> c_float;

        #[method(setBirthRate:)]
        pub unsafe fn setBirthRate(&self, birth_rate: c_float);

        #[method(lifetime)]
        pub unsafe fn lifetime(&self) -> c_float;

        #[method(setLifetime:)]
        pub unsafe fn setLifetime(&self, lifetime: c_float);

        #[method(emitterPosition)]
        pub unsafe fn emitterPosition(&self) -> CGPoint;

        #[method(setEmitterPosition:)]
        pub unsafe fn setEmitterPosition(&self, emitter_position: CGPoint);

        #[method(emitterZPosition)]
        pub unsafe fn emitterZPosition(&self) -> CGFloat;

        #[method(setEmitterZPosition:)]
        pub unsafe fn setEmitterZPosition(&self, emitter_z_position: CGFloat);

        #[method(emitterSize)]
        pub unsafe fn emitterSize(&self) -> CGSize;

        #[method(setEmitterSize:)]
        pub unsafe fn setEmitterSize(&self, emitter_size: CGSize);

        #[method(emitterDepth)]
        pub unsafe fn emitterDepth(&self) -> CGFloat;

        #[method(setEmitterDepth:)]
        pub unsafe fn setEmitterDepth(&self, emitter_depth: CGFloat);

        #[method_id(@__retain_semantics Other emitterShape)]
        pub unsafe fn emitterShape(&self) -> Retained<CAEmitterLayerEmitterShape>;

        #[method(setEmitterShape:)]
        pub unsafe fn setEmitterShape(&self, emitter_shape: &CAEmitterLayerEmitterShape);

        #[method_id(@__retain_semantics Other emitterMode)]
        pub unsafe fn emitterMode(&self) -> Retained<CAEmitterLayerEmitterMode>;

        #[method(setEmitterMode:)]
        pub unsafe fn setEmitterMode(&self, emitter_mode: &CAEmitterLayerEmitterMode);

        #[method_id(@__retain_semantics Other renderMode)]
        pub unsafe fn renderMode(&self) -> Retained<CAEmitterLayerRenderMode>;

        #[method(setRenderMode:)]
        pub unsafe fn setRenderMode(&self, render_mode: &CAEmitterLayerRenderMode);

        #[method(preservesDepth)]
        pub unsafe fn preservesDepth(&self) -> bool;

        #[method(setPreservesDepth:)]
        pub unsafe fn setPreservesDepth(&self, preserves_depth: bool);

        #[method(velocity)]
        pub unsafe fn velocity(&self) -> c_float;

        #[method(setVelocity:)]
        pub unsafe fn setVelocity(&self, velocity: c_float);

        #[method(scale)]
        pub unsafe fn scale(&self) -> c_float;

        #[method(setScale:)]
        pub unsafe fn setScale(&self, scale: c_float);

        #[method(spin)]
        pub unsafe fn spin(&self) -> c_float;

        #[method(setSpin:)]
        pub unsafe fn setSpin(&self, spin: c_float);

        #[method(seed)]
        pub unsafe fn seed(&self) -> c_uint;

        #[method(setSeed:)]
        pub unsafe fn setSeed(&self, seed: c_uint);
    }
);

extern_methods!(
    /// Methods declared on superclass `CALayer`
    #[cfg(feature = "CALayer")]
    unsafe impl CAEmitterLayer {
        #[method_id(@__retain_semantics Other layer)]
        pub unsafe fn layer() -> Retained<Self>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[method_id(@__retain_semantics Init initWithLayer:)]
        pub unsafe fn initWithLayer(this: Allocated<Self>, layer: &AnyObject) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    #[cfg(feature = "CALayer")]
    unsafe impl CAEmitterLayer {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Retained<Self>;
    }
);

extern "C" {
    pub static kCAEmitterLayerPoint: &'static CAEmitterLayerEmitterShape;
}

extern "C" {
    pub static kCAEmitterLayerLine: &'static CAEmitterLayerEmitterShape;
}

extern "C" {
    pub static kCAEmitterLayerRectangle: &'static CAEmitterLayerEmitterShape;
}

extern "C" {
    pub static kCAEmitterLayerCuboid: &'static CAEmitterLayerEmitterShape;
}

extern "C" {
    pub static kCAEmitterLayerCircle: &'static CAEmitterLayerEmitterShape;
}

extern "C" {
    pub static kCAEmitterLayerSphere: &'static CAEmitterLayerEmitterShape;
}

extern "C" {
    pub static kCAEmitterLayerPoints: &'static CAEmitterLayerEmitterMode;
}

extern "C" {
    pub static kCAEmitterLayerOutline: &'static CAEmitterLayerEmitterMode;
}

extern "C" {
    pub static kCAEmitterLayerSurface: &'static CAEmitterLayerEmitterMode;
}

extern "C" {
    pub static kCAEmitterLayerVolume: &'static CAEmitterLayerEmitterMode;
}

extern "C" {
    pub static kCAEmitterLayerUnordered: &'static CAEmitterLayerRenderMode;
}

extern "C" {
    pub static kCAEmitterLayerOldestFirst: &'static CAEmitterLayerRenderMode;
}

extern "C" {
    pub static kCAEmitterLayerOldestLast: &'static CAEmitterLayerRenderMode;
}

extern "C" {
    pub static kCAEmitterLayerBackToFront: &'static CAEmitterLayerRenderMode;
}

extern "C" {
    pub static kCAEmitterLayerAdditive: &'static CAEmitterLayerRenderMode;
}