diff --git a/code/AssimpPCH.h b/code/AssimpPCH.h index dfb18ef2a..08d800804 100644 --- a/code/AssimpPCH.h +++ b/code/AssimpPCH.h @@ -137,6 +137,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/aiScene.h" #include "../include/aiPostProcess.h" #include "../include/assimp.hpp" +#include "../include/export.h" // Internal utility headers #include "BaseImporter.h" diff --git a/include/export.h b/include/export.h new file mode 100644 index 000000000..31860e5f8 --- /dev/null +++ b/include/export.h @@ -0,0 +1,135 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (ASSIMP) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2011, ASSIMP Development Team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file export.h +* @brief Defines the C-API for the Assimp export interface +*/ +#ifndef AI_EXPORT_H_INC +#define AI_EXPORT_H_INC +#include "aiTypes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct aiScene; // aiScene.h + +/** Describes an file format which Assimp can export to. Use aiGetExportFormatCount() to +* learn how many export formats the current Assimp build supports and aiGetExportFormatDescription() +* to retrieve a description of an export format option. +*/ +struct aiExportFormatDesc +{ + /// a short string ID to uniquely identify the export format. Use this ID string to + /// specify which file format you want to export to when calling aiExportScene(). + /// Example: "dae" or "obj" + const char* id; + + /// A short description of the file format to present to users. Useful if you want + /// to allow the user to select an export format. + const char* description; + + /// Recommended file extension for the exported file + const char* fileExtension; + +#ifdef __cplusplus + /// Default constructor + aiExportFormatDesc() { id = description = fileExtension = NULL; } +#endif // __cplusplus +}; + +/** Returns the number of export file formats available in the current Assimp build. +* Use aiGetExportFormatDescription() to retrieve infos of a specific export format. +*/ +ASSIMP_API size_t aiGetExportFormatCount(void); + +/** Returns a description of the nth export file format. Use aiGetExportFormatCount() +* to learn how many export formats are supported. +* @param pIndex Index of the export format to retrieve information for. Valid range is 0 to aiGetExportFormatCount() +* @return A description of that specific export format. NULL if pIndex is out of range. +*/ +ASSIMP_API const C_STRUCT aiExportFormatDesc* aiGetExportFormatDescription( size_t pIndex); + +/** Describes a blob of exported scene data. Use aiExportScene() to create a blob containing an +* exported scene. The memory referred by this structure is owned by Assimp. Use aiReleaseExportedFile() +* to free its resources. Don't try to free the memory on your side - it will crash for most build configurations +* due to conflicting heaps. +*/ +struct aiExportDataBlob +#ifdef __cplusplus + : public boost::noncopyable +#endif // __cplusplus +{ + /// Size of the data in bytes + size_t size; + + /// The data. + void* data; + +#ifdef __cplusplus + /// Default constructor + aiExportDataBlob() { size = 0; data = NULL; } + /// Releases the data + ~aiExportDataBlob() { delete data; } +#endif // __cplusplus +}; + +/** Exports the given scene to a chosen file format. Returns the exported data as a binary blob which +* you can write into a file or something. When you're done with the data, use aiReleaseExportedData() +* to free the resources associated with the export. +* @param pScene The scene to export. Stays in possession of the caller, is not changed by the function. +* @param pFormatId ID string to specify to which format you want to export to. Use +* aiGetExportFormatCount() / aiGetExportFormatDescription() to learn which export formats are available. +* @return the exported data or NULL in case of error +*/ +ASSIMP_API C_STRUCT aiExportDataBlob* aiExportScene( const aiScene* pScene, const char* pFormatId); + +/** Releases the memory associated with the given exported data. Use this function to free a data blob +* returned by aiExportScene(). +* @param pData the data blob returned by aiExportScene +*/ +ASSIMP_API C_STRUCT void aiReleaseExportData( aiExportDataBlob* pData); + +#ifdef __cplusplus +} +#endif + +#endif // AI_EXPORT_H_INC diff --git a/workspaces/vc9/assimp.vcproj b/workspaces/vc9/assimp.vcproj index ceabd6a88..34032c181 100644 --- a/workspaces/vc9/assimp.vcproj +++ b/workspaces/vc9/assimp.vcproj @@ -1,7 +1,7 @@ + +