1// Package graphene was automatically generated by github.com/bnema/puregotk DO NOT EDIT
2package graphene
3
4import (
5 "structs"
6 "unsafe"
7
8 "github.com/ebitengine/purego"
9
10 "github.com/bnema/puregotk/pkg/core"
11 "github.com/bnema/puregotk/v4/gobject/types"
12)
13
14// A quaternion.
15//
16// The contents of the #graphene_quaternion_t structure are private
17// and should never be accessed directly.
18type Quaternion struct {
19 _ structs.HostLayout
20
21 X float32
22
23 Y float32
24
25 Z float32
26
27 W float32
28}
29
30var xQuaternionGLibType func() types.GType
31
32func QuaternionGLibType() types.GType {
33 return xQuaternionGLibType()
34}
35
36func (x *Quaternion) GoPointer() uintptr {
37 return uintptr(unsafe.Pointer(x))
38}
39
40var xQuaternionAlloc func() *Quaternion
41
42// Allocates a new #graphene_quaternion_t.
43//
44// The contents of the returned value are undefined.
45func QuaternionAlloc() *Quaternion {
46
47 cret := xQuaternionAlloc()
48 return cret
49}
50
51var xQuaternionAdd func(uintptr, *Quaternion, *Quaternion)
52
53// Adds two #graphene_quaternion_t @a and @b.
54func (x *Quaternion) Add(BVar *Quaternion, ResVar *Quaternion) {
55
56 xQuaternionAdd(x.GoPointer(), BVar, ResVar)
57
58}
59
60var xQuaternionDot func(uintptr, *Quaternion) float32
61
62// Computes the dot product of two #graphene_quaternion_t.
63func (x *Quaternion) Dot(BVar *Quaternion) float32 {
64
65 cret := xQuaternionDot(x.GoPointer(), BVar)
66 return cret
67}
68
69var xQuaternionEqual func(uintptr, *Quaternion) bool
70
71// Checks whether the given quaternions are equal.
72func (x *Quaternion) Equal(BVar *Quaternion) bool {
73
74 cret := xQuaternionEqual(x.GoPointer(), BVar)
75 return cret
76}
77
78var xQuaternionFree func(uintptr)
79
80// Releases the resources allocated by graphene_quaternion_alloc().
81func (x *Quaternion) Free() {
82
83 xQuaternionFree(x.GoPointer())
84
85}
86
87var xQuaternionInit func(uintptr, float32, float32, float32, float32) *Quaternion
88
89// Initializes a #graphene_quaternion_t using the given four values.
90func (x *Quaternion) Init(XVar float32, YVar float32, ZVar float32, WVar float32) *Quaternion {
91
92 cret := xQuaternionInit(x.GoPointer(), XVar, YVar, ZVar, WVar)
93 return cret
94}
95
96var xQuaternionInitFromAngleVec3 func(uintptr, float32, *Vec3) *Quaternion
97
98// Initializes a #graphene_quaternion_t using an @angle on a
99// specific @axis.
100func (x *Quaternion) InitFromAngleVec3(AngleVar float32, AxisVar *Vec3) *Quaternion {
101
102 cret := xQuaternionInitFromAngleVec3(x.GoPointer(), AngleVar, AxisVar)
103 return cret
104}
105
106var xQuaternionInitFromAngles func(uintptr, float32, float32, float32) *Quaternion
107
108// Initializes a #graphene_quaternion_t using the values of
109// the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
110// on each axis.
111//
112// See also: graphene_quaternion_init_from_euler()
113func (x *Quaternion) InitFromAngles(DegXVar float32, DegYVar float32, DegZVar float32) *Quaternion {
114
115 cret := xQuaternionInitFromAngles(x.GoPointer(), DegXVar, DegYVar, DegZVar)
116 return cret
117}
118
119var xQuaternionInitFromEuler func(uintptr, *Euler) *Quaternion
120
121// Initializes a #graphene_quaternion_t using the given #graphene_euler_t.
122func (x *Quaternion) InitFromEuler(EVar *Euler) *Quaternion {
123
124 cret := xQuaternionInitFromEuler(x.GoPointer(), EVar)
125 return cret
126}
127
128var xQuaternionInitFromMatrix func(uintptr, *Matrix) *Quaternion
129
130// Initializes a #graphene_quaternion_t using the rotation components
131// of a transformation matrix.
132func (x *Quaternion) InitFromMatrix(MVar *Matrix) *Quaternion {
133
134 cret := xQuaternionInitFromMatrix(x.GoPointer(), MVar)
135 return cret
136}
137
138var xQuaternionInitFromQuaternion func(uintptr, *Quaternion) *Quaternion
139
140// Initializes a #graphene_quaternion_t with the values from @src.
141func (x *Quaternion) InitFromQuaternion(SrcVar *Quaternion) *Quaternion {
142
143 cret := xQuaternionInitFromQuaternion(x.GoPointer(), SrcVar)
144 return cret
145}
146
147var xQuaternionInitFromRadians func(uintptr, float32, float32, float32) *Quaternion
148
149// Initializes a #graphene_quaternion_t using the values of
150// the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
151// on each axis.
152//
153// See also: graphene_quaternion_init_from_euler()
154func (x *Quaternion) InitFromRadians(RadXVar float32, RadYVar float32, RadZVar float32) *Quaternion {
155
156 cret := xQuaternionInitFromRadians(x.GoPointer(), RadXVar, RadYVar, RadZVar)
157 return cret
158}
159
160var xQuaternionInitFromVec4 func(uintptr, *Vec4) *Quaternion
161
162// Initializes a #graphene_quaternion_t with the values from @src.
163func (x *Quaternion) InitFromVec4(SrcVar *Vec4) *Quaternion {
164
165 cret := xQuaternionInitFromVec4(x.GoPointer(), SrcVar)
166 return cret
167}
168
169var xQuaternionInitIdentity func(uintptr) *Quaternion
170
171// Initializes a #graphene_quaternion_t using the identity
172// transformation.
173func (x *Quaternion) InitIdentity() *Quaternion {
174
175 cret := xQuaternionInitIdentity(x.GoPointer())
176 return cret
177}
178
179var xQuaternionInvert func(uintptr, *Quaternion)
180
181// Inverts a #graphene_quaternion_t, and returns the conjugate
182// quaternion of @q.
183func (x *Quaternion) Invert(ResVar *Quaternion) {
184
185 xQuaternionInvert(x.GoPointer(), ResVar)
186
187}
188
189var xQuaternionMultiply func(uintptr, *Quaternion, *Quaternion)
190
191// Multiplies two #graphene_quaternion_t @a and @b.
192func (x *Quaternion) Multiply(BVar *Quaternion, ResVar *Quaternion) {
193
194 xQuaternionMultiply(x.GoPointer(), BVar, ResVar)
195
196}
197
198var xQuaternionNormalize func(uintptr, *Quaternion)
199
200// Normalizes a #graphene_quaternion_t.
201func (x *Quaternion) Normalize(ResVar *Quaternion) {
202
203 xQuaternionNormalize(x.GoPointer(), ResVar)
204
205}
206
207var xQuaternionScale func(uintptr, float32, *Quaternion)
208
209// Scales all the elements of a #graphene_quaternion_t @q using
210// the given scalar factor.
211func (x *Quaternion) Scale(FactorVar float32, ResVar *Quaternion) {
212
213 xQuaternionScale(x.GoPointer(), FactorVar, ResVar)
214
215}
216
217var xQuaternionSlerp func(uintptr, *Quaternion, float32, *Quaternion)
218
219// Interpolates between the two given quaternions using a spherical
220// linear interpolation, or [SLERP](http://en.wikipedia.org/wiki/Slerp),
221// using the given interpolation @factor.
222func (x *Quaternion) Slerp(BVar *Quaternion, FactorVar float32, ResVar *Quaternion) {
223
224 xQuaternionSlerp(x.GoPointer(), BVar, FactorVar, ResVar)
225
226}
227
228var xQuaternionToAngleVec3 func(uintptr, *float32, *Vec3)
229
230// Converts a quaternion into an @angle, @axis pair.
231func (x *Quaternion) ToAngleVec3(AngleVar *float32, AxisVar *Vec3) {
232
233 xQuaternionToAngleVec3(x.GoPointer(), AngleVar, AxisVar)
234
235}
236
237var xQuaternionToAngles func(uintptr, *float32, *float32, *float32)
238
239// Converts a #graphene_quaternion_t to its corresponding rotations
240// on the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
241// on each axis.
242func (x *Quaternion) ToAngles(DegXVar *float32, DegYVar *float32, DegZVar *float32) {
243
244 xQuaternionToAngles(x.GoPointer(), DegXVar, DegYVar, DegZVar)
245
246}
247
248var xQuaternionToMatrix func(uintptr, *Matrix)
249
250// Converts a quaternion into a transformation matrix expressing
251// the rotation defined by the #graphene_quaternion_t.
252func (x *Quaternion) ToMatrix(MVar *Matrix) {
253
254 xQuaternionToMatrix(x.GoPointer(), MVar)
255
256}
257
258var xQuaternionToRadians func(uintptr, *float32, *float32, *float32)
259
260// Converts a #graphene_quaternion_t to its corresponding rotations
261// on the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
262// on each axis.
263func (x *Quaternion) ToRadians(RadXVar *float32, RadYVar *float32, RadZVar *float32) {
264
265 xQuaternionToRadians(x.GoPointer(), RadXVar, RadYVar, RadZVar)
266
267}
268
269var xQuaternionToVec4 func(uintptr, *Vec4)
270
271// Copies the components of a #graphene_quaternion_t into a
272// #graphene_vec4_t.
273func (x *Quaternion) ToVec4(ResVar *Vec4) {
274
275 xQuaternionToVec4(x.GoPointer(), ResVar)
276
277}
278
279func init() {
280 core.SetPackageName("GRAPHENE", "graphene-gobject-1.0")
281 core.SetSharedLibraries("GRAPHENE", []string{"libgraphene-1.0.so.0"})
282 var libs []uintptr
283 for _, libPath := range core.GetPaths("GRAPHENE") {
284 lib, err := purego.Dlopen(libPath, purego.RTLD_NOW|purego.RTLD_GLOBAL)
285 if err != nil {
286 panic(err)
287 }
288 libs = append(libs, lib)
289 }
290
291 core.PuregoSafeRegister(&xQuaternionGLibType, libs, "graphene_quaternion_get_type")
292
293 core.PuregoSafeRegister(&xQuaternionAlloc, libs, "graphene_quaternion_alloc")
294
295 core.PuregoSafeRegister(&xQuaternionAdd, libs, "graphene_quaternion_add")
296 core.PuregoSafeRegister(&xQuaternionDot, libs, "graphene_quaternion_dot")
297 core.PuregoSafeRegister(&xQuaternionEqual, libs, "graphene_quaternion_equal")
298 core.PuregoSafeRegister(&xQuaternionFree, libs, "graphene_quaternion_free")
299 core.PuregoSafeRegister(&xQuaternionInit, libs, "graphene_quaternion_init")
300 core.PuregoSafeRegister(&xQuaternionInitFromAngleVec3, libs, "graphene_quaternion_init_from_angle_vec3")
301 core.PuregoSafeRegister(&xQuaternionInitFromAngles, libs, "graphene_quaternion_init_from_angles")
302 core.PuregoSafeRegister(&xQuaternionInitFromEuler, libs, "graphene_quaternion_init_from_euler")
303 core.PuregoSafeRegister(&xQuaternionInitFromMatrix, libs, "graphene_quaternion_init_from_matrix")
304 core.PuregoSafeRegister(&xQuaternionInitFromQuaternion, libs, "graphene_quaternion_init_from_quaternion")
305 core.PuregoSafeRegister(&xQuaternionInitFromRadians, libs, "graphene_quaternion_init_from_radians")
306 core.PuregoSafeRegister(&xQuaternionInitFromVec4, libs, "graphene_quaternion_init_from_vec4")
307 core.PuregoSafeRegister(&xQuaternionInitIdentity, libs, "graphene_quaternion_init_identity")
308 core.PuregoSafeRegister(&xQuaternionInvert, libs, "graphene_quaternion_invert")
309 core.PuregoSafeRegister(&xQuaternionMultiply, libs, "graphene_quaternion_multiply")
310 core.PuregoSafeRegister(&xQuaternionNormalize, libs, "graphene_quaternion_normalize")
311 core.PuregoSafeRegister(&xQuaternionScale, libs, "graphene_quaternion_scale")
312 core.PuregoSafeRegister(&xQuaternionSlerp, libs, "graphene_quaternion_slerp")
313 core.PuregoSafeRegister(&xQuaternionToAngleVec3, libs, "graphene_quaternion_to_angle_vec3")
314 core.PuregoSafeRegister(&xQuaternionToAngles, libs, "graphene_quaternion_to_angles")
315 core.PuregoSafeRegister(&xQuaternionToMatrix, libs, "graphene_quaternion_to_matrix")
316 core.PuregoSafeRegister(&xQuaternionToRadians, libs, "graphene_quaternion_to_radians")
317 core.PuregoSafeRegister(&xQuaternionToVec4, libs, "graphene_quaternion_to_vec4")
318
319}