1use core::cell::UnsafeCell;
4use core::ffi::*;
5use core::marker::{PhantomData, PhantomPinned};
6use core::ptr::NonNull;
7use objc2::__framework_prelude::*;
8#[cfg(feature = "objc2-core-foundation")]
9use objc2_core_foundation::*;
10
11use crate::*;
12
13#[doc(alias = "GLKMatrixStackRef")]
15#[repr(C)]
16pub struct GLKMatrixStack {
17 inner: [u8; 0],
18 _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
19}
20
21#[cfg(feature = "objc2-core-foundation")]
22cf_type!(
23 unsafe impl GLKMatrixStack {}
24);
25cf_objc2_type!(
26 unsafe impl RefEncode<"_GLKMatrixStack"> for GLKMatrixStack {}
27);
28
29impl GLKMatrixStack {
30 #[doc(alias = "GLKMatrixStackCreate")]
31 #[cfg(feature = "objc2-core-foundation")]
32 #[inline]
33 pub unsafe fn new(alloc: Option<&CFAllocator>) -> Option<CFRetained<GLKMatrixStack>> {
34 extern "C-unwind" {
35 fn GLKMatrixStackCreate(alloc: Option<&CFAllocator>)
36 -> Option<NonNull<GLKMatrixStack>>;
37 }
38 let ret = unsafe { GLKMatrixStackCreate(alloc) };
39 ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
40 }
41}
42
43#[cfg(feature = "objc2-core-foundation")]
44unsafe impl ConcreteType for GLKMatrixStack {
45 #[doc(alias = "GLKMatrixStackGetTypeID")]
46 #[inline]
47 fn type_id() -> CFTypeID {
48 extern "C-unwind" {
49 fn GLKMatrixStackGetTypeID() -> CFTypeID;
50 }
51 unsafe { GLKMatrixStackGetTypeID() }
52 }
53}
54
55impl GLKMatrixStack {
56 #[doc(alias = "GLKMatrixStackPush")]
57 #[inline]
58 pub unsafe fn push(&self) {
59 extern "C-unwind" {
60 fn GLKMatrixStackPush(stack: &GLKMatrixStack);
61 }
62 unsafe { GLKMatrixStackPush(self) }
63 }
64
65 #[doc(alias = "GLKMatrixStackPop")]
66 #[inline]
67 pub unsafe fn pop(&self) {
68 extern "C-unwind" {
69 fn GLKMatrixStackPop(stack: &GLKMatrixStack);
70 }
71 unsafe { GLKMatrixStackPop(self) }
72 }
73
74 #[doc(alias = "GLKMatrixStackSize")]
75 #[inline]
76 pub unsafe fn size(&self) -> c_int {
77 extern "C-unwind" {
78 fn GLKMatrixStackSize(stack: &GLKMatrixStack) -> c_int;
79 }
80 unsafe { GLKMatrixStackSize(self) }
81 }
82
83 #[doc(alias = "GLKMatrixStackLoadMatrix4")]
84 #[cfg(feature = "GLKMathTypes")]
85 #[inline]
86 pub unsafe fn load_matrix4(&self, matrix: GLKMatrix4) {
87 extern "C-unwind" {
88 fn GLKMatrixStackLoadMatrix4(stack: &GLKMatrixStack, matrix: GLKMatrix4);
89 }
90 unsafe { GLKMatrixStackLoadMatrix4(self, matrix) }
91 }
92
93 #[doc(alias = "GLKMatrixStackGetMatrix4")]
94 #[cfg(feature = "GLKMathTypes")]
95 #[inline]
96 pub unsafe fn matrix4(&self) -> GLKMatrix4 {
97 extern "C-unwind" {
98 fn GLKMatrixStackGetMatrix4(stack: &GLKMatrixStack) -> GLKMatrix4;
99 }
100 unsafe { GLKMatrixStackGetMatrix4(self) }
101 }
102
103 #[doc(alias = "GLKMatrixStackGetMatrix3")]
104 #[cfg(feature = "GLKMathTypes")]
105 #[inline]
106 pub unsafe fn matrix3(&self) -> GLKMatrix3 {
107 extern "C-unwind" {
108 fn GLKMatrixStackGetMatrix3(stack: &GLKMatrixStack) -> GLKMatrix3;
109 }
110 unsafe { GLKMatrixStackGetMatrix3(self) }
111 }
112
113 #[doc(alias = "GLKMatrixStackGetMatrix2")]
114 #[cfg(feature = "GLKMathTypes")]
115 #[inline]
116 pub unsafe fn matrix2(&self) -> GLKMatrix2 {
117 extern "C-unwind" {
118 fn GLKMatrixStackGetMatrix2(stack: &GLKMatrixStack) -> GLKMatrix2;
119 }
120 unsafe { GLKMatrixStackGetMatrix2(self) }
121 }
122
123 #[doc(alias = "GLKMatrixStackGetMatrix4Inverse")]
124 #[cfg(feature = "GLKMathTypes")]
125 #[inline]
126 pub unsafe fn matrix4_inverse(&self) -> GLKMatrix4 {
127 extern "C-unwind" {
128 fn GLKMatrixStackGetMatrix4Inverse(stack: &GLKMatrixStack) -> GLKMatrix4;
129 }
130 unsafe { GLKMatrixStackGetMatrix4Inverse(self) }
131 }
132
133 #[doc(alias = "GLKMatrixStackGetMatrix4InverseTranspose")]
134 #[cfg(feature = "GLKMathTypes")]
135 #[inline]
136 pub unsafe fn matrix4_inverse_transpose(&self) -> GLKMatrix4 {
137 extern "C-unwind" {
138 fn GLKMatrixStackGetMatrix4InverseTranspose(stack: &GLKMatrixStack) -> GLKMatrix4;
139 }
140 unsafe { GLKMatrixStackGetMatrix4InverseTranspose(self) }
141 }
142
143 #[doc(alias = "GLKMatrixStackGetMatrix3Inverse")]
144 #[cfg(feature = "GLKMathTypes")]
145 #[inline]
146 pub unsafe fn matrix3_inverse(&self) -> GLKMatrix3 {
147 extern "C-unwind" {
148 fn GLKMatrixStackGetMatrix3Inverse(stack: &GLKMatrixStack) -> GLKMatrix3;
149 }
150 unsafe { GLKMatrixStackGetMatrix3Inverse(self) }
151 }
152
153 #[doc(alias = "GLKMatrixStackGetMatrix3InverseTranspose")]
154 #[cfg(feature = "GLKMathTypes")]
155 #[inline]
156 pub unsafe fn matrix3_inverse_transpose(&self) -> GLKMatrix3 {
157 extern "C-unwind" {
158 fn GLKMatrixStackGetMatrix3InverseTranspose(stack: &GLKMatrixStack) -> GLKMatrix3;
159 }
160 unsafe { GLKMatrixStackGetMatrix3InverseTranspose(self) }
161 }
162
163 #[doc(alias = "GLKMatrixStackMultiplyMatrix4")]
164 #[cfg(feature = "GLKMathTypes")]
165 #[inline]
166 pub unsafe fn multiply_matrix4(&self, matrix: GLKMatrix4) {
167 extern "C-unwind" {
168 fn GLKMatrixStackMultiplyMatrix4(stack: &GLKMatrixStack, matrix: GLKMatrix4);
169 }
170 unsafe { GLKMatrixStackMultiplyMatrix4(self, matrix) }
171 }
172
173 #[doc(alias = "GLKMatrixStackMultiplyMatrixStack")]
174 #[inline]
175 pub unsafe fn multiply_matrix_stack(&self, stack_right: &GLKMatrixStack) {
176 extern "C-unwind" {
177 fn GLKMatrixStackMultiplyMatrixStack(
178 stack_left: &GLKMatrixStack,
179 stack_right: &GLKMatrixStack,
180 );
181 }
182 unsafe { GLKMatrixStackMultiplyMatrixStack(self, stack_right) }
183 }
184
185 #[doc(alias = "GLKMatrixStackTranslate")]
186 #[inline]
187 pub unsafe fn translate(&self, tx: c_float, ty: c_float, tz: c_float) {
188 extern "C-unwind" {
189 fn GLKMatrixStackTranslate(
190 stack: &GLKMatrixStack,
191 tx: c_float,
192 ty: c_float,
193 tz: c_float,
194 );
195 }
196 unsafe { GLKMatrixStackTranslate(self, tx, ty, tz) }
197 }
198
199 #[doc(alias = "GLKMatrixStackTranslateWithVector3")]
200 #[cfg(feature = "GLKMathTypes")]
201 #[inline]
202 pub unsafe fn translate_with_vector3(&self, translation_vector: GLKVector3) {
203 extern "C-unwind" {
204 fn GLKMatrixStackTranslateWithVector3(
205 stack: &GLKMatrixStack,
206 translation_vector: GLKVector3,
207 );
208 }
209 unsafe { GLKMatrixStackTranslateWithVector3(self, translation_vector) }
210 }
211
212 #[doc(alias = "GLKMatrixStackTranslateWithVector4")]
213 #[cfg(feature = "GLKMathTypes")]
214 #[inline]
215 pub unsafe fn translate_with_vector4(&self, translation_vector: GLKVector4) {
216 extern "C-unwind" {
217 fn GLKMatrixStackTranslateWithVector4(
218 stack: &GLKMatrixStack,
219 translation_vector: GLKVector4,
220 );
221 }
222 unsafe { GLKMatrixStackTranslateWithVector4(self, translation_vector) }
223 }
224
225 #[doc(alias = "GLKMatrixStackScale")]
226 #[inline]
227 pub unsafe fn scale(&self, sx: c_float, sy: c_float, sz: c_float) {
228 extern "C-unwind" {
229 fn GLKMatrixStackScale(stack: &GLKMatrixStack, sx: c_float, sy: c_float, sz: c_float);
230 }
231 unsafe { GLKMatrixStackScale(self, sx, sy, sz) }
232 }
233
234 #[doc(alias = "GLKMatrixStackScaleWithVector3")]
235 #[cfg(feature = "GLKMathTypes")]
236 #[inline]
237 pub unsafe fn scale_with_vector3(&self, scale_vector: GLKVector3) {
238 extern "C-unwind" {
239 fn GLKMatrixStackScaleWithVector3(stack: &GLKMatrixStack, scale_vector: GLKVector3);
240 }
241 unsafe { GLKMatrixStackScaleWithVector3(self, scale_vector) }
242 }
243
244 #[doc(alias = "GLKMatrixStackScaleWithVector4")]
245 #[cfg(feature = "GLKMathTypes")]
246 #[inline]
247 pub unsafe fn scale_with_vector4(&self, scale_vector: GLKVector4) {
248 extern "C-unwind" {
249 fn GLKMatrixStackScaleWithVector4(stack: &GLKMatrixStack, scale_vector: GLKVector4);
250 }
251 unsafe { GLKMatrixStackScaleWithVector4(self, scale_vector) }
252 }
253
254 #[doc(alias = "GLKMatrixStackRotate")]
255 #[inline]
256 pub unsafe fn rotate(&self, radians: c_float, x: c_float, y: c_float, z: c_float) {
257 extern "C-unwind" {
258 fn GLKMatrixStackRotate(
259 stack: &GLKMatrixStack,
260 radians: c_float,
261 x: c_float,
262 y: c_float,
263 z: c_float,
264 );
265 }
266 unsafe { GLKMatrixStackRotate(self, radians, x, y, z) }
267 }
268
269 #[doc(alias = "GLKMatrixStackRotateWithVector3")]
270 #[cfg(feature = "GLKMathTypes")]
271 #[inline]
272 pub unsafe fn rotate_with_vector3(&self, radians: c_float, axis_vector: GLKVector3) {
273 extern "C-unwind" {
274 fn GLKMatrixStackRotateWithVector3(
275 stack: &GLKMatrixStack,
276 radians: c_float,
277 axis_vector: GLKVector3,
278 );
279 }
280 unsafe { GLKMatrixStackRotateWithVector3(self, radians, axis_vector) }
281 }
282
283 #[doc(alias = "GLKMatrixStackRotateWithVector4")]
284 #[cfg(feature = "GLKMathTypes")]
285 #[inline]
286 pub unsafe fn rotate_with_vector4(&self, radians: c_float, axis_vector: GLKVector4) {
287 extern "C-unwind" {
288 fn GLKMatrixStackRotateWithVector4(
289 stack: &GLKMatrixStack,
290 radians: c_float,
291 axis_vector: GLKVector4,
292 );
293 }
294 unsafe { GLKMatrixStackRotateWithVector4(self, radians, axis_vector) }
295 }
296
297 #[doc(alias = "GLKMatrixStackRotateX")]
298 #[inline]
299 pub unsafe fn rotate_x(&self, radians: c_float) {
300 extern "C-unwind" {
301 fn GLKMatrixStackRotateX(stack: &GLKMatrixStack, radians: c_float);
302 }
303 unsafe { GLKMatrixStackRotateX(self, radians) }
304 }
305
306 #[doc(alias = "GLKMatrixStackRotateY")]
307 #[inline]
308 pub unsafe fn rotate_y(&self, radians: c_float) {
309 extern "C-unwind" {
310 fn GLKMatrixStackRotateY(stack: &GLKMatrixStack, radians: c_float);
311 }
312 unsafe { GLKMatrixStackRotateY(self, radians) }
313 }
314
315 #[doc(alias = "GLKMatrixStackRotateZ")]
316 #[inline]
317 pub unsafe fn rotate_z(&self, radians: c_float) {
318 extern "C-unwind" {
319 fn GLKMatrixStackRotateZ(stack: &GLKMatrixStack, radians: c_float);
320 }
321 unsafe { GLKMatrixStackRotateZ(self, radians) }
322 }
323}
324
325#[cfg(feature = "objc2-core-foundation")]
326#[deprecated = "renamed to `GLKMatrixStack::new`"]
327#[inline]
328pub unsafe extern "C-unwind" fn GLKMatrixStackCreate(
329 alloc: Option<&CFAllocator>,
330) -> Option<CFRetained<GLKMatrixStack>> {
331 extern "C-unwind" {
332 fn GLKMatrixStackCreate(alloc: Option<&CFAllocator>) -> Option<NonNull<GLKMatrixStack>>;
333 }
334 let ret = unsafe { GLKMatrixStackCreate(alloc) };
335 ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
336}
337
338extern "C-unwind" {
339 #[deprecated = "renamed to `GLKMatrixStack::push`"]
340 pub fn GLKMatrixStackPush(stack: &GLKMatrixStack);
341}
342
343extern "C-unwind" {
344 #[deprecated = "renamed to `GLKMatrixStack::pop`"]
345 pub fn GLKMatrixStackPop(stack: &GLKMatrixStack);
346}
347
348extern "C-unwind" {
349 #[deprecated = "renamed to `GLKMatrixStack::size`"]
350 pub fn GLKMatrixStackSize(stack: &GLKMatrixStack) -> c_int;
351}
352
353extern "C-unwind" {
354 #[cfg(feature = "GLKMathTypes")]
355 #[deprecated = "renamed to `GLKMatrixStack::load_matrix4`"]
356 pub fn GLKMatrixStackLoadMatrix4(stack: &GLKMatrixStack, matrix: GLKMatrix4);
357}
358
359extern "C-unwind" {
360 #[cfg(feature = "GLKMathTypes")]
361 #[deprecated = "renamed to `GLKMatrixStack::matrix4`"]
362 pub fn GLKMatrixStackGetMatrix4(stack: &GLKMatrixStack) -> GLKMatrix4;
363}
364
365extern "C-unwind" {
366 #[cfg(feature = "GLKMathTypes")]
367 #[deprecated = "renamed to `GLKMatrixStack::matrix3`"]
368 pub fn GLKMatrixStackGetMatrix3(stack: &GLKMatrixStack) -> GLKMatrix3;
369}
370
371extern "C-unwind" {
372 #[cfg(feature = "GLKMathTypes")]
373 #[deprecated = "renamed to `GLKMatrixStack::matrix2`"]
374 pub fn GLKMatrixStackGetMatrix2(stack: &GLKMatrixStack) -> GLKMatrix2;
375}
376
377extern "C-unwind" {
378 #[cfg(feature = "GLKMathTypes")]
379 #[deprecated = "renamed to `GLKMatrixStack::matrix4_inverse`"]
380 pub fn GLKMatrixStackGetMatrix4Inverse(stack: &GLKMatrixStack) -> GLKMatrix4;
381}
382
383extern "C-unwind" {
384 #[cfg(feature = "GLKMathTypes")]
385 #[deprecated = "renamed to `GLKMatrixStack::matrix4_inverse_transpose`"]
386 pub fn GLKMatrixStackGetMatrix4InverseTranspose(stack: &GLKMatrixStack) -> GLKMatrix4;
387}
388
389extern "C-unwind" {
390 #[cfg(feature = "GLKMathTypes")]
391 #[deprecated = "renamed to `GLKMatrixStack::matrix3_inverse`"]
392 pub fn GLKMatrixStackGetMatrix3Inverse(stack: &GLKMatrixStack) -> GLKMatrix3;
393}
394
395extern "C-unwind" {
396 #[cfg(feature = "GLKMathTypes")]
397 #[deprecated = "renamed to `GLKMatrixStack::matrix3_inverse_transpose`"]
398 pub fn GLKMatrixStackGetMatrix3InverseTranspose(stack: &GLKMatrixStack) -> GLKMatrix3;
399}
400
401extern "C-unwind" {
402 #[cfg(feature = "GLKMathTypes")]
403 #[deprecated = "renamed to `GLKMatrixStack::multiply_matrix4`"]
404 pub fn GLKMatrixStackMultiplyMatrix4(stack: &GLKMatrixStack, matrix: GLKMatrix4);
405}
406
407extern "C-unwind" {
408 #[deprecated = "renamed to `GLKMatrixStack::multiply_matrix_stack`"]
409 pub fn GLKMatrixStackMultiplyMatrixStack(
410 stack_left: &GLKMatrixStack,
411 stack_right: &GLKMatrixStack,
412 );
413}
414
415extern "C-unwind" {
416 #[deprecated = "renamed to `GLKMatrixStack::translate`"]
417 pub fn GLKMatrixStackTranslate(stack: &GLKMatrixStack, tx: c_float, ty: c_float, tz: c_float);
418}
419
420extern "C-unwind" {
421 #[cfg(feature = "GLKMathTypes")]
422 #[deprecated = "renamed to `GLKMatrixStack::translate_with_vector3`"]
423 pub fn GLKMatrixStackTranslateWithVector3(
424 stack: &GLKMatrixStack,
425 translation_vector: GLKVector3,
426 );
427}
428
429extern "C-unwind" {
430 #[cfg(feature = "GLKMathTypes")]
431 #[deprecated = "renamed to `GLKMatrixStack::translate_with_vector4`"]
432 pub fn GLKMatrixStackTranslateWithVector4(
433 stack: &GLKMatrixStack,
434 translation_vector: GLKVector4,
435 );
436}
437
438extern "C-unwind" {
439 #[deprecated = "renamed to `GLKMatrixStack::scale`"]
440 pub fn GLKMatrixStackScale(stack: &GLKMatrixStack, sx: c_float, sy: c_float, sz: c_float);
441}
442
443extern "C-unwind" {
444 #[cfg(feature = "GLKMathTypes")]
445 #[deprecated = "renamed to `GLKMatrixStack::scale_with_vector3`"]
446 pub fn GLKMatrixStackScaleWithVector3(stack: &GLKMatrixStack, scale_vector: GLKVector3);
447}
448
449extern "C-unwind" {
450 #[cfg(feature = "GLKMathTypes")]
451 #[deprecated = "renamed to `GLKMatrixStack::scale_with_vector4`"]
452 pub fn GLKMatrixStackScaleWithVector4(stack: &GLKMatrixStack, scale_vector: GLKVector4);
453}
454
455extern "C-unwind" {
456 #[deprecated = "renamed to `GLKMatrixStack::rotate`"]
457 pub fn GLKMatrixStackRotate(
458 stack: &GLKMatrixStack,
459 radians: c_float,
460 x: c_float,
461 y: c_float,
462 z: c_float,
463 );
464}
465
466extern "C-unwind" {
467 #[cfg(feature = "GLKMathTypes")]
468 #[deprecated = "renamed to `GLKMatrixStack::rotate_with_vector3`"]
469 pub fn GLKMatrixStackRotateWithVector3(
470 stack: &GLKMatrixStack,
471 radians: c_float,
472 axis_vector: GLKVector3,
473 );
474}
475
476extern "C-unwind" {
477 #[cfg(feature = "GLKMathTypes")]
478 #[deprecated = "renamed to `GLKMatrixStack::rotate_with_vector4`"]
479 pub fn GLKMatrixStackRotateWithVector4(
480 stack: &GLKMatrixStack,
481 radians: c_float,
482 axis_vector: GLKVector4,
483 );
484}
485
486extern "C-unwind" {
487 #[deprecated = "renamed to `GLKMatrixStack::rotate_x`"]
488 pub fn GLKMatrixStackRotateX(stack: &GLKMatrixStack, radians: c_float);
489}
490
491extern "C-unwind" {
492 #[deprecated = "renamed to `GLKMatrixStack::rotate_y`"]
493 pub fn GLKMatrixStackRotateY(stack: &GLKMatrixStack, radians: c_float);
494}
495
496extern "C-unwind" {
497 #[deprecated = "renamed to `GLKMatrixStack::rotate_z`"]
498 pub fn GLKMatrixStackRotateZ(stack: &GLKMatrixStack, radians: c_float);
499}