assimp_sys/
cimport.rs

1use std::os::raw::{c_char, c_float, c_int, c_uint, c_void};
2
3use cfileio::*;
4use importerdesc::*;
5use postprocess::*;
6use scene::*;
7use types::*;
8
9pub type AiLogStreamCallback = Option<unsafe extern "system" fn(*const c_char, *mut c_char)>;
10
11#[repr(C)]
12pub struct AiLogStream {
13    pub callback: AiLogStreamCallback,
14    pub user: *mut c_void,
15}
16
17#[repr(C)]
18#[derive(Clone, Copy, Debug)]
19pub struct AiPropertyStore {
20    pub sentinel: c_char,
21}
22
23pub type AiBool = c_int;
24pub const AI_FALSE: AiBool = 0;
25pub const AI_TRUE: AiBool = 1;
26
27extern {
28    pub fn aiImportFile(
29        file: *const c_char,
30        flags: AiPostProcessSteps) -> *const AiScene;
31
32    pub fn aiImportFileEx(
33        file: *const c_char,
34        flags: AiPostProcessSteps,
35        fs: *mut AiFileIO) -> *const AiScene;
36
37    pub fn aiImportFileExWithProperties(
38        file: *const c_char,
39        flags: AiPostProcessSteps,
40        fs: *mut AiFileIO,
41        props: *const AiPropertyStore) -> *const AiScene;
42
43    pub fn aiImportFileFromMemory(
44        buffer: *const c_char,
45        length: c_uint,
46        flags: AiPostProcessSteps,
47        hint: *const c_char) -> *const AiScene;
48
49    pub fn aiImportFileFromMemoryWithProperties(
50        buffer: *const c_char,
51        length: c_uint,
52        flags: AiPostProcessSteps,
53        hint: *const c_char,
54        props: *const AiPropertyStore) -> *const AiScene;
55
56    pub fn aiApplyPostProcessing(
57        scene: *const AiScene,
58        flags: AiPostProcessSteps) -> *const AiScene;
59
60    pub fn aiGetPredefinedLogStream(
61        stream: AiDefaultLogStream,
62        file: *const c_char) -> AiLogStream;
63
64    pub fn aiAttachLogStream(
65        stream: *const AiLogStream);
66
67    pub fn aiEnableVerboseLogging(
68        enable: AiBool);
69
70    pub fn aiDetachLogStream(
71        stream: *const AiLogStream) -> AiReturn;
72
73    pub fn aiDetachAllLogStreams();
74
75    pub fn aiReleaseImport(
76        scene: *const AiScene);
77
78    pub fn aiGetErrorString() -> *const c_char;
79
80    pub fn aiIsExtensionSupported(
81        extension: *const c_char) -> AiBool;
82
83    pub fn aiGetExtensionList(
84        out: *mut AiString);
85
86    pub fn aiGetMemoryRequirements(
87        scene: *const AiScene,
88        info: *mut AiMemoryInfo);
89
90    pub fn aiCreatePropertyStore() -> *mut AiPropertyStore;
91
92    pub fn aiReleasePropertyStore(
93        store: *mut AiPropertyStore);
94
95    pub fn aiSetImportPropertyInteger(
96        store: *mut AiPropertyStore,
97        name: *const c_char,
98        value: c_int);
99
100    pub fn aiSetImportPropertyFloat(
101        store: *mut AiPropertyStore,
102        name: *const c_char,
103        value: c_float);
104
105    pub fn aiSetImportPropertyString(
106        store: *mut AiPropertyStore,
107        name: *const c_char,
108        value: *const AiString);
109
110    pub fn aiSetImportPropertyMatrix(
111        store: *mut AiPropertyStore,
112        name: *const c_char,
113        value: *const AiMatrix4x4);
114
115    pub fn aiCreateQuaternionFromMatrix(
116        quaternion: *mut AiQuaternion,
117        matrix: *const AiMatrix3x3);
118
119    pub fn aiDecomposeMatrix(
120        matrix: *const AiMatrix4x4,
121        scaling: *mut AiVector3D,
122        rotation: *mut AiQuaternion,
123        position: *mut AiVector3D);
124
125    pub fn aiTransposeMatrix4(
126        matrix: *mut AiMatrix4x4);
127
128    pub fn aiTransposeMatrix3(
129        matrix: *mut AiMatrix3x3);
130
131    pub fn aiTransformVecByMatrix3(
132        vector: *mut AiVector3D,
133        matrix: *const AiMatrix3x3);
134
135    pub fn aiTransformVecByMatrix4(
136        vector: *mut AiVector3D,
137        matrix: *const AiMatrix4x4);
138
139    pub fn aiMultiplyMatrix4(
140        dst: *mut AiMatrix4x4,
141        src: *const AiMatrix4x4);
142
143    pub fn aiMultiplyMatrix3(
144        dst: *mut AiMatrix3x3,
145        src: *const AiMatrix3x3);
146
147    pub fn aiIdentityMatrix3(
148        matrix: *mut AiMatrix3x3);
149
150    pub fn aiIdentityMatrix4(
151        matrix: *mut AiMatrix4x4);
152
153    pub fn aiGetImportFormatCount() -> usize;
154
155    pub fn aiGetImportFormatDescription(
156        index: usize) -> *const AiImporterDesc;
157}