GraphicsAPI_2020C
cimport.h
Go to the documentation of this file.
1 /*
2 ---------------------------------------------------------------------------
3 Open Asset Import Library (assimp)
4 ---------------------------------------------------------------------------
5 
6 Copyright (c) 2006-2017, assimp team
7 
8 
9 All rights reserved.
10 
11 Redistribution and use of this software in source and binary forms,
12 with or without modification, are permitted provided that the following
13 conditions are met:
14 
15 * Redistributions of source code must retain the above
16  copyright notice, this list of conditions and the
17  following disclaimer.
18 
19 * Redistributions in binary form must reproduce the above
20  copyright notice, this list of conditions and the
21  following disclaimer in the documentation and/or other
22  materials provided with the distribution.
23 
24 * Neither the name of the assimp team, nor the names of its
25  contributors may be used to endorse or promote products
26  derived from this software without specific prior
27  written permission of the assimp team.
28 
29 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 ---------------------------------------------------------------------------
41 */
42 
46 #pragma once
47 #ifndef AI_ASSIMP_H_INC
48 #define AI_ASSIMP_H_INC
49 
50 #include <assimp/types.h>
51 #include "importerdesc.h"
52 
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56 
57 struct aiScene; // aiScene.h
58 struct aiFileIO; // aiFileIO.h
59 typedef void (*aiLogStreamCallback)(const char* /* message */, char* /* user */);
60 
61 // --------------------------------------------------------------------------------
67 // --------------------------------------------------------------------------------
69 {
71  aiLogStreamCallback callback;
72 
74  char* user;
75 };
76 
77 
78 // --------------------------------------------------------------------------------
88 // --------------------------------------------------------------------------------
89 struct aiPropertyStore { char sentinel; };
90 
92 typedef int aiBool;
93 
94 #define AI_FALSE 0
95 #define AI_TRUE 1
96 
97 // --------------------------------------------------------------------------------
113 ASSIMP_API const C_STRUCT aiScene* aiImportFile(
114  const char* pFile,
115  unsigned int pFlags);
116 
117 // --------------------------------------------------------------------------------
138 ASSIMP_API const C_STRUCT aiScene* aiImportFileEx(
139  const char* pFile,
140  unsigned int pFlags,
141  C_STRUCT aiFileIO* pFS);
142 
143 // --------------------------------------------------------------------------------
159 ASSIMP_API const C_STRUCT aiScene* aiImportFileExWithProperties(
160  const char* pFile,
161  unsigned int pFlags,
162  C_STRUCT aiFileIO* pFS,
163  const C_STRUCT aiPropertyStore* pProps);
164 
165 // --------------------------------------------------------------------------------
196 ASSIMP_API const C_STRUCT aiScene* aiImportFileFromMemory(
197  const char* pBuffer,
198  unsigned int pLength,
199  unsigned int pFlags,
200  const char* pHint);
201 
202 // --------------------------------------------------------------------------------
230 ASSIMP_API const C_STRUCT aiScene* aiImportFileFromMemoryWithProperties(
231  const char* pBuffer,
232  unsigned int pLength,
233  unsigned int pFlags,
234  const char* pHint,
235  const C_STRUCT aiPropertyStore* pProps);
236 
237 // --------------------------------------------------------------------------------
252 ASSIMP_API const C_STRUCT aiScene* aiApplyPostProcessing(
253  const C_STRUCT aiScene* pScene,
254  unsigned int pFlags);
255 
256 // --------------------------------------------------------------------------------
276 ASSIMP_API C_STRUCT aiLogStream aiGetPredefinedLogStream(
277  C_ENUM aiDefaultLogStream pStreams,
278  const char* file);
279 
280 // --------------------------------------------------------------------------------
290 ASSIMP_API void aiAttachLogStream(
291  const C_STRUCT aiLogStream* stream);
292 
293 // --------------------------------------------------------------------------------
300 ASSIMP_API void aiEnableVerboseLogging(aiBool d);
301 
302 // --------------------------------------------------------------------------------
311 ASSIMP_API C_ENUM aiReturn aiDetachLogStream(
312  const C_STRUCT aiLogStream* stream);
313 
314 // --------------------------------------------------------------------------------
322 ASSIMP_API void aiDetachAllLogStreams(void);
323 
324 // --------------------------------------------------------------------------------
330 ASSIMP_API void aiReleaseImport(
331  const C_STRUCT aiScene* pScene);
332 
333 // --------------------------------------------------------------------------------
340 ASSIMP_API const char* aiGetErrorString(void);
341 
342 // --------------------------------------------------------------------------------
349 ASSIMP_API aiBool aiIsExtensionSupported(
350  const char* szExtension);
351 
352 // --------------------------------------------------------------------------------
360 ASSIMP_API void aiGetExtensionList(
361  C_STRUCT aiString* szOut);
362 
363 // --------------------------------------------------------------------------------
368 ASSIMP_API void aiGetMemoryRequirements(
369  const C_STRUCT aiScene* pIn,
370  C_STRUCT aiMemoryInfo* in);
371 
372 
373 
374 // --------------------------------------------------------------------------------
380 ASSIMP_API C_STRUCT aiPropertyStore* aiCreatePropertyStore(void);
381 
382 // --------------------------------------------------------------------------------
386 ASSIMP_API void aiReleasePropertyStore(C_STRUCT aiPropertyStore* p);
387 
388 // --------------------------------------------------------------------------------
400 ASSIMP_API void aiSetImportPropertyInteger(
401  C_STRUCT aiPropertyStore* store,
402  const char* szName,
403  int value);
404 
405 // --------------------------------------------------------------------------------
417 ASSIMP_API void aiSetImportPropertyFloat(
418  C_STRUCT aiPropertyStore* store,
419  const char* szName,
420  ai_real value);
421 
422 // --------------------------------------------------------------------------------
434 ASSIMP_API void aiSetImportPropertyString(
435  C_STRUCT aiPropertyStore* store,
436  const char* szName,
437  const C_STRUCT aiString* st);
438 
439 // --------------------------------------------------------------------------------
451 ASSIMP_API void aiSetImportPropertyMatrix(
452  C_STRUCT aiPropertyStore* store,
453  const char* szName,
454  const C_STRUCT aiMatrix4x4* mat);
455 
456 // --------------------------------------------------------------------------------
462 ASSIMP_API void aiCreateQuaternionFromMatrix(
463  C_STRUCT aiQuaternion* quat,
464  const C_STRUCT aiMatrix3x3* mat);
465 
466 // --------------------------------------------------------------------------------
476 ASSIMP_API void aiDecomposeMatrix(
477  const C_STRUCT aiMatrix4x4* mat,
478  C_STRUCT aiVector3D* scaling,
479  C_STRUCT aiQuaternion* rotation,
480  C_STRUCT aiVector3D* position);
481 
482 // --------------------------------------------------------------------------------
486 ASSIMP_API void aiTransposeMatrix4(
487  C_STRUCT aiMatrix4x4* mat);
488 
489 // --------------------------------------------------------------------------------
493 ASSIMP_API void aiTransposeMatrix3(
494  C_STRUCT aiMatrix3x3* mat);
495 
496 // --------------------------------------------------------------------------------
501 ASSIMP_API void aiTransformVecByMatrix3(
502  C_STRUCT aiVector3D* vec,
503  const C_STRUCT aiMatrix3x3* mat);
504 
505 // --------------------------------------------------------------------------------
510 ASSIMP_API void aiTransformVecByMatrix4(
511  C_STRUCT aiVector3D* vec,
512  const C_STRUCT aiMatrix4x4* mat);
513 
514 // --------------------------------------------------------------------------------
519 ASSIMP_API void aiMultiplyMatrix4(
520  C_STRUCT aiMatrix4x4* dst,
521  const C_STRUCT aiMatrix4x4* src);
522 
523 // --------------------------------------------------------------------------------
528 ASSIMP_API void aiMultiplyMatrix3(
529  C_STRUCT aiMatrix3x3* dst,
530  const C_STRUCT aiMatrix3x3* src);
531 
532 // --------------------------------------------------------------------------------
536 ASSIMP_API void aiIdentityMatrix3(
537  C_STRUCT aiMatrix3x3* mat);
538 
539 // --------------------------------------------------------------------------------
543 ASSIMP_API void aiIdentityMatrix4(
544  C_STRUCT aiMatrix4x4* mat);
545 
546 // --------------------------------------------------------------------------------
550 ASSIMP_API size_t aiGetImportFormatCount(void);
551 
552 // --------------------------------------------------------------------------------
559 ASSIMP_API const C_STRUCT aiImporterDesc* aiGetImportFormatDescription( size_t pIndex);
560 #ifdef __cplusplus
561 }
562 #endif
563 
564 #endif // AI_ASSIMP_H_INC
ASSIMP_API void aiReleasePropertyStore(C_STRUCT aiPropertyStore *p)
Delete a property store.
ASSIMP_API void aiIdentityMatrix4(C_STRUCT aiMatrix4x4 *mat)
Get a 4x4 identity matrix.
Basic data types and primitives, such as vectors or colors.
C-API: File system callbacks.
Definition: cfileio.h:78
Definition: matrix4x4.h:269
ASSIMP_API void aiTransformVecByMatrix4(C_STRUCT aiVector3D *vec, const C_STRUCT aiMatrix4x4 *mat)
Transform a vector by a 4x4 matrix.
ASSIMP_API void aiDecomposeMatrix(const C_STRUCT aiMatrix4x4 *mat, C_STRUCT aiVector3D *scaling, C_STRUCT aiQuaternion *rotation, C_STRUCT aiVector3D *position)
Decompose a transformation matrix into its rotational, translational and scaling components.
ASSIMP_API void aiSetImportPropertyFloat(C_STRUCT aiPropertyStore *store, const char *szName, ai_real value)
Set a floating-point property.
ASSIMP_API void aiEnableVerboseLogging(aiBool d)
Enable verbose logging.
ASSIMP_API void aiAttachLogStream(const C_STRUCT aiLogStream *stream)
Attach a custom log stream to the libraries&#39; logging system.
Definition: quaternion.h:123
char * user
user data to be passed to the callback
Definition: cimport.h:74
ASSIMP_API size_t aiGetImportFormatCount(void)
Returns the number of import file formats available in the current Assimp build.
ASSIMP_API const C_STRUCT aiScene * aiImportFileFromMemoryWithProperties(const char *pBuffer, unsigned int pLength, unsigned int pFlags, const char *pHint, const C_STRUCT aiPropertyStore *pProps)
Same as aiImportFileFromMemory, but adds an extra parameter containing importer settings.
ASSIMP_API void aiGetExtensionList(C_STRUCT aiString *szOut)
Get a list of all file extensions supported by ASSIMP.
Stores the memory requirements for different components (e.g.
Definition: types.h:463
aiReturn
Standard return type for some library functions.
Definition: types.h:375
ASSIMP_API C_ENUM aiReturn aiDetachLogStream(const C_STRUCT aiLogStream *stream)
Detach a custom log stream from the libraries&#39; logging system.
C-API: Represents a log stream.
Definition: cimport.h:68
int aiBool
Our own C boolean type.
Definition: cimport.h:92
GLM_FUNC_DECL qua< T, Q > rotation(vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dest)
Compute the rotation between two vectors.
Definition: quaternion.inl:122
ASSIMP_API void aiSetImportPropertyString(C_STRUCT aiPropertyStore *store, const char *szName, const C_STRUCT aiString *st)
Set a string property.
Represents an UTF-8 string, zero byte terminated.
Definition: types.h:252
ASSIMP_API void aiMultiplyMatrix4(C_STRUCT aiMatrix4x4 *dst, const C_STRUCT aiMatrix4x4 *src)
Multiply two 4x4 matrices.
ASSIMP_API void aiSetImportPropertyInteger(C_STRUCT aiPropertyStore *store, const char *szName, int value)
Set an integer property.
ASSIMP_API const C_STRUCT aiScene * aiImportFileFromMemory(const char *pBuffer, unsigned int pLength, unsigned int pFlags, const char *pHint)
Reads the given file from a given memory buffer,.
ASSIMP_API const C_STRUCT aiScene * aiImportFileExWithProperties(const char *pFile, unsigned int pFlags, C_STRUCT aiFileIO *pFS, const C_STRUCT aiPropertyStore *pProps)
Same as aiImportFileEx, but adds an extra parameter containing importer settings. ...
ASSIMP_API C_STRUCT aiLogStream aiGetPredefinedLogStream(C_ENUM aiDefaultLogStream pStreams, const char *file)
Get one of the predefine log streams.
ASSIMP_API aiBool aiIsExtensionSupported(const char *szExtension)
Returns whether a given file extension is supported by ASSIMP.
Meta information about a particular importer.
Definition: importerdesc.h:89
ASSIMP_API void aiMultiplyMatrix3(C_STRUCT aiMatrix3x3 *dst, const C_STRUCT aiMatrix3x3 *src)
Multiply two 3x3 matrices.
ASSIMP_API const C_STRUCT aiScene * aiImportFile(const char *pFile, unsigned int pFlags)
Reads the given file and returns its content.
The root structure of the imported data.
Definition: scene.h:240
ASSIMP_API const C_STRUCT aiImporterDesc * aiGetImportFormatDescription(size_t pIndex)
Returns a description of the nth import file format.
aiDefaultLogStream
Enumerates predefined log streaming destinations.
Definition: types.h:429
Definition: vector3.h:135
aiImporterFlags, aiImporterDesc implementation.
ASSIMP_API void aiTransposeMatrix4(C_STRUCT aiMatrix4x4 *mat)
Transpose a 4x4 matrix.
ASSIMP_API void aiIdentityMatrix3(C_STRUCT aiMatrix3x3 *mat)
Get a 3x3 identity matrix.
ASSIMP_API const char * aiGetErrorString(void)
Returns the error text of the last failed import process.
ASSIMP_API void aiTransposeMatrix3(C_STRUCT aiMatrix3x3 *mat)
Transpose a 3x3 matrix.
ASSIMP_API void aiTransformVecByMatrix3(C_STRUCT aiVector3D *vec, const C_STRUCT aiMatrix3x3 *mat)
Transform a vector by a 3x3 matrix.
ASSIMP_API const C_STRUCT aiScene * aiApplyPostProcessing(const C_STRUCT aiScene *pScene, unsigned int pFlags)
Apply post-processing to an already-imported scene.
ASSIMP_API void aiCreateQuaternionFromMatrix(C_STRUCT aiQuaternion *quat, const C_STRUCT aiMatrix3x3 *mat)
Construct a quaternion from a 3x3 rotation matrix.
ASSIMP_API void aiReleaseImport(const C_STRUCT aiScene *pScene)
Releases all resources associated with the given import process.
ASSIMP_API C_STRUCT aiPropertyStore * aiCreatePropertyStore(void)
Create an empty property store.
ASSIMP_API const C_STRUCT aiScene * aiImportFileEx(const char *pFile, unsigned int pFlags, C_STRUCT aiFileIO *pFS)
Reads the given file using user-defined I/O functions and returns its content.
ASSIMP_API void aiSetImportPropertyMatrix(C_STRUCT aiPropertyStore *store, const char *szName, const C_STRUCT aiMatrix4x4 *mat)
Set a matrix property.
Definition: matrix3x3.h:174
C-API: Represents an opaque set of settings to be used during importing.
Definition: cimport.h:89
ASSIMP_API void aiGetMemoryRequirements(const C_STRUCT aiScene *pIn, C_STRUCT aiMemoryInfo *in)
Get the approximated storage required by an imported asset.
qua< float, defaultp > quat
Quaternion of single-precision floating-point numbers.
Definition: quaternion_float.hpp:35
aiLogStreamCallback callback
callback to be called
Definition: cimport.h:71
ASSIMP_API void aiDetachAllLogStreams(void)
Detach all active log streams from the libraries&#39; logging system.