From cb567d9f654b6d07b22c6fae96350e3d6f454f78 Mon Sep 17 00:00:00 2001 From: Marco Di Benedetto Date: Wed, 1 Aug 2018 16:38:33 +0200 Subject: [PATCH 001/187] added internal to_string. --- code/FBXExportNode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/FBXExportNode.cpp b/code/FBXExportNode.cpp index a1171eca8..17269ffb0 100644 --- a/code/FBXExportNode.cpp +++ b/code/FBXExportNode.cpp @@ -432,7 +432,7 @@ void FBX::Node::WritePropertyNodeAscii( char buffer[32]; FBX::Node node(name); node.Begin(s, false, indent); - std::string vsize = std::to_string(v.size()); + std::string vsize = to_string(v.size()); // * { s.PutChar('*'); s.PutString(vsize); s.PutString(" {\n"); // indent + 1 @@ -468,7 +468,7 @@ void FBX::Node::WritePropertyNodeAscii( char buffer[32]; FBX::Node node(name); node.Begin(s, false, indent); - std::string vsize = std::to_string(v.size()); + std::string vsize = to_string(v.size()); // * { s.PutChar('*'); s.PutString(vsize); s.PutString(" {\n"); // indent + 1 From 27b331eb0c40485b0072eb7f29e5ce0b8312c092 Mon Sep 17 00:00:00 2001 From: Marco Di Benedetto Date: Thu, 18 Oct 2018 18:46:02 +0200 Subject: [PATCH 002/187] disabled static zlib build --- contrib/zlib/CMakeLists.txt | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/contrib/zlib/CMakeLists.txt b/contrib/zlib/CMakeLists.txt index 5f1368adb..a13b7725e 100644 --- a/contrib/zlib/CMakeLists.txt +++ b/contrib/zlib/CMakeLists.txt @@ -130,12 +130,6 @@ set(ZLIB_SRCS zutil.c ) -if(NOT MINGW) - set(ZLIB_DLL_SRCS - win32/zlib1.rc # If present will override custom build rule below. - ) -endif() - if(CMAKE_COMPILER_IS_GNUCC) if(ASM686) set(ZLIB_ASMS contrib/asm686/match.S) @@ -174,26 +168,7 @@ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents) string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*" "\\1" ZLIB_FULL_VERSION ${_zlib_h_contents}) -if(MINGW) - # This gets us DLL resource information when compiling on MinGW. - if(NOT CMAKE_RC_COMPILER) - set(CMAKE_RC_COMPILER windres.exe) - endif() - - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj - COMMAND ${CMAKE_RC_COMPILER} - -D GCC_WINDRES - -I ${CMAKE_CURRENT_SOURCE_DIR} - -I ${CMAKE_CURRENT_BINARY_DIR} - -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj - -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) - set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) -endif(MINGW) - -add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) -set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) -set_target_properties(zlib PROPERTIES SOVERSION 1) INSTALL( TARGETS zlibstatic LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} From ad7964be63ec71d45d897c79cc1201d364ad49cd Mon Sep 17 00:00:00 2001 From: Marco Di Benedetto Date: Fri, 21 Dec 2018 10:36:03 +0100 Subject: [PATCH 003/187] imported animation fix. --- code/glTF2Importer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/glTF2Importer.cpp b/code/glTF2Importer.cpp index 67c26bf62..107281a33 100755 --- a/code/glTF2Importer.cpp +++ b/code/glTF2Importer.cpp @@ -1033,12 +1033,12 @@ void glTF2Importer::ImportAnimations(glTF2::Asset& r) std::unordered_map samplers = GatherSamplers(anim); - ai_anim->mNumChannels = r.skins[0].jointNames.size(); + ai_anim->mNumChannels = samplers.size(); if (ai_anim->mNumChannels > 0) { ai_anim->mChannels = new aiNodeAnim*[ai_anim->mNumChannels]; int j = 0; - for (auto& iter : r.skins[0].jointNames) { - ai_anim->mChannels[j] = CreateNodeAnim(r, *iter, samplers[iter.GetIndex()]); + for (auto& iter : samplers) { + ai_anim->mChannels[j] = CreateNodeAnim(r, r.nodes[iter.first], iter.second); ++j; } } From fe6b3166953fd2fe8611fbfd8d4122297ed78cb9 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 10 Jan 2019 17:27:54 +0000 Subject: [PATCH 004/187] Set MSVC projects to default to Unicode MBCS is deprecated and shouldn't be used in new projects --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a97174de4..9f9327a93 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,6 +133,8 @@ IF(MSVC) "Install MSVC debug files." ON ) + # Multibyte character set is deprecated, but default + ADD_DEFINITIONS( -DUNICODE -D_UNICODE ) ENDIF(MSVC) IF (BUILD_FRAMEWORK) From 3c651be6404c024fb70ed9b22243dea3fd3022de Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 17 Jan 2019 13:55:05 +0000 Subject: [PATCH 005/187] Exporter::ExportToBlob() Pass on preprocessing and properties. Issue #2302 --- code/Exporter.cpp | 4 ++-- include/assimp/Exporter.hpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/Exporter.cpp b/code/Exporter.cpp index 0acde75bf..0414f661c 100644 --- a/code/Exporter.cpp +++ b/code/Exporter.cpp @@ -288,7 +288,7 @@ void Exporter::SetProgressHandler(ProgressHandler* pHandler) { // ------------------------------------------------------------------------------------------------ const aiExportDataBlob* Exporter::ExportToBlob( const aiScene* pScene, const char* pFormatId, - unsigned int, const ExportProperties* /*pProperties*/ ) { + unsigned int pPreprocessing, const ExportProperties* pProperties) { if (pimpl->blob) { delete pimpl->blob; pimpl->blob = nullptr; @@ -298,7 +298,7 @@ const aiExportDataBlob* Exporter::ExportToBlob( const aiScene* pScene, const cha BlobIOSystem* blobio = new BlobIOSystem(); pimpl->mIOSystem = std::shared_ptr( blobio ); - if (AI_SUCCESS != Export(pScene,pFormatId,blobio->GetMagicFileName())) { + if (AI_SUCCESS != Export(pScene,pFormatId,blobio->GetMagicFileName(), pPreprocessing, pProperties)) { pimpl->mIOSystem = old; return nullptr; } diff --git a/include/assimp/Exporter.hpp b/include/assimp/Exporter.hpp index 4e0843b60..d254aae66 100644 --- a/include/assimp/Exporter.hpp +++ b/include/assimp/Exporter.hpp @@ -190,7 +190,7 @@ public: * @note Use aiCopyScene() to get a modifiable copy of a previously * imported scene. */ const aiExportDataBlob* ExportToBlob(const aiScene* pScene, const char* pFormatId, - unsigned int pPreprocessing = 0u, const ExportProperties* = nullptr); + unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = nullptr); const aiExportDataBlob* ExportToBlob( const aiScene* pScene, const std::string& pFormatId, unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = nullptr); From f9014d7410a67ce4c9a4816ec21304d0e3e50970 Mon Sep 17 00:00:00 2001 From: Malcolm Tyrrell Date: Tue, 5 Feb 2019 14:36:49 +0000 Subject: [PATCH 006/187] Add tokenization of 'c' type arrays, both compressed and uncompressed. --- code/FBXBinaryTokenizer.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/code/FBXBinaryTokenizer.cpp b/code/FBXBinaryTokenizer.cpp index f12a5c5b2..4f5f5d870 100644 --- a/code/FBXBinaryTokenizer.cpp +++ b/code/FBXBinaryTokenizer.cpp @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include + namespace Assimp { namespace FBX { @@ -83,7 +84,7 @@ namespace FBX { // e_unknown_21 = 1 << 21, // e_unknown_22 = 1 << 22, // e_unknown_23 = 1 << 23, -// e_flag_field_size_64_bit = 1 << 24, // Not sure what is +// e_flag_field_size_64_bit = 1 << 24, // Not sure what is // e_unknown_25 = 1 << 25, // e_unknown_26 = 1 << 26, // e_unknown_27 = 1 << 27, @@ -276,8 +277,8 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input, case 'f': case 'd': case 'l': - case 'i': { - + case 'i': + case 'c': { const uint32_t length = ReadWord(input, cursor, end); const uint32_t encoding = ReadWord(input, cursor, end); @@ -298,6 +299,10 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input, stride = 8; break; + case 'c': + stride = 1; + break; + default: ai_assert(false); }; From 02a5f6b62f89042a6b46f8c1eb1111355094ce43 Mon Sep 17 00:00:00 2001 From: Malcolm Tyrrell Date: Tue, 5 Feb 2019 15:54:33 +0000 Subject: [PATCH 007/187] Remove unneeded newline. --- code/FBXBinaryTokenizer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/code/FBXBinaryTokenizer.cpp b/code/FBXBinaryTokenizer.cpp index 4f5f5d870..7138df431 100644 --- a/code/FBXBinaryTokenizer.cpp +++ b/code/FBXBinaryTokenizer.cpp @@ -54,7 +54,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include - namespace Assimp { namespace FBX { From 56374666a700a27f23fe23a39e50040e29db5187 Mon Sep 17 00:00:00 2001 From: Malcolm Tyrrell Date: Tue, 5 Feb 2019 16:43:03 +0000 Subject: [PATCH 008/187] Add two test files which require 'c' handling to be tokenized correctly. --- test/models/FBX/boxWithCompressedCTypeArray.FBX | Bin 0 -> 13824 bytes .../FBX/boxWithUncompressedCTypeArray.FBX | Bin 0 -> 26021 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/models/FBX/boxWithCompressedCTypeArray.FBX create mode 100644 test/models/FBX/boxWithUncompressedCTypeArray.FBX diff --git a/test/models/FBX/boxWithCompressedCTypeArray.FBX b/test/models/FBX/boxWithCompressedCTypeArray.FBX new file mode 100644 index 0000000000000000000000000000000000000000..2f71bc7ee9383cc8db4615b1c15067625a26b6be GIT binary patch literal 13824 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 literal 0 HcmV?d00001 From 54c5f3f2d0b7ac1e7033987f23582f3c0089ae98 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 7 Feb 2019 19:22:47 +0100 Subject: [PATCH 009/187] Update README - Update the readme for the exampes. --- samples/README | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/samples/README b/samples/README index 995a84f0c..a9f44cec2 100644 --- a/samples/README +++ b/samples/README @@ -12,22 +12,25 @@ use in various real-world environments. Workspaces to build the samples can be found in the respective directories. The VC workspaces copy the created executables to the ./bin directory. -All GL-based samples depend on GLUT, some on DevIL. For convenience, -these libraries are included in the repository in their respective - Windows/x86 prebuilt versions. To build on linux, install the - required packages using the package manager of your choice. +All GL-based samples depend on FreeGLUT, the image loading will be done +by a header-only library. For convenience, these libraries are included +in the repository in their respective Windows/x86 prebuilt versions. +To build on linux, install freeglut using the package manager of your +choice. For instance on Ubuntu to install freeglut you can use the following +command: -Also note that the VS workspaces link against the DLL version of the -Assimp library, thus you need to build it in the first place ( -assimp-release-dll build configuration). The Assimp DLL needs to be -copied to ./bin as well (the VS workspaces will try to do this -automatically). +> sudo apt install freeglut + +All samples will be placed at + +Win32: //bin + +or Linux : /bin 2. List of samples ------------------ - SimpleOpenGL A very simple and straightforward OpenGL sample. It loads a From c3129e55d2f1a9d9b7db08fc3db29d8d549edaec Mon Sep 17 00:00:00 2001 From: Marc-Anton Boehm-von Thenen Date: Mon, 18 Feb 2019 14:10:32 +0100 Subject: [PATCH 010/187] [Issue_2340] Added ASSIMP_ANDROID_JNIIOSYSTEM precheck to only remain set to ON in proper ANDROID enabled toolchain environment --- code/CMakeLists.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 1726fda72..a677269f0 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -47,6 +47,11 @@ cmake_minimum_required( VERSION 2.6 ) SET( HEADER_PATH ../include/assimp ) +if(NOT (ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)) + message(WARNING "Requesting Android JNI I/O-System in non-Android toolchain. Resetting ASSIMP_ANDROID_JNIIOSYSTEM to OFF.") + set(ASSIMP_ANDROID_JNIIOSYSTEM OFF) +endif(NOT (ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)) + SET( COMPILER_HEADERS ${HEADER_PATH}/Compiler/pushpack1.h ${HEADER_PATH}/Compiler/poppack1.h @@ -932,11 +937,11 @@ TARGET_INCLUDE_DIRECTORIES ( assimp PUBLIC TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES} ${IRRXML_LIBRARY} ) -if(ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM) +if(ASSIMP_ANDROID_JNIIOSYSTEM) set(ASSIMP_ANDROID_JNIIOSYSTEM_PATH port/AndroidJNI) add_subdirectory(../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/ ../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/) target_link_libraries(assimp android_jniiosystem) -endif(ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM) +endif(ASSIMP_ANDROID_JNIIOSYSTEM) IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) TARGET_LINK_LIBRARIES(assimp optimized ${C4D_RELEASE_LIBRARIES}) From a94c8bf3f69fd072d9896e2e2881a0fcc0636e88 Mon Sep 17 00:00:00 2001 From: Marc-Anton Boehm-von Thenen Date: Mon, 18 Feb 2019 14:14:27 +0100 Subject: [PATCH 011/187] [Issue_2340] Wrong precondition layout... missed ANDROID=ON and ASSIMP_ANDROID_JNIIOSYSTEM=OFFvalid constellation --- code/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index a677269f0..2c48f3742 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -47,7 +47,7 @@ cmake_minimum_required( VERSION 2.6 ) SET( HEADER_PATH ../include/assimp ) -if(NOT (ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)) +if(NOT ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM) message(WARNING "Requesting Android JNI I/O-System in non-Android toolchain. Resetting ASSIMP_ANDROID_JNIIOSYSTEM to OFF.") set(ASSIMP_ANDROID_JNIIOSYSTEM OFF) endif(NOT (ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)) From 4d0740a12000b0ae8ed202639690173eecd09b78 Mon Sep 17 00:00:00 2001 From: Marc-Anton Boehm-von Thenen Date: Mon, 18 Feb 2019 14:15:39 +0100 Subject: [PATCH 012/187] [Issue_2340] Proper closing endif()... --- code/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 2c48f3742..37ad34b85 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -50,7 +50,7 @@ SET( HEADER_PATH ../include/assimp ) if(NOT ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM) message(WARNING "Requesting Android JNI I/O-System in non-Android toolchain. Resetting ASSIMP_ANDROID_JNIIOSYSTEM to OFF.") set(ASSIMP_ANDROID_JNIIOSYSTEM OFF) -endif(NOT (ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)) +endif(NOT ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM) SET( COMPILER_HEADERS ${HEADER_PATH}/Compiler/pushpack1.h From ae41ae32119f8c8105d154f1c96326632cd92fd4 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 18 Feb 2019 21:43:45 +0100 Subject: [PATCH 013/187] closes https://github.com/assimp/assimp/issues/305': fix viewer --- code/FBXConverter.cpp | 3 +-- code/FBXImporter.cpp | 13 ++++++++----- tools/assimp_view/assimp_view.cpp | 23 ++++++++++++++++------- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index d88a3cacd..1bfc90b6d 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -1291,8 +1291,7 @@ namespace Assimp { unsigned int cursor = 0, in_cursor = 0; itf = faces.begin(); - for (MatIndexArray::const_iterator it = mindices.begin(), - end = mindices.end(); it != end; ++it, ++itf) + for (MatIndexArray::const_iterator it = mindices.begin(), end = mindices.end(); it != end; ++it, ++itf) { const unsigned int pcount = *itf; if ((*it) != index) { diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index 72f8eea8e..2cc8bffc2 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -60,11 +60,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include namespace Assimp { - template<> const char* LogFunctions::Prefix() - { - static auto prefix = "FBX: "; - return prefix; - } + +template<> +const char* LogFunctions::Prefix() { + static auto prefix = "FBX: "; + return prefix; +} + } using namespace Assimp; @@ -72,6 +74,7 @@ using namespace Assimp::Formatter; using namespace Assimp::FBX; namespace { + static const aiImporterDesc desc = { "Autodesk FBX Importer", "", diff --git a/tools/assimp_view/assimp_view.cpp b/tools/assimp_view/assimp_view.cpp index 355287e0d..1bcdce967 100644 --- a/tools/assimp_view/assimp_view.cpp +++ b/tools/assimp_view/assimp_view.cpp @@ -508,19 +508,28 @@ int CreateAssetData() unsigned int nidx; switch (mesh->mPrimitiveTypes) { case aiPrimitiveType_POINT: - nidx = 1;break; + nidx = 1; + break; case aiPrimitiveType_LINE: - nidx = 2;break; + nidx = 2; + break; case aiPrimitiveType_TRIANGLE: - nidx = 3;break; - default: ai_assert(false); + nidx = 3; + break; + default: + ai_assert(false); + break; }; + unsigned int numIndices = mesh->mNumFaces * 3; + if (0 == numIndices && nidx == 1) { + numIndices = mesh->mNumVertices; + } // check whether we can use 16 bit indices - if (mesh->mNumFaces * 3 >= 65536) { + if (numIndices >= 65536) { // create 32 bit index buffer if(FAILED( g_piDevice->CreateIndexBuffer( 4 * - mesh->mNumFaces * nidx, + numIndices, D3DUSAGE_WRITEONLY | dwUsage, D3DFMT_INDEX32, D3DPOOL_DEFAULT, @@ -546,7 +555,7 @@ int CreateAssetData() else { // create 16 bit index buffer if(FAILED( g_piDevice->CreateIndexBuffer( 2 * - mesh->mNumFaces * nidx, + numIndices, D3DUSAGE_WRITEONLY | dwUsage, D3DFMT_INDEX16, D3DPOOL_DEFAULT, From ea2e6936e5c2881e3fb220c2df5a869f796e8a08 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 18 Feb 2019 21:44:07 +0100 Subject: [PATCH 014/187] Add test file. --- test/models/PLY/points.ply | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 test/models/PLY/points.ply diff --git a/test/models/PLY/points.ply b/test/models/PLY/points.ply new file mode 100644 index 000000000..91f4bb83b --- /dev/null +++ b/test/models/PLY/points.ply @@ -0,0 +1,17 @@ +ply +format ascii 1.0 +element vertex 4 +property float x +property float y +property float z +property uchar red +property uchar green +property uchar blue +property float nx +property float ny +property float nz +end_header +0.0 0.0 0.0 255 255 255 0.0 1.0 0.0 +0.0 0.0 1.0 255 0 255 0.0 0.0 1.0 +0.0 1.0 0.0 255 255 0 1.0 0.0 0.0 +0.0 1.0 1.0 0 255 255 1.0 1.0 0.0 From b0f94c4620b63fefada6e57864f6bd4356a12b94 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 19 Feb 2019 11:19:53 +0100 Subject: [PATCH 015/187] Update appveyor.yml Disable vs2015-test --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 2b5f212f9..c14553708 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ matrix: image: - Visual Studio 2013 - - Visual Studio 2015 +# - Visual Studio 2015 - Visual Studio 2017 platform: From ebf9deb6e0f04116ded902d89e309ef1109d3d0e Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 19 Feb 2019 11:28:15 +0100 Subject: [PATCH 016/187] Update appveyor.yml Disable vs2017 --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index c14553708..a1890b9cb 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -16,7 +16,7 @@ matrix: image: - Visual Studio 2013 # - Visual Studio 2015 - - Visual Studio 2017 +# - Visual Studio 2017 platform: - Win32 From adbc7e8f7036f92c6102af2a2a598c37491be771 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 19 Feb 2019 20:23:20 +0100 Subject: [PATCH 017/187] closes https://github.com/assimp/assimp/issues/2115: rollback setup of FBX-camera. --- code/ColladaLoader.cpp | 16 +++++++++------- code/FBXConverter.cpp | 13 +++++++++++-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 0c87330a9..2a3412ac2 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -109,13 +109,13 @@ ColladaLoader::~ColladaLoader() { // ------------------------------------------------------------------------------------------------ // Returns whether the class can handle the format of the given file. -bool ColladaLoader::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const -{ +bool ColladaLoader::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const { // check file extension std::string extension = GetExtension(pFile); - if( extension == "dae") + if (extension == "dae") { return true; + } // XML - too generic, we need to open the file and search for typical keywords if( extension == "xml" || !extension.length() || checkSig) { @@ -123,10 +123,13 @@ bool ColladaLoader::CanRead( const std::string& pFile, IOSystem* pIOHandler, boo * support a specific file extension in general pIOHandler * might be NULL and it's our duty to return true here. */ - if (!pIOHandler)return true; + if (!pIOHandler) { + return true; + } const char* tokens[] = {"mRootNode->mTransformation *= aiMatrix4x4(parser.mUnitSize, 0, 0, 0, 0, parser.mUnitSize, 0, 0, 0, 0, parser.mUnitSize, 0, diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 1bfc90b6d..a81f1e615 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -390,9 +390,18 @@ namespace Assimp { out_camera->mAspect = cam.AspectWidth() / cam.AspectHeight(); //cameras are defined along positive x direction - out_camera->mPosition = cam.Position(); + /*out_camera->mPosition = cam.Position(); out_camera->mLookAt = (cam.InterestPosition() - out_camera->mPosition).Normalize(); - out_camera->mUp = cam.UpVector(); + out_camera->mUp = cam.UpVector();*/ + + out_camera->mPosition = aiVector3D(0.0f); + out_camera->mLookAt = aiVector3D(1.0f, 0.0f, 0.0f); + out_camera->mUp = aiVector3D(0.0f, 1.0f, 0.0f); + + out_camera->mHorizontalFOV = AI_DEG_TO_RAD(cam.FieldOfView()); + + out_camera->mClipPlaneNear = cam.NearPlane(); + out_camera->mClipPlaneFar = cam.FarPlane(); out_camera->mHorizontalFOV = AI_DEG_TO_RAD(cam.FieldOfView()); out_camera->mClipPlaneNear = cam.NearPlane(); From f59f3976c04ceb74744386915331e1142cab60a5 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 20 Feb 2019 00:02:19 +0100 Subject: [PATCH 018/187] closes https://github.com/assimp/assimp/issues/1593: fix computation of percentf for 3DS. --- code/3DSLoader.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/code/3DSLoader.cpp b/code/3DSLoader.cpp index 24626d936..96b80c962 100644 --- a/code/3DSLoader.cpp +++ b/code/3DSLoader.cpp @@ -249,13 +249,14 @@ void Discreet3DSImporter::ApplyMasterScale(aiScene* pScene) // Reads a new chunk from the file void Discreet3DSImporter::ReadChunk(Discreet3DS::Chunk* pcOut) { - ai_assert(pcOut != NULL); + ai_assert(pcOut != nullptr); pcOut->Flag = stream->GetI2(); pcOut->Size = stream->GetI4(); - if (pcOut->Size - sizeof(Discreet3DS::Chunk) > stream->GetRemainingSize()) + if (pcOut->Size - sizeof(Discreet3DS::Chunk) > stream->GetRemainingSize()) { throw DeadlyImportError("Chunk is too large"); + } if (pcOut->Size - sizeof(Discreet3DS::Chunk) > stream->GetRemainingSizeToLimit()) { ASSIMP_LOG_ERROR("3DS: Chunk overflow"); @@ -1343,15 +1344,16 @@ void Discreet3DSImporter::ParseTextureChunk(D3DS::Texture* pcOut) // ------------------------------------------------------------------------------------------------ // Read a percentage chunk -ai_real Discreet3DSImporter::ParsePercentageChunk() -{ +ai_real Discreet3DSImporter::ParsePercentageChunk() { Discreet3DS::Chunk chunk; ReadChunk(&chunk); - if (Discreet3DS::CHUNK_PERCENTF == chunk.Flag) - return stream->GetF4(); - else if (Discreet3DS::CHUNK_PERCENTW == chunk.Flag) + if (Discreet3DS::CHUNK_PERCENTF == chunk.Flag) { + return stream->GetF4() * ai_real(100) / ai_real(0xFFFF); + } else if (Discreet3DS::CHUNK_PERCENTW == chunk.Flag) { return (ai_real)((uint16_t)stream->GetI2()) / (ai_real)0xFFFF; + } + return get_qnan(); } From 206004c7d6e26bf116ebe6132380f942f2d2e832 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 25 Feb 2019 22:06:24 +0100 Subject: [PATCH 019/187] introduce simple skin-test +some findings. --- code/FBXConverter.cpp | 2 +- code/FBXDocument.cpp | 9 +- code/FBXDocument.h | 121 ++++++-------- code/FBXDocumentUtil.h | 14 +- code/FindInvalidDataProcess.cpp | 10 +- include/assimp/ai_assert.h | 7 +- include/assimp/mesh.h | 14 +- test/models/PLY/cube_test.ply | 24 +++ .../models/glTF2/simple_skin/simple_skin.gltf | 148 ++++++++++++++++++ test/unit/utglTF2ImportExport.cpp | 5 + 10 files changed, 251 insertions(+), 103 deletions(-) create mode 100644 test/models/PLY/cube_test.ply create mode 100644 test/models/glTF2/simple_skin/simple_skin.gltf diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index d88a3cacd..c9f8a08d9 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -1151,7 +1151,7 @@ namespace Assimp { } } } - size_t numAnimMeshes = animMeshes.size(); + const size_t numAnimMeshes = animMeshes.size(); if (numAnimMeshes > 0) { out_mesh->mNumAnimMeshes = static_cast(numAnimMeshes); out_mesh->mAnimMeshes = new aiAnimMesh*[numAnimMeshes]; diff --git a/code/FBXDocument.cpp b/code/FBXDocument.cpp index 2e0d00a79..1af08fe6d 100644 --- a/code/FBXDocument.cpp +++ b/code/FBXDocument.cpp @@ -69,8 +69,7 @@ LazyObject::LazyObject(uint64_t id, const Element& element, const Document& doc) : doc(doc) , element(element) , id(id) -, flags() -{ +, flags() { // empty } @@ -84,7 +83,7 @@ LazyObject::~LazyObject() const Object* LazyObject::Get(bool dieOnError) { if(IsBeingConstructed() || FailedToConstruct()) { - return NULL; + return nullptr; } if (object.get()) { @@ -553,7 +552,7 @@ const std::vector& Document::AnimationStacks() const LazyObject* Document::GetObject(uint64_t id) const { ObjectMap::const_iterator it = objects.find(id); - return it == objects.end() ? NULL : (*it).second; + return it == objects.end() ? nullptr : (*it).second; } #define MAX_CLASSNAMES 6 @@ -610,7 +609,7 @@ std::vector Document::GetConnectionsSequenced(uint64_t id, bo for (size_t i = 0; i < c; ++i) { ai_assert(classnames[i]); if(static_cast(std::distance(key.begin(),key.end())) == lengths[i] && !strncmp(classnames[i],obtype,lengths[i])) { - obtype = NULL; + obtype = nullptr; break; } } diff --git a/code/FBXDocument.h b/code/FBXDocument.h index cbc6d60cd..c849defdc 100644 --- a/code/FBXDocument.h +++ b/code/FBXDocument.h @@ -85,13 +85,11 @@ class Cluster; /** Represents a delay-parsed FBX objects. Many objects in the scene * are not needed by assimp, so it makes no sense to parse them * upfront. */ -class LazyObject -{ +class LazyObject { public: LazyObject(uint64_t id, const Element& element, const Document& doc); - ~LazyObject(); -public: + ~LazyObject(); const Object* Get(bool dieOnError = false); @@ -136,11 +134,8 @@ private: unsigned int flags; }; - - /** Base class for in-memory (DOM) representations of FBX objects */ -class Object -{ +class Object { public: Object(uint64_t id, const Element& element, const std::string& name); @@ -164,14 +159,12 @@ protected: const uint64_t id; }; - - /** DOM class for generic FBX NoteAttribute blocks. NoteAttribute's just hold a property table, * fixed members are added by deriving classes. */ -class NodeAttribute : public Object -{ +class NodeAttribute : public Object { public: NodeAttribute(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~NodeAttribute(); const PropertyTable& Props() const { @@ -183,12 +176,11 @@ private: std::shared_ptr props; }; - /** DOM base class for FBX camera settings attached to a node */ -class CameraSwitcher : public NodeAttribute -{ +class CameraSwitcher : public NodeAttribute { public: CameraSwitcher(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~CameraSwitcher(); int CameraID() const { @@ -209,7 +201,6 @@ private: std::string cameraIndexName; }; - #define fbx_stringize(a) #a #define fbx_simple_property(name, type, default_value) \ @@ -230,13 +221,12 @@ private: /** DOM base class for FBX cameras attached to a node */ -class Camera : public NodeAttribute -{ +class Camera : public NodeAttribute { public: Camera(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~Camera(); -public: fbx_simple_property(Position, aiVector3D, aiVector3D(0,0,0)) fbx_simple_property(UpVector, aiVector3D, aiVector3D(0,1,0)) fbx_simple_property(InterestPosition, aiVector3D, aiVector3D(0,0,0)) @@ -256,33 +246,26 @@ public: fbx_simple_property(FocalLength, float, 1.0f) }; - /** DOM base class for FBX null markers attached to a node */ -class Null : public NodeAttribute -{ +class Null : public NodeAttribute { public: Null(uint64_t id, const Element& element, const Document& doc, const std::string& name); virtual ~Null(); }; - /** DOM base class for FBX limb node markers attached to a node */ -class LimbNode : public NodeAttribute -{ +class LimbNode : public NodeAttribute { public: LimbNode(uint64_t id, const Element& element, const Document& doc, const std::string& name); virtual ~LimbNode(); }; - /** DOM base class for FBX lights attached to a node */ -class Light : public NodeAttribute -{ +class Light : public NodeAttribute { public: Light(uint64_t id, const Element& element, const Document& doc, const std::string& name); virtual ~Light(); -public: enum Type { Type_Point, @@ -304,7 +287,6 @@ public: Decay_MAX // end-of-enum sentinel }; -public: fbx_simple_property(Color, aiVector3D, aiVector3D(1,1,1)) fbx_simple_enum_property(LightType, Type, 0) fbx_simple_property(CastLightOnObject, bool, false) @@ -338,10 +320,8 @@ public: fbx_simple_property(EnableBarnDoor, bool, true) }; - /** DOM base class for FBX models (even though its semantics are more "node" than "model" */ -class Model : public Object -{ +class Model : public Object { public: enum RotOrder { RotOrder_EulerXYZ = 0, @@ -356,7 +336,6 @@ public: RotOrder_MAX // end-of-enum sentinel }; - enum TransformInheritance { TransformInheritance_RrSs = 0, TransformInheritance_RSrs, @@ -490,13 +469,12 @@ private: }; /** DOM class for generic FBX textures */ -class Texture : public Object -{ +class Texture : public Object { public: Texture(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~Texture(); -public: const std::string& Type() const { return type; } @@ -551,17 +529,15 @@ private: }; /** DOM class for layered FBX textures */ -class LayeredTexture : public Object -{ +class LayeredTexture : public Object { public: LayeredTexture(uint64_t id, const Element& element, const Document& doc, const std::string& name); virtual ~LayeredTexture(); - //Can only be called after construction of the layered texture object due to construction flag. + // Can only be called after construction of the layered texture object due to construction flag. void fillTexture(const Document& doc); - enum BlendMode - { + enum BlendMode { BlendMode_Translucent, BlendMode_Additive, BlendMode_Modulate, @@ -623,13 +599,12 @@ typedef std::fbx_unordered_map LayeredTextur /** DOM class for generic FBX videos */ -class Video : public Object -{ +class Video : public Object { public: Video(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~Video(); -public: const std::string& Type() const { return type; } @@ -673,10 +648,10 @@ private: }; /** DOM class for generic FBX materials */ -class Material : public Object -{ +class Material : public Object { public: Material(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~Material(); const std::string& GetShadingModel() const { @@ -713,8 +688,7 @@ typedef std::vector KeyTimeList; typedef std::vector KeyValueList; /** Represents a FBX animation curve (i.e. a 1-dimensional set of keyframes and values therefor) */ -class AnimationCurve : public Object -{ +class AnimationCurve : public Object { public: AnimationCurve(uint64_t id, const Element& element, const std::string& name, const Document& doc); virtual ~AnimationCurve(); @@ -725,14 +699,12 @@ public: return keys; } - /** get list of keyframe values. * Invariant: |GetKeys()| == |GetValues()| && |GetKeys()| > 0*/ const KeyValueList& GetValues() const { return values; } - const std::vector& GetAttributes() const { return attributes; } @@ -751,10 +723,8 @@ private: // property-name -> animation curve typedef std::map AnimationCurveMap; - /** Represents a FBX animation curve (i.e. a mapping from single animation curves to nodes) */ -class AnimationCurveNode : public Object -{ +class AnimationCurveNode : public Object { public: /* the optional white list specifies a list of property names for which the caller wants animations for. If the curve node does not match one of these, std::range_error @@ -804,8 +774,7 @@ private: typedef std::vector AnimationCurveNodeList; /** Represents a FBX animation layer (i.e. a list of node animations) */ -class AnimationLayer : public Object -{ +class AnimationLayer : public Object { public: AnimationLayer(uint64_t id, const Element& element, const std::string& name, const Document& doc); virtual ~AnimationLayer(); @@ -818,7 +787,7 @@ public: /* the optional white list specifies a list of property names for which the caller wants animations for. Curves not matching this list will not be added to the animation layer. */ - AnimationCurveNodeList Nodes(const char* const * target_prop_whitelist = NULL, size_t whitelist_size = 0) const; + AnimationCurveNodeList Nodes(const char* const * target_prop_whitelist = nullptr, size_t whitelist_size = 0) const; private: std::shared_ptr props; @@ -828,8 +797,7 @@ private: typedef std::vector AnimationLayerList; /** Represents a FBX animation stack (i.e. a list of animation layers) */ -class AnimationStack : public Object -{ +class AnimationStack : public Object { public: AnimationStack(uint64_t id, const Element& element, const std::string& name, const Document& doc); virtual ~AnimationStack(); @@ -855,8 +823,7 @@ private: /** DOM class for deformers */ -class Deformer : public Object -{ +class Deformer : public Object { public: Deformer(uint64_t id, const Element& element, const Document& doc, const std::string& name); virtual ~Deformer(); @@ -875,10 +842,10 @@ typedef std::vector WeightIndexArray; /** DOM class for BlendShapeChannel deformers */ -class BlendShapeChannel : public Deformer -{ +class BlendShapeChannel : public Deformer { public: BlendShapeChannel(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~BlendShapeChannel(); float DeformPercent() const { @@ -892,6 +859,7 @@ public: const std::vector& GetShapeGeometries() const { return shapeGeometries; } + private: float percent; WeightArray fullWeights; @@ -899,10 +867,10 @@ private: }; /** DOM class for BlendShape deformers */ -class BlendShape : public Deformer -{ +class BlendShape : public Deformer { public: BlendShape(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~BlendShape(); const std::vector& BlendShapeChannels() const { @@ -913,11 +881,11 @@ private: std::vector blendShapeChannels; }; -/** DOM class for skin deformer clusters (aka subdeformers) */ -class Cluster : public Deformer -{ +/** DOM class for skin deformer clusters (aka sub-deformers) */ +class Cluster : public Deformer { public: Cluster(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~Cluster(); /** get the list of deformer weights associated with this cluster. @@ -958,10 +926,10 @@ private: }; /** DOM class for skin deformers */ -class Skin : public Deformer -{ +class Skin : public Deformer { public: Skin(uint64_t id, const Element& element, const Document& doc, const std::string& name); + virtual ~Skin(); float DeformAccuracy() const { @@ -978,10 +946,10 @@ private: }; /** Represents a link between two FBX objects. */ -class Connection -{ +class Connection { public: Connection(uint64_t insertionOrder, uint64_t src, uint64_t dest, const std::string& prop, const Document& doc); + ~Connection(); // note: a connection ensures that the source and dest objects exist, but @@ -1006,7 +974,7 @@ public: } int CompareTo(const Connection* c) const { - ai_assert( NULL != c ); + ai_assert( nullptr != c ); // note: can't subtract because this would overflow uint64_t if(InsertionOrder() > c->InsertionOrder()) { @@ -1019,7 +987,7 @@ public: } bool Compare(const Connection* c) const { - ai_assert( NULL != c ); + ai_assert( nullptr != c ); return InsertionOrder() < c->InsertionOrder(); } @@ -1047,6 +1015,7 @@ typedef std::multimap ConnectionMap; class FileGlobalSettings { public: FileGlobalSettings(const Document& doc, std::shared_ptr props); + ~FileGlobalSettings(); const PropertyTable& Props() const { @@ -1103,10 +1072,10 @@ private: }; /** DOM root for a FBX file */ -class Document -{ +class Document { public: Document(const Parser& parser, const ImportSettings& settings); + ~Document(); LazyObject* GetObject(uint64_t id) const; diff --git a/code/FBXDocumentUtil.h b/code/FBXDocumentUtil.h index c0435a663..2450109e5 100644 --- a/code/FBXDocumentUtil.h +++ b/code/FBXDocumentUtil.h @@ -56,7 +56,6 @@ namespace Assimp { namespace FBX { namespace Util { - /* DOM/Parse error reporting - does not return */ AI_WONT_RETURN void DOMError(const std::string& message, const Token& token) AI_WONT_RETURN_SUFFIX; AI_WONT_RETURN void DOMError(const std::string& message, const Element* element = NULL) AI_WONT_RETURN_SUFFIX; @@ -73,28 +72,28 @@ std::shared_ptr GetPropertyTable(const Document& doc, const Scope& sc, bool no_warn = false); - // ------------------------------------------------------------------------------------------------ template -inline const T* ProcessSimpleConnection(const Connection& con, +inline +const T* ProcessSimpleConnection(const Connection& con, bool is_object_property_conn, const char* name, const Element& element, - const char** propNameOut = NULL) + const char** propNameOut = nullptr) { if (is_object_property_conn && !con.PropertyName().length()) { DOMWarning("expected incoming " + std::string(name) + " link to be an object-object connection, ignoring", &element ); - return NULL; + return nullptr; } else if (!is_object_property_conn && con.PropertyName().length()) { DOMWarning("expected incoming " + std::string(name) + " link to be an object-property connection, ignoring", &element ); - return NULL; + return nullptr; } if(is_object_property_conn && propNameOut) { @@ -108,13 +107,12 @@ inline const T* ProcessSimpleConnection(const Connection& con, DOMWarning("failed to read source object for incoming " + std::string(name) + " link, ignoring", &element); - return NULL; + return nullptr; } return dynamic_cast(ob); } - } //!Util } //!FBX } //!Assimp diff --git a/code/FindInvalidDataProcess.cpp b/code/FindInvalidDataProcess.cpp index c99a98865..433f04244 100644 --- a/code/FindInvalidDataProcess.cpp +++ b/code/FindInvalidDataProcess.cpp @@ -282,9 +282,11 @@ void FindInvalidDataProcess::ProcessAnimation (aiAnimation* anim) { // ------------------------------------------------------------------------------------------------ void FindInvalidDataProcess::ProcessAnimationChannel (aiNodeAnim* anim) { - ai_assert( 0 != anim->mPositionKeys ); - ai_assert( 0 != anim->mRotationKeys ); - ai_assert( 0 != anim->mScalingKeys ); + ai_assert( nullptr != anim ); + if (anim->mNumPositionKeys == 0 && anim->mNumRotationKeys == 0 && anim->mNumScalingKeys == 0) { + ai_assert_entry(); + return; + } // Check whether all values in a tracks are identical - in this case // we can remove al keys except one. @@ -328,7 +330,7 @@ void FindInvalidDataProcess::ProcessAnimationChannel (aiNodeAnim* anim) { // ------------------------------------------------------------------------------------------------ // Search a mesh for invalid contents -int FindInvalidDataProcess::ProcessMesh (aiMesh* pMesh) +int FindInvalidDataProcess::ProcessMesh(aiMesh* pMesh) { bool ret = false; std::vector dirtyMask(pMesh->mNumVertices, pMesh->mNumFaces != 0); diff --git a/include/assimp/ai_assert.h b/include/assimp/ai_assert.h index daae23454..e5de5d3f3 100644 --- a/include/assimp/ai_assert.h +++ b/include/assimp/ai_assert.h @@ -46,9 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef ASSIMP_BUILD_DEBUG # include -# define ai_assert(expression) assert(expression) +# define ai_assert(expression) assert( expression ) +# define ai_assert_entry() assert( false ) #else # define ai_assert(expression) -#endif // +# define ai_assert_entry() +#endif // ASSIMP_BUILD_DEBUG #endif // AI_ASSERT_H_INC + diff --git a/include/assimp/mesh.h b/include/assimp/mesh.h index 8d539c59e..36f3ed2af 100644 --- a/include/assimp/mesh.h +++ b/include/assimp/mesh.h @@ -469,10 +469,10 @@ struct aiAnimMesh { // fixme consider moving this to the ctor initializer list as well for( unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; a++){ - mTextureCoords[a] = NULL; + mTextureCoords[a] = nullptr; } for( unsigned int a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS; a++) { - mColors[a] = NULL; + mColors[a] = nullptr; } } @@ -493,34 +493,34 @@ struct aiAnimMesh /** Check whether the anim mesh overrides the vertex positions * of its host mesh*/ bool HasPositions() const { - return mVertices != NULL; + return mVertices != nullptr; } /** Check whether the anim mesh overrides the vertex normals * of its host mesh*/ bool HasNormals() const { - return mNormals != NULL; + return mNormals != nullptr; } /** Check whether the anim mesh overrides the vertex tangents * and bitangents of its host mesh. As for aiMesh, * tangents and bitangents always go together. */ bool HasTangentsAndBitangents() const { - return mTangents != NULL; + return mTangents != nullptr; } /** Check whether the anim mesh overrides a particular * set of vertex colors on his host mesh. * @param pIndex 0= AI_MAX_NUMBER_OF_COLOR_SETS ? false : mColors[pIndex] != NULL; + return pIndex >= AI_MAX_NUMBER_OF_COLOR_SETS ? false : mColors[pIndex] != nullptr; } /** Check whether the anim mesh overrides a particular * set of texture coordinates on his host mesh. * @param pIndex 0= AI_MAX_NUMBER_OF_TEXTURECOORDS ? false : mTextureCoords[pIndex] != NULL; + return pIndex >= AI_MAX_NUMBER_OF_TEXTURECOORDS ? false : mTextureCoords[pIndex] != nullptr; } #endif diff --git a/test/models/PLY/cube_test.ply b/test/models/PLY/cube_test.ply new file mode 100644 index 000000000..0266df0ee --- /dev/null +++ b/test/models/PLY/cube_test.ply @@ -0,0 +1,24 @@ +ply +format ascii 1.0 +comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.4208963464) +element vertex 8 +property float x +property float y +property float z +element face 6 +property list uchar int vertex_index +end_header +0 0 0 +0 0 1 +0 1 1 +0 1 0 +1 0 0 +1 0 1 +1 1 1 +1 1 0 +4 0 1 2 3 +4 7 6 5 4 +4 0 4 5 1 +4 1 5 6 2 +4 2 6 7 3 +4 3 7 4 0 diff --git a/test/models/glTF2/simple_skin/simple_skin.gltf b/test/models/glTF2/simple_skin/simple_skin.gltf new file mode 100644 index 000000000..e075bb34c --- /dev/null +++ b/test/models/glTF2/simple_skin/simple_skin.gltf @@ -0,0 +1,148 @@ +{ + "scenes" : [ { + "nodes" : [ 0 ] + } ], + + "nodes" : [ { + "skin" : 0, + "mesh" : 0, + "children" : [ 1 ] + }, { + "children" : [ 2 ], + "translation" : [ 0.0, 1.0, 0.0 ] + }, { + "rotation" : [ 0.0, 0.0, 0.0, 1.0 ] + } ], + + "meshes" : [ { + "primitives" : [ { + "attributes" : { + "POSITION" : 1, + "JOINTS_0" : 2, + "WEIGHTS_0" : 3 + }, + "indices" : 0 + } ] + } ], + + "skins" : [ { + "inverseBindMatrices" : 4, + "joints" : [ 1, 2 ] + } ], + + "animations" : [ { + "channels" : [ { + "sampler" : 0, + "target" : { + "node" : 2, + "path" : "rotation" + } + } ], + "samplers" : [ { + "input" : 5, + "interpolation" : "LINEAR", + "output" : 6 + } ] + } ], + + "buffers" : [ { + "uri" : "data:application/gltf-buffer;base64,AAABAAMAAAADAAIAAgADAAUAAgAFAAQABAAFAAcABAAHAAYABgAHAAkABgAJAAgAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAD8AAAAAAACAPwAAAD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAgD8AAAAAAAAAAAAAwD8AAAAAAACAPwAAwD8AAAAAAAAAAAAAAEAAAAAAAACAPwAAAEAAAAAA", + "byteLength" : 168 + }, { + "uri" : "data:application/gltf-buffer;base64,AAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAABAPwAAgD4AAAAAAAAAAAAAQD8AAIA+AAAAAAAAAAAAAAA/AAAAPwAAAAAAAAAAAAAAPwAAAD8AAAAAAAAAAAAAgD4AAEA/AAAAAAAAAAAAAIA+AABAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAA=", + "byteLength" : 320 + }, { + "uri" : "data:application/gltf-buffer;base64,AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAvwAAgL8AAAAAAACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAL8AAIC/AAAAAAAAgD8=", + "byteLength" : 128 + }, { + "uri" : "data:application/gltf-buffer;base64,AAAAAAAAAD8AAIA/AADAPwAAAEAAACBAAABAQAAAYEAAAIBAAACQQAAAoEAAALBAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAkxjEPkSLbD8AAAAAAAAAAPT9ND/0/TQ/AAAAAAAAAAD0/TQ/9P00PwAAAAAAAAAAkxjEPkSLbD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAkxjEvkSLbD8AAAAAAAAAAPT9NL/0/TQ/AAAAAAAAAAD0/TS/9P00PwAAAAAAAAAAkxjEvkSLbD8AAAAAAAAAAAAAAAAAAIA/", + "byteLength" : 240 + } ], + + "bufferViews" : [ { + "buffer" : 0, + "byteOffset" : 0, + "byteLength" : 48, + "target" : 34963 + }, { + "buffer" : 0, + "byteOffset" : 48, + "byteLength" : 120, + "target" : 34962 + }, { + "buffer" : 1, + "byteOffset" : 0, + "byteLength" : 320, + "byteStride" : 16 + }, { + "buffer" : 2, + "byteOffset" : 0, + "byteLength" : 128 + }, { + "buffer" : 3, + "byteOffset" : 0, + "byteLength" : 240 + } ], + + "accessors" : [ { + "bufferView" : 0, + "byteOffset" : 0, + "componentType" : 5123, + "count" : 24, + "type" : "SCALAR", + "max" : [ 9 ], + "min" : [ 0 ] + }, { + "bufferView" : 1, + "byteOffset" : 0, + "componentType" : 5126, + "count" : 10, + "type" : "VEC3", + "max" : [ 1.0, 2.0, 0.0 ], + "min" : [ 0.0, 0.0, 0.0 ] + }, { + "bufferView" : 2, + "byteOffset" : 0, + "componentType" : 5123, + "count" : 10, + "type" : "VEC4", + "max" : [ 0, 1, 0, 0 ], + "min" : [ 0, 1, 0, 0 ] + }, { + "bufferView" : 2, + "byteOffset" : 160, + "componentType" : 5126, + "count" : 10, + "type" : "VEC4", + "max" : [ 1.0, 1.0, 0.0, 0.0 ], + "min" : [ 0.0, 0.0, 0.0, 0.0 ] + }, { + "bufferView" : 3, + "byteOffset" : 0, + "componentType" : 5126, + "count" : 2, + "type" : "MAT4", + "max" : [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.5, -1.0, 0.0, 1.0 ], + "min" : [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.5, -1.0, 0.0, 1.0 ] + }, { + "bufferView" : 4, + "byteOffset" : 0, + "componentType" : 5126, + "count" : 12, + "type" : "SCALAR", + "max" : [ 5.5 ], + "min" : [ 0.0 ] + }, { + "bufferView" : 4, + "byteOffset" : 48, + "componentType" : 5126, + "count" : 12, + "type" : "VEC4", + "max" : [ 0.0, 0.0, 0.707, 1.0 ], + "min" : [ 0.0, 0.0, -0.707, 0.707 ] + } ], + + "asset" : { + "version" : "2.0" + } +} \ No newline at end of file diff --git a/test/unit/utglTF2ImportExport.cpp b/test/unit/utglTF2ImportExport.cpp index 3ad02645d..05dba1f1d 100644 --- a/test/unit/utglTF2ImportExport.cpp +++ b/test/unit/utglTF2ImportExport.cpp @@ -376,6 +376,11 @@ TEST_F(utglTF2ImportExport, importglTF2FromMemory) { EXPECT_EQ( nullptr, Scene );*/ } +TEST_F( utglTF2ImportExport, bug_import_simple_skin ) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/glTF2/simple_skin/simple_skin.gltf", aiProcess_ValidateDataStructure ); + +} #ifndef ASSIMP_BUILD_NO_EXPORT TEST_F( utglTF2ImportExport, exportglTF2FromFileTest ) { EXPECT_TRUE( exporterTest() ); From 262bbc0d5eda11a1efecf4797f82937b5e2a3880 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 25 Feb 2019 23:19:21 +0100 Subject: [PATCH 020/187] fix compiler warnings. --- test/unit/utglTF2ImportExport.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/unit/utglTF2ImportExport.cpp b/test/unit/utglTF2ImportExport.cpp index 05dba1f1d..bac76473d 100644 --- a/test/unit/utglTF2ImportExport.cpp +++ b/test/unit/utglTF2ImportExport.cpp @@ -379,8 +379,9 @@ TEST_F(utglTF2ImportExport, importglTF2FromMemory) { TEST_F( utglTF2ImportExport, bug_import_simple_skin ) { Assimp::Importer importer; const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/glTF2/simple_skin/simple_skin.gltf", aiProcess_ValidateDataStructure ); - + EXPECT_NE( nullptr, scene ); } + #ifndef ASSIMP_BUILD_NO_EXPORT TEST_F( utglTF2ImportExport, exportglTF2FromFileTest ) { EXPECT_TRUE( exporterTest() ); From 7b01ff6b8d4a84883d97b438fb6ad3f6d267922b Mon Sep 17 00:00:00 2001 From: Vitaly Ovchinnikov Date: Wed, 27 Feb 2019 12:15:03 +1300 Subject: [PATCH 021/187] ignoring invalid normals and uvs indices instead of canceling the import completely --- code/ObjFileImporter.cpp | 39 +++++++++++++++++++++++++-------- test/unit/utObjImportExport.cpp | 14 ++++++++++++ 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index 782b62a73..814180c81 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -447,6 +447,7 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel, } // Copy vertices, normals and textures into aiMesh instance + bool normalsok = true, uvok = true; unsigned int newIndex = 0, outIndex = 0; for ( size_t index=0; index < pObjMesh->m_Faces.size(); index++ ) { // Get source face @@ -466,12 +467,16 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel, pMesh->mVertices[ newIndex ] = pModel->m_Vertices[ vertex ]; // Copy all normals - if ( !pModel->m_Normals.empty() && vertexIndex < pSourceFace->m_normals.size()) { + if ( normalsok && !pModel->m_Normals.empty() && vertexIndex < pSourceFace->m_normals.size()) { const unsigned int normal = pSourceFace->m_normals.at( vertexIndex ); - if ( normal >= pModel->m_Normals.size() ) { - throw DeadlyImportError( "OBJ: vertex normal index out of range" ); + if ( normal >= pModel->m_Normals.size() ) + { + normalsok = false; + } + else + { + pMesh->mNormals[ newIndex ] = pModel->m_Normals[ normal ]; } - pMesh->mNormals[ newIndex ] = pModel->m_Normals[ normal ]; } // Copy all vertex colors @@ -482,15 +487,19 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel, } // Copy all texture coordinates - if ( !pModel->m_TextureCoord.empty() && vertexIndex < pSourceFace->m_texturCoords.size()) + if ( uvok && !pModel->m_TextureCoord.empty() && vertexIndex < pSourceFace->m_texturCoords.size()) { const unsigned int tex = pSourceFace->m_texturCoords.at( vertexIndex ); if ( tex >= pModel->m_TextureCoord.size() ) - throw DeadlyImportError("OBJ: texture coordinate index out of range"); - - const aiVector3D &coord3d = pModel->m_TextureCoord[ tex ]; - pMesh->mTextureCoords[ 0 ][ newIndex ] = aiVector3D( coord3d.x, coord3d.y, coord3d.z ); + { + uvok = false; + } + else + { + const aiVector3D &coord3d = pModel->m_TextureCoord[ tex ]; + pMesh->mTextureCoords[ 0 ][ newIndex ] = aiVector3D( coord3d.x, coord3d.y, coord3d.z ); + } } // Get destination face @@ -534,6 +543,18 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel, ++newIndex; } } + + if (!normalsok) + { + delete [] pMesh->mNormals; + pMesh->mNormals = nullptr; + } + + if (!uvok) + { + delete [] pMesh->mTextureCoords[0]; + pMesh->mTextureCoords[0] = nullptr; + } } // ------------------------------------------------------------------------------------------------ diff --git a/test/unit/utObjImportExport.cpp b/test/unit/utObjImportExport.cpp index 0f715af14..2d1933094 100644 --- a/test/unit/utObjImportExport.cpp +++ b/test/unit/utObjImportExport.cpp @@ -377,6 +377,20 @@ TEST_F(utObjImportExport, 0based_array_Test) { EXPECT_EQ(nullptr, scene); } +TEST_F(utObjImportExport, invalid_normals_uvs) { + static const char *ObjModel = + "v -0.500000 0.000000 0.400000\n" + "v -0.500000 0.000000 -0.800000\n" + "v -0.500000 1.000000 -0.800000\n" + "vt 0 0\n" + "vn 0 1 0\n" + "f 1/1/1 1/1/1 2/2/2\nB"; + + Assimp::Importer myImporter; + const aiScene *scene = myImporter.ReadFileFromMemory(ObjModel, strlen(ObjModel), 0); + EXPECT_NE(nullptr, scene); +} + TEST_F( utObjImportExport, mtllib_after_g ) { ::Assimp::Importer importer; const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/OBJ/cube_mtllib_after_g.obj", aiProcess_ValidateDataStructure ); From e9eda062a17b1804a05134fe69a135a996413415 Mon Sep 17 00:00:00 2001 From: Lawrence Kok Date: Fri, 1 Mar 2019 10:43:18 +0700 Subject: [PATCH 022/187] In ColladaLoader in version 3.2.0 (release est. 2015) the name assignment was based on name attribute (xml) with optional fallbacks to id and sid. Over time this was changed to fix a bug and support for names was removed, only to be later (re)added using an optional `useColladaName` setting. We discovered a problem that with when using the name based assignment it doesn't assign automatically generated names like what it did in the logic in v3.2.0 and on the id based approach on current master. We discovered this causes problems with matching the aiCamera and aiLight. So we rectified this problem by auto generating names also on the name based method. --- code/ColladaLoader.cpp | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 2a3412ac2..6837dca4a 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -1926,21 +1926,28 @@ const Collada::Node* ColladaLoader::FindNodeBySID( const Collada::Node* pNode, c std::string ColladaLoader::FindNameForNode( const Collada::Node* pNode) { // If explicitly requested, just use the collada name. - if (useColladaName) { - return pNode->mName; - } - - // Now setup the name of the assimp node. The collada name might not be - // unique, so we use the collada ID. - if (!pNode->mID.empty()) - return pNode->mID; - else if (!pNode->mSID.empty()) - return pNode->mSID; - else + if (useColladaName) { - // No need to worry. Unnamed nodes are no problem at all, except - // if cameras or lights need to be assigned to them. - return format() << "$ColladaAutoName$_" << mNodeNameCounter++; + if (!pNode->mName.empty()) { + return pNode->mName; + } else { + return format() << "$ColladaAutoName$_" << mNodeNameCounter++; + } + } + else + { + // Now setup the name of the assimp node. The collada name might not be + // unique, so we use the collada ID. + if (!pNode->mID.empty()) + return pNode->mID; + else if (!pNode->mSID.empty()) + return pNode->mSID; + else + { + // No need to worry. Unnamed nodes are no problem at all, except + // if cameras or lights need to be assigned to them. + return format() << "$ColladaAutoName$_" << mNodeNameCounter++; + } } } From 99c3697d1230dbff354f2507174f76444f4738f0 Mon Sep 17 00:00:00 2001 From: Andy Maloney Date: Fri, 1 Mar 2019 12:38:59 -0500 Subject: [PATCH 023/187] Ensure our include directories get added in the correct order If you have assimp installed already and in the include path (e.g. I have it via homebrew), it can pick up the wrong headers. This forces the include order so our local ones are found first when building assimp. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 14c65c188..6417053ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,7 +198,7 @@ CONFIGURE_FILE( ${CMAKE_CURRENT_BINARY_DIR}/include/assimp/config.h ) -INCLUDE_DIRECTORIES( +INCLUDE_DIRECTORIES( BEFORE ./ include ${CMAKE_CURRENT_BINARY_DIR} From 3a610d3d66511c3ed35977f85625d5e8316c37df Mon Sep 17 00:00:00 2001 From: Rich ard Date: Fri, 8 Mar 2019 15:49:18 +0000 Subject: [PATCH 024/187] Embed version information under Windows --- .gitignore | 1 + code/CMakeLists.txt | 4 ++++ code/res/assimp.rc | 8 ++++---- revision.h.in | 11 +++++++++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index d383f3ec8..49cd60ca8 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ CMakeLists.txt.user # Generated assimp.pc +assimp.aps revision.h contrib/zlib/zconf.h contrib/zlib/zlib.pc diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 37ad34b85..ee2602b54 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -145,6 +145,10 @@ SET( Core_SRCS Assimp.cpp ) +IF(MSVC) + list(APPEND Core_SRCS "res/assimp.rc") +ENDIF(MSVC) + SET( Logging_SRCS ${HEADER_PATH}/DefaultLogger.hpp ${HEADER_PATH}/LogStream.hpp diff --git a/code/res/assimp.rc b/code/res/assimp.rc index 0fe98c05d..ae0c87b8a 100644 --- a/code/res/assimp.rc +++ b/code/res/assimp.rc @@ -31,8 +31,8 @@ LANGUAGE LANG_GERMAN, SUBLANG_GERMAN // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,1,SVNRevision, 0 - PRODUCTVERSION 1,1,SVNRevision,0 + FILEVERSION VER_FILEVERSION + PRODUCTVERSION VER_FILEVERSION FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -50,12 +50,12 @@ BEGIN VALUE "Comments", "Licensed under a 3-clause BSD license" VALUE "CompanyName", "assimp team" VALUE "FileDescription", "Open Asset Import Library" - VALUE "FileVersion", 1,1,SVNRevision,0 + VALUE "FileVersion", VER_FILEVERSION VALUE "InternalName", "assimp " VALUE "LegalCopyright", "Copyright (C) 2006-2010" VALUE "OriginalFilename", "assimpNN.dll" VALUE "ProductName", "Open Asset Import Library" - VALUE "ProductVersion", 1,1,SVNRevision,0 + VALUE "ProductVersion", VER_FILEVERSION_STR ,0 END END diff --git a/revision.h.in b/revision.h.in index 87c41fa89..0ad58feb7 100644 --- a/revision.h.in +++ b/revision.h.in @@ -4,4 +4,15 @@ #define GitVersion 0x@GIT_COMMIT_HASH@ #define GitBranch "@GIT_BRANCH@" +#define VER_MAJOR @ASSIMP_VERSION_MAJOR@ +#define VER_MINOR @ASSIMP_VERSION_MINOR@ +#define VER_PATCH @ASSIMP_VERSION_PATCH@ +#define VER_BUILD @ASSIMP_PACKAGE_VERSION@ + +#define STR_HELP(x) #x +#define STR(x) STR_HELP(x) + +#define VER_FILEVERSION VER_MAJOR,VER_MINOR,VER_PATCH,VER_BUILD +#define VER_FILEVERSION_STR STR(VER_MAJOR) "." STR(VER_MINOR) "." STR(VER_PATCH) "." STR(VER_BUILD) + #endif // ASSIMP_REVISION_H_INC From 80dffb63e86733b43530b7a52bb49a1ae6987d2f Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Sat, 9 Mar 2019 12:01:45 -0500 Subject: [PATCH 025/187] Add aiNode::mName to ValidateDataStructure error reporting to ease debugging --- code/ValidateDataStructure.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index 405670bdd..5a80f73c9 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -905,19 +905,22 @@ void ValidateDSProcess::Validate( const aiAnimation* pAnimation, // ------------------------------------------------------------------------------------------------ void ValidateDSProcess::Validate( const aiNode* pNode) { - if (!pNode)ReportError("A node of the scenegraph is NULL"); - if (pNode != mScene->mRootNode && !pNode->mParent) - this->ReportError("A node has no valid parent (aiNode::mParent is NULL)"); - + if (!pNode) { + ReportError("A node of the scenegraph is NULL"); + } + // Validate node name string first so that it's safe to use in below expressions this->Validate(&pNode->mName); + if (pNode != mScene->mRootNode && !pNode->mParent){ + this->ReportError("Non-root node %s lacks a valid parent (aiNode::mParent is NULL) ",pNode->mName); + } // validate all meshes if (pNode->mNumMeshes) { if (!pNode->mMeshes) { - ReportError("aiNode::mMeshes is NULL (aiNode::mNumMeshes is %i)", - pNode->mNumMeshes); + ReportError("aiNode::mMeshes is NULL for node %s (aiNode::mNumMeshes is %i)", + pNode->mNumMeshes, pNode->mName); } std::vector abHadMesh; abHadMesh.resize(mScene->mNumMeshes,false); @@ -925,13 +928,13 @@ void ValidateDSProcess::Validate( const aiNode* pNode) { if (pNode->mMeshes[i] >= mScene->mNumMeshes) { - ReportError("aiNode::mMeshes[%i] is out of range (maximum is %i)", - pNode->mMeshes[i],mScene->mNumMeshes-1); + ReportError("aiNode::mMeshes[%i] is out of range for node %s (maximum is %i)", + pNode->mMeshes[i], pNode->mName, mScene->mNumMeshes-1); } if (abHadMesh[pNode->mMeshes[i]]) { - ReportError("aiNode::mMeshes[%i] is already referenced by this node (value: %i)", - i,pNode->mMeshes[i]); + ReportError("aiNode::mMeshes[%i] is already referenced by this node %s (value: %i)", + i, pNode->mName, pNode->mMeshes[i]); } abHadMesh[pNode->mMeshes[i]] = true; } @@ -939,8 +942,8 @@ void ValidateDSProcess::Validate( const aiNode* pNode) if (pNode->mNumChildren) { if (!pNode->mChildren) { - ReportError("aiNode::mChildren is NULL (aiNode::mNumChildren is %i)", - pNode->mNumChildren); + ReportError("aiNode::mChildren is NULL for node %s (aiNode::mNumChildren is %i)", + pNode->mName, pNode->mNumChildren); } for (unsigned int i = 0; i < pNode->mNumChildren;++i) { Validate(pNode->mChildren[i]); From 2e262dbbc601e4fec6798aeced0140c7aeece4fb Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Sat, 9 Mar 2019 12:36:21 -0500 Subject: [PATCH 026/187] Make syntax used to call ReportError & ReportWarning a bit more consistent --- code/ValidateDataStructure.cpp | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index 5a80f73c9..0a6b0b2ac 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -170,7 +170,7 @@ inline void ValidateDSProcess::DoValidationEx(T** parray, unsigned int size, { if (parray[i]->mName == parray[a]->mName) { - this->ReportError("aiScene::%s[%i] has the same name as " + ReportError("aiScene::%s[%i] has the same name as " "aiScene::%s[%i]",firstName, i,secondName, a); } } @@ -422,7 +422,9 @@ void ValidateDSProcess::Validate( const aiMesh* pMesh) if (!abRefList[i])b = true; } abRefList.clear(); - if (b)ReportWarning("There are unreferenced vertices"); + if (b) { + ReportWarning("There are unreferenced vertices"); + } // texture channel 2 may not be set if channel 1 is zero ... { @@ -557,7 +559,9 @@ void ValidateDSProcess::Validate( const aiAnimation* pAnimation) Validate(pAnimation, pAnimation->mChannels[i]); } } - else ReportError("aiAnimation::mNumChannels is 0. At least one node animation channel must be there."); + else { + ReportError("aiAnimation::mNumChannels is 0. At least one node animation channel must be there."); + } // Animation duration is allowed to be zero in cases where the anim contains only a single key frame. // if (!pAnimation->mDuration)this->ReportError("aiAnimation::mDuration is zero"); @@ -773,8 +777,10 @@ void ValidateDSProcess::Validate( const aiTexture* pTexture) } if (pTexture->mHeight) { - if (!pTexture->mWidth)ReportError("aiTexture::mWidth is zero " - "(aiTexture::mHeight is %i, uncompressed texture)",pTexture->mHeight); + if (!pTexture->mWidth){ + ReportError("aiTexture::mWidth is zero (aiTexture::mHeight is %i, uncompressed texture)", + pTexture->mHeight); + } } else { @@ -813,7 +819,7 @@ void ValidateDSProcess::Validate( const aiAnimation* pAnimation, { if (!pNodeAnim->mPositionKeys) { - this->ReportError("aiNodeAnim::mPositionKeys is NULL (aiNodeAnim::mNumPositionKeys is %i)", + ReportError("aiNodeAnim::mPositionKeys is NULL (aiNodeAnim::mNumPositionKeys is %i)", pNodeAnim->mNumPositionKeys); } double dLast = -10e10; @@ -844,7 +850,7 @@ void ValidateDSProcess::Validate( const aiAnimation* pAnimation, { if (!pNodeAnim->mRotationKeys) { - this->ReportError("aiNodeAnim::mRotationKeys is NULL (aiNodeAnim::mNumRotationKeys is %i)", + ReportError("aiNodeAnim::mRotationKeys is NULL (aiNodeAnim::mNumRotationKeys is %i)", pNodeAnim->mNumRotationKeys); } double dLast = -10e10; @@ -911,7 +917,7 @@ void ValidateDSProcess::Validate( const aiNode* pNode) // Validate node name string first so that it's safe to use in below expressions this->Validate(&pNode->mName); if (pNode != mScene->mRootNode && !pNode->mParent){ - this->ReportError("Non-root node %s lacks a valid parent (aiNode::mParent is NULL) ",pNode->mName); + ReportError("Non-root node %s lacks a valid parent (aiNode::mParent is NULL) ",pNode->mName); } // validate all meshes @@ -956,7 +962,7 @@ void ValidateDSProcess::Validate( const aiString* pString) { if (pString->length > MAXLEN) { - this->ReportError("aiString::length is too large (%i, maximum is %lu)", + ReportError("aiString::length is too large (%i, maximum is %lu)", pString->length,MAXLEN); } const char* sz = pString->data; @@ -964,12 +970,14 @@ void ValidateDSProcess::Validate( const aiString* pString) { if ('\0' == *sz) { - if (pString->length != (unsigned int)(sz-pString->data)) + if (pString->length != (unsigned int)(sz-pString->data)) { ReportError("aiString::data is invalid: the terminal zero is at a wrong offset"); + } break; } - else if (sz >= &pString->data[MAXLEN]) + else if (sz >= &pString->data[MAXLEN]) { ReportError("aiString::data is invalid. There is no terminal character"); + } ++sz; } } From 925ac6b3723ba520c32657e3d31c5e0e82362ad4 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 10 Mar 2019 11:17:52 +0100 Subject: [PATCH 027/187] Typo Fix a typo in a comment. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6417053ac..a6e511b66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -157,7 +157,7 @@ SET (PROJECT_VERSION "${ASSIMP_VERSION}") SET( ASSIMP_PACKAGE_VERSION "0" CACHE STRING "the package-specific version used for uploading the sources" ) -# Enable C++1 globally +# Enable C++11 support globally set_property( GLOBAL PROPERTY CXX_STANDARD 11 ) IF(NOT IGNORE_GIT_HASH) From 7bb130377395a5f270618538d36690defba30d2f Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Sun, 10 Mar 2019 13:12:56 -0400 Subject: [PATCH 028/187] ValidateDataStructure.cpp: * Fixed warnings introduced by last commit (hopefully) * Fixed case fallthrough (due to exception flow, it didn't make a practical difference, but hopefully will remove a warning) * Minor formatting consistency improvements --- code/ValidateDataStructure.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index 0a6b0b2ac..e73d1cca4 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -330,6 +330,7 @@ void ValidateDSProcess::Validate( const aiMesh* pMesh) { case 0: ReportError("aiMesh::mFaces[%i].mNumIndices is 0",i); + break; case 1: if (0 == (pMesh->mPrimitiveTypes & aiPrimitiveType_POINT)) { @@ -811,9 +812,9 @@ void ValidateDSProcess::Validate( const aiAnimation* pAnimation, { Validate(&pNodeAnim->mNodeName); - if (!pNodeAnim->mNumPositionKeys && !pNodeAnim->mScalingKeys && !pNodeAnim->mNumRotationKeys) + if (!pNodeAnim->mNumPositionKeys && !pNodeAnim->mScalingKeys && !pNodeAnim->mNumRotationKeys) { ReportError("Empty node animation channel"); - + } // otherwise check whether one of the keys exceeds the total duration of the animation if (pNodeAnim->mNumPositionKeys) { @@ -916,8 +917,9 @@ void ValidateDSProcess::Validate( const aiNode* pNode) } // Validate node name string first so that it's safe to use in below expressions this->Validate(&pNode->mName); + const char* nodeName = (&pNode->mName)->C_Str(); if (pNode != mScene->mRootNode && !pNode->mParent){ - ReportError("Non-root node %s lacks a valid parent (aiNode::mParent is NULL) ",pNode->mName); + ReportError("Non-root node %s lacks a valid parent (aiNode::mParent is NULL) ", nodeName); } // validate all meshes @@ -926,7 +928,7 @@ void ValidateDSProcess::Validate( const aiNode* pNode) if (!pNode->mMeshes) { ReportError("aiNode::mMeshes is NULL for node %s (aiNode::mNumMeshes is %i)", - pNode->mNumMeshes, pNode->mName); + pNode->mNumMeshes, nodeName); } std::vector abHadMesh; abHadMesh.resize(mScene->mNumMeshes,false); @@ -935,12 +937,12 @@ void ValidateDSProcess::Validate( const aiNode* pNode) if (pNode->mMeshes[i] >= mScene->mNumMeshes) { ReportError("aiNode::mMeshes[%i] is out of range for node %s (maximum is %i)", - pNode->mMeshes[i], pNode->mName, mScene->mNumMeshes-1); + pNode->mMeshes[i], nodeName, mScene->mNumMeshes-1); } if (abHadMesh[pNode->mMeshes[i]]) { ReportError("aiNode::mMeshes[%i] is already referenced by this node %s (value: %i)", - i, pNode->mName, pNode->mMeshes[i]); + i, nodeName, pNode->mMeshes[i]); } abHadMesh[pNode->mMeshes[i]] = true; } @@ -949,7 +951,7 @@ void ValidateDSProcess::Validate( const aiNode* pNode) { if (!pNode->mChildren) { ReportError("aiNode::mChildren is NULL for node %s (aiNode::mNumChildren is %i)", - pNode->mName, pNode->mNumChildren); + nodeName, pNode->mNumChildren); } for (unsigned int i = 0; i < pNode->mNumChildren;++i) { Validate(pNode->mChildren[i]); From 28c110af2e7a594eea64a390f1af370455963f98 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Sun, 10 Mar 2019 13:15:15 -0400 Subject: [PATCH 029/187] Initial pass --- test/unit/utValidateDataStructure.cpp | 199 ++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 test/unit/utValidateDataStructure.cpp diff --git a/test/unit/utValidateDataStructure.cpp b/test/unit/utValidateDataStructure.cpp new file mode 100644 index 000000000..61fc93dd7 --- /dev/null +++ b/test/unit/utValidateDataStructure.cpp @@ -0,0 +1,199 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2019, assimp 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 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. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" + +#include +#include +#include + +using namespace std; +using namespace Assimp; + + +class ValidateDataStructureTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + + ValidateDSProcess* vds; + aiScene* scene; +}; + +// ------------------------------------------------------------------------------------------------ +void ValidateDataStructureTest::SetUp() +{ + // setup a dummy scene with a single node + scene = new aiScene(); + scene->mRootNode = new aiNode(); + scene->mRootNode->mName.Set(""); + + // add some translation + scene->mRootNode->mTransformation.a4 = 1.f; + scene->mRootNode->mTransformation.b4 = 2.f; + scene->mRootNode->mTransformation.c4 = 3.f; + + // and allocate a ScenePreprocessor to operate on the scene + vds = new ValidateDSProcess(); +} + +// ------------------------------------------------------------------------------------------------ +void ValidateDataStructureTest::TearDown() +{ + delete vds; + delete scene; +} + + + +// ------------------------------------------------------------------------------------------------ +//Template +//TEST_F(ScenePreprocessorTest, test) +//{ +//} +// TODO Conditions not yet checked: +//132: ReportError("aiScene::%s is NULL (aiScene::%s is %i)", +//139: ReportError("aiScene::%s[%i] is NULL (aiScene::%s is %i)", +//156: ReportError("aiScene::%s is NULL (aiScene::%s is %i)", +//163: ReportError("aiScene::%s[%i] is NULL (aiScene::%s is %i)", +//173: ReportError("aiScene::%s[%i] has the same name as " +//192: ReportError("aiScene::%s[%i] has no corresponding node in the scene graph (%s)", +//196: ReportError("aiScene::%s[%i]: there are more than one nodes with %s as name", +//217: ReportError("aiScene::mNumMeshes is 0. At least one mesh must be there"); +//220: ReportError("aiScene::mMeshes is non-null although there are no meshes"); +//229: ReportError("aiScene::mAnimations is non-null although there are no animations"); +//238: ReportError("aiScene::mCameras is non-null although there are no cameras"); +//247: ReportError("aiScene::mLights is non-null although there are no lights"); +//256: ReportError("aiScene::mTextures is non-null although there are no textures"); +//266: ReportError("aiScene::mNumMaterials is 0. At least one material must be there"); +//270: ReportError("aiScene::mMaterials is non-null although there are no materials"); +//281: ReportWarning("aiLight::mType is aiLightSource_UNDEFINED"); +//286: ReportWarning("aiLight::mAttenuationXXX - all are zero"); +//290: ReportError("aiLight::mAngleInnerCone is larger than aiLight::mAngleOuterCone"); +//295: ReportWarning("aiLight::mColorXXX - all are black and won't have any influence"); +//303: ReportError("aiCamera::mClipPlaneFar must be >= aiCamera::mClipPlaneNear"); +//308: ReportWarning("%f is not a valid value for aiCamera::mHorizontalFOV",pCamera->mHorizontalFOV); +//317: ReportError("aiMesh::mMaterialIndex is invalid (value: %i maximum: %i)", +//332: ReportError("aiMesh::mFaces[%i].mNumIndices is 0",i); +//336: ReportError("aiMesh::mFaces[%i] is a POINT but aiMesh::mPrimitiveTypes " +//337: "does not report the POINT flag",i); +//343: ReportError("aiMesh::mFaces[%i] is a LINE but aiMesh::mPrimitiveTypes " +//344: "does not report the LINE flag",i); +//350: ReportError("aiMesh::mFaces[%i] is a TRIANGLE but aiMesh::mPrimitiveTypes " +//351: "does not report the TRIANGLE flag",i); +//357: this->ReportError("aiMesh::mFaces[%i] is a POLYGON but aiMesh::mPrimitiveTypes " +//358: "does not report the POLYGON flag",i); +//365: ReportError("aiMesh::mFaces[%i].mIndices is NULL",i); +//370: ReportError("The mesh %s contains no vertices", pMesh->mName.C_Str()); +//374: ReportError("Mesh has too many vertices: %u, but the limit is %u",pMesh->mNumVertices,AI_MAX_VERTICES); +//377: ReportError("Mesh has too many faces: %u, but the limit is %u",pMesh->mNumFaces,AI_MAX_FACES); +//382: ReportError("If there are tangents, bitangent vectors must be present as well"); +//387: ReportError("Mesh %s contains no faces", pMesh->mName.C_Str()); +//398: ReportError("Face %u has too many faces: %u, but the limit is %u",i,face.mNumIndices,AI_MAX_FACE_INDICES); +//404: ReportError("aiMesh::mFaces[%i]::mIndices[%i] is out of range",i,a); +//412: ReportError("aiMesh::mVertices[%i] is referenced twice - second " +//426: ReportWarning("There are unreferenced vertices"); +//439: ReportError("Texture coordinate channel %i exists " +//453: ReportError("Vertex color channel %i is exists " +//464: ReportError("aiMesh::mBones is NULL (aiMesh::mNumBones is %i)", +//480: ReportError("Bone %u has too many weights: %u, but the limit is %u",i,bone->mNumWeights,AI_MAX_BONE_WEIGHTS); +//485: ReportError("aiMesh::mBones[%i] is NULL (aiMesh::mNumBones is %i)", +//498: ReportError("aiMesh::mBones[%i], name = \"%s\" has the same name as " +//507: ReportWarning("aiMesh::mVertices[%i]: bone weight sum != 1.0 (sum is %f)",i,afSum[i]); +//513: ReportError("aiMesh::mBones is non-null although there are no bones"); +//524: ReportError("aiBone::mNumWeights is zero"); +//531: ReportError("aiBone::mWeights[%i].mVertexId is out of range",i); +//534: ReportWarning("aiBone::mWeights[%i].mWeight has an invalid value",i); +//549: ReportError("aiAnimation::mChannels is NULL (aiAnimation::mNumChannels is %i)", +//556: ReportError("aiAnimation::mChannels[%i] is NULL (aiAnimation::mNumChannels is %i)", +//563: ReportError("aiAnimation::mNumChannels is 0. At least one node animation channel must be there."); +//567: // if (!pAnimation->mDuration)this->ReportError("aiAnimation::mDuration is zero"); +//592: ReportError("Material property %s is expected to be a string",prop->mKey.data); +//596: ReportError("%s #%i is set, but there are only %i %s textures", +//611: ReportError("Found texture property with index %i, although there " +//619: ReportError("Material property %s%i is expected to be an integer (size is %i)", +//627: ReportError("Material property %s%i is expected to be 5 floats large (size is %i)", +//635: ReportError("Material property %s%i is expected to be an integer (size is %i)", +//656: ReportWarning("Invalid UV index: %i (key %s). Mesh %i has only %i UV channels", +//676: ReportWarning("UV-mapped texture, but there are no UV coords"); +//690: ReportError("aiMaterial::mProperties[%i] is NULL (aiMaterial::mNumProperties is %i)", +//694: ReportError("aiMaterial::mProperties[%i].mDataLength or " +//702: ReportError("aiMaterial::mProperties[%i].mDataLength is " +//707: ReportError("Missing null-terminator in string material property"); +//713: ReportError("aiMaterial::mProperties[%i].mDataLength is " +//720: ReportError("aiMaterial::mProperties[%i].mDataLength is " +//739: ReportWarning("A specular shading model is specified but there is no " +//743: ReportWarning("A specular shading model is specified but the value of the " +//752: ReportWarning("Invalid opacity value (must be 0 < opacity < 1.0)"); +//776: ReportError("aiTexture::pcData is NULL"); +//781: ReportError("aiTexture::mWidth is zero (aiTexture::mHeight is %i, uncompressed texture)", +//788: ReportError("aiTexture::mWidth is zero (compressed texture)"); +//791: ReportWarning("aiTexture::achFormatHint must be zero-terminated"); +//794: ReportWarning("aiTexture::achFormatHint should contain a file extension " +//804: ReportError("aiTexture::achFormatHint contains non-lowercase letters"); +//815: ReportError("Empty node animation channel"); +//822: ReportError("aiNodeAnim::mPositionKeys is NULL (aiNodeAnim::mNumPositionKeys is %i)", +//833: ReportError("aiNodeAnim::mPositionKeys[%i].mTime (%.5f) is larger " +//840: ReportWarning("aiNodeAnim::mPositionKeys[%i].mTime (%.5f) is smaller " +//853: ReportError("aiNodeAnim::mRotationKeys is NULL (aiNodeAnim::mNumRotationKeys is %i)", +//861: ReportError("aiNodeAnim::mRotationKeys[%i].mTime (%.5f) is larger " +//868: ReportWarning("aiNodeAnim::mRotationKeys[%i].mTime (%.5f) is smaller " +//880: ReportError("aiNodeAnim::mScalingKeys is NULL (aiNodeAnim::mNumScalingKeys is %i)", +//888: ReportError("aiNodeAnim::mScalingKeys[%i].mTime (%.5f) is larger " +//895: ReportWarning("aiNodeAnim::mScalingKeys[%i].mTime (%.5f) is smaller " +//907: ReportError("A node animation channel must have at least one subtrack"); +//915: ReportError("A node of the scenegraph is NULL"); +//920: ReportError("Non-root node %s lacks a valid parent (aiNode::mParent is NULL) ",pNode->mName); +//928: ReportError("aiNode::mMeshes is NULL for node %s (aiNode::mNumMeshes is %i)", +//937: ReportError("aiNode::mMeshes[%i] is out of range for node %s (maximum is %i)", +//942: ReportError("aiNode::mMeshes[%i] is already referenced by this node %s (value: %i)", +//951: ReportError("aiNode::mChildren is NULL for node %s (aiNode::mNumChildren is %i)", +//965: ReportError("aiString::length is too large (%i, maximum is %lu)", +//974: ReportError("aiString::data is invalid: the terminal zero is at a wrong offset"); +//979: ReportError("aiString::data is invalid. There is no terminal character"); +} + From 27dc922d096cbe0a1d25c79b541704660db8accb Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Tue, 12 Mar 2019 01:06:54 -0400 Subject: [PATCH 030/187] Hopefully fix all warnings? --- code/ValidateDataStructure.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index e73d1cca4..0cbc89b1f 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -160,7 +160,7 @@ inline void ValidateDSProcess::DoValidationEx(T** parray, unsigned int size, { if (!parray[i]) { - ReportError("aiScene::%s[%i] is NULL (aiScene::%s is %i)", + ReportError("aiScene::%s[%y] is NULL (aiScene::%s is %u)", firstName,i,secondName,size); } Validate(parray[i]); @@ -170,8 +170,8 @@ inline void ValidateDSProcess::DoValidationEx(T** parray, unsigned int size, { if (parray[i]->mName == parray[a]->mName) { - ReportError("aiScene::%s[%i] has the same name as " - "aiScene::%s[%i]",firstName, i,secondName, a); + ReportError("aiScene::%s[%u] has the same name as " + "aiScene::%s[%u]",firstName, i,secondName, a); } } } @@ -964,7 +964,7 @@ void ValidateDSProcess::Validate( const aiString* pString) { if (pString->length > MAXLEN) { - ReportError("aiString::length is too large (%i, maximum is %lu)", + ReportError("aiString::length is too large (%lu, maximum is %lu)", pString->length,MAXLEN); } const char* sz = pString->data; From 4728c1bb68af0a57e3e2118a3bd5ab243f17a253 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Tue, 12 Mar 2019 02:49:33 -0400 Subject: [PATCH 031/187] remove 1 more of the warnings --- code/ValidateDataStructure.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index 0cbc89b1f..4571d5884 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -928,7 +928,7 @@ void ValidateDSProcess::Validate( const aiNode* pNode) if (!pNode->mMeshes) { ReportError("aiNode::mMeshes is NULL for node %s (aiNode::mNumMeshes is %i)", - pNode->mNumMeshes, nodeName); + nodeName, pNode->mNumMeshes); } std::vector abHadMesh; abHadMesh.resize(mScene->mNumMeshes,false); From 5fd9789fc3006d819266f0f61b791c984731d1a8 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Tue, 12 Mar 2019 02:51:37 -0400 Subject: [PATCH 032/187] remove last warning? --- code/ValidateDataStructure.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index 4571d5884..0e84297a4 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -160,7 +160,7 @@ inline void ValidateDSProcess::DoValidationEx(T** parray, unsigned int size, { if (!parray[i]) { - ReportError("aiScene::%s[%y] is NULL (aiScene::%s is %u)", + ReportError("aiScene::%s[%u] is NULL (aiScene::%s is %u)", firstName,i,secondName,size); } Validate(parray[i]); From f0ed1702b99df30ae593208e3a0e2db668d2f9e1 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 12 Mar 2019 20:49:14 +0100 Subject: [PATCH 033/187] Reenable vs2015 and vs1017 --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index a1890b9cb..2b5f212f9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,8 +15,8 @@ matrix: image: - Visual Studio 2013 -# - Visual Studio 2015 -# - Visual Studio 2017 + - Visual Studio 2015 + - Visual Studio 2017 platform: - Win32 From ac80b116a9a29940d083ee03ff6a02ff76734338 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 12 Mar 2019 21:42:32 +0100 Subject: [PATCH 034/187] Update appveyor.yml Fix build image. --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 2b5f212f9..6924380e5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,8 +15,8 @@ matrix: image: - Visual Studio 2013 - - Visual Studio 2015 - - Visual Studio 2017 + - Previous Visual Studio 2015 + - Previous Visual Studio 2017 platform: - Win32 From 63afcf82670ac12c78687cd00a6d373b3014a8f4 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 12 Mar 2019 21:56:28 +0100 Subject: [PATCH 035/187] Update appveyor.yml Fix cmake generation. --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 6924380e5..78ef4da75 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -28,8 +28,8 @@ install: - set PATH=C:\Ruby24-x64\bin;%PATH% - set CMAKE_DEFINES -DASSIMP_WERROR=ON - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2013" set CMAKE_GENERATOR_NAME=Visual Studio 12 2013 - - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" set CMAKE_GENERATOR_NAME=Visual Studio 14 2015 - - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" set CMAKE_GENERATOR_NAME=Visual Studio 15 2017 + - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Previous Visual Studio 2015" set CMAKE_GENERATOR_NAME=Visual Studio 14 2015 + - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Previous Visual Studio 2017" set CMAKE_GENERATOR_NAME=Visual Studio 15 2017 - if "%platform%"=="x64" set CMAKE_GENERATOR_NAME=%CMAKE_GENERATOR_NAME% Win64 - cmake %CMAKE_DEFINES% -G "%CMAKE_GENERATOR_NAME%" - set PATH=%PATH%;"C:\\Program Files (x86)\\Inno Setup 5" From 0dc2e9197a03ff86dbc2b283879bef67275aa8cf Mon Sep 17 00:00:00 2001 From: kkulling Date: Wed, 13 Mar 2019 14:40:02 +0100 Subject: [PATCH 036/187] Fix compiler warnings. --- code/AssbinLoader.cpp | 2 +- code/FBXConverter.cpp | 2 +- code/SMDLoader.cpp | 4 ++-- test/unit/utSTLImportExport.cpp | 4 ++-- tools/assimp_view/SceneAnimator.cpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/AssbinLoader.cpp b/code/AssbinLoader.cpp index 7adb8db6f..acba8b3dd 100644 --- a/code/AssbinLoader.cpp +++ b/code/AssbinLoader.cpp @@ -708,7 +708,7 @@ void AssbinImporter::InternReadFile( const std::string& pFile, aiScene* pScene, unsigned char * uncompressedData = new unsigned char[ uncompressedSize ]; - int res = uncompress( uncompressedData, &uncompressedSize, compressedData, len ); + int res = uncompress( uncompressedData, &uncompressedSize, compressedData, (uLong) len ); if(res != Z_OK) { delete [] uncompressedData; diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index c556d3bba..a61ae4006 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -964,7 +964,7 @@ namespace Assimp { { if (indices[i] < 0) epcount++; } - unsigned int pcount = indices.size(); + unsigned int pcount = static_cast( indices.size() ); unsigned int scount = out_mesh->mNumFaces = pcount - epcount; aiFace* fac = out_mesh->mFaces = new aiFace[scount](); diff --git a/code/SMDLoader.cpp b/code/SMDLoader.cpp index 00d92e0b4..4288bf9c3 100644 --- a/code/SMDLoader.cpp +++ b/code/SMDLoader.cpp @@ -486,7 +486,7 @@ void SMDImporter::CreateOutputAnimations(const std::string &pFile, IOSystem* pIO if (bLoadAnimationList) { GetAnimationFileList(pFile, pIOHandler, animFileList); } - int animCount = animFileList.size() + 1; + int animCount = static_cast( animFileList.size() + 1u ); pScene->mNumAnimations = 1; pScene->mAnimations = new aiAnimation*[animCount]; memset(pScene->mAnimations, 0, sizeof(aiAnimation*)*animCount); @@ -510,7 +510,7 @@ void SMDImporter::CreateOutputAnimation(int index, const std::string &name) { anim->mName.Set(name.c_str()); } anim->mDuration = dLengthOfAnim; - anim->mNumChannels = asBones.size(); + anim->mNumChannels = static_cast( asBones.size() ); anim->mTicksPerSecond = 25.0; // FIXME: is this correct? aiNodeAnim** pp = anim->mChannels = new aiNodeAnim*[anim->mNumChannels]; diff --git a/test/unit/utSTLImportExport.cpp b/test/unit/utSTLImportExport.cpp index b5518de23..0f90aacf9 100644 --- a/test/unit/utSTLImportExport.cpp +++ b/test/unit/utSTLImportExport.cpp @@ -152,10 +152,10 @@ TEST_F(utSTLImporterExporter, test_export_pointclouds) { auto pMesh = scene.mMeshes[0]; - long numValidPoints = points.size(); + size_t numValidPoints = points.size(); pMesh->mVertices = new aiVector3D[numValidPoints]; - pMesh->mNumVertices = numValidPoints; + pMesh->mNumVertices = static_cast( numValidPoints ); int i = 0; for (XYZ &p : points) { diff --git a/tools/assimp_view/SceneAnimator.cpp b/tools/assimp_view/SceneAnimator.cpp index c2ebeacb3..86fe46a9c 100644 --- a/tools/assimp_view/SceneAnimator.cpp +++ b/tools/assimp_view/SceneAnimator.cpp @@ -90,7 +90,7 @@ void SceneAnimator::SetAnimIndex( size_t pAnimIndex) { delete mAnimEvaluator; mAnimEvaluator = nullptr; mNodesByName.clear(); - mCurrentAnimIndex = pAnimIndex; + mCurrentAnimIndex = static_cast( pAnimIndex ); // create the internal node tree. Do this even in case of invalid animation index // so that the transformation matrices are properly set up to mimic the current scene From 650fadebe9c0496c7c0bd1778e64ee496052b0f7 Mon Sep 17 00:00:00 2001 From: kkulling Date: Wed, 13 Mar 2019 16:58:18 +0100 Subject: [PATCH 037/187] Fix compiler warnings: var declarations hides other var. --- code/FindInstancesProcess.cpp | 20 ++++++++--------- code/MD3FileData.h | 10 ++++----- code/MD3Loader.cpp | 26 ++++++++++++---------- code/SortByPTypeProcess.cpp | 37 ++++++++++++++++--------------- code/StandardShapes.cpp | 40 +++++++++++++++++----------------- code/ValidateDataStructure.cpp | 13 ++++++----- 6 files changed, 75 insertions(+), 71 deletions(-) diff --git a/code/FindInstancesProcess.cpp b/code/FindInstancesProcess.cpp index 23f9d1581..be1138116 100644 --- a/code/FindInstancesProcess.cpp +++ b/code/FindInstancesProcess.cpp @@ -178,30 +178,30 @@ void FindInstancesProcess::Execute( aiScene* pScene) // use a constant epsilon for colors and UV coordinates static const float uvEpsilon = 10e-4f; { - unsigned int i, end = orig->GetNumUVChannels(); - for(i = 0; i < end; ++i) { - if (!orig->mTextureCoords[i]) { + unsigned int j, end = orig->GetNumUVChannels(); + for(j = 0; j < end; ++j) { + if (!orig->mTextureCoords[j]) { continue; } - if(!CompareArrays(orig->mTextureCoords[i],inst->mTextureCoords[i],orig->mNumVertices,uvEpsilon)) { + if(!CompareArrays(orig->mTextureCoords[j],inst->mTextureCoords[j],orig->mNumVertices,uvEpsilon)) { break; } } - if (i != end) { + if (j != end) { continue; } } { - unsigned int i, end = orig->GetNumColorChannels(); - for(i = 0; i < end; ++i) { - if (!orig->mColors[i]) { + unsigned int j, end = orig->GetNumColorChannels(); + for(j = 0; j < end; ++j) { + if (!orig->mColors[j]) { continue; } - if(!CompareArrays(orig->mColors[i],inst->mColors[i],orig->mNumVertices,uvEpsilon)) { + if(!CompareArrays(orig->mColors[j],inst->mColors[j],orig->mNumVertices,uvEpsilon)) { break; } } - if (i != end) { + if (j != end) { continue; } } diff --git a/code/MD3FileData.h b/code/MD3FileData.h index 0978e548d..2acd6631f 100644 --- a/code/MD3FileData.h +++ b/code/MD3FileData.h @@ -59,7 +59,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -namespace Assimp { +namespace Assimp { namespace MD3 { // to make it easier for us, we test the magic word against both "endianesses" @@ -303,12 +303,12 @@ inline void Vec3NormalToLatLng( const aiVector3D& p_vIn, uint16_t& p_iOut ) b = int(57.2957795f * ( std::acos( p_vIn[2] ) ) * ( 255.0f / 360.0f )); b &= 0xff; - ((unsigned char*)&p_iOut)[0] = b; // longitude - ((unsigned char*)&p_iOut)[1] = a; // latitude + ((unsigned char*)&p_iOut)[0] = (unsigned char) b; // longitude + ((unsigned char*)&p_iOut)[1] = (unsigned char) a; // latitude } } -} -} +} // Namespace MD3 +} // Namespace Assimp #endif // !! AI_MD3FILEHELPER_H_INC diff --git a/code/MD3Loader.cpp b/code/MD3Loader.cpp index 0faffd5f9..13a5c6c94 100644 --- a/code/MD3Loader.cpp +++ b/code/MD3Loader.cpp @@ -258,10 +258,10 @@ bool Q3Shader::LoadSkin(SkinData& fill, const std::string& pFile,IOSystem* io) continue; fill.textures.push_back(SkinData::TextureEntry()); - SkinData::TextureEntry& s = fill.textures.back(); + SkinData::TextureEntry &entry = fill.textures.back(); - s.first = ss; - s.second = GetNextToken(buff); + entry.first = ss; + entry.second = GetNextToken(buff); } return true; } @@ -730,11 +730,13 @@ void MD3Importer::InternReadFile( const std::string& pFile, std::string::size_type s = mFile.find_last_of("/\\"); if (s == std::string::npos) { s = 0; + } else { + ++s; + } + filename = mFile.substr(s), path = mFile.substr(0, s); + for (std::string::iterator it = filename.begin(); it != filename.end(); ++it) { + *it = static_cast( tolower(*it) ); } - else ++s; - filename = mFile.substr(s), path = mFile.substr(0,s); - for( std::string::iterator it = filename .begin(); it != filename.end(); ++it) - *it = tolower( *it); // Load multi-part model file, if necessary if (configHandleMP) { @@ -905,15 +907,15 @@ void MD3Importer::InternReadFile( const std::string& pFile, // Now search the current shader for a record with this name ( // excluding texture file extension) if (!shaders.blocks.empty()) { - - std::string::size_type s = convertedPath.find_last_of('.'); - if (s == std::string::npos) - s = convertedPath.length(); + std::string::size_type sh = convertedPath.find_last_of('.'); + if (sh == std::string::npos) { + sh = convertedPath.length(); + } const std::string without_ext = convertedPath.substr(0,s); std::list< Q3Shader::ShaderDataBlock >::const_iterator dit = std::find(shaders.blocks.begin(),shaders.blocks.end(),without_ext); if (dit != shaders.blocks.end()) { - // Hurra, wir haben einen. Tolle Sache. + // We made it! shader = &*dit; ASSIMP_LOG_INFO("Found shader record for " +without_ext ); } else { diff --git a/code/SortByPTypeProcess.cpp b/code/SortByPTypeProcess.cpp index 87bbe5257..2e0cc5400 100644 --- a/code/SortByPTypeProcess.cpp +++ b/code/SortByPTypeProcess.cpp @@ -228,36 +228,37 @@ void SortByPTypeProcess::Execute( aiScene* pScene) { out->mNumVertices = (3 == real ? numPolyVerts : out->mNumFaces * (real+1)); - aiVector3D *vert(NULL), *nor(NULL), *tan(NULL), *bit(NULL); + aiVector3D *vert(nullptr), *nor(nullptr), *tan(nullptr), *bit(nullptr); aiVector3D *uv [AI_MAX_NUMBER_OF_TEXTURECOORDS]; aiColor4D *cols [AI_MAX_NUMBER_OF_COLOR_SETS]; - if (mesh->mVertices) + if (mesh->mVertices) { vert = out->mVertices = new aiVector3D[out->mNumVertices]; + } - if (mesh->mNormals) - nor = out->mNormals = new aiVector3D[out->mNumVertices]; + if (mesh->mNormals) { + nor = out->mNormals = new aiVector3D[out->mNumVertices]; + } - if (mesh->mTangents) - { + if (mesh->mTangents) { tan = out->mTangents = new aiVector3D[out->mNumVertices]; bit = out->mBitangents = new aiVector3D[out->mNumVertices]; } - for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS;++i) - { - if (mesh->mTextureCoords[i]) - uv[i] = out->mTextureCoords[i] = new aiVector3D[out->mNumVertices]; - else uv[i] = NULL; + for (unsigned int j = 0; j < AI_MAX_NUMBER_OF_TEXTURECOORDS;++j) { + uv[j] = nullptr; + if (mesh->mTextureCoords[j]) { + uv[j] = out->mTextureCoords[j] = new aiVector3D[out->mNumVertices]; + } - out->mNumUVComponents[i] = mesh->mNumUVComponents[i]; + out->mNumUVComponents[j] = mesh->mNumUVComponents[j]; } - for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_COLOR_SETS;++i) - { - if (mesh->mColors[i]) - cols[i] = out->mColors[i] = new aiColor4D[out->mNumVertices]; - else cols[i] = NULL; + for (unsigned int j = 0; j < AI_MAX_NUMBER_OF_COLOR_SETS;++j) { + cols[j] = nullptr; + if (mesh->mColors[j]) { + cols[j] = out->mColors[j] = new aiColor4D[out->mNumVertices]; + } } typedef std::vector< aiVertexWeight > TempBoneInfo; @@ -323,7 +324,7 @@ void SortByPTypeProcess::Execute( aiScene* pScene) { in.mIndices[q] = outIdx++; } - in.mIndices = NULL; + in.mIndices = nullptr; ++outFaces; } ai_assert(outFaces == out->mFaces + out->mNumFaces); diff --git a/code/StandardShapes.cpp b/code/StandardShapes.cpp index f262b6bac..2e5100130 100644 --- a/code/StandardShapes.cpp +++ b/code/StandardShapes.cpp @@ -127,35 +127,35 @@ aiMesh* StandardShapes::MakeMesh(const std::vector& positions, // Determine which kinds of primitives the mesh consists of aiMesh* out = new aiMesh(); - switch (numIndices) - { - case 1: - out->mPrimitiveTypes = aiPrimitiveType_POINT; - break; - case 2: - out->mPrimitiveTypes = aiPrimitiveType_LINE; - break; - case 3: - out->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; - break; - default: - out->mPrimitiveTypes = aiPrimitiveType_POLYGON; - break; + switch (numIndices) { + case 1: + out->mPrimitiveTypes = aiPrimitiveType_POINT; + break; + case 2: + out->mPrimitiveTypes = aiPrimitiveType_LINE; + break; + case 3: + out->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; + break; + default: + out->mPrimitiveTypes = aiPrimitiveType_POLYGON; + break; }; out->mNumFaces = (unsigned int)positions.size() / numIndices; out->mFaces = new aiFace[out->mNumFaces]; - for (unsigned int i = 0, a = 0; i < out->mNumFaces;++i) - { + for (unsigned int i = 0, a = 0; i < out->mNumFaces;++i) { aiFace& f = out->mFaces[i]; f.mNumIndices = numIndices; f.mIndices = new unsigned int[numIndices]; - for (unsigned int i = 0; i < numIndices;++i,++a) - f.mIndices[i] = a; + for (unsigned int j = 0; i < numIndices; ++i, ++a) { + f.mIndices[j] = a; + } } out->mNumVertices = (unsigned int)positions.size(); out->mVertices = new aiVector3D[out->mNumVertices]; ::memcpy(out->mVertices,&positions[0],out->mNumVertices*sizeof(aiVector3D)); + return out; } @@ -466,8 +466,8 @@ void StandardShapes::MakeCone(ai_real height,ai_real radius1, // Need to flip face order? if ( SIZE_MAX != old ) { - for (size_t s = old; s < positions.size();s += 3) { - std::swap(positions[s],positions[s+1]); + for (size_t p = old; p < positions.size();p += 3) { + std::swap(positions[p],positions[p+1]); } } } diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index 405670bdd..5861e3419 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -577,15 +577,16 @@ void ValidateDSProcess::SearchForInvalidTextures(const aiMaterial* pMaterial, int iNumIndices = 0; int iIndex = -1; - for (unsigned int i = 0; i < pMaterial->mNumProperties;++i) - { - aiMaterialProperty* prop = pMaterial->mProperties[i]; - if (!::strcmp(prop->mKey.data,"$tex.file") && prop->mSemantic == type) { + for (unsigned int i = 0; i < pMaterial->mNumProperties;++i) { + aiMaterialProperty* prop = pMaterial->mProperties[ i ]; + ai_assert(nullptr != prop); + if ( !::strcmp(prop->mKey.data,"$tex.file") && prop->mSemantic == static_cast(type)) { iIndex = std::max(iIndex, (int) prop->mIndex); ++iNumIndices; - if (aiPTI_String != prop->mType) - ReportError("Material property %s is expected to be a string",prop->mKey.data); + if (aiPTI_String != prop->mType) { + ReportError("Material property %s is expected to be a string", prop->mKey.data); + } } } if (iIndex +1 != iNumIndices) { From 0a731a0bffe6581d73e8de7a53aaac068e641418 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 13 Mar 2019 19:32:13 +0100 Subject: [PATCH 038/187] closes https://github.com/assimp/assimp/issues/934: introduce material keys for shader types. --- include/assimp/material.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/include/assimp/material.h b/include/assimp/material.h index 81b5fb05f..0fb2f9759 100644 --- a/include/assimp/material.h +++ b/include/assimp/material.h @@ -198,8 +198,6 @@ enum aiTextureType */ aiTextureType_NONE = 0x0, - - /** The texture is combined with the result of the diffuse * lighting equation. */ @@ -278,7 +276,7 @@ enum aiTextureType * * A texture reference that does not match any of the definitions * above is considered to be 'unknown'. It is still imported, - * but is excluded from any further postprocessing. + * but is excluded from any further post-processing. */ aiTextureType_UNKNOWN = 0xC, @@ -375,7 +373,7 @@ enum aiShadingMode */ enum aiTextureFlags { - /** The texture's color values have to be inverted (componentwise 1-n) + /** The texture's color values have to be inverted (component-wise 1-n) */ aiTextureFlags_Invert = 0x1, From 145c3d15890daebb45d6d627f9a5172e15fad386 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 13 Mar 2019 19:35:36 +0100 Subject: [PATCH 039/187] add missing changes. --- code/LWOMaterial.cpp | 5 +---- include/assimp/material.h | 9 +++++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/code/LWOMaterial.cpp b/code/LWOMaterial.cpp index 55d0e23f1..b54c21c26 100644 --- a/code/LWOMaterial.cpp +++ b/code/LWOMaterial.cpp @@ -320,13 +320,10 @@ void LWOImporter::ConvertMaterial(const LWO::Surface& surf,aiMaterial* pcMat) // opacity ... either additive or default-blended, please if (0.0 != surf.mAdditiveTransparency) { - const int add = aiBlendMode_Additive; pcMat->AddProperty(&surf.mAdditiveTransparency,1,AI_MATKEY_OPACITY); pcMat->AddProperty(&add,1,AI_MATKEY_BLEND_FUNC); - } - - else if (10e10f != surf.mTransparency) { + } else if (10e10f != surf.mTransparency) { const int def = aiBlendMode_Default; const float f = 1.0f-surf.mTransparency; pcMat->AddProperty(&f,1,AI_MATKEY_OPACITY); diff --git a/include/assimp/material.h b/include/assimp/material.h index 0fb2f9759..b882bbc72 100644 --- a/include/assimp/material.h +++ b/include/assimp/material.h @@ -912,6 +912,13 @@ extern "C" { #define AI_MATKEY_COLOR_TRANSPARENT "$clr.transparent",0,0 #define AI_MATKEY_COLOR_REFLECTIVE "$clr.reflective",0,0 #define AI_MATKEY_GLOBAL_BACKGROUND_IMAGE "?bg.global",0,0 +#define AI_MATKEY_GLOBAL_SHADERLANG "?sh.lang",0,0 +#define AI_MATKEY_SHADER_VERTEX "?sh.vs",0,0 +#define AI_MATKEY_SHADER_FRAGMENT "?sh.fs",0,0 +#define AI_MATKEY_SHADER_GEO "?sh.gs",0,0 +#define AI_MATKEY_SHADER_TESSELATION "?sh.ts",0,0 +#define AI_MATKEY_SHADER_PRIMITIVE "?sh.ps",0,0 +#define AI_MATKEY_SHADER_COMPUTE "?sh.cs",0,0 // --------------------------------------------------------------------------- // Pure key names for all texture-related properties @@ -1455,8 +1462,6 @@ inline aiReturn aiGetMaterialInteger(const C_STRUCT aiMaterial* pMat, #endif //!__cplusplus - - // --------------------------------------------------------------------------- /** @brief Retrieve a color value from the material property table * From 93e8a1054f19d1f1f8294b26dd6beaf49a6f5815 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 13 Mar 2019 22:07:03 +0100 Subject: [PATCH 040/187] Add short documentation. --- doc/dox.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/dox.h b/doc/dox.h index d63c8a806..910e77eae 100644 --- a/doc/dox.h +++ b/doc/dox.h @@ -1173,6 +1173,18 @@ float4 PimpMyPixel (float4 prev) @endcode +@section shdacc How to access shader-code from a texture (AI_MATKEY_GLOBAL_SHADERLANG and AI_MATKEY_SHADER_VERTEX, ...) + +You can get assigned shader sources by using the following material keys: + +
  • AI_MATKEY_GLOBAL_SHADERLANG
  • To get the used shader language. +
  • AI_MATKEY_SHADER_VERTEX
  • Assigned vertex shader code stored as a string. +
  • AI_MATKEY_SHADER_FRAGMENT
  • Assigned fragment shader code stored as a string. +
  • AI_MATKEY_SHADER_GEO
  • Assigned geometry shader code stored as a string. +
  • AI_MATKEY_SHADER_TESSELATION
  • Assigned tesselation shader code stored as a string. +
  • AI_MATKEY_SHADER_PRIMITIVE
  • Assigned primitive shader code stored as a string. +
  • AI_MATKEY_SHADER_COMPUTE
  • Assigned compute shader code stored as a string. + */ From 170549559edb5cbf9a7d0ccea4bfe98bace1e057 Mon Sep 17 00:00:00 2001 From: Aidmx Date: Thu, 14 Mar 2019 21:50:50 +0800 Subject: [PATCH 041/187] fix: change ScaleProcess priority --- code/PostStepRegistry.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/PostStepRegistry.cpp b/code/PostStepRegistry.cpp index 469a8ef39..15b4a2884 100644 --- a/code/PostStepRegistry.cpp +++ b/code/PostStepRegistry.cpp @@ -173,6 +173,9 @@ void GetPostProcessingStepInstanceList(std::vector< BaseProcess* >& out) #ifndef ASSIMP_BUILD_NO_TRANSFORMTEXCOORDS_PROCESS out.push_back( new TextureTransformStep()); #endif +#if (!defined ASSIMP_BUILD_NO_GLOBALSCALE_PROCESS) + out.push_back( new ScaleProcess()); +#endif #if (!defined ASSIMP_BUILD_NO_PRETRANSFORMVERTICES_PROCESS) out.push_back( new PretransformVertices()); #endif @@ -208,9 +211,6 @@ void GetPostProcessingStepInstanceList(std::vector< BaseProcess* >& out) #endif #if (!defined ASSIMP_BUILD_NO_GENFACENORMALS_PROCESS) out.push_back( new GenFaceNormalsProcess()); -#endif -#if (!defined ASSIMP_BUILD_NO_GLOBALSCALE_PROCESS) - out.push_back( new ScaleProcess()); #endif // ......................................................................... // DON'T change the order of these five .. From 61ffe017e8b5c86fcc22db8bc2e4bbc3273b7b26 Mon Sep 17 00:00:00 2001 From: kimkulling Date: Thu, 14 Mar 2019 17:37:28 +0100 Subject: [PATCH 042/187] Fix some coverity findings. --- code/ImproveCacheLocality.cpp | 4 +++- tools/assimp_cmd/Info.cpp | 40 ++++++++++++++-------------------- tools/assimp_cmd/WriteDumb.cpp | 13 +++++------ 3 files changed, 25 insertions(+), 32 deletions(-) diff --git a/code/ImproveCacheLocality.cpp b/code/ImproveCacheLocality.cpp index be6452dda..ace9d95ff 100644 --- a/code/ImproveCacheLocality.cpp +++ b/code/ImproveCacheLocality.cpp @@ -112,7 +112,9 @@ void ImproveCacheLocalityProcess::Execute( aiScene* pScene) } } if (!DefaultLogger::isNullLogger()) { - ASSIMP_LOG_INFO_F("Cache relevant are ", numm, " meshes (", numf," faces). Average output ACMR is ", out / numf ); + if (numf > 0) { + ASSIMP_LOG_INFO_F("Cache relevant are ", numm, " meshes (", numf, " faces). Average output ACMR is ", out / numf); + } ASSIMP_LOG_DEBUG("ImproveCacheLocalityProcess finished. "); } } diff --git a/tools/assimp_cmd/Info.cpp b/tools/assimp_cmd/Info.cpp index cb7ac86cf..b504083d3 100644 --- a/tools/assimp_cmd/Info.cpp +++ b/tools/assimp_cmd/Info.cpp @@ -51,27 +51,26 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include const char* AICMD_MSG_INFO_HELP_E = -"assimp info [-r] [-v]\n" -"\tPrint basic structure of a 3D model\n" -"\t-r,--raw: No postprocessing, do a raw import\n" -"\t-v,--verbose: Print verbose info such as node transform data\n" -"\t-s, --silent: Print only minimal info\n"; + "assimp info [-r] [-v]\n" + "\tPrint basic structure of a 3D model\n" + "\t-r,--raw: No postprocessing, do a raw import\n" + "\t-v,--verbose: Print verbose info such as node transform data\n" + "\t-s, --silent: Print only minimal info\n"; -const std::string TREE_BRANCH_ASCII = "|-"; -const std::string TREE_BRANCH_UTF8 = "\xe2\x94\x9c\xe2\x95\xb4"; -const std::string TREE_STOP_ASCII = "'-"; -const std::string TREE_STOP_UTF8 = "\xe2\x94\x94\xe2\x95\xb4"; -const std::string TREE_CONTINUE_ASCII = "| "; -const std::string TREE_CONTINUE_UTF8 = "\xe2\x94\x82 "; +const char *TREE_BRANCH_ASCII = "|-"; +const char *TREE_BRANCH_UTF8 = "\xe2\x94\x9c\xe2\x95\xb4"; +const char *TREE_STOP_ASCII = "'-"; +const char *TREE_STOP_UTF8 = "\xe2\x94\x94\xe2\x95\xb4"; +const char *TREE_CONTINUE_ASCII = "| "; +const char *TREE_CONTINUE_UTF8 = "\xe2\x94\x82 "; -// note: by default this is outputing utf-8 text. +// note: by default this is using utf-8 text. // this is well supported on pretty much any linux terminal. // if this causes problems on some platform, // put an #ifdef to use the ascii version for that platform. -const std::string TREE_BRANCH = TREE_BRANCH_UTF8; -const std::string TREE_STOP = TREE_STOP_UTF8; -const std::string TREE_CONTINUE = TREE_CONTINUE_UTF8; - +const char *TREE_BRANCH = TREE_BRANCH_UTF8; +const char *TREE_STOP = TREE_STOP_UTF8; +const char *TREE_CONTINUE = TREE_CONTINUE_UTF8; // ----------------------------------------------------------------------------------- unsigned int CountNodes(const aiNode* root) @@ -280,14 +279,7 @@ void PrintHierarchy( // ----------------------------------------------------------------------------------- // Implementation of the assimp info utility to print basic file info -int Assimp_Info (const char* const* params, unsigned int num) -{ - if (num < 1) { - printf("assimp info: Invalid number of arguments. " - "See \'assimp info --help\'\n"); - return 1; - } - +int Assimp_Info (const char* const* params, unsigned int num) { // --help if (!strcmp( params[0],"-h")||!strcmp( params[0],"--help")||!strcmp( params[0],"-?") ) { printf("%s",AICMD_MSG_INFO_HELP_E); diff --git a/tools/assimp_cmd/WriteDumb.cpp b/tools/assimp_cmd/WriteDumb.cpp index 569749994..0d6f58c60 100644 --- a/tools/assimp_cmd/WriteDumb.cpp +++ b/tools/assimp_cmd/WriteDumb.cpp @@ -276,9 +276,12 @@ inline uint32_t WriteBounds(const T* in, unsigned int size) void ChangeInteger(uint32_t ofs,uint32_t n) { const uint32_t cur = ftell(out); - fseek(out,ofs,SEEK_SET); - fwrite(&n,4,1,out); - fseek(out,cur,SEEK_SET); + int retCode; + retCode = fseek(out, ofs, SEEK_SET); + ai_assert(0 == retCode); + fwrite(&n, 4, 1, out); + retCode = fseek(out, cur, SEEK_SET); + ai_assert(0 == retCode); } // ----------------------------------------------------------------------------------- @@ -1333,10 +1336,6 @@ int Assimp_Dump (const char* const* params, unsigned int num) { const char* fail = "assimp dump: Invalid number of arguments. " "See \'assimp dump --help\'\r\n"; - if (num < 1) { - printf("%s", fail); - return 1; - } // --help if (!strcmp( params[0], "-h") || !strcmp( params[0], "--help") || !strcmp( params[0], "-?") ) { From 07bbb2c000587f9ebba78ddb1da2cf141134de2b Mon Sep 17 00:00:00 2001 From: Rich ard Date: Fri, 15 Mar 2019 10:18:43 +0000 Subject: [PATCH 043/187] Nicer name for Assimp Binary importer .assbin is not a nice name to show a user --- code/AssbinLoader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/AssbinLoader.cpp b/code/AssbinLoader.cpp index 7adb8db6f..c68daf101 100644 --- a/code/AssbinLoader.cpp +++ b/code/AssbinLoader.cpp @@ -68,7 +68,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace Assimp; static const aiImporterDesc desc = { - ".assbin Importer", + "Assimp Binary Importer", "Gargaj / Conspiracy", "", "", From 9a533d826ad6f880ded45c801d2a022f6d9e4f68 Mon Sep 17 00:00:00 2001 From: Tomas Maly Date: Fri, 15 Mar 2019 22:43:12 +0100 Subject: [PATCH 044/187] fix loading 3D uvs from obj --- code/ObjFileData.h | 3 +++ code/ObjFileImporter.cpp | 2 +- code/ObjFileParser.cpp | 6 ++++-- code/ObjFileParser.h | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/code/ObjFileData.h b/code/ObjFileData.h index 5ff9db68c..a2d9f2cc7 100644 --- a/code/ObjFileData.h +++ b/code/ObjFileData.h @@ -281,6 +281,8 @@ struct Model { std::string m_strActiveGroup; //! Vector with generated texture coordinates std::vector m_TextureCoord; + //! Maximum dimension of texture coordinates + unsigned int m_TextureCoordDim; //! Current mesh instance Mesh *m_pCurrentMesh; //! Vector with stored meshes @@ -296,6 +298,7 @@ struct Model { m_pDefaultMaterial(NULL), m_pGroupFaceIDs(NULL), m_strActiveGroup(""), + m_TextureCoordDim(0), m_pCurrentMesh(NULL) { // empty diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index 814180c81..549956474 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -442,7 +442,7 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel, // Allocate buffer for texture coordinates if ( !pModel->m_TextureCoord.empty() && pObjMesh->m_uiUVCoordinates[0] ) { - pMesh->mNumUVComponents[ 0 ] = 2; + pMesh->mNumUVComponents[ 0 ] = pModel->m_TextureCoordDim; pMesh->mTextureCoords[ 0 ] = new aiVector3D[ pMesh->mNumVertices ]; } diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index d303cb8b9..a8509b583 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -151,7 +151,8 @@ void ObjFileParser::parseFile( IOStreamBuffer &streamBuffer ) { } else if (*m_DataIt == 't') { // read in texture coordinate ( 2D or 3D ) ++m_DataIt; - getVector( m_pModel->m_TextureCoord ); + size_t dim = getVector(m_pModel->m_TextureCoord); + m_pModel->m_TextureCoordDim = std::max(m_pModel->m_TextureCoordDim, (unsigned int)dim); } else if (*m_DataIt == 'n') { // Read in normal vector definition ++m_DataIt; @@ -296,7 +297,7 @@ size_t ObjFileParser::getNumComponentsInDataDefinition() { return numComponents; } -void ObjFileParser::getVector( std::vector &point3d_array ) { +size_t ObjFileParser::getVector( std::vector &point3d_array ) { size_t numComponents = getNumComponentsInDataDefinition(); ai_real x, y, z; if( 2 == numComponents ) { @@ -320,6 +321,7 @@ void ObjFileParser::getVector( std::vector &point3d_array ) { } point3d_array.push_back( aiVector3D( x, y, z ) ); m_DataIt = skipLine( m_DataIt, m_DataItEnd, m_uiLine ); + return numComponents; } void ObjFileParser::getVector3( std::vector &point3d_array ) { diff --git a/code/ObjFileParser.h b/code/ObjFileParser.h index e00382f4c..a8961452d 100644 --- a/code/ObjFileParser.h +++ b/code/ObjFileParser.h @@ -96,7 +96,7 @@ protected: /// Get the number of components in a line. size_t getNumComponentsInDataDefinition(); /// Stores the vector - void getVector( std::vector &point3d_array ); + size_t getVector( std::vector &point3d_array ); /// Stores the following 3d vector. void getVector3( std::vector &point3d_array ); /// Stores the following homogeneous vector as a 3D vector From ba6a7383b22d108a4af55f9024009871259cb202 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 16 Mar 2019 09:45:21 +0100 Subject: [PATCH 045/187] closes https://github.com/assimp/assimp/issues/1650: build irrXml as shared lib. --- CMakeLists.txt | 3 ++- code/CMakeLists.txt | 13 ++++++------- code/FBXConverter.cpp | 2 +- code/SMDLoader.cpp | 4 ++-- code/glTF2Asset.h | 7 ++++--- contrib/irrXML/CMakeLists.txt | 2 +- contrib/irrXML/CXMLReaderImpl.h | 13 +++++++++---- contrib/irrXML/irrXML.cpp | 2 +- 8 files changed, 26 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6417053ac..67e832c1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,7 +67,7 @@ OPTION( ASSIMP_NO_EXPORT ) OPTION( ASSIMP_BUILD_ZLIB "Build your own zlib" - OFF + OFF ) OPTION( ASSIMP_BUILD_ASSIMP_TOOLS "If the supplementary tools for Assimp are built in addition to the library." @@ -468,6 +468,7 @@ ENDIF ( ASSIMP_BUILD_ASSIMP_TOOLS ) IF ( ASSIMP_BUILD_SAMPLES) IF ( WIN32 ) ADD_SUBDIRECTORY( samples/SimpleTexturedOpenGL/ ) + ADD_SUBDIRECTORY( samples/SimpleTexturedDirectx11 ) ENDIF ( WIN32 ) ADD_SUBDIRECTORY( samples/SimpleOpenGL/ ) ENDIF ( ASSIMP_BUILD_SAMPLES ) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 37ad34b85..ec08d6a88 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -756,12 +756,11 @@ SET( Extra_SRCS ) SOURCE_GROUP( Extra FILES ${Extra_SRCS}) - SET( Clipper_SRCS ../contrib/clipper/clipper.hpp ../contrib/clipper/clipper.cpp ) -SOURCE_GROUP( Clipper FILES ${Clipper_SRCS}) +SOURCE_GROUP( Contrib\\Clipper FILES ${Clipper_SRCS}) SET( Poly2Tri_SRCS ../contrib/poly2tri/poly2tri/common/shapes.cc @@ -776,7 +775,7 @@ SET( Poly2Tri_SRCS ../contrib/poly2tri/poly2tri/sweep/sweep_context.cc ../contrib/poly2tri/poly2tri/sweep/sweep_context.h ) -SOURCE_GROUP( Poly2Tri FILES ${Poly2Tri_SRCS}) +SOURCE_GROUP( Contrib\\Poly2Tri FILES ${Poly2Tri_SRCS}) SET( unzip_SRCS ../contrib/unzip/crypt.h @@ -785,7 +784,7 @@ SET( unzip_SRCS ../contrib/unzip/unzip.c ../contrib/unzip/unzip.h ) -SOURCE_GROUP( unzip FILES ${unzip_SRCS}) +SOURCE_GROUP(Contrib\\unzip FILES ${unzip_SRCS}) SET( ziplib_SRCS ../contrib/zip/src/miniz.h @@ -793,7 +792,7 @@ SET( ziplib_SRCS ../contrib/zip/src/zip.h ) -SOURCE_GROUP( ziplib FILES ${ziplib_SRCS} ) +SOURCE_GROUP( Contrib\\ziplib FILES ${ziplib_SRCS} ) SET ( openddl_parser_SRCS ../contrib/openddlparser/code/OpenDDLParser.cpp @@ -810,7 +809,7 @@ SET ( openddl_parser_SRCS ../contrib/openddlparser/include/openddlparser/DDLNode.h ../contrib/openddlparser/include/openddlparser/Value.h ) -SOURCE_GROUP( openddl_parser FILES ${openddl_parser_SRCS}) +SOURCE_GROUP( Contrib\\openddl_parser FILES ${openddl_parser_SRCS}) SET ( open3dgc_SRCS ../contrib/Open3DGC/o3dgcAdjacencyInfo.h @@ -843,7 +842,7 @@ SET ( open3dgc_SRCS ../contrib/Open3DGC/o3dgcVector.h ../contrib/Open3DGC/o3dgcVector.inl ) -SOURCE_GROUP( open3dgc FILES ${open3dgc_SRCS}) +SOURCE_GROUP( Contrib\\open3dgc FILES ${open3dgc_SRCS}) # Check dependencies for glTF importer with Open3DGC-compression. # RT-extensions is used in "contrib/Open3DGC/o3dgcTimer.h" for collecting statistics. Pointed file diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index c556d3bba..a61ae4006 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -964,7 +964,7 @@ namespace Assimp { { if (indices[i] < 0) epcount++; } - unsigned int pcount = indices.size(); + unsigned int pcount = static_cast( indices.size() ); unsigned int scount = out_mesh->mNumFaces = pcount - epcount; aiFace* fac = out_mesh->mFaces = new aiFace[scount](); diff --git a/code/SMDLoader.cpp b/code/SMDLoader.cpp index 00d92e0b4..4185c3400 100644 --- a/code/SMDLoader.cpp +++ b/code/SMDLoader.cpp @@ -486,7 +486,7 @@ void SMDImporter::CreateOutputAnimations(const std::string &pFile, IOSystem* pIO if (bLoadAnimationList) { GetAnimationFileList(pFile, pIOHandler, animFileList); } - int animCount = animFileList.size() + 1; + int animCount = static_cast( animFileList.size() ) + 1; pScene->mNumAnimations = 1; pScene->mAnimations = new aiAnimation*[animCount]; memset(pScene->mAnimations, 0, sizeof(aiAnimation*)*animCount); @@ -510,7 +510,7 @@ void SMDImporter::CreateOutputAnimation(int index, const std::string &name) { anim->mName.Set(name.c_str()); } anim->mDuration = dLengthOfAnim; - anim->mNumChannels = asBones.size(); + anim->mNumChannels = static_cast( asBones.size() ); anim->mTicksPerSecond = 25.0; // FIXME: is this correct? aiNodeAnim** pp = anim->mChannels = new aiNodeAnim*[anim->mNumChannels]; diff --git a/code/glTF2Asset.h b/code/glTF2Asset.h index 0015197c2..2937c0ce9 100644 --- a/code/glTF2Asset.h +++ b/code/glTF2Asset.h @@ -223,7 +223,8 @@ namespace glTF2 ComponentType_FLOAT = 5126 }; - inline unsigned int ComponentTypeSize(ComponentType t) + inline + unsigned int ComponentTypeSize(ComponentType t) { switch (t) { case ComponentType_SHORT: @@ -250,7 +251,7 @@ namespace glTF2 }; //! Values for the Sampler::magFilter field - enum class SamplerMagFilter: unsigned int + enum class SamplerMagFilter : unsigned int { UNSET = 0, SamplerMagFilter_Nearest = 9728, @@ -258,7 +259,7 @@ namespace glTF2 }; //! Values for the Sampler::minFilter field - enum class SamplerMinFilter: unsigned int + enum class SamplerMinFilter : unsigned int { UNSET = 0, SamplerMinFilter_Nearest = 9728, diff --git a/contrib/irrXML/CMakeLists.txt b/contrib/irrXML/CMakeLists.txt index 48941970a..ef3ce1478 100644 --- a/contrib/irrXML/CMakeLists.txt +++ b/contrib/irrXML/CMakeLists.txt @@ -13,7 +13,7 @@ if ( MSVC ) ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS ) endif ( MSVC ) -add_library(IrrXML STATIC ${IrrXML_SRCS}) +add_library(IrrXML ${IrrXML_SRCS}) set(IRRXML_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "IrrXML_Include" ) set(IRRXML_LIBRARY "IrrXML" CACHE INTERNAL "IrrXML" ) diff --git a/contrib/irrXML/CXMLReaderImpl.h b/contrib/irrXML/CXMLReaderImpl.h index 7d33b9404..6f3bec5fa 100644 --- a/contrib/irrXML/CXMLReaderImpl.h +++ b/contrib/irrXML/CXMLReaderImpl.h @@ -10,8 +10,11 @@ #include "irrArray.h" #include +#include +#include +#include +//using namespace Assimp; -using namespace Assimp; #ifdef _DEBUG #define IRR_DEBUGPRINT(x) printf((x)); @@ -162,7 +165,8 @@ public: return 0; core::stringc c = attr->Value.c_str(); - return fast_atof(c.c_str()); + return static_cast(atof(c.c_str())); + //return fast_atof(c.c_str()); } @@ -174,7 +178,8 @@ public: return 0; core::stringc c = attrvalue; - return fast_atof(c.c_str()); + return static_cast(atof(c.c_str())); + //return fast_atof(c.c_str()); } @@ -428,7 +433,7 @@ private: ++P; // remove trailing whitespace, if any - while( isspace( P[-1])) + while( std::isspace( P[-1])) --P; NodeName = core::string(pBeginClose, (int)(P - pBeginClose)); diff --git a/contrib/irrXML/irrXML.cpp b/contrib/irrXML/irrXML.cpp index 532eed544..609d51359 100644 --- a/contrib/irrXML/irrXML.cpp +++ b/contrib/irrXML/irrXML.cpp @@ -9,7 +9,7 @@ #include "irrXML.h" #include "irrString.h" #include "irrArray.h" -#include +//#include #include "CXMLReaderImpl.h" namespace irr From e9b6a4895d06a24cc0c5b9a37ab913b72a63f581 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 16 Mar 2019 15:32:47 +0100 Subject: [PATCH 046/187] Fix the build. --- contrib/irrXML/CMakeLists.txt | 2 +- contrib/irrXML/irrXML.cpp | 2 +- contrib/irrXML/irrXML.h | 24 +++++++++++++++--------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/contrib/irrXML/CMakeLists.txt b/contrib/irrXML/CMakeLists.txt index ef3ce1478..7518e382a 100644 --- a/contrib/irrXML/CMakeLists.txt +++ b/contrib/irrXML/CMakeLists.txt @@ -13,7 +13,7 @@ if ( MSVC ) ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS ) endif ( MSVC ) -add_library(IrrXML ${IrrXML_SRCS}) +add_library(IrrXML SHARED ${IrrXML_SRCS}) set(IRRXML_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "IrrXML_Include" ) set(IRRXML_LIBRARY "IrrXML" CACHE INTERNAL "IrrXML" ) diff --git a/contrib/irrXML/irrXML.cpp b/contrib/irrXML/irrXML.cpp index 609d51359..5a4b04507 100644 --- a/contrib/irrXML/irrXML.cpp +++ b/contrib/irrXML/irrXML.cpp @@ -18,7 +18,7 @@ namespace io { //! Implementation of the file read callback for ordinary files -class CFileReadCallBack : public IFileReadCallBack +class IRRXML_API CFileReadCallBack : public IFileReadCallBack { public: diff --git a/contrib/irrXML/irrXML.h b/contrib/irrXML/irrXML.h index b51ddeb54..abf1e1869 100644 --- a/contrib/irrXML/irrXML.h +++ b/contrib/irrXML/irrXML.h @@ -7,6 +7,12 @@ #include +#ifdef _WIN32 +# define IRRXML_API __declspec(dllexport) +#else +# define IRRXML_API +#endif _WIN32 + /** \mainpage irrXML 1.2 API documentation
    @@ -409,7 +415,7 @@ namespace io \return Returns a pointer to the created xml parser. This pointer should be deleted using 'delete' after no longer needed. Returns 0 if an error occured and the file could not be opened. */ - IrrXMLReader* createIrrXMLReader(const char* filename); + IRRXML_API IrrXMLReader* createIrrXMLReader(const char* filename); //! Creates an instance of an UFT-8 or ASCII character xml parser. /** This means that all character data will be returned in 8 bit ASCII or UTF-8. The file to read can @@ -421,7 +427,7 @@ namespace io \return Returns a pointer to the created xml parser. This pointer should be deleted using 'delete' after no longer needed. Returns 0 if an error occured and the file could not be opened. */ - IrrXMLReader* createIrrXMLReader(FILE* file); + IRRXML_API IrrXMLReader* createIrrXMLReader(FILE* file); //! Creates an instance of an UFT-8 or ASCII character xml parser. /** This means that all character data will be returned in 8 bit ASCII or UTF-8. The file to read can @@ -434,7 +440,7 @@ namespace io \return Returns a pointer to the created xml parser. This pointer should be deleted using 'delete' after no longer needed. Returns 0 if an error occured and the file could not be opened. */ - IrrXMLReader* createIrrXMLReader(IFileReadCallBack* callback); + IRRXML_API IrrXMLReader* createIrrXMLReader(IFileReadCallBack* callback); //! Creates an instance of an UFT-16 xml parser. /** This means that @@ -446,7 +452,7 @@ namespace io \return Returns a pointer to the created xml parser. This pointer should be deleted using 'delete' after no longer needed. Returns 0 if an error occured and the file could not be opened. */ - IrrXMLReaderUTF16* createIrrXMLReaderUTF16(const char* filename); + IRRXML_API IrrXMLReaderUTF16* createIrrXMLReaderUTF16(const char* filename); //! Creates an instance of an UFT-16 xml parser. /** This means that all character data will be returned in UTF-16. The file to read can @@ -458,7 +464,7 @@ namespace io \return Returns a pointer to the created xml parser. This pointer should be deleted using 'delete' after no longer needed. Returns 0 if an error occured and the file could not be opened. */ - IrrXMLReaderUTF16* createIrrXMLReaderUTF16(FILE* file); + IRRXML_API IrrXMLReaderUTF16* createIrrXMLReaderUTF16(FILE* file); //! Creates an instance of an UFT-16 xml parser. /** This means that all character data will be returned in UTF-16. The file to read can @@ -471,7 +477,7 @@ namespace io \return Returns a pointer to the created xml parser. This pointer should be deleted using 'delete' after no longer needed. Returns 0 if an error occured and the file could not be opened. */ - IrrXMLReaderUTF16* createIrrXMLReaderUTF16(IFileReadCallBack* callback); + IRRXML_API IrrXMLReaderUTF16* createIrrXMLReaderUTF16(IFileReadCallBack* callback); //! Creates an instance of an UFT-32 xml parser. @@ -483,7 +489,7 @@ namespace io \return Returns a pointer to the created xml parser. This pointer should be deleted using 'delete' after no longer needed. Returns 0 if an error occured and the file could not be opened. */ - IrrXMLReaderUTF32* createIrrXMLReaderUTF32(const char* filename); + IRRXML_API IrrXMLReaderUTF32* createIrrXMLReaderUTF32(const char* filename); //! Creates an instance of an UFT-32 xml parser. /** This means that all character data will be returned in UTF-32. The file to read can @@ -495,7 +501,7 @@ namespace io \return Returns a pointer to the created xml parser. This pointer should be deleted using 'delete' after no longer needed. Returns 0 if an error occured and the file could not be opened. */ - IrrXMLReaderUTF32* createIrrXMLReaderUTF32(FILE* file); + IRRXML_API IrrXMLReaderUTF32* createIrrXMLReaderUTF32(FILE* file); //! Creates an instance of an UFT-32 xml parser. /** This means that @@ -509,7 +515,7 @@ namespace io \return Returns a pointer to the created xml parser. This pointer should be deleted using 'delete' after no longer needed. Returns 0 if an error occured and the file could not be opened. */ - IrrXMLReaderUTF32* createIrrXMLReaderUTF32(IFileReadCallBack* callback); + IRRXML_API IrrXMLReaderUTF32* createIrrXMLReaderUTF32(IFileReadCallBack* callback); /*! \file irrxml.h From 64a7a46406a8d0814699cb26aaa5f4817cc4aa29 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 16 Mar 2019 16:08:03 +0100 Subject: [PATCH 047/187] Update MD3Loader.cpp Fix typo. --- code/MD3Loader.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/code/MD3Loader.cpp b/code/MD3Loader.cpp index 13a5c6c94..cd58931f8 100644 --- a/code/MD3Loader.cpp +++ b/code/MD3Loader.cpp @@ -718,9 +718,7 @@ void MD3Importer::ConvertPath(const char* texture_name, const char* header_name, // ------------------------------------------------------------------------------------------------ // Imports the given file into the given scene structure. -void MD3Importer::InternReadFile( const std::string& pFile, - aiScene* pScene, IOSystem* pIOHandler) -{ +void MD3Importer::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) { mFile = pFile; mScene = pScene; mIOHandler = pIOHandler; @@ -912,7 +910,7 @@ void MD3Importer::InternReadFile( const std::string& pFile, sh = convertedPath.length(); } - const std::string without_ext = convertedPath.substr(0,s); + const std::string without_ext = convertedPath.substr(0,sh); std::list< Q3Shader::ShaderDataBlock >::const_iterator dit = std::find(shaders.blocks.begin(),shaders.blocks.end(),without_ext); if (dit != shaders.blocks.end()) { // We made it! @@ -947,8 +945,7 @@ void MD3Importer::InternReadFile( const std::string& pFile, aiString szString; if (convertedPath.length()) { szString.Set(convertedPath); - } - else { + } else { ASSIMP_LOG_WARN("Texture file name has zero length. Using default name"); szString.Set("dummy_texture.bmp"); } @@ -957,8 +954,7 @@ void MD3Importer::InternReadFile( const std::string& pFile, // prevent transparency by default int no_alpha = aiTextureFlags_IgnoreAlpha; pcHelper->AddProperty(&no_alpha,1,AI_MATKEY_TEXFLAGS_DIFFUSE(0)); - } - else { + } else { Q3Shader::ConvertShaderToMaterial(pcHelper,*shader); } @@ -1028,7 +1024,7 @@ void MD3Importer::InternReadFile( const std::string& pFile, if (!shader || shader->cull == Q3Shader::CULL_CW) { std::swap(pcMesh->mFaces[i].mIndices[2],pcMesh->mFaces[i].mIndices[1]); } - pcTriangles++; + ++pcTriangles; } // Go to the next surface @@ -1044,8 +1040,9 @@ void MD3Importer::InternReadFile( const std::string& pFile, } } - if (!pScene->mNumMeshes) + if (!pScene->mNumMeshes) { throw DeadlyImportError( "MD3: File contains no valid mesh"); + } pScene->mNumMaterials = iNumMaterials; // Now we need to generate an empty node graph @@ -1059,7 +1056,6 @@ void MD3Importer::InternReadFile( const std::string& pFile, pScene->mRootNode->mChildren = new aiNode*[pcHeader->NUM_TAGS]; for (unsigned int i = 0; i < pcHeader->NUM_TAGS; ++i, ++pcTags) { - aiNode* nd = pScene->mRootNode->mChildren[i] = new aiNode(); nd->mName.Set((const char*)pcTags->NAME); nd->mParent = pScene->mRootNode; @@ -1087,8 +1083,12 @@ void MD3Importer::InternReadFile( const std::string& pFile, pScene->mRootNode->mMeshes[i] = i; // Now rotate the whole scene 90 degrees around the x axis to convert to internal coordinate system - pScene->mRootNode->mTransformation = aiMatrix4x4(1.f,0.f,0.f,0.f, - 0.f,0.f,1.f,0.f,0.f,-1.f,0.f,0.f,0.f,0.f,0.f,1.f); + pScene->mRootNode->mTransformation = aiMatrix4x4( + 1.f,0.f,0.f,0.f, + 0.f,0.f,1.f,0.f, + 0.f,-1.f,0.f,0.f, + 0.f,0.f,0.f,1.f + ); } #endif // !! ASSIMP_BUILD_NO_MD3_IMPORTER From f4ec02a34bd9304d3a435178d4328f95630f8677 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 16 Mar 2019 16:10:30 +0100 Subject: [PATCH 048/187] Fix install folders for cmake - os files. --- contrib/irrXML/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contrib/irrXML/CMakeLists.txt b/contrib/irrXML/CMakeLists.txt index 7518e382a..dbe580429 100644 --- a/contrib/irrXML/CMakeLists.txt +++ b/contrib/irrXML/CMakeLists.txt @@ -18,5 +18,8 @@ set(IRRXML_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "IrrXML_Incl set(IRRXML_LIBRARY "IrrXML" CACHE INTERNAL "IrrXML" ) install(TARGETS IrrXML + LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} + RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} + FRAMEWORK DESTINATION ${ASSIMP_LIB_INSTALL_DIR} COMPONENT ${LIBASSIMP_COMPONENT}) From 5ccd7d8c3939784e2fc10b0a3dfab642472ed761 Mon Sep 17 00:00:00 2001 From: Andy Maloney Date: Sat, 16 Mar 2019 11:40:17 -0400 Subject: [PATCH 049/187] Adds a way to select which exporters you want to compile Mimics the ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT / ASSIMP_BUILD_XXX_IMPORTER code but for exporters. This works exactly the same way with one exception - ASSIMP_NO_EXPORT still overrides everything and turns off all exporting. Fixes #2377 --- code/CMakeLists.txt | 125 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 99 insertions(+), 26 deletions(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 37ad34b85..0294d5d4b 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -216,7 +216,7 @@ ENDIF ( ASSIMP_BUILD_NONFREE_C4D_IMPORTER ) # ASSIMP_BUILD_XXX_IMPORTER to FALSE for each importer # if this variable is set to FALSE, the user can manually enable importers by setting # ASSIMP_BUILD_XXX_IMPORTER to TRUE for each importer -OPTION(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT "default value of all ASSIMP_BUILD_XXX_IMPORTER value" TRUE) +OPTION(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT "default value of all ASSIMP_BUILD_XXX_IMPORTER values" TRUE) # macro to add the CMake Option ADD_ASSIMP_IMPORTER_ which enables compile of loader # this way selective loaders can be compiled (reduces filesize + compile time) @@ -232,19 +232,51 @@ MACRO(ADD_ASSIMP_IMPORTER name) IF (ASSIMP_IMPORTER_ENABLED) LIST(APPEND ASSIMP_LOADER_SRCS ${ARGN}) SET(ASSIMP_IMPORTERS_ENABLED "${ASSIMP_IMPORTERS_ENABLED} ${name}") - SET(${name}_SRCS ${ARGN}) SOURCE_GROUP(${name} FILES ${ARGN}) ELSE() SET(${name}_SRC "") SET(ASSIMP_IMPORTERS_DISABLED "${ASSIMP_IMPORTERS_DISABLED} ${name}") add_definitions(-DASSIMP_BUILD_NO_${name}_IMPORTER) + ENDIF() +ENDMACRO() + +# if this variable is set to TRUE, the user can manually disable exporters by setting +# ASSIMP_BUILD_XXX_EXPORTER to FALSE for each exporter +# if this variable is set to FALSE, the user can manually enable exporters by setting +# ASSIMP_BUILD_XXX_EXPORTER to TRUE for each exporter +OPTION(ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT "default value of all ASSIMP_BUILD_XXX_EXPORTER values" TRUE) + +# macro to add the CMake Option ADD_ASSIMP_IMPORTER_ which enables compile of loader +# this way selective loaders can be compiled (reduces filesize + compile time) +MACRO(ADD_ASSIMP_EXPORTER name) + IF (ASSIMP_NO_EXPORT) + set(ASSIMP_EXPORTER_ENABLED FALSE) + ELSEIF (ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT) + set(ASSIMP_EXPORTER_ENABLED TRUE) + IF (DEFINED ASSIMP_BUILD_${name}_EXPORTER AND NOT ASSIMP_BUILD_${name}_EXPORTER) + set(ASSIMP_EXPORTER_ENABLED FALSE) + ENDIF () + ELSE () + set(ASSIMP_EXPORTER_ENABLED ${ASSIMP_BUILD_${name}_EXPORTER}) + ENDIF () + + IF (ASSIMP_EXPORTER_ENABLED) + SET(ASSIMP_EXPORTERS_ENABLED "${ASSIMP_EXPORTERS_ENABLED} ${name}") + LIST(APPEND ASSIMP_EXPORTER_SRCS ${ARGN}) + SOURCE_GROUP(${name}_EXPORTER FILES ${ARGN}) + ELSE() + SET(ASSIMP_EXPORTERS_DISABLED "${ASSIMP_EXPORTERS_DISABLED} ${name}") add_definitions(-DASSIMP_BUILD_NO_${name}_EXPORTER) ENDIF() ENDMACRO() SET(ASSIMP_LOADER_SRCS "") SET(ASSIMP_IMPORTERS_ENABLED "") # list of enabled importers -SET(ASSIMP_IMPORTERS_DISABLED "") # disabled list (used to print) +SET(ASSIMP_IMPORTERS_DISABLED "") # disabled importers list (used to print) + +SET(ASSIMP_EXPORTER_SRCS "") +SET(ASSIMP_EXPORTERS_ENABLED "") # list of enabled exporters +SET(ASSIMP_EXPORTERS_DISABLED "") # disabled exporters list (used to print) ADD_ASSIMP_IMPORTER( AMF AMFImporter.hpp @@ -261,6 +293,9 @@ ADD_ASSIMP_IMPORTER( 3DS 3DSHelper.h 3DSLoader.cpp 3DSLoader.h +) + +ADD_ASSIMP_EXPORTER( 3DS 3DSExporter.h 3DSExporter.cpp ) @@ -278,12 +313,15 @@ ADD_ASSIMP_IMPORTER( ASE ) ADD_ASSIMP_IMPORTER( ASSBIN - AssbinExporter.h - AssbinExporter.cpp AssbinLoader.h AssbinLoader.cpp ) +ADD_ASSIMP_EXPORTER( ASSBIN + AssbinExporter.h + AssbinExporter.cpp +) + ADD_ASSIMP_IMPORTER( ASSXML AssxmlExporter.h AssxmlExporter.cpp @@ -305,6 +343,9 @@ ADD_ASSIMP_IMPORTER( COLLADA ColladaLoader.h ColladaParser.cpp ColladaParser.h +) + +ADD_ASSIMP_EXPORTER( COLLADA ColladaExporter.h ColladaExporter.cpp ) @@ -421,6 +462,9 @@ ADD_ASSIMP_IMPORTER( OBJ ObjFileParser.cpp ObjFileParser.h ObjTools.h +) + +ADD_ASSIMP_EXPORTER( OBJ ObjExporter.h ObjExporter.cpp ) @@ -439,18 +483,24 @@ ADD_ASSIMP_IMPORTER( OGRE ) ADD_ASSIMP_IMPORTER( OPENGEX - OpenGEXExporter.cpp - OpenGEXExporter.h OpenGEXImporter.cpp OpenGEXImporter.h OpenGEXStructs.h ) +ADD_ASSIMP_EXPORTER( OPENGEX + OpenGEXExporter.cpp + OpenGEXExporter.h +) + ADD_ASSIMP_IMPORTER( PLY PlyLoader.cpp PlyLoader.h PlyParser.cpp PlyParser.h +) + +ADD_ASSIMP_EXPORTER( PLY PlyExporter.cpp PlyExporter.h ) @@ -541,13 +591,16 @@ ADD_ASSIMP_IMPORTER( FBX FBXDeformer.cpp FBXBinaryTokenizer.cpp FBXDocumentUtil.cpp + FBXCommon.h +) + +ADD_ASSIMP_EXPORTER( FBX FBXExporter.h FBXExporter.cpp FBXExportNode.h FBXExportNode.cpp FBXExportProperty.h FBXExportProperty.cpp - FBXCommon.h ) SET( PostProcessing_SRCS @@ -647,6 +700,9 @@ ADD_ASSIMP_IMPORTER( SMD ADD_ASSIMP_IMPORTER( STL STLLoader.cpp STLLoader.h +) + +ADD_ASSIMP_EXPORTER( STL STLExporter.h STLExporter.cpp ) @@ -667,13 +723,14 @@ ADD_ASSIMP_IMPORTER( X XFileImporter.h XFileParser.cpp XFileParser.h +) + +ADD_ASSIMP_EXPORTER( X XFileExporter.h XFileExporter.cpp ) ADD_ASSIMP_IMPORTER( X3D - X3DExporter.cpp - X3DExporter.hpp X3DImporter.cpp X3DImporter.hpp X3DImporter_Geometry2D.cpp @@ -693,6 +750,11 @@ ADD_ASSIMP_IMPORTER( X3D X3DVocabulary.cpp ) +ADD_ASSIMP_EXPORTER( X3D + X3DExporter.cpp + X3DExporter.hpp +) + ADD_ASSIMP_IMPORTER( GLTF glTFAsset.h glTFAsset.inl @@ -700,26 +762,29 @@ ADD_ASSIMP_IMPORTER( GLTF glTFAssetWriter.inl glTFImporter.cpp glTFImporter.h - glTFExporter.h - glTFExporter.cpp glTF2Asset.h glTF2Asset.inl glTF2AssetWriter.h glTF2AssetWriter.inl glTF2Importer.cpp glTF2Importer.h +) + +ADD_ASSIMP_EXPORTER( GLTF + glTFExporter.h + glTFExporter.cpp glTF2Exporter.h glTF2Exporter.cpp ) ADD_ASSIMP_IMPORTER( 3MF - D3MFImporter.h - D3MFImporter.cpp D3MFExporter.h D3MFExporter.cpp - D3MFOpcPackage.h - D3MFOpcPackage.cpp - 3MFXmlTags.h +) + +ADD_ASSIMP_EXPORTER( 3MF + D3MFExporter.h + D3MFExporter.cpp ) ADD_ASSIMP_IMPORTER( MMD @@ -740,16 +805,21 @@ ADD_ASSIMP_IMPORTER( STEP Importer/StepFile/StepFileGen2.cpp Importer/StepFile/StepFileGen3.cpp Importer/StepFile/StepReaderGen.h +) + +ADD_ASSIMP_EXPORTER( STEP StepExporter.h StepExporter.cpp ) -SET( Exporter_SRCS - Exporter.cpp - AssimpCExport.cpp - ${HEADER_PATH}/BlobIOSystem.h -) -SOURCE_GROUP( Exporter FILES ${Exporter_SRCS}) +if ((NOT ASSIMP_NO_EXPORT) OR (NOT ASSIMP_EXPORTERS_ENABLED STREQUAL "")) + SET( Exporter_SRCS + Exporter.cpp + AssimpCExport.cpp + ${HEADER_PATH}/BlobIOSystem.h + ) + SOURCE_GROUP( Exporter FILES ${Exporter_SRCS}) +endif() SET( Extra_SRCS MD4FileData.h @@ -883,8 +953,11 @@ else (UNZIP_FOUND) INCLUDE_DIRECTORIES( "../contrib/unzip/" ) endif (UNZIP_FOUND) -MESSAGE(STATUS "Enabled formats:${ASSIMP_IMPORTERS_ENABLED}") -MESSAGE(STATUS "Disabled formats:${ASSIMP_IMPORTERS_DISABLED}") +MESSAGE(STATUS "Enabled importer formats:${ASSIMP_IMPORTERS_ENABLED}") +MESSAGE(STATUS "Disabled importer formats:${ASSIMP_IMPORTERS_DISABLED}") + +MESSAGE(STATUS "Enabled exporter formats:${ASSIMP_EXPORTERS_ENABLED}") +MESSAGE(STATUS "Disabled exporter formats:${ASSIMP_EXPORTERS_DISABLED}") SET( assimp_src # Assimp Files @@ -899,6 +972,7 @@ SET( assimp_src # Model Support ${ASSIMP_LOADER_SRCS} + ${ASSIMP_EXPORTER_SRCS} # Third-party libraries ${IrrXML_SRCS} @@ -912,7 +986,6 @@ SET( assimp_src ${PUBLIC_HEADERS} ${COMPILER_HEADERS} - ) ADD_DEFINITIONS( -DOPENDDLPARSER_BUILD ) From df6d2576335777055ba749aec8fddc7894a4320d Mon Sep 17 00:00:00 2001 From: Andy Maloney Date: Sat, 16 Mar 2019 11:55:16 -0400 Subject: [PATCH 050/187] Fix 3MF importer --- code/CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 0294d5d4b..0f8f9f48a 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -778,8 +778,11 @@ ADD_ASSIMP_EXPORTER( GLTF ) ADD_ASSIMP_IMPORTER( 3MF - D3MFExporter.h - D3MFExporter.cpp + D3MFImporter.h + D3MFImporter.cpp + D3MFOpcPackage.h + D3MFOpcPackage.cpp + 3MFXmlTags.h ) ADD_ASSIMP_EXPORTER( 3MF From a3fdb46f670558e5f987f88184f6f14b11cf4c32 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 16 Mar 2019 17:02:38 +0100 Subject: [PATCH 051/187] fix typo. --- contrib/irrXML/irrXML.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/irrXML/irrXML.h b/contrib/irrXML/irrXML.h index abf1e1869..5aa19e4a7 100644 --- a/contrib/irrXML/irrXML.h +++ b/contrib/irrXML/irrXML.h @@ -11,7 +11,7 @@ # define IRRXML_API __declspec(dllexport) #else # define IRRXML_API -#endif _WIN32 +#endif // _WIN32 /** \mainpage irrXML 1.2 API documentation
    From 525566b8b896abef6bdc4f3cfcfd5d2e4147abc7 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 16 Mar 2019 18:36:26 +0100 Subject: [PATCH 052/187] try to fix shared object issue. --- contrib/irrXML/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/irrXML/CMakeLists.txt b/contrib/irrXML/CMakeLists.txt index dbe580429..56a7c7e6d 100644 --- a/contrib/irrXML/CMakeLists.txt +++ b/contrib/irrXML/CMakeLists.txt @@ -13,7 +13,7 @@ if ( MSVC ) ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS ) endif ( MSVC ) -add_library(IrrXML SHARED ${IrrXML_SRCS}) +add_library(IrrXML ${IrrXML_SRCS}) set(IRRXML_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "IrrXML_Include" ) set(IRRXML_LIBRARY "IrrXML" CACHE INTERNAL "IrrXML" ) From 82e08d2a92bb52cf85726c1c52906963e85dccde Mon Sep 17 00:00:00 2001 From: devnoname120 Date: Mon, 18 Mar 2019 14:27:29 +0100 Subject: [PATCH 053/187] INSTALL: Out of source build and improve Windows --- INSTALL | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/INSTALL b/INSTALL index 357918d6b..41de8c3ec 100644 --- a/INSTALL +++ b/INSTALL @@ -35,13 +35,16 @@ http://www.cmake.org/. For Unix: -1. cmake CMakeLists.txt -G 'Unix Makefiles' -2. make +1. mkdir build && cd build +2. cmake .. -G 'Unix Makefiles' +2. make -j4 For Windows: 1. Open a command prompt -2. cmake CMakeLists.txt -2. Open your default IDE and build it +2. mkdir build +2. cd build +2. cmake .. +2. cmake --build . For iOS: Just check the following project, which deploys a compiler toolchain for different iOS-versions: https://github.com/assimp/assimp/tree/master/port/iOS From cd9c256de58f1de6b8b87872c17f58af3494fa62 Mon Sep 17 00:00:00 2001 From: devnoname120 Date: Mon, 18 Mar 2019 14:28:27 +0100 Subject: [PATCH 054/187] INSTALL: update bullet point numbers --- INSTALL | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/INSTALL b/INSTALL index 41de8c3ec..350a5f109 100644 --- a/INSTALL +++ b/INSTALL @@ -37,14 +37,14 @@ For Unix: 1. mkdir build && cd build 2. cmake .. -G 'Unix Makefiles' -2. make -j4 +3. make -j4 For Windows: 1. Open a command prompt 2. mkdir build -2. cd build -2. cmake .. -2. cmake --build . +3. cd build +4. cmake .. +5. cmake --build . For iOS: Just check the following project, which deploys a compiler toolchain for different iOS-versions: https://github.com/assimp/assimp/tree/master/port/iOS From 0fc58c135ba07587d98f578c821c02b4faf298af Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 24 Mar 2019 13:01:38 +0100 Subject: [PATCH 055/187] Update Readme.md Add the HAXE-port. --- Readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Readme.md b/Readme.md index efb8ecc2b..b9babf1bd 100644 --- a/Readme.md +++ b/Readme.md @@ -128,6 +128,7 @@ Take a look into the https://github.com/assimp/assimp/blob/master/Build.md file. * [Javascript (Alpha)](https://github.com/makc/assimp2json) * [Unity 3d Plugin](https://www.assetstore.unity3d.com/en/#!/content/91777) * [JVM](https://github.com/kotlin-graphics/assimp) Full jvm port (current [status](https://github.com/kotlin-graphics/assimp/wiki/Status)) +* [HAXE-Port](https://github.com/longde123/assimp-haxe) The Assimp-HAXE-port. ### Other tools ### [open3mod](https://github.com/acgessler/open3mod) is a powerful 3D model viewer based on Assimp's import and export abilities. From 6c26268035ed7014979d50e5d2f17cf81ea36b3d Mon Sep 17 00:00:00 2001 From: Andy Maloney Date: Tue, 19 Mar 2019 17:33:00 -0400 Subject: [PATCH 056/187] {cmake} Explicitly turn off ASM686 and AMD64 cmake options when ASSIMP_BUILD_ZLIB is on The AMD64 option causes a build failure on MSVC (#1760) and the ASM builds seem to have problems: https://github.com/madler/zlib/issues/41#issuecomment-125848075 This change also prevents these from "polluting" the cmake options if assimp is being included as a submodule. --- CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a6e511b66..13a054de2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -351,6 +351,15 @@ IF( NOT ZLIB_FOUND ) INCLUDE(CheckIncludeFile) INCLUDE(CheckTypeSize) INCLUDE(CheckFunctionExists) + + # Explicitly turn off ASM686 and AMD64 cmake options. + # The AMD64 option causes a build failure on MSVC and the ASM builds seem to have problems: + # https://github.com/madler/zlib/issues/41#issuecomment-125848075 + # Also prevents these options from "polluting" the cmake options if assimp is being + # included as a submodule. + set( ASM686 FALSE CACHE INTERNAL "Override ZLIB flag to turn off assembly" FORCE ) + set( AMD64 FALSE CACHE INTERNAL "Override ZLIB flag to turn off assembly" FORCE ) + # compile from sources ADD_SUBDIRECTORY(contrib/zlib) SET(ZLIB_FOUND 1) From 7e39ae0d52ab50f382a4a8a7c3e3fdc702886fdd Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 26 Mar 2019 20:19:16 +0100 Subject: [PATCH 057/187] Stepfile: fix some minor review finding. --- scripts/StepImporter/CppGenerator.py | 8 ++-- .../StepImporter/StepReaderGen.cpp.template | 4 +- scripts/StepImporter/StepReaderGen.h.template | 37 +++++++++---------- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/scripts/StepImporter/CppGenerator.py b/scripts/StepImporter/CppGenerator.py index 156f19523..13ee7642c 100644 --- a/scripts/StepImporter/CppGenerator.py +++ b/scripts/StepImporter/CppGenerator.py @@ -52,8 +52,8 @@ use_ifc_template = False input_step_template_h = 'StepReaderGen.h.template' input_step_template_cpp = 'StepReaderGen.cpp.template' -input_ifc_template_h = 'IFCReaderGen.h.template' -input_ifc_template_cpp = 'IFCReaderGen.cpp.template' +input_ifc_template_h = 'IFCReaderGen.h.template' +input_ifc_template_cpp = 'IFCReaderGen.cpp.template' cpp_keywords = "class" @@ -87,7 +87,7 @@ template_type = r""" template_stub_decl = '\tDECL_CONV_STUB({type});\n' template_schema = '\t\tSchemaEntry("{normalized_name}",&STEP::ObjectHelper<{type},{argcnt}>::Construct )\n' -template_schema_type = '\t\tSchemaEntry("{normalized_name}",NULL )\n' +template_schema_type = '\t\tSchemaEntry("{normalized_name}",nullptr )\n' template_converter = r""" // ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill<{type}>(const DB& db, const LIST& params, {type}* in) @@ -99,7 +99,7 @@ template_converter_prologue_a = '\tsize_t base = GenericFill(db,params,static_ca template_converter_prologue_b = '\tsize_t base = 0;\n' template_converter_check_argcnt = '\tif (params.GetSize() < {max_arg}) {{ throw STEP::TypeError("expected {max_arg} arguments to {name}"); }}' template_converter_code_per_field = r""" do {{ // convert the '{fieldname}' argument - boost::shared_ptr arg = params[base++];{handle_unset}{convert} + std::shared_ptr arg = params[base++];{handle_unset}{convert} }} while(0); """ template_allow_optional = r""" diff --git a/scripts/StepImporter/StepReaderGen.cpp.template b/scripts/StepImporter/StepReaderGen.cpp.template index 91705f7a4..f3240c099 100644 --- a/scripts/StepImporter/StepReaderGen.cpp.template +++ b/scripts/StepImporter/StepReaderGen.cpp.template @@ -2,7 +2,7 @@ Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------- -Copyright (c) 2006-2018, ASSIMP Development Team +Copyright (c) 2006-2019, ASSIMP Development Team All rights reserved. Redistribution and use of this software in source and binary forms, @@ -66,7 +66,7 @@ namespace STEP { // ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const STEP::DB& db, const LIST& params, NotImplemented* in) { - return 0; + return 0u; } diff --git a/scripts/StepImporter/StepReaderGen.h.template b/scripts/StepImporter/StepReaderGen.h.template index 5f9a2fd5d..7d4d77ef4 100644 --- a/scripts/StepImporter/StepReaderGen.h.template +++ b/scripts/StepImporter/StepReaderGen.h.template @@ -2,7 +2,7 @@ Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------- -Copyright (c) 2006-2018, ASSIMP Development Team +Copyright (c) 2006-2019, ASSIMP Development Team All rights reserved. Redistribution and use of this software in source and binary forms, @@ -47,25 +47,23 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { namespace StepFile { - using namespace STEP; - using namespace STEP::EXPRESS; - - - struct NotImplemented : public ObjectHelper { - - }; - - // ****************************************************************************** - // StepFile Custom data types - // ****************************************************************************** +using namespace STEP; +using namespace STEP::EXPRESS; + +struct NotImplemented : public ObjectHelper { + +}; + +// ****************************************************************************** +// StepFile Custom data types +// ****************************************************************************** {types} - - // ****************************************************************************** - // StepFile Entities - // ****************************************************************************** +// ****************************************************************************** +// StepFile Entities +// ****************************************************************************** {predefs} {entities} @@ -73,11 +71,12 @@ namespace StepFile { void GetSchema(EXPRESS::ConversionSchema& out); } //! StepFile + namespace STEP { - // ****************************************************************************** - // Converter stubs - // ****************************************************************************** +// ****************************************************************************** +// Converter stubs +// ****************************************************************************** #define DECL_CONV_STUB(type) template <> size_t GenericFill(const STEP::DB& db, const EXPRESS::LIST& params, IFC::type* in) From bb11f90983c866760a22f11c26717ea2cc03505d Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Tue, 26 Mar 2019 22:45:20 -0400 Subject: [PATCH 058/187] Update zip library to current head. Closes assimp/assimp#2388 --- contrib/zip/.gitignore | 18 + contrib/zip/.travis.sh | 18 + contrib/zip/.travis.yml | 18 +- contrib/zip/CMakeLists.txt | 43 +- contrib/zip/README.md | 324 +- contrib/zip/appveyor.yml | 2 +- contrib/zip/cmake/asan-wrapper | 55 + contrib/zip/cmake/cmake_uninstall.cmake.in | 23 + contrib/zip/src/miniz.h | 6007 ++++++++++++-------- contrib/zip/src/zip.c | 1247 ++-- contrib/zip/src/zip.h | 147 +- contrib/zip/test/CMakeLists.txt | 12 + contrib/zip/test/test.c | 474 +- contrib/zip/test/test_miniz.c | 104 + 14 files changed, 5636 insertions(+), 2856 deletions(-) create mode 100755 contrib/zip/.travis.sh create mode 100755 contrib/zip/cmake/asan-wrapper create mode 100644 contrib/zip/cmake/cmake_uninstall.cmake.in create mode 100644 contrib/zip/test/test_miniz.c diff --git a/contrib/zip/.gitignore b/contrib/zip/.gitignore index 4f9972c56..a7904a1ef 100644 --- a/contrib/zip/.gitignore +++ b/contrib/zip/.gitignore @@ -36,3 +36,21 @@ # Temporary *.swp .DS_Store + +# CMake +CMakeScripts +*.cmake + +# Xcode +*.build +*.xcodeproj +zip.sln +zip.vcxproj.filters +zip.vcxproj +ALL_BUILD.vcxproj.filters +ALL_BUILD.vcxproj +CMakeFiles/ +zip.dir/ +test/test.exe.vcxproj.filters +test/test.exe.vcxproj +test/test.exe.dir/ diff --git a/contrib/zip/.travis.sh b/contrib/zip/.travis.sh new file mode 100755 index 000000000..22974b1ff --- /dev/null +++ b/contrib/zip/.travis.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# +# Build script for travis-ci.org builds. +# +if [ $ANALYZE = "true" ] && [ "$CC" = "clang" ]; then + # scan-build -h + scan-build cmake -G "Unix Makefiles" + scan-build -enable-checker security.FloatLoopCounter \ + -enable-checker security.insecureAPI.UncheckedReturn \ + --status-bugs -v \ + make -j 8 \ + make -j 8 test +else + cmake -DCMAKE_BUILD_TYPE=Debug -DSANITIZE_ADDRESS=On -DCMAKE_INSTALL_PREFIX=_install + make -j 8 + make install + ASAN_OPTIONS=detect_leaks=0 LSAN_OPTIONS=verbosity=1:log_threads=1 ctest -V +fi \ No newline at end of file diff --git a/contrib/zip/.travis.yml b/contrib/zip/.travis.yml index d8ccb728d..86bac1cca 100644 --- a/contrib/zip/.travis.yml +++ b/contrib/zip/.travis.yml @@ -1,10 +1,22 @@ language: c +addons: + apt: + packages: &1 + - lcov # Compiler selection compiler: - clang - gcc +env: + - ANALYZE=false + - ANALYZE=true # Build steps script: - - mkdir build - - cd build - - cmake -DCMAKE_BUILD_TYPE=Debug .. && make && make test + - ./.travis.sh +after_success: + # Creating report + - cmake -DENABLE_COVERAGE=ON + - make + - make test + # Uploading report to CodeCov + - bash <(curl -s https://codecov.io/bash) \ No newline at end of file diff --git a/contrib/zip/CMakeLists.txt b/contrib/zip/CMakeLists.txt index 450ef3a98..b46dbb1db 100644 --- a/contrib/zip/CMakeLists.txt +++ b/contrib/zip/CMakeLists.txt @@ -1,18 +1,47 @@ cmake_minimum_required(VERSION 2.8) project(zip) +enable_language(C) +set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) if (MSVC) - # Use secure functions by defaualt and suppress warnings about "deprecated" functions - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_NONSTDC_NO_WARNINGS=1 /D _CRT_SECURE_NO_WARNINGS=1") + # Use secure functions by defaualt and suppress warnings about "deprecated" functions + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_NONSTDC_NO_WARNINGS=1 /D _CRT_SECURE_NO_WARNINGS=1") +elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR + "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR + "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra -Werror -pedantic") endif (MSVC) # zip set(SRC src/miniz.h src/zip.h src/zip.c) -add_library(${CMAKE_PROJECT_NAME} ${SRC}) +add_library(${PROJECT_NAME} ${SRC}) +target_include_directories(${PROJECT_NAME} INTERFACE src) # test -enable_testing() -add_subdirectory(test) +if (NOT CMAKE_DISABLE_TESTING) + enable_testing() + add_subdirectory(test) + find_package(Sanitizers) + add_sanitizers(${PROJECT_NAME} test.exe) + add_sanitizers(${PROJECT_NAME} test_miniz.exe) +endif() +install(TARGETS ${PROJECT_NAME} + RUNTIME DESTINATION bin + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + COMPONENT library) +install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION include) + +# uninstall target (https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake) +if(NOT TARGET uninstall) + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake" + IMMEDIATE @ONLY) + + add_custom_target(uninstall + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake) +endif() diff --git a/contrib/zip/README.md b/contrib/zip/README.md index 24de5e61a..14eb9a34c 100644 --- a/contrib/zip/README.md +++ b/contrib/zip/README.md @@ -1,12 +1,11 @@ ### A portable (OSX/Linux/Windows), simple zip library written in C This is done by hacking awesome [miniz](https://code.google.com/p/miniz) library and layering functions on top of the miniz v1.15 API. -[![Windows][win-badge]][win-link] [![OS X][osx-linux-badge]][osx-linux-link] +[![Windows](https://ci.appveyor.com/api/projects/status/bph8dr3jacgmjv32/branch/master?svg=true&label=windows)](https://ci.appveyor.com/project/kuba--/zip) +[![Linux](https://travis-ci.org/kuba--/zip.svg?branch=master&label=linux%2fosx)](https://travis-ci.org/kuba--/zip) +[![Version](https://badge.fury.io/gh/kuba--%2Fzip.svg)](https://github.com/kuba--/zip/releases) +[![Codecov](https://codecov.io/gh/kuba--/zip/branch/master/graph/badge.svg)](https://codecov.io/gh/kuba--/zip) -[win-badge]: https://img.shields.io/appveyor/ci/kuba--/zip/master.svg?label=windows "AppVeyor build status" -[win-link]: https://ci.appveyor.com/project/kuba--/zip "AppVeyor build status" -[osx-linux-badge]: https://img.shields.io/travis/kuba--/zip/master.svg?label=linux/osx "Travis CI build status" -[osx-linux-link]: https://travis-ci.org/kuba--/zip "Travis CI build status" # The Idea @@ -23,117 +22,288 @@ It was the reason, why I decided to write zip module on top of the miniz. It req * Create a new zip archive with default compression level. ```c - struct zip_t *zip = zip_open("foo.zip", ZIP_DEFAULT_COMPRESSION_LEVEL, 'w'); +struct zip_t *zip = zip_open("foo.zip", ZIP_DEFAULT_COMPRESSION_LEVEL, 'w'); +{ + zip_entry_open(zip, "foo-1.txt"); { - zip_entry_open(zip, "foo-1.txt"); - { - char *buf = "Some data here..."; - zip_entry_write(zip, buf, strlen(buf)); - } - zip_entry_close(zip); - - zip_entry_open(zip, "foo-2.txt"); - { - // merge 3 files into one entry and compress them on-the-fly. - zip_entry_fwrite(zip, "foo-2.1.txt"); - zip_entry_fwrite(zip, "foo-2.2.txt"); - zip_entry_fwrite(zip, "foo-2.3.txt"); - } - zip_entry_close(zip); + const char *buf = "Some data here...\0"; + zip_entry_write(zip, buf, strlen(buf)); } - zip_close(zip); + zip_entry_close(zip); + + zip_entry_open(zip, "foo-2.txt"); + { + // merge 3 files into one entry and compress them on-the-fly. + zip_entry_fwrite(zip, "foo-2.1.txt"); + zip_entry_fwrite(zip, "foo-2.2.txt"); + zip_entry_fwrite(zip, "foo-2.3.txt"); + } + zip_entry_close(zip); +} +zip_close(zip); ``` * Append to the existing zip archive. ```c - struct zip_t *zip = zip_open("foo.zip", ZIP_DEFAULT_COMPRESSION_LEVEL, 'a'); +struct zip_t *zip = zip_open("foo.zip", ZIP_DEFAULT_COMPRESSION_LEVEL, 'a'); +{ + zip_entry_open(zip, "foo-3.txt"); { - zip_entry_open(zip, "foo-3.txt"); - { - char *buf = "Append some data here..."; - zip_entry_write(zip, buf, strlen(buf)); - } - zip_entry_close(zip); + const char *buf = "Append some data here...\0"; + zip_entry_write(zip, buf, strlen(buf)); } - zip_close(zip); + zip_entry_close(zip); +} +zip_close(zip); ``` * Extract a zip archive into a folder. ```c - int on_extract_entry(const char *filename, void *arg) { - static int i = 0; - int n = *(int *)arg; - printf("Extracted: %s (%d of %d)\n", filename, ++i, n); +int on_extract_entry(const char *filename, void *arg) { + static int i = 0; + int n = *(int *)arg; + printf("Extracted: %s (%d of %d)\n", filename, ++i, n); - return 0; - } + return 0; +} - int arg = 2; - zip_extract("foo.zip", "/tmp", on_extract_entry, &arg); +int arg = 2; +zip_extract("foo.zip", "/tmp", on_extract_entry, &arg); ``` * Extract a zip entry into memory. ```c - void *buf = NULL; - size_t bufsize; +void *buf = NULL; +size_t bufsize; - struct zip_t *zip = zip_open("foo.zip", 0, 'r'); +struct zip_t *zip = zip_open("foo.zip", 0, 'r'); +{ + zip_entry_open(zip, "foo-1.txt"); { - zip_entry_open(zip, "foo-1.txt"); - { - zip_entry_read(zip, &buf, &bufsize); - } - zip_entry_close(zip); + zip_entry_read(zip, &buf, &bufsize); } - zip_close(zip); + zip_entry_close(zip); +} +zip_close(zip); - free(buf); +free(buf); +``` + +* Extract a zip entry into memory (no internal allocation). +```c +unsigned char *buf; +size_t bufsize; + +struct zip_t *zip = zip_open("foo.zip", 0, 'r'); +{ + zip_entry_open(zip, "foo-1.txt"); + { + bufsize = zip_entry_size(zip); + buf = calloc(sizeof(unsigned char), bufsize); + + zip_entry_noallocread(zip, (void *)buf, bufsize); + } + zip_entry_close(zip); +} +zip_close(zip); + +free(buf); ``` * Extract a zip entry into memory using callback. ```c - struct buffer_t { - char *data; - size_t size; - }; +struct buffer_t { + char *data; + size_t size; +}; - static size_t on_extract(void *arg, unsigned long long offset, const void *data, size_t size) { - struct buffer_t *buf = (struct buffer_t *)arg; - buf->data = realloc(buf->data, buf->size + size + 1); - assert(NULL != buf->data); +static size_t on_extract(void *arg, unsigned long long offset, const void *data, size_t size) { + struct buffer_t *buf = (struct buffer_t *)arg; + buf->data = realloc(buf->data, buf->size + size + 1); + assert(NULL != buf->data); - memcpy(&(buf->data[buf->size]), data, size); - buf->size += size; - buf->data[buf->size] = 0; + memcpy(&(buf->data[buf->size]), data, size); + buf->size += size; + buf->data[buf->size] = 0; - return size; - } + return size; +} - struct buffer_t buf = {0}; - struct zip_t *zip = zip_open("foo.zip", 0, 'r'); +struct buffer_t buf = {0}; +struct zip_t *zip = zip_open("foo.zip", 0, 'r'); +{ + zip_entry_open(zip, "foo-1.txt"); { - zip_entry_open(zip, "foo-1.txt"); - { - zip_entry_extract(zip, on_extract, &buf); - } - zip_entry_close(zip); + zip_entry_extract(zip, on_extract, &buf); } - zip_close(zip); + zip_entry_close(zip); +} +zip_close(zip); - free(buf.data); +free(buf.data); ``` * Extract a zip entry into a file. ```c - struct zip_t *zip = zip_open("foo.zip", 0, 'r'); +struct zip_t *zip = zip_open("foo.zip", 0, 'r'); +{ + zip_entry_open(zip, "foo-2.txt"); { - zip_entry_open(zip, "foo-2.txt"); - { - zip_entry_fread(zip, "foo-2.txt"); - } - zip_entry_close(zip); + zip_entry_fread(zip, "foo-2.txt"); } - zip_close(zip); + zip_entry_close(zip); +} +zip_close(zip); +``` + +* List of all zip entries +```c +struct zip_t *zip = zip_open("foo.zip", 0, 'r'); +int i, n = zip_total_entries(zip); +for (i = 0; i < n; ++i) { + zip_entry_openbyindex(zip, i); + { + const char *name = zip_entry_name(zip); + int isdir = zip_entry_isdir(zip); + unsigned long long size = zip_entry_size(zip); + unsigned int crc32 = zip_entry_crc32(zip); + } + zip_entry_close(zip); +} +zip_close(zip); +``` + +# Bindings +Compile zip library as a dynamic library. +```shell +$ mkdir build +$ cd build +$ cmake -DBUILD_SHARED_LIBS=true .. +$ make +``` + +### Go (cgo) +```go +package main + +/* +#cgo CFLAGS: -I../src +#cgo LDFLAGS: -L. -lzip +#include +*/ +import "C" +import "unsafe" + +func main() { + path := C.CString("/tmp/go.zip") + zip := C.zip_open(path, 6, 'w') + + entryname := C.CString("test") + C.zip_entry_open(zip, entryname) + + content := "test content" + buf := unsafe.Pointer(C.CString(content)) + bufsize := C.size_t(len(content)) + C.zip_entry_write(zip, buf, bufsize) + + C.zip_entry_close(zip) + + C.zip_close(zip) +} +``` + +### Ruby (ffi) +Install _ffi_ gem. +```shell +$ gem install ffi +``` + +Bind in your module. +```ruby +require 'ffi' + +module Zip + extend FFI::Library + ffi_lib "./libzip.#{::FFI::Platform::LIBSUFFIX}" + + attach_function :zip_open, [:string, :int, :char], :pointer + attach_function :zip_close, [:pointer], :void + + attach_function :zip_entry_open, [:pointer, :string], :int + attach_function :zip_entry_close, [:pointer], :void + attach_function :zip_entry_write, [:pointer, :string, :int], :int +end + +ptr = Zip.zip_open("/tmp/ruby.zip", 6, "w".bytes()[0]) + +status = Zip.zip_entry_open(ptr, "test") + +content = "test content" +status = Zip.zip_entry_write(ptr, content, content.size()) + +Zip.zip_entry_close(ptr) +Zip.zip_close(ptr) +``` + +### Python (cffi) +Install _cffi_ package +```shell +$ pip install cffi +``` + +Bind in your package. +```python +import ctypes.util +from cffi import FFI + +ffi = FFI() +ffi.cdef(""" + struct zip_t *zip_open(const char *zipname, int level, char mode); + void zip_close(struct zip_t *zip); + + int zip_entry_open(struct zip_t *zip, const char *entryname); + int zip_entry_close(struct zip_t *zip); + int zip_entry_write(struct zip_t *zip, const void *buf, size_t bufsize); +""") + +Zip = ffi.dlopen(ctypes.util.find_library("zip")) + +ptr = Zip.zip_open("/tmp/python.zip", 6, 'w') + +status = Zip.zip_entry_open(ptr, "test") + +content = "test content" +status = Zip.zip_entry_write(ptr, content, len(content)) + +Zip.zip_entry_close(ptr) +Zip.zip_close(ptr) +``` + +### Ring +The language comes with RingZip based on this library +```ring +load "ziplib.ring" + +new Zip { + setFileName("myfile.zip") + open("w") + newEntry() { + open("test.c") + writefile("test.c") + close() + } + close() +} +``` + +# Contribution Rules/Coding Standards +No need to throw away your coding style, just do your best to follow default clang-format style. +Apply `clang-format` to the source files before commit: +```sh +for file in $(git ls-files | \grep -E '\.(c|h)$' | \grep -v -- '#') +do + clang-format -i $file +done ``` diff --git a/contrib/zip/appveyor.yml b/contrib/zip/appveyor.yml index 297cad8b0..0be6373ca 100644 --- a/contrib/zip/appveyor.yml +++ b/contrib/zip/appveyor.yml @@ -1,4 +1,4 @@ -version: 1.0.{build} +version: zip-0.1.9.{build} build_script: - cmd: >- cd c:\projects\zip diff --git a/contrib/zip/cmake/asan-wrapper b/contrib/zip/cmake/asan-wrapper new file mode 100755 index 000000000..5d5410337 --- /dev/null +++ b/contrib/zip/cmake/asan-wrapper @@ -0,0 +1,55 @@ +#!/bin/sh + +# The MIT License (MIT) +# +# Copyright (c) +# 2013 Matthew Arsenault +# 2015-2016 RWTH Aachen University, Federal Republic of Germany +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# This script is a wrapper for AddressSanitizer. In some special cases you need +# to preload AddressSanitizer to avoid error messages - e.g. if you're +# preloading another library to your application. At the moment this script will +# only do something, if we're running on a Linux platform. OSX might not be +# affected. + + +# Exit immediately, if platform is not Linux. +if [ "$(uname)" != "Linux" ] +then + exec $@ +fi + + +# Get the used libasan of the application ($1). If a libasan was found, it will +# be prepended to LD_PRELOAD. +libasan=$(ldd $1 | grep libasan | sed "s/^[[:space:]]//" | cut -d' ' -f1) +if [ -n "$libasan" ] +then + if [ -n "$LD_PRELOAD" ] + then + export LD_PRELOAD="$libasan:$LD_PRELOAD" + else + export LD_PRELOAD="$libasan" + fi +fi + +# Execute the application. +exec $@ diff --git a/contrib/zip/cmake/cmake_uninstall.cmake.in b/contrib/zip/cmake/cmake_uninstall.cmake.in new file mode 100644 index 000000000..86ea34d8f --- /dev/null +++ b/contrib/zip/cmake/cmake_uninstall.cmake.in @@ -0,0 +1,23 @@ +# copied from https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake +if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt") +endif(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") + +file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) +string(REGEX REPLACE "\n" ";" files "${files}") +foreach(file ${files}) + message(STATUS "Uninstalling $ENV{DESTDIR}${file}") + if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + exec_program( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") + endif(NOT "${rm_retval}" STREQUAL 0) + else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + message(STATUS "File $ENV{DESTDIR}${file} does not exist.") + endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") +endforeach(file) + diff --git a/contrib/zip/src/miniz.h b/contrib/zip/src/miniz.h index 935f7de2e..0e269d18a 100644 --- a/contrib/zip/src/miniz.h +++ b/contrib/zip/src/miniz.h @@ -1,160 +1,221 @@ /* - miniz.c v1.15 - public domain deflate/inflate, zlib-subset, ZIP reading/writing/appending, PNG writing - See "unlicense" statement at the end of this file. - Rich Geldreich , last updated Oct. 13, 2013 - Implements RFC 1950: http://www.ietf.org/rfc/rfc1950.txt and RFC 1951: http://www.ietf.org/rfc/rfc1951.txt + miniz.c v1.15 - public domain deflate/inflate, zlib-subset, ZIP + reading/writing/appending, PNG writing See "unlicense" statement at the end + of this file. Rich Geldreich , last updated Oct. 13, + 2013 Implements RFC 1950: http://www.ietf.org/rfc/rfc1950.txt and RFC 1951: + http://www.ietf.org/rfc/rfc1951.txt - Most API's defined in miniz.c are optional. For example, to disable the archive related functions just define - MINIZ_NO_ARCHIVE_APIS, or to get rid of all stdio usage define MINIZ_NO_STDIO (see the list below for more macros). + Most API's defined in miniz.c are optional. For example, to disable the + archive related functions just define MINIZ_NO_ARCHIVE_APIS, or to get rid of + all stdio usage define MINIZ_NO_STDIO (see the list below for more macros). * Change History - 10/13/13 v1.15 r4 - Interim bugfix release while I work on the next major release with Zip64 support (almost there!): - - Critical fix for the MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY bug (thanks kahmyong.moon@hp.com) which could cause locate files to not find files. This bug - would only have occured in earlier versions if you explicitly used this flag, OR if you used mz_zip_extract_archive_file_to_heap() or mz_zip_add_mem_to_archive_file_in_place() - (which used this flag). If you can't switch to v1.15 but want to fix this bug, just remove the uses of this flag from both helper funcs (and of course don't use the flag). - - Bugfix in mz_zip_reader_extract_to_mem_no_alloc() from kymoon when pUser_read_buf is not NULL and compressed size is > uncompressed size - - Fixing mz_zip_reader_extract_*() funcs so they don't try to extract compressed data from directory entries, to account for weird zipfiles which contain zero-size compressed data on dir entries. - Hopefully this fix won't cause any issues on weird zip archives, because it assumes the low 16-bits of zip external attributes are DOS attributes (which I believe they always are in practice). - - Fixing mz_zip_reader_is_file_a_directory() so it doesn't check the internal attributes, just the filename and external attributes + 10/13/13 v1.15 r4 - Interim bugfix release while I work on the next major + release with Zip64 support (almost there!): + - Critical fix for the MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY bug + (thanks kahmyong.moon@hp.com) which could cause locate files to not find + files. This bug would only have occured in earlier versions if you explicitly + used this flag, OR if you used mz_zip_extract_archive_file_to_heap() or + mz_zip_add_mem_to_archive_file_in_place() (which used this flag). If you + can't switch to v1.15 but want to fix this bug, just remove the uses of this + flag from both helper funcs (and of course don't use the flag). + - Bugfix in mz_zip_reader_extract_to_mem_no_alloc() from kymoon when + pUser_read_buf is not NULL and compressed size is > uncompressed size + - Fixing mz_zip_reader_extract_*() funcs so they don't try to extract + compressed data from directory entries, to account for weird zipfiles which + contain zero-size compressed data on dir entries. Hopefully this fix won't + cause any issues on weird zip archives, because it assumes the low 16-bits of + zip external attributes are DOS attributes (which I believe they always are + in practice). + - Fixing mz_zip_reader_is_file_a_directory() so it doesn't check the + internal attributes, just the filename and external attributes - mz_zip_reader_init_file() - missing MZ_FCLOSE() call if the seek failed - - Added cmake support for Linux builds which builds all the examples, tested with clang v3.3 and gcc v4.6. + - Added cmake support for Linux builds which builds all the examples, + tested with clang v3.3 and gcc v4.6. - Clang fix for tdefl_write_image_to_png_file_in_memory() from toffaletti - Merged MZ_FORCEINLINE fix from hdeanclark - Fix include before config #ifdef, thanks emil.brink - - Added tdefl_write_image_to_png_file_in_memory_ex(): supports Y flipping (super useful for OpenGL apps), and explicit control over the compression level (so you can - set it to 1 for real-time compression). + - Added tdefl_write_image_to_png_file_in_memory_ex(): supports Y flipping + (super useful for OpenGL apps), and explicit control over the compression + level (so you can set it to 1 for real-time compression). - Merged in some compiler fixes from paulharris's github repro. - - Retested this build under Windows (VS 2010, including static analysis), tcc 0.9.26, gcc v4.6 and clang v3.3. - - Added example6.c, which dumps an image of the mandelbrot set to a PNG file. - - Modified example2 to help test the MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY flag more. - - In r3: Bugfix to mz_zip_writer_add_file() found during merge: Fix possible src file fclose() leak if alignment bytes+local header file write faiiled -  - In r4: Minor bugfix to mz_zip_writer_add_from_zip_reader(): Was pushing the wrong central dir header offset, appears harmless in this release, but it became a problem in the zip64 branch - 5/20/12 v1.14 - MinGW32/64 GCC 4.6.1 compiler fixes: added MZ_FORCEINLINE, #include (thanks fermtect). - 5/19/12 v1.13 - From jason@cornsyrup.org and kelwert@mtu.edu - Fix mz_crc32() so it doesn't compute the wrong CRC-32's when mz_ulong is 64-bit. - - Temporarily/locally slammed in "typedef unsigned long mz_ulong" and re-ran a randomized regression test on ~500k files. + - Retested this build under Windows (VS 2010, including static analysis), + tcc 0.9.26, gcc v4.6 and clang v3.3. + - Added example6.c, which dumps an image of the mandelbrot set to a PNG + file. + - Modified example2 to help test the + MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY flag more. + - In r3: Bugfix to mz_zip_writer_add_file() found during merge: Fix + possible src file fclose() leak if alignment bytes+local header file write + faiiled + - In r4: Minor bugfix to mz_zip_writer_add_from_zip_reader(): Was pushing the + wrong central dir header offset, appears harmless in this release, but it + became a problem in the zip64 branch 5/20/12 v1.14 - MinGW32/64 GCC 4.6.1 + compiler fixes: added MZ_FORCEINLINE, #include (thanks fermtect). + 5/19/12 v1.13 - From jason@cornsyrup.org and kelwert@mtu.edu - Fix + mz_crc32() so it doesn't compute the wrong CRC-32's when mz_ulong is 64-bit. + - Temporarily/locally slammed in "typedef unsigned long mz_ulong" and + re-ran a randomized regression test on ~500k files. - Eliminated a bunch of warnings when compiling with GCC 32-bit/64. - - Ran all examples, miniz.c, and tinfl.c through MSVC 2008's /analyze (static analysis) option and fixed all warnings (except for the silly - "Use of the comma-operator in a tested expression.." analysis warning, which I purposely use to work around a MSVC compiler warning). - - Created 32-bit and 64-bit Codeblocks projects/workspace. Built and tested Linux executables. The codeblocks workspace is compatible with Linux+Win32/x64. - - Added miniz_tester solution/project, which is a useful little app derived from LZHAM's tester app that I use as part of the regression test. - - Ran miniz.c and tinfl.c through another series of regression testing on ~500,000 files and archives. - - Modified example5.c so it purposely disables a bunch of high-level functionality (MINIZ_NO_STDIO, etc.). (Thanks to corysama for the MINIZ_NO_STDIO bug report.) - - Fix ftell() usage in examples so they exit with an error on files which are too large (a limitation of the examples, not miniz itself). - 4/12/12 v1.12 - More comments, added low-level example5.c, fixed a couple minor level_and_flags issues in the archive API's. - level_and_flags can now be set to MZ_DEFAULT_COMPRESSION. Thanks to Bruce Dawson for the feedback/bug report. - 5/28/11 v1.11 - Added statement from unlicense.org - 5/27/11 v1.10 - Substantial compressor optimizations: - - Level 1 is now ~4x faster than before. The L1 compressor's throughput now varies between 70-110MB/sec. on a - - Core i7 (actual throughput varies depending on the type of data, and x64 vs. x86). - - Improved baseline L2-L9 compression perf. Also, greatly improved compression perf. issues on some file types. - - Refactored the compression code for better readability and maintainability. - - Added level 10 compression level (L10 has slightly better ratio than level 9, but could have a potentially large - drop in throughput on some files). - 5/15/11 v1.09 - Initial stable release. + - Ran all examples, miniz.c, and tinfl.c through MSVC 2008's /analyze + (static analysis) option and fixed all warnings (except for the silly "Use of + the comma-operator in a tested expression.." analysis warning, which I + purposely use to work around a MSVC compiler warning). + - Created 32-bit and 64-bit Codeblocks projects/workspace. Built and + tested Linux executables. The codeblocks workspace is compatible with + Linux+Win32/x64. + - Added miniz_tester solution/project, which is a useful little app + derived from LZHAM's tester app that I use as part of the regression test. + - Ran miniz.c and tinfl.c through another series of regression testing on + ~500,000 files and archives. + - Modified example5.c so it purposely disables a bunch of high-level + functionality (MINIZ_NO_STDIO, etc.). (Thanks to corysama for the + MINIZ_NO_STDIO bug report.) + - Fix ftell() usage in examples so they exit with an error on files which + are too large (a limitation of the examples, not miniz itself). 4/12/12 v1.12 + - More comments, added low-level example5.c, fixed a couple minor + level_and_flags issues in the archive API's. level_and_flags can now be set + to MZ_DEFAULT_COMPRESSION. Thanks to Bruce Dawson + for the feedback/bug report. 5/28/11 v1.11 - Added statement from + unlicense.org 5/27/11 v1.10 - Substantial compressor optimizations: + - Level 1 is now ~4x faster than before. The L1 compressor's throughput + now varies between 70-110MB/sec. on a + - Core i7 (actual throughput varies depending on the type of data, and x64 + vs. x86). + - Improved baseline L2-L9 compression perf. Also, greatly improved + compression perf. issues on some file types. + - Refactored the compression code for better readability and + maintainability. + - Added level 10 compression level (L10 has slightly better ratio than + level 9, but could have a potentially large drop in throughput on some + files). 5/15/11 v1.09 - Initial stable release. * Low-level Deflate/Inflate implementation notes: - Compression: Use the "tdefl" API's. The compressor supports raw, static, and dynamic blocks, lazy or - greedy parsing, match length filtering, RLE-only, and Huffman-only streams. It performs and compresses - approximately as well as zlib. + Compression: Use the "tdefl" API's. The compressor supports raw, static, + and dynamic blocks, lazy or greedy parsing, match length filtering, RLE-only, + and Huffman-only streams. It performs and compresses approximately as well as + zlib. - Decompression: Use the "tinfl" API's. The entire decompressor is implemented as a single function - coroutine: see tinfl_decompress(). It supports decompression into a 32KB (or larger power of 2) wrapping buffer, or into a memory - block large enough to hold the entire file. + Decompression: Use the "tinfl" API's. The entire decompressor is + implemented as a single function coroutine: see tinfl_decompress(). It + supports decompression into a 32KB (or larger power of 2) wrapping buffer, or + into a memory block large enough to hold the entire file. - The low-level tdefl/tinfl API's do not make any use of dynamic memory allocation. + The low-level tdefl/tinfl API's do not make any use of dynamic memory + allocation. * zlib-style API notes: - miniz.c implements a fairly large subset of zlib. There's enough functionality present for it to be a drop-in - zlib replacement in many apps: + miniz.c implements a fairly large subset of zlib. There's enough + functionality present for it to be a drop-in zlib replacement in many apps: The z_stream struct, optional memory allocation callbacks deflateInit/deflateInit2/deflate/deflateReset/deflateEnd/deflateBound inflateInit/inflateInit2/inflate/inflateEnd compress, compress2, compressBound, uncompress - CRC-32, Adler-32 - Using modern, minimal code size, CPU cache friendly routines. - Supports raw deflate streams or standard zlib streams with adler-32 checking. + CRC-32, Adler-32 - Using modern, minimal code size, CPU cache friendly + routines. Supports raw deflate streams or standard zlib streams with adler-32 + checking. Limitations: - The callback API's are not implemented yet. No support for gzip headers or zlib static dictionaries. - I've tried to closely emulate zlib's various flavors of stream flushing and return status codes, but - there are no guarantees that miniz.c pulls this off perfectly. + The callback API's are not implemented yet. No support for gzip headers or + zlib static dictionaries. I've tried to closely emulate zlib's various + flavors of stream flushing and return status codes, but there are no + guarantees that miniz.c pulls this off perfectly. - * PNG writing: See the tdefl_write_image_to_png_file_in_memory() function, originally written by - Alex Evans. Supports 1-4 bytes/pixel images. + * PNG writing: See the tdefl_write_image_to_png_file_in_memory() function, + originally written by Alex Evans. Supports 1-4 bytes/pixel images. * ZIP archive API notes: - The ZIP archive API's where designed with simplicity and efficiency in mind, with just enough abstraction to - get the job done with minimal fuss. There are simple API's to retrieve file information, read files from - existing archives, create new archives, append new files to existing archives, or clone archive data from - one archive to another. It supports archives located in memory or the heap, on disk (using stdio.h), - or you can specify custom file read/write callbacks. + The ZIP archive API's where designed with simplicity and efficiency in + mind, with just enough abstraction to get the job done with minimal fuss. + There are simple API's to retrieve file information, read files from existing + archives, create new archives, append new files to existing archives, or + clone archive data from one archive to another. It supports archives located + in memory or the heap, on disk (using stdio.h), or you can specify custom + file read/write callbacks. - - Archive reading: Just call this function to read a single file from a disk archive: + - Archive reading: Just call this function to read a single file from a + disk archive: - void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, - size_t *pSize, mz_uint zip_flags); + void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const + char *pArchive_name, size_t *pSize, mz_uint zip_flags); - For more complex cases, use the "mz_zip_reader" functions. Upon opening an archive, the entire central - directory is located and read as-is into memory, and subsequent file access only occurs when reading individual files. + For more complex cases, use the "mz_zip_reader" functions. Upon opening an + archive, the entire central directory is located and read as-is into memory, + and subsequent file access only occurs when reading individual files. - - Archives file scanning: The simple way is to use this function to scan a loaded archive for a specific file: + - Archives file scanning: The simple way is to use this function to scan a + loaded archive for a specific file: - int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags); + int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, + const char *pComment, mz_uint flags); - The locate operation can optionally check file comments too, which (as one example) can be used to identify - multiple versions of the same file in an archive. This function uses a simple linear search through the central + The locate operation can optionally check file comments too, which (as one + example) can be used to identify multiple versions of the same file in an + archive. This function uses a simple linear search through the central directory, so it's not very fast. - Alternately, you can iterate through all the files in an archive (using mz_zip_reader_get_num_files()) and - retrieve detailed info on each file by calling mz_zip_reader_file_stat(). + Alternately, you can iterate through all the files in an archive (using + mz_zip_reader_get_num_files()) and retrieve detailed info on each file by + calling mz_zip_reader_file_stat(). - - Archive creation: Use the "mz_zip_writer" functions. The ZIP writer immediately writes compressed file data - to disk and builds an exact image of the central directory in memory. The central directory image is written - all at once at the end of the archive file when the archive is finalized. + - Archive creation: Use the "mz_zip_writer" functions. The ZIP writer + immediately writes compressed file data to disk and builds an exact image of + the central directory in memory. The central directory image is written all + at once at the end of the archive file when the archive is finalized. - The archive writer can optionally align each file's local header and file data to any power of 2 alignment, - which can be useful when the archive will be read from optical media. Also, the writer supports placing - arbitrary data blobs at the very beginning of ZIP archives. Archives written using either feature are still - readable by any ZIP tool. + The archive writer can optionally align each file's local header and file + data to any power of 2 alignment, which can be useful when the archive will + be read from optical media. Also, the writer supports placing arbitrary data + blobs at the very beginning of ZIP archives. Archives written using either + feature are still readable by any ZIP tool. - - Archive appending: The simple way to add a single file to an archive is to call this function: + - Archive appending: The simple way to add a single file to an archive is + to call this function: - mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, - const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); + mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, + const char *pArchive_name, const void *pBuf, size_t buf_size, const void + *pComment, mz_uint16 comment_size, mz_uint level_and_flags); - The archive will be created if it doesn't already exist, otherwise it'll be appended to. - Note the appending is done in-place and is not an atomic operation, so if something goes wrong - during the operation it's possible the archive could be left without a central directory (although the local - file headers and file data will be fine, so the archive will be recoverable). + The archive will be created if it doesn't already exist, otherwise it'll be + appended to. Note the appending is done in-place and is not an atomic + operation, so if something goes wrong during the operation it's possible the + archive could be left without a central directory (although the local file + headers and file data will be fine, so the archive will be recoverable). For more complex archive modification scenarios: - 1. The safest way is to use a mz_zip_reader to read the existing archive, cloning only those bits you want to - preserve into a new archive using using the mz_zip_writer_add_from_zip_reader() function (which compiles the - compressed file data as-is). When you're done, delete the old archive and rename the newly written archive, and - you're done. This is safe but requires a bunch of temporary disk space or heap memory. + 1. The safest way is to use a mz_zip_reader to read the existing archive, + cloning only those bits you want to preserve into a new archive using using + the mz_zip_writer_add_from_zip_reader() function (which compiles the + compressed file data as-is). When you're done, delete the old archive and + rename the newly written archive, and you're done. This is safe but requires + a bunch of temporary disk space or heap memory. - 2. Or, you can convert an mz_zip_reader in-place to an mz_zip_writer using mz_zip_writer_init_from_reader(), - append new files as needed, then finalize the archive which will write an updated central directory to the - original archive. (This is basically what mz_zip_add_mem_to_archive_file_in_place() does.) There's a - possibility that the archive's central directory could be lost with this method if anything goes wrong, though. + 2. Or, you can convert an mz_zip_reader in-place to an mz_zip_writer using + mz_zip_writer_init_from_reader(), append new files as needed, then finalize + the archive which will write an updated central directory to the original + archive. (This is basically what mz_zip_add_mem_to_archive_file_in_place() + does.) There's a possibility that the archive's central directory could be + lost with this method if anything goes wrong, though. - ZIP archive support limitations: - No zip64 or spanning support. Extraction functions can only handle unencrypted, stored or deflated files. - Requires streams capable of seeking. + No zip64 or spanning support. Extraction functions can only handle + unencrypted, stored or deflated files. Requires streams capable of seeking. - * This is a header file library, like stb_image.c. To get only a header file, either cut and paste the - below header, or create miniz.h, #define MINIZ_HEADER_FILE_ONLY, and then include miniz.c from it. + * This is a header file library, like stb_image.c. To get only a header file, + either cut and paste the below header, or create miniz.h, #define + MINIZ_HEADER_FILE_ONLY, and then include miniz.c from it. - * Important: For best perf. be sure to customize the below macros for your target platform: - #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 - #define MINIZ_LITTLE_ENDIAN 1 - #define MINIZ_HAS_64BIT_REGISTERS 1 + * Important: For best perf. be sure to customize the below macros for your + target platform: #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 #define + MINIZ_LITTLE_ENDIAN 1 #define MINIZ_HAS_64BIT_REGISTERS 1 - * On platforms using glibc, Be sure to "#define _LARGEFILE64_SOURCE 1" before including miniz.c to ensure miniz - uses the 64-bit variants: fopen64(), stat64(), etc. Otherwise you won't be able to process large files - (i.e. 32-bit stat() fails for me on files > 0x7FFFFFFF bytes). + * On platforms using glibc, Be sure to "#define _LARGEFILE64_SOURCE 1" before + including miniz.c to ensure miniz uses the 64-bit variants: fopen64(), + stat64(), etc. Otherwise you won't be able to process large files (i.e. + 32-bit stat() fails for me on files > 0x7FFFFFFF bytes). */ #ifndef MINIZ_HEADER_INCLUDED @@ -163,60 +224,75 @@ #include // Defines to completely disable specific portions of miniz.c: -// If all macros here are defined the only functionality remaining will be CRC-32, adler-32, tinfl, and tdefl. +// If all macros here are defined the only functionality remaining will be +// CRC-32, adler-32, tinfl, and tdefl. -// Define MINIZ_NO_STDIO to disable all usage and any functions which rely on stdio for file I/O. +// Define MINIZ_NO_STDIO to disable all usage and any functions which rely on +// stdio for file I/O. //#define MINIZ_NO_STDIO -// If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or -// get/set file times, and the C run-time funcs that get/set times won't be called. -// The current downside is the times written to your archives will be from 1979. +// If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able +// to get the current time, or get/set file times, and the C run-time funcs that +// get/set times won't be called. The current downside is the times written to +// your archives will be from 1979. //#define MINIZ_NO_TIME // Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. //#define MINIZ_NO_ARCHIVE_APIS -// Define MINIZ_NO_ARCHIVE_APIS to disable all writing related ZIP archive API's. +// Define MINIZ_NO_ARCHIVE_APIS to disable all writing related ZIP archive +// API's. //#define MINIZ_NO_ARCHIVE_WRITING_APIS -// Define MINIZ_NO_ZLIB_APIS to remove all ZLIB-style compression/decompression API's. +// Define MINIZ_NO_ZLIB_APIS to remove all ZLIB-style compression/decompression +// API's. //#define MINIZ_NO_ZLIB_APIS -// Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. +// Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent +// conflicts against stock zlib. //#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES // Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc. -// Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc -// callbacks to the zlib and archive API's, and a few stand-alone helper API's which don't provide custom user -// functions (such as tdefl_compress_mem_to_heap() and tinfl_decompress_mem_to_heap()) won't work. +// Note if MINIZ_NO_MALLOC is defined then the user must always provide custom +// user alloc/free/realloc callbacks to the zlib and archive API's, and a few +// stand-alone helper API's which don't provide custom user functions (such as +// tdefl_compress_mem_to_heap() and tinfl_decompress_mem_to_heap()) won't work. //#define MINIZ_NO_MALLOC #if defined(__TINYC__) && (defined(__linux) || defined(__linux__)) - // TODO: Work around "error: include file 'sys\utime.h' when compiling with tcc on Linux - #define MINIZ_NO_TIME +// TODO: Work around "error: include file 'sys\utime.h' when compiling with tcc +// on Linux +#define MINIZ_NO_TIME #endif #if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_ARCHIVE_APIS) - #include +#include #endif -#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__i386) || defined(__i486__) || defined(__i486) || defined(i386) || defined(__ia64__) || defined(__x86_64__) +#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || \ + defined(__i386) || defined(__i486__) || defined(__i486) || \ + defined(i386) || defined(__ia64__) || defined(__x86_64__) // MINIZ_X86_OR_X64_CPU is only used to help set the below macros. #define MINIZ_X86_OR_X64_CPU 1 #endif -#if (__BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__) || MINIZ_X86_OR_X64_CPU +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || MINIZ_X86_OR_X64_CPU // Set MINIZ_LITTLE_ENDIAN to 1 if the processor is little endian. #define MINIZ_LITTLE_ENDIAN 1 #endif #if MINIZ_X86_OR_X64_CPU -// Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. -#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0 +// Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient +// integer loads and stores from unaligned addresses. +#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 #endif -#if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__) || defined(__ia64__) || defined(__x86_64__) -// Set MINIZ_HAS_64BIT_REGISTERS to 1 if operations on 64-bit integers are reasonably fast (and don't involve compiler generated calls to helper functions). +#if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || \ + defined(_LP64) || defined(__LP64__) || defined(__ia64__) || \ + defined(__x86_64__) +// Set MINIZ_HAS_64BIT_REGISTERS to 1 if operations on 64-bit integers are +// reasonably fast (and don't involve compiler generated calls to helper +// functions). #define MINIZ_HAS_64BIT_REGISTERS 1 #endif @@ -225,6 +301,18 @@ #define fseeko64 fseeko #define fopen64 fopen #define freopen64 freopen + +// Darwin OSX +#define MZ_PLATFORM 19 +#endif + +#ifndef MZ_PLATFORM +#if defined(_WIN64) || defined(_WIN32) || defined(__WIN32__) +#define MZ_PLATFORM 0 +#else +// UNIX +#define MZ_PLATFORM 3 +#endif #endif #ifdef __cplusplus @@ -233,22 +321,33 @@ extern "C" { // ------------------- zlib-style API Definitions. -// For more compatibility with zlib, miniz.c uses unsigned long for some parameters/struct members. Beware: mz_ulong can be either 32 or 64-bits! +// For more compatibility with zlib, miniz.c uses unsigned long for some +// parameters/struct members. Beware: mz_ulong can be either 32 or 64-bits! typedef unsigned long mz_ulong; -// mz_free() internally uses the MZ_FREE() macro (which by default calls free() unless you've modified the MZ_MALLOC macro) to release a block allocated from the heap. +// mz_free() internally uses the MZ_FREE() macro (which by default calls free() +// unless you've modified the MZ_MALLOC macro) to release a block allocated from +// the heap. void mz_free(void *p); #define MZ_ADLER32_INIT (1) -// mz_adler32() returns the initial adler-32 value to use when called with ptr==NULL. +// mz_adler32() returns the initial adler-32 value to use when called with +// ptr==NULL. mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len); #define MZ_CRC32_INIT (0) -// mz_crc32() returns the initial CRC-32 value to use when called with ptr==NULL. +// mz_crc32() returns the initial CRC-32 value to use when called with +// ptr==NULL. mz_ulong mz_crc32(mz_ulong crc, const unsigned char *ptr, size_t buf_len); // Compression strategies. -enum { MZ_DEFAULT_STRATEGY = 0, MZ_FILTERED = 1, MZ_HUFFMAN_ONLY = 2, MZ_RLE = 3, MZ_FIXED = 4 }; +enum { + MZ_DEFAULT_STRATEGY = 0, + MZ_FILTERED = 1, + MZ_HUFFMAN_ONLY = 2, + MZ_RLE = 3, + MZ_FIXED = 4 +}; // Method #define MZ_DEFLATED 8 @@ -256,26 +355,56 @@ enum { MZ_DEFAULT_STRATEGY = 0, MZ_FILTERED = 1, MZ_HUFFMAN_ONLY = 2, MZ_RLE = 3 #ifndef MINIZ_NO_ZLIB_APIS // Heap allocation callbacks. -// Note that mz_alloc_func parameter types purpsosely differ from zlib's: items/size is size_t, not unsigned long. +// Note that mz_alloc_func parameter types purpsosely differ from zlib's: +// items/size is size_t, not unsigned long. typedef void *(*mz_alloc_func)(void *opaque, size_t items, size_t size); typedef void (*mz_free_func)(void *opaque, void *address); -typedef void *(*mz_realloc_func)(void *opaque, void *address, size_t items, size_t size); +typedef void *(*mz_realloc_func)(void *opaque, void *address, size_t items, + size_t size); -#define MZ_VERSION "9.1.15" -#define MZ_VERNUM 0x91F0 -#define MZ_VER_MAJOR 9 -#define MZ_VER_MINOR 1 -#define MZ_VER_REVISION 15 -#define MZ_VER_SUBREVISION 0 +#define MZ_VERSION "9.1.15" +#define MZ_VERNUM 0x91F0 +#define MZ_VER_MAJOR 9 +#define MZ_VER_MINOR 1 +#define MZ_VER_REVISION 15 +#define MZ_VER_SUBREVISION 0 -// Flush values. For typical usage you only need MZ_NO_FLUSH and MZ_FINISH. The other values are for advanced use (refer to the zlib docs). -enum { MZ_NO_FLUSH = 0, MZ_PARTIAL_FLUSH = 1, MZ_SYNC_FLUSH = 2, MZ_FULL_FLUSH = 3, MZ_FINISH = 4, MZ_BLOCK = 5 }; +// Flush values. For typical usage you only need MZ_NO_FLUSH and MZ_FINISH. The +// other values are for advanced use (refer to the zlib docs). +enum { + MZ_NO_FLUSH = 0, + MZ_PARTIAL_FLUSH = 1, + MZ_SYNC_FLUSH = 2, + MZ_FULL_FLUSH = 3, + MZ_FINISH = 4, + MZ_BLOCK = 5 +}; // Return status codes. MZ_PARAM_ERROR is non-standard. -enum { MZ_OK = 0, MZ_STREAM_END = 1, MZ_NEED_DICT = 2, MZ_ERRNO = -1, MZ_STREAM_ERROR = -2, MZ_DATA_ERROR = -3, MZ_MEM_ERROR = -4, MZ_BUF_ERROR = -5, MZ_VERSION_ERROR = -6, MZ_PARAM_ERROR = -10000 }; +enum { + MZ_OK = 0, + MZ_STREAM_END = 1, + MZ_NEED_DICT = 2, + MZ_ERRNO = -1, + MZ_STREAM_ERROR = -2, + MZ_DATA_ERROR = -3, + MZ_MEM_ERROR = -4, + MZ_BUF_ERROR = -5, + MZ_VERSION_ERROR = -6, + MZ_PARAM_ERROR = -10000 +}; -// Compression levels: 0-9 are the standard zlib-style levels, 10 is best possible compression (not zlib compatible, and may be very slow), MZ_DEFAULT_COMPRESSION=MZ_DEFAULT_LEVEL. -enum { MZ_NO_COMPRESSION = 0, MZ_BEST_SPEED = 1, MZ_BEST_COMPRESSION = 9, MZ_UBER_COMPRESSION = 10, MZ_DEFAULT_LEVEL = 6, MZ_DEFAULT_COMPRESSION = -1 }; +// Compression levels: 0-9 are the standard zlib-style levels, 10 is best +// possible compression (not zlib compatible, and may be very slow), +// MZ_DEFAULT_COMPRESSION=MZ_DEFAULT_LEVEL. +enum { + MZ_NO_COMPRESSION = 0, + MZ_BEST_SPEED = 1, + MZ_BEST_COMPRESSION = 9, + MZ_UBER_COMPRESSION = 10, + MZ_DEFAULT_LEVEL = 6, + MZ_DEFAULT_COMPRESSION = -1 +}; // Window bits #define MZ_DEFAULT_WINDOW_BITS 15 @@ -283,26 +412,26 @@ enum { MZ_NO_COMPRESSION = 0, MZ_BEST_SPEED = 1, MZ_BEST_COMPRESSION = 9, MZ_UBE struct mz_internal_state; // Compression/decompression stream struct. -typedef struct mz_stream_s -{ - const unsigned char *next_in; // pointer to next byte to read - unsigned int avail_in; // number of bytes available at next_in - mz_ulong total_in; // total number of bytes consumed so far +typedef struct mz_stream_s { + const unsigned char *next_in; // pointer to next byte to read + unsigned int avail_in; // number of bytes available at next_in + mz_ulong total_in; // total number of bytes consumed so far - unsigned char *next_out; // pointer to next byte to write - unsigned int avail_out; // number of bytes that can be written to next_out - mz_ulong total_out; // total number of bytes produced so far + unsigned char *next_out; // pointer to next byte to write + unsigned int avail_out; // number of bytes that can be written to next_out + mz_ulong total_out; // total number of bytes produced so far - char *msg; // error msg (unused) - struct mz_internal_state *state; // internal state, allocated by zalloc/zfree + char *msg; // error msg (unused) + struct mz_internal_state *state; // internal state, allocated by zalloc/zfree - mz_alloc_func zalloc; // optional heap allocation function (defaults to malloc) - mz_free_func zfree; // optional heap free function (defaults to free) - void *opaque; // heap alloc function user pointer + mz_alloc_func + zalloc; // optional heap allocation function (defaults to malloc) + mz_free_func zfree; // optional heap free function (defaults to free) + void *opaque; // heap alloc function user pointer - int data_type; // data_type (unused) - mz_ulong adler; // adler32 of the source or uncompressed data - mz_ulong reserved; // not used + int data_type; // data_type (unused) + mz_ulong adler; // adler32 of the source or uncompressed data + mz_ulong reserved; // not used } mz_stream; typedef mz_stream *mz_streamp; @@ -314,8 +443,10 @@ const char *mz_version(void); // Parameters: // pStream must point to an initialized mz_stream struct. // level must be between [MZ_NO_COMPRESSION, MZ_BEST_COMPRESSION]. -// level 1 enables a specially optimized compression function that's been optimized purely for performance, not ratio. -// (This special func. is currently only enabled when MINIZ_USE_UNALIGNED_LOADS_AND_STORES and MINIZ_LITTLE_ENDIAN are defined.) +// level 1 enables a specially optimized compression function that's been +// optimized purely for performance, not ratio. (This special func. is +// currently only enabled when MINIZ_USE_UNALIGNED_LOADS_AND_STORES and +// MINIZ_LITTLE_ENDIAN are defined.) // Return values: // MZ_OK on success. // MZ_STREAM_ERROR if the stream is bogus. @@ -326,23 +457,32 @@ int mz_deflateInit(mz_streamp pStream, int level); // mz_deflateInit2() is like mz_deflate(), except with more control: // Additional parameters: // method must be MZ_DEFLATED -// window_bits must be MZ_DEFAULT_WINDOW_BITS (to wrap the deflate stream with zlib header/adler-32 footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate/no header or footer) -// mem_level must be between [1, 9] (it's checked but ignored by miniz.c) -int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy); +// window_bits must be MZ_DEFAULT_WINDOW_BITS (to wrap the deflate stream with +// zlib header/adler-32 footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate/no +// header or footer) mem_level must be between [1, 9] (it's checked but +// ignored by miniz.c) +int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, + int mem_level, int strategy); -// Quickly resets a compressor without having to reallocate anything. Same as calling mz_deflateEnd() followed by mz_deflateInit()/mz_deflateInit2(). +// Quickly resets a compressor without having to reallocate anything. Same as +// calling mz_deflateEnd() followed by mz_deflateInit()/mz_deflateInit2(). int mz_deflateReset(mz_streamp pStream); -// mz_deflate() compresses the input to output, consuming as much of the input and producing as much output as possible. -// Parameters: -// pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members. -// flush may be MZ_NO_FLUSH, MZ_PARTIAL_FLUSH/MZ_SYNC_FLUSH, MZ_FULL_FLUSH, or MZ_FINISH. +// mz_deflate() compresses the input to output, consuming as much of the input +// and producing as much output as possible. Parameters: +// pStream is the stream to read from and write to. You must initialize/update +// the next_in, avail_in, next_out, and avail_out members. flush may be +// MZ_NO_FLUSH, MZ_PARTIAL_FLUSH/MZ_SYNC_FLUSH, MZ_FULL_FLUSH, or MZ_FINISH. // Return values: -// MZ_OK on success (when flushing, or if more input is needed but not available, and/or there's more output to be written but the output buffer is full). -// MZ_STREAM_END if all input has been consumed and all output bytes have been written. Don't call mz_deflate() on the stream anymore. +// MZ_OK on success (when flushing, or if more input is needed but not +// available, and/or there's more output to be written but the output buffer +// is full). MZ_STREAM_END if all input has been consumed and all output bytes +// have been written. Don't call mz_deflate() on the stream anymore. // MZ_STREAM_ERROR if the stream is bogus. // MZ_PARAM_ERROR if one of the parameters is invalid. -// MZ_BUF_ERROR if no forward progress is possible because the input and/or output buffers are empty. (Fill up the input buffer or free up some output space and try again.) +// MZ_BUF_ERROR if no forward progress is possible because the input and/or +// output buffers are empty. (Fill up the input buffer or free up some output +// space and try again.) int mz_deflate(mz_streamp pStream, int flush); // mz_deflateEnd() deinitializes a compressor: @@ -351,123 +491,145 @@ int mz_deflate(mz_streamp pStream, int flush); // MZ_STREAM_ERROR if the stream is bogus. int mz_deflateEnd(mz_streamp pStream); -// mz_deflateBound() returns a (very) conservative upper bound on the amount of data that could be generated by deflate(), assuming flush is set to only MZ_NO_FLUSH or MZ_FINISH. +// mz_deflateBound() returns a (very) conservative upper bound on the amount of +// data that could be generated by deflate(), assuming flush is set to only +// MZ_NO_FLUSH or MZ_FINISH. mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len); // Single-call compression functions mz_compress() and mz_compress2(): -// Returns MZ_OK on success, or one of the error codes from mz_deflate() on failure. -int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len); -int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level); +// Returns MZ_OK on success, or one of the error codes from mz_deflate() on +// failure. +int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, + const unsigned char *pSource, mz_ulong source_len); +int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, + const unsigned char *pSource, mz_ulong source_len, int level); -// mz_compressBound() returns a (very) conservative upper bound on the amount of data that could be generated by calling mz_compress(). +// mz_compressBound() returns a (very) conservative upper bound on the amount of +// data that could be generated by calling mz_compress(). mz_ulong mz_compressBound(mz_ulong source_len); // Initializes a decompressor. int mz_inflateInit(mz_streamp pStream); -// mz_inflateInit2() is like mz_inflateInit() with an additional option that controls the window size and whether or not the stream has been wrapped with a zlib header/footer: -// window_bits must be MZ_DEFAULT_WINDOW_BITS (to parse zlib header/footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate). +// mz_inflateInit2() is like mz_inflateInit() with an additional option that +// controls the window size and whether or not the stream has been wrapped with +// a zlib header/footer: window_bits must be MZ_DEFAULT_WINDOW_BITS (to parse +// zlib header/footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate). int mz_inflateInit2(mz_streamp pStream, int window_bits); -// Decompresses the input stream to the output, consuming only as much of the input as needed, and writing as much to the output as possible. -// Parameters: -// pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members. -// flush may be MZ_NO_FLUSH, MZ_SYNC_FLUSH, or MZ_FINISH. -// On the first call, if flush is MZ_FINISH it's assumed the input and output buffers are both sized large enough to decompress the entire stream in a single call (this is slightly faster). -// MZ_FINISH implies that there are no more source bytes available beside what's already in the input buffer, and that the output buffer is large enough to hold the rest of the decompressed data. +// Decompresses the input stream to the output, consuming only as much of the +// input as needed, and writing as much to the output as possible. Parameters: +// pStream is the stream to read from and write to. You must initialize/update +// the next_in, avail_in, next_out, and avail_out members. flush may be +// MZ_NO_FLUSH, MZ_SYNC_FLUSH, or MZ_FINISH. On the first call, if flush is +// MZ_FINISH it's assumed the input and output buffers are both sized large +// enough to decompress the entire stream in a single call (this is slightly +// faster). MZ_FINISH implies that there are no more source bytes available +// beside what's already in the input buffer, and that the output buffer is +// large enough to hold the rest of the decompressed data. // Return values: -// MZ_OK on success. Either more input is needed but not available, and/or there's more output to be written but the output buffer is full. -// MZ_STREAM_END if all needed input has been consumed and all output bytes have been written. For zlib streams, the adler-32 of the decompressed data has also been verified. -// MZ_STREAM_ERROR if the stream is bogus. +// MZ_OK on success. Either more input is needed but not available, and/or +// there's more output to be written but the output buffer is full. +// MZ_STREAM_END if all needed input has been consumed and all output bytes +// have been written. For zlib streams, the adler-32 of the decompressed data +// has also been verified. MZ_STREAM_ERROR if the stream is bogus. // MZ_DATA_ERROR if the deflate stream is invalid. // MZ_PARAM_ERROR if one of the parameters is invalid. -// MZ_BUF_ERROR if no forward progress is possible because the input buffer is empty but the inflater needs more input to continue, or if the output buffer is not large enough. Call mz_inflate() again -// with more input data, or with more room in the output buffer (except when using single call decompression, described above). +// MZ_BUF_ERROR if no forward progress is possible because the input buffer is +// empty but the inflater needs more input to continue, or if the output +// buffer is not large enough. Call mz_inflate() again with more input data, +// or with more room in the output buffer (except when using single call +// decompression, described above). int mz_inflate(mz_streamp pStream, int flush); // Deinitializes a decompressor. int mz_inflateEnd(mz_streamp pStream); // Single-call decompression. -// Returns MZ_OK on success, or one of the error codes from mz_inflate() on failure. -int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len); +// Returns MZ_OK on success, or one of the error codes from mz_inflate() on +// failure. +int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, + const unsigned char *pSource, mz_ulong source_len); -// Returns a string description of the specified error code, or NULL if the error code is invalid. +// Returns a string description of the specified error code, or NULL if the +// error code is invalid. const char *mz_error(int err); -// Redefine zlib-compatible names to miniz equivalents, so miniz.c can be used as a drop-in replacement for the subset of zlib that miniz.c supports. -// Define MINIZ_NO_ZLIB_COMPATIBLE_NAMES to disable zlib-compatibility if you use zlib in the same project. +// Redefine zlib-compatible names to miniz equivalents, so miniz.c can be used +// as a drop-in replacement for the subset of zlib that miniz.c supports. Define +// MINIZ_NO_ZLIB_COMPATIBLE_NAMES to disable zlib-compatibility if you use zlib +// in the same project. #ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES - typedef unsigned char Byte; - typedef unsigned int uInt; - typedef mz_ulong uLong; - typedef Byte Bytef; - typedef uInt uIntf; - typedef char charf; - typedef int intf; - typedef void *voidpf; - typedef uLong uLongf; - typedef void *voidp; - typedef void *const voidpc; - #define Z_NULL 0 - #define Z_NO_FLUSH MZ_NO_FLUSH - #define Z_PARTIAL_FLUSH MZ_PARTIAL_FLUSH - #define Z_SYNC_FLUSH MZ_SYNC_FLUSH - #define Z_FULL_FLUSH MZ_FULL_FLUSH - #define Z_FINISH MZ_FINISH - #define Z_BLOCK MZ_BLOCK - #define Z_OK MZ_OK - #define Z_STREAM_END MZ_STREAM_END - #define Z_NEED_DICT MZ_NEED_DICT - #define Z_ERRNO MZ_ERRNO - #define Z_STREAM_ERROR MZ_STREAM_ERROR - #define Z_DATA_ERROR MZ_DATA_ERROR - #define Z_MEM_ERROR MZ_MEM_ERROR - #define Z_BUF_ERROR MZ_BUF_ERROR - #define Z_VERSION_ERROR MZ_VERSION_ERROR - #define Z_PARAM_ERROR MZ_PARAM_ERROR - #define Z_NO_COMPRESSION MZ_NO_COMPRESSION - #define Z_BEST_SPEED MZ_BEST_SPEED - #define Z_BEST_COMPRESSION MZ_BEST_COMPRESSION - #define Z_DEFAULT_COMPRESSION MZ_DEFAULT_COMPRESSION - #define Z_DEFAULT_STRATEGY MZ_DEFAULT_STRATEGY - #define Z_FILTERED MZ_FILTERED - #define Z_HUFFMAN_ONLY MZ_HUFFMAN_ONLY - #define Z_RLE MZ_RLE - #define Z_FIXED MZ_FIXED - #define Z_DEFLATED MZ_DEFLATED - #define Z_DEFAULT_WINDOW_BITS MZ_DEFAULT_WINDOW_BITS - #define alloc_func mz_alloc_func - #define free_func mz_free_func - #define internal_state mz_internal_state - #define z_stream mz_stream - #define deflateInit mz_deflateInit - #define deflateInit2 mz_deflateInit2 - #define deflateReset mz_deflateReset - #define deflate mz_deflate - #define deflateEnd mz_deflateEnd - #define deflateBound mz_deflateBound - #define compress mz_compress - #define compress2 mz_compress2 - #define compressBound mz_compressBound - #define inflateInit mz_inflateInit - #define inflateInit2 mz_inflateInit2 - #define inflate mz_inflate - #define inflateEnd mz_inflateEnd - #define uncompress mz_uncompress - #define crc32 mz_crc32 - #define adler32 mz_adler32 - #define MAX_WBITS 15 - #define MAX_MEM_LEVEL 9 - #define zError mz_error - #define ZLIB_VERSION MZ_VERSION - #define ZLIB_VERNUM MZ_VERNUM - #define ZLIB_VER_MAJOR MZ_VER_MAJOR - #define ZLIB_VER_MINOR MZ_VER_MINOR - #define ZLIB_VER_REVISION MZ_VER_REVISION - #define ZLIB_VER_SUBREVISION MZ_VER_SUBREVISION - #define zlibVersion mz_version - #define zlib_version mz_version() +typedef unsigned char Byte; +typedef unsigned int uInt; +typedef mz_ulong uLong; +typedef Byte Bytef; +typedef uInt uIntf; +typedef char charf; +typedef int intf; +typedef void *voidpf; +typedef uLong uLongf; +typedef void *voidp; +typedef void *const voidpc; +#define Z_NULL 0 +#define Z_NO_FLUSH MZ_NO_FLUSH +#define Z_PARTIAL_FLUSH MZ_PARTIAL_FLUSH +#define Z_SYNC_FLUSH MZ_SYNC_FLUSH +#define Z_FULL_FLUSH MZ_FULL_FLUSH +#define Z_FINISH MZ_FINISH +#define Z_BLOCK MZ_BLOCK +#define Z_OK MZ_OK +#define Z_STREAM_END MZ_STREAM_END +#define Z_NEED_DICT MZ_NEED_DICT +#define Z_ERRNO MZ_ERRNO +#define Z_STREAM_ERROR MZ_STREAM_ERROR +#define Z_DATA_ERROR MZ_DATA_ERROR +#define Z_MEM_ERROR MZ_MEM_ERROR +#define Z_BUF_ERROR MZ_BUF_ERROR +#define Z_VERSION_ERROR MZ_VERSION_ERROR +#define Z_PARAM_ERROR MZ_PARAM_ERROR +#define Z_NO_COMPRESSION MZ_NO_COMPRESSION +#define Z_BEST_SPEED MZ_BEST_SPEED +#define Z_BEST_COMPRESSION MZ_BEST_COMPRESSION +#define Z_DEFAULT_COMPRESSION MZ_DEFAULT_COMPRESSION +#define Z_DEFAULT_STRATEGY MZ_DEFAULT_STRATEGY +#define Z_FILTERED MZ_FILTERED +#define Z_HUFFMAN_ONLY MZ_HUFFMAN_ONLY +#define Z_RLE MZ_RLE +#define Z_FIXED MZ_FIXED +#define Z_DEFLATED MZ_DEFLATED +#define Z_DEFAULT_WINDOW_BITS MZ_DEFAULT_WINDOW_BITS +#define alloc_func mz_alloc_func +#define free_func mz_free_func +#define internal_state mz_internal_state +#define z_stream mz_stream +#define deflateInit mz_deflateInit +#define deflateInit2 mz_deflateInit2 +#define deflateReset mz_deflateReset +#define deflate mz_deflate +#define deflateEnd mz_deflateEnd +#define deflateBound mz_deflateBound +#define compress mz_compress +#define compress2 mz_compress2 +#define compressBound mz_compressBound +#define inflateInit mz_inflateInit +#define inflateInit2 mz_inflateInit2 +#define inflate mz_inflate +#define inflateEnd mz_inflateEnd +#define uncompress mz_uncompress +#define crc32 mz_crc32 +#define adler32 mz_adler32 +#define MAX_WBITS 15 +#define MAX_MEM_LEVEL 9 +#define zError mz_error +#define ZLIB_VERSION MZ_VERSION +#define ZLIB_VERNUM MZ_VERNUM +#define ZLIB_VER_MAJOR MZ_VER_MAJOR +#define ZLIB_VER_MINOR MZ_VER_MINOR +#define ZLIB_VER_REVISION MZ_VER_REVISION +#define ZLIB_VER_SUBREVISION MZ_VER_SUBREVISION +#define zlibVersion mz_version +#define zlib_version mz_version() #endif // #ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES #endif // MINIZ_NO_ZLIB_APIS @@ -486,26 +648,25 @@ typedef int mz_bool; #define MZ_FALSE (0) #define MZ_TRUE (1) -// An attempt to work around MSVC's spammy "warning C4127: conditional expression is constant" message. +// An attempt to work around MSVC's spammy "warning C4127: conditional +// expression is constant" message. #ifdef _MSC_VER - #define MZ_MACRO_END while (0, 0) +#define MZ_MACRO_END while (0, 0) #else - #define MZ_MACRO_END while (0) +#define MZ_MACRO_END while (0) #endif // ------------------- ZIP archive reading/writing #ifndef MINIZ_NO_ARCHIVE_APIS -enum -{ - MZ_ZIP_MAX_IO_BUF_SIZE = 64*1024, +enum { + MZ_ZIP_MAX_IO_BUF_SIZE = 64 * 1024, MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE = 260, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE = 256 }; -typedef struct -{ +typedef struct { mz_uint32 m_file_index; mz_uint32 m_central_dir_ofs; mz_uint16 m_version_made_by; @@ -526,22 +687,22 @@ typedef struct char m_comment[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE]; } mz_zip_archive_file_stat; -typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n); -typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n); +typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, + void *pBuf, size_t n); +typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, + const void *pBuf, size_t n); struct mz_zip_internal_state_tag; typedef struct mz_zip_internal_state_tag mz_zip_internal_state; -typedef enum -{ +typedef enum { MZ_ZIP_MODE_INVALID = 0, MZ_ZIP_MODE_READING = 1, MZ_ZIP_MODE_WRITING = 2, MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3 } mz_zip_mode; -typedef struct mz_zip_archive_tag -{ +typedef struct mz_zip_archive_tag { mz_uint64 m_archive_size; mz_uint64 m_central_directory_file_ofs; mz_uint m_total_files; @@ -562,11 +723,10 @@ typedef struct mz_zip_archive_tag } mz_zip_archive; -typedef enum -{ - MZ_ZIP_FLAG_CASE_SENSITIVE = 0x0100, - MZ_ZIP_FLAG_IGNORE_PATH = 0x0200, - MZ_ZIP_FLAG_COMPRESSED_DATA = 0x0400, +typedef enum { + MZ_ZIP_FLAG_CASE_SENSITIVE = 0x0100, + MZ_ZIP_FLAG_IGNORE_PATH = 0x0200, + MZ_ZIP_FLAG_COMPRESSED_DATA = 0x0400, MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY = 0x0800 } mz_zip_flags; @@ -574,56 +734,91 @@ typedef enum // Inits a ZIP archive reader. // These functions read and validate the archive's central directory. -mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint32 flags); -mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint32 flags); +mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, + mz_uint32 flags); +mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, + size_t size, mz_uint32 flags); #ifndef MINIZ_NO_STDIO -mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags); +mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, + mz_uint32 flags); #endif // Returns the total number of files in the archive. mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip); // Returns detailed information about an archive file entry. -mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat); +mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, + mz_zip_archive_file_stat *pStat); // Determines if an archive file entry is a directory entry. -mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index); -mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index); +mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, + mz_uint file_index); +mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, + mz_uint file_index); // Retrieves the filename of an archive file entry. -// Returns the number of bytes written to pFilename, or if filename_buf_size is 0 this function returns the number of bytes needed to fully store the filename. -mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size); +// Returns the number of bytes written to pFilename, or if filename_buf_size is +// 0 this function returns the number of bytes needed to fully store the +// filename. +mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, + char *pFilename, mz_uint filename_buf_size); // Attempts to locates a file in the archive's central directory. // Valid flags: MZ_ZIP_FLAG_CASE_SENSITIVE, MZ_ZIP_FLAG_IGNORE_PATH // Returns -1 if the file cannot be found. -int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags); +int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, + const char *pComment, mz_uint flags); // Extracts a archive file to a memory buffer using no memory allocation. -mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size); -mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size); +mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, + mz_uint file_index, void *pBuf, + size_t buf_size, mz_uint flags, + void *pUser_read_buf, + size_t user_read_buf_size); +mz_bool mz_zip_reader_extract_file_to_mem_no_alloc( + mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, + mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size); // Extracts a archive file to a memory buffer. -mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags); +mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, + void *pBuf, size_t buf_size, + mz_uint flags); +mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, + const char *pFilename, void *pBuf, + size_t buf_size, mz_uint flags); // Extracts a archive file to a dynamically allocated heap buffer. -void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags); -void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags); +void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, + size_t *pSize, mz_uint flags); +void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, + const char *pFilename, size_t *pSize, + mz_uint flags); // Extracts a archive file using a callback function to output the file's data. -mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags); +mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, + mz_uint file_index, + mz_file_write_func pCallback, + void *pOpaque, mz_uint flags); +mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, + const char *pFilename, + mz_file_write_func pCallback, + void *pOpaque, mz_uint flags); #ifndef MINIZ_NO_STDIO -// Extracts a archive file to a disk file and sets its last accessed and modified times. -// This function only extracts files, not archive directory records. -mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags); +// Extracts a archive file to a disk file and sets its last accessed and +// modified times. This function only extracts files, not archive directory +// records. +mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, + const char *pDst_filename, mz_uint flags); +mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, + const char *pArchive_filename, + const char *pDst_filename, + mz_uint flags); #endif -// Ends archive reading, freeing all allocations, and closing the input archive file if mz_zip_reader_init_file() was used. +// Ends archive reading, freeing all allocations, and closing the input archive +// file if mz_zip_reader_init_file() was used. mz_bool mz_zip_reader_end(mz_zip_archive *pZip); // ZIP archive writing @@ -632,55 +827,93 @@ mz_bool mz_zip_reader_end(mz_zip_archive *pZip); // Inits a ZIP archive writer. mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size); -mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size); +mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, + size_t size_to_reserve_at_beginning, + size_t initial_allocation_size); #ifndef MINIZ_NO_STDIO -mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning); +mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, + mz_uint64 size_to_reserve_at_beginning); #endif -// Converts a ZIP archive reader object into a writer object, to allow efficient in-place file appends to occur on an existing archive. -// For archives opened using mz_zip_reader_init_file, pFilename must be the archive's filename so it can be reopened for writing. If the file can't be reopened, mz_zip_reader_end() will be called. -// For archives opened using mz_zip_reader_init_mem, the memory block must be growable using the realloc callback (which defaults to realloc unless you've overridden it). -// Finally, for archives opened using mz_zip_reader_init, the mz_zip_archive's user provided m_pWrite function cannot be NULL. -// Note: In-place archive modification is not recommended unless you know what you're doing, because if execution stops or something goes wrong before -// the archive is finalized the file's central directory will be hosed. -mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename); +// Converts a ZIP archive reader object into a writer object, to allow efficient +// in-place file appends to occur on an existing archive. For archives opened +// using mz_zip_reader_init_file, pFilename must be the archive's filename so it +// can be reopened for writing. If the file can't be reopened, +// mz_zip_reader_end() will be called. For archives opened using +// mz_zip_reader_init_mem, the memory block must be growable using the realloc +// callback (which defaults to realloc unless you've overridden it). Finally, +// for archives opened using mz_zip_reader_init, the mz_zip_archive's user +// provided m_pWrite function cannot be NULL. Note: In-place archive +// modification is not recommended unless you know what you're doing, because if +// execution stops or something goes wrong before the archive is finalized the +// file's central directory will be hosed. +mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, + const char *pFilename); -// Adds the contents of a memory buffer to an archive. These functions record the current local time into the archive. -// To add a directory entry, call this method with an archive name ending in a forwardslash with empty buffer. -// level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. -mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags); -mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32); +// Adds the contents of a memory buffer to an archive. These functions record +// the current local time into the archive. To add a directory entry, call this +// method with an archive name ending in a forwardslash with empty buffer. +// level_and_flags - compression level (0-10, see MZ_BEST_SPEED, +// MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or +// just set to MZ_DEFAULT_COMPRESSION. +mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, + const void *pBuf, size_t buf_size, + mz_uint level_and_flags); +mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, + const char *pArchive_name, const void *pBuf, + size_t buf_size, const void *pComment, + mz_uint16 comment_size, + mz_uint level_and_flags, mz_uint64 uncomp_size, + mz_uint32 uncomp_crc32); #ifndef MINIZ_NO_STDIO -// Adds the contents of a disk file to an archive. This function also records the disk file's modified time into the archive. -// level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. -mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); +// Adds the contents of a disk file to an archive. This function also records +// the disk file's modified time into the archive. level_and_flags - compression +// level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd +// with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. +mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, + const char *pSrc_filename, const void *pComment, + mz_uint16 comment_size, mz_uint level_and_flags, + mz_uint32 ext_attributes); #endif // Adds a file to an archive by fully cloning the data from another archive. -// This function fully clones the source file's compressed data (no recompression), along with its full filename, extra data, and comment fields. -mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint file_index); +// This function fully clones the source file's compressed data (no +// recompression), along with its full filename, extra data, and comment fields. +mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, + mz_zip_archive *pSource_zip, + mz_uint file_index); -// Finalizes the archive by writing the central directory records followed by the end of central directory record. -// After an archive is finalized, the only valid call on the mz_zip_archive struct is mz_zip_writer_end(). -// An archive must be manually finalized by calling this function for it to be valid. +// Finalizes the archive by writing the central directory records followed by +// the end of central directory record. After an archive is finalized, the only +// valid call on the mz_zip_archive struct is mz_zip_writer_end(). An archive +// must be manually finalized by calling this function for it to be valid. mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip); -mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **pBuf, size_t *pSize); +mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **pBuf, + size_t *pSize); -// Ends archive writing, freeing all allocations, and closing the output file if mz_zip_writer_init_file() was used. -// Note for the archive to be valid, it must have been finalized before ending. +// Ends archive writing, freeing all allocations, and closing the output file if +// mz_zip_writer_init_file() was used. Note for the archive to be valid, it must +// have been finalized before ending. mz_bool mz_zip_writer_end(mz_zip_archive *pZip); // Misc. high-level helper functions: -// mz_zip_add_mem_to_archive_file_in_place() efficiently (but not atomically) appends a memory blob to a ZIP archive. -// level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. -mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); +// mz_zip_add_mem_to_archive_file_in_place() efficiently (but not atomically) +// appends a memory blob to a ZIP archive. level_and_flags - compression level +// (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero +// or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. +mz_bool mz_zip_add_mem_to_archive_file_in_place( + const char *pZip_filename, const char *pArchive_name, const void *pBuf, + size_t buf_size, const void *pComment, mz_uint16 comment_size, + mz_uint level_and_flags); // Reads a single file from an archive into a heap block. // Returns NULL on failure. -void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint zip_flags); +void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, + const char *pArchive_name, + size_t *pSize, mz_uint zip_flags); #endif // #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS @@ -689,12 +922,17 @@ void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char // ------------------- Low-level Decompression API Definitions // Decompression flags used by tinfl_decompress(). -// TINFL_FLAG_PARSE_ZLIB_HEADER: If set, the input has a valid zlib header and ends with an adler32 checksum (it's a valid zlib stream). Otherwise, the input is a raw deflate stream. -// TINFL_FLAG_HAS_MORE_INPUT: If set, there are more input bytes available beyond the end of the supplied input buffer. If clear, the input buffer contains all remaining input. -// TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF: If set, the output buffer is large enough to hold the entire decompressed stream. If clear, the output buffer is at least the size of the dictionary (typically 32KB). -// TINFL_FLAG_COMPUTE_ADLER32: Force adler-32 checksum computation of the decompressed bytes. -enum -{ +// TINFL_FLAG_PARSE_ZLIB_HEADER: If set, the input has a valid zlib header and +// ends with an adler32 checksum (it's a valid zlib stream). Otherwise, the +// input is a raw deflate stream. TINFL_FLAG_HAS_MORE_INPUT: If set, there are +// more input bytes available beyond the end of the supplied input buffer. If +// clear, the input buffer contains all remaining input. +// TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF: If set, the output buffer is large +// enough to hold the entire decompressed stream. If clear, the output buffer is +// at least the size of the dictionary (typically 32KB). +// TINFL_FLAG_COMPUTE_ADLER32: Force adler-32 checksum computation of the +// decompressed bytes. +enum { TINFL_FLAG_PARSE_ZLIB_HEADER = 1, TINFL_FLAG_HAS_MORE_INPUT = 2, TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF = 4, @@ -702,33 +940,42 @@ enum }; // High level decompression functions: -// tinfl_decompress_mem_to_heap() decompresses a block in memory to a heap block allocated via malloc(). -// On entry: -// pSrc_buf, src_buf_len: Pointer and size of the Deflate or zlib source data to decompress. +// tinfl_decompress_mem_to_heap() decompresses a block in memory to a heap block +// allocated via malloc(). On entry: +// pSrc_buf, src_buf_len: Pointer and size of the Deflate or zlib source data +// to decompress. // On return: // Function returns a pointer to the decompressed data, or NULL on failure. -// *pOut_len will be set to the decompressed data's size, which could be larger than src_buf_len on uncompressible data. -// The caller must call mz_free() on the returned block when it's no longer needed. -void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags); +// *pOut_len will be set to the decompressed data's size, which could be larger +// than src_buf_len on uncompressible data. The caller must call mz_free() on +// the returned block when it's no longer needed. +void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, + size_t *pOut_len, int flags); -// tinfl_decompress_mem_to_mem() decompresses a block in memory to another block in memory. -// Returns TINFL_DECOMPRESS_MEM_TO_MEM_FAILED on failure, or the number of bytes written on success. +// tinfl_decompress_mem_to_mem() decompresses a block in memory to another block +// in memory. Returns TINFL_DECOMPRESS_MEM_TO_MEM_FAILED on failure, or the +// number of bytes written on success. #define TINFL_DECOMPRESS_MEM_TO_MEM_FAILED ((size_t)(-1)) -size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags); +size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, + const void *pSrc_buf, size_t src_buf_len, + int flags); -// tinfl_decompress_mem_to_callback() decompresses a block in memory to an internal 32KB buffer, and a user provided callback function will be called to flush the buffer. -// Returns 1 on success or 0 on failure. -typedef int (*tinfl_put_buf_func_ptr)(const void* pBuf, int len, void *pUser); -int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags); +// tinfl_decompress_mem_to_callback() decompresses a block in memory to an +// internal 32KB buffer, and a user provided callback function will be called to +// flush the buffer. Returns 1 on success or 0 on failure. +typedef int (*tinfl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser); +int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, + tinfl_put_buf_func_ptr pPut_buf_func, + void *pPut_buf_user, int flags); -struct tinfl_decompressor_tag; typedef struct tinfl_decompressor_tag tinfl_decompressor; +struct tinfl_decompressor_tag; +typedef struct tinfl_decompressor_tag tinfl_decompressor; // Max size of LZ dictionary. #define TINFL_LZ_DICT_SIZE 32768 // Return status. -typedef enum -{ +typedef enum { TINFL_STATUS_BAD_PARAM = -3, TINFL_STATUS_ADLER32_MISMATCH = -2, TINFL_STATUS_FAILED = -1, @@ -738,126 +985,196 @@ typedef enum } tinfl_status; // Initializes the decompressor to its initial state. -#define tinfl_init(r) do { (r)->m_state = 0; } MZ_MACRO_END +#define tinfl_init(r) \ + do { \ + (r)->m_state = 0; \ + } \ + MZ_MACRO_END #define tinfl_get_adler32(r) (r)->m_check_adler32 -// Main low-level decompressor coroutine function. This is the only function actually needed for decompression. All the other functions are just high-level helpers for improved usability. -// This is a universal API, i.e. it can be used as a building block to build any desired higher level decompression API. In the limit case, it can be called once per every byte input or output. -tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags); +// Main low-level decompressor coroutine function. This is the only function +// actually needed for decompression. All the other functions are just +// high-level helpers for improved usability. This is a universal API, i.e. it +// can be used as a building block to build any desired higher level +// decompression API. In the limit case, it can be called once per every byte +// input or output. +tinfl_status tinfl_decompress(tinfl_decompressor *r, + const mz_uint8 *pIn_buf_next, + size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, + mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, + const mz_uint32 decomp_flags); // Internal/private bits follow. -enum -{ - TINFL_MAX_HUFF_TABLES = 3, TINFL_MAX_HUFF_SYMBOLS_0 = 288, TINFL_MAX_HUFF_SYMBOLS_1 = 32, TINFL_MAX_HUFF_SYMBOLS_2 = 19, - TINFL_FAST_LOOKUP_BITS = 10, TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS +enum { + TINFL_MAX_HUFF_TABLES = 3, + TINFL_MAX_HUFF_SYMBOLS_0 = 288, + TINFL_MAX_HUFF_SYMBOLS_1 = 32, + TINFL_MAX_HUFF_SYMBOLS_2 = 19, + TINFL_FAST_LOOKUP_BITS = 10, + TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS }; -typedef struct -{ +typedef struct { mz_uint8 m_code_size[TINFL_MAX_HUFF_SYMBOLS_0]; - mz_int16 m_look_up[TINFL_FAST_LOOKUP_SIZE], m_tree[TINFL_MAX_HUFF_SYMBOLS_0 * 2]; + mz_int16 m_look_up[TINFL_FAST_LOOKUP_SIZE], + m_tree[TINFL_MAX_HUFF_SYMBOLS_0 * 2]; } tinfl_huff_table; #if MINIZ_HAS_64BIT_REGISTERS - #define TINFL_USE_64BIT_BITBUF 1 +#define TINFL_USE_64BIT_BITBUF 1 #endif #if TINFL_USE_64BIT_BITBUF - typedef mz_uint64 tinfl_bit_buf_t; - #define TINFL_BITBUF_SIZE (64) +typedef mz_uint64 tinfl_bit_buf_t; +#define TINFL_BITBUF_SIZE (64) #else - typedef mz_uint32 tinfl_bit_buf_t; - #define TINFL_BITBUF_SIZE (32) +typedef mz_uint32 tinfl_bit_buf_t; +#define TINFL_BITBUF_SIZE (32) #endif -struct tinfl_decompressor_tag -{ - mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, m_check_adler32, m_dist, m_counter, m_num_extra, m_table_sizes[TINFL_MAX_HUFF_TABLES]; +struct tinfl_decompressor_tag { + mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, + m_check_adler32, m_dist, m_counter, m_num_extra, + m_table_sizes[TINFL_MAX_HUFF_TABLES]; tinfl_bit_buf_t m_bit_buf; size_t m_dist_from_out_buf_start; tinfl_huff_table m_tables[TINFL_MAX_HUFF_TABLES]; - mz_uint8 m_raw_header[4], m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137]; + mz_uint8 m_raw_header[4], + m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137]; }; // ------------------- Low-level Compression API Definitions -// Set TDEFL_LESS_MEMORY to 1 to use less memory (compression will be slightly slower, and raw/dynamic blocks will be output more frequently). +// Set TDEFL_LESS_MEMORY to 1 to use less memory (compression will be slightly +// slower, and raw/dynamic blocks will be output more frequently). #define TDEFL_LESS_MEMORY 0 -// tdefl_init() compression flags logically OR'd together (low 12 bits contain the max. number of probes per dictionary search): -// TDEFL_DEFAULT_MAX_PROBES: The compressor defaults to 128 dictionary probes per dictionary search. 0=Huffman only, 1=Huffman+LZ (fastest/crap compression), 4095=Huffman+LZ (slowest/best compression). -enum -{ - TDEFL_HUFFMAN_ONLY = 0, TDEFL_DEFAULT_MAX_PROBES = 128, TDEFL_MAX_PROBES_MASK = 0xFFF +// tdefl_init() compression flags logically OR'd together (low 12 bits contain +// the max. number of probes per dictionary search): TDEFL_DEFAULT_MAX_PROBES: +// The compressor defaults to 128 dictionary probes per dictionary search. +// 0=Huffman only, 1=Huffman+LZ (fastest/crap compression), 4095=Huffman+LZ +// (slowest/best compression). +enum { + TDEFL_HUFFMAN_ONLY = 0, + TDEFL_DEFAULT_MAX_PROBES = 128, + TDEFL_MAX_PROBES_MASK = 0xFFF }; -// TDEFL_WRITE_ZLIB_HEADER: If set, the compressor outputs a zlib header before the deflate data, and the Adler-32 of the source data at the end. Otherwise, you'll get raw deflate data. -// TDEFL_COMPUTE_ADLER32: Always compute the adler-32 of the input data (even when not writing zlib headers). -// TDEFL_GREEDY_PARSING_FLAG: Set to use faster greedy parsing, instead of more efficient lazy parsing. -// TDEFL_NONDETERMINISTIC_PARSING_FLAG: Enable to decrease the compressor's initialization time to the minimum, but the output may vary from run to run given the same input (depending on the contents of memory). -// TDEFL_RLE_MATCHES: Only look for RLE matches (matches with a distance of 1) -// TDEFL_FILTER_MATCHES: Discards matches <= 5 chars if enabled. +// TDEFL_WRITE_ZLIB_HEADER: If set, the compressor outputs a zlib header before +// the deflate data, and the Adler-32 of the source data at the end. Otherwise, +// you'll get raw deflate data. TDEFL_COMPUTE_ADLER32: Always compute the +// adler-32 of the input data (even when not writing zlib headers). +// TDEFL_GREEDY_PARSING_FLAG: Set to use faster greedy parsing, instead of more +// efficient lazy parsing. TDEFL_NONDETERMINISTIC_PARSING_FLAG: Enable to +// decrease the compressor's initialization time to the minimum, but the output +// may vary from run to run given the same input (depending on the contents of +// memory). TDEFL_RLE_MATCHES: Only look for RLE matches (matches with a +// distance of 1) TDEFL_FILTER_MATCHES: Discards matches <= 5 chars if enabled. // TDEFL_FORCE_ALL_STATIC_BLOCKS: Disable usage of optimized Huffman tables. // TDEFL_FORCE_ALL_RAW_BLOCKS: Only use raw (uncompressed) deflate blocks. -// The low 12 bits are reserved to control the max # of hash probes per dictionary lookup (see TDEFL_MAX_PROBES_MASK). -enum -{ - TDEFL_WRITE_ZLIB_HEADER = 0x01000, - TDEFL_COMPUTE_ADLER32 = 0x02000, - TDEFL_GREEDY_PARSING_FLAG = 0x04000, +// The low 12 bits are reserved to control the max # of hash probes per +// dictionary lookup (see TDEFL_MAX_PROBES_MASK). +enum { + TDEFL_WRITE_ZLIB_HEADER = 0x01000, + TDEFL_COMPUTE_ADLER32 = 0x02000, + TDEFL_GREEDY_PARSING_FLAG = 0x04000, TDEFL_NONDETERMINISTIC_PARSING_FLAG = 0x08000, - TDEFL_RLE_MATCHES = 0x10000, - TDEFL_FILTER_MATCHES = 0x20000, - TDEFL_FORCE_ALL_STATIC_BLOCKS = 0x40000, - TDEFL_FORCE_ALL_RAW_BLOCKS = 0x80000 + TDEFL_RLE_MATCHES = 0x10000, + TDEFL_FILTER_MATCHES = 0x20000, + TDEFL_FORCE_ALL_STATIC_BLOCKS = 0x40000, + TDEFL_FORCE_ALL_RAW_BLOCKS = 0x80000 }; // High level compression functions: -// tdefl_compress_mem_to_heap() compresses a block in memory to a heap block allocated via malloc(). -// On entry: +// tdefl_compress_mem_to_heap() compresses a block in memory to a heap block +// allocated via malloc(). On entry: // pSrc_buf, src_buf_len: Pointer and size of source block to compress. -// flags: The max match finder probes (default is 128) logically OR'd against the above flags. Higher probes are slower but improve compression. +// flags: The max match finder probes (default is 128) logically OR'd against +// the above flags. Higher probes are slower but improve compression. // On return: // Function returns a pointer to the compressed data, or NULL on failure. -// *pOut_len will be set to the compressed data's size, which could be larger than src_buf_len on uncompressible data. -// The caller must free() the returned block when it's no longer needed. -void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags); +// *pOut_len will be set to the compressed data's size, which could be larger +// than src_buf_len on uncompressible data. The caller must free() the returned +// block when it's no longer needed. +void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, + size_t *pOut_len, int flags); -// tdefl_compress_mem_to_mem() compresses a block in memory to another block in memory. -// Returns 0 on failure. -size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags); +// tdefl_compress_mem_to_mem() compresses a block in memory to another block in +// memory. Returns 0 on failure. +size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, + const void *pSrc_buf, size_t src_buf_len, + int flags); // Compresses an image to a compressed PNG file in memory. // On entry: -// pImage, w, h, and num_chans describe the image to compress. num_chans may be 1, 2, 3, or 4. -// The image pitch in bytes per scanline will be w*num_chans. The leftmost pixel on the top scanline is stored first in memory. -// level may range from [0,10], use MZ_NO_COMPRESSION, MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc. or a decent default is MZ_DEFAULT_LEVEL -// If flip is true, the image will be flipped on the Y axis (useful for OpenGL apps). +// pImage, w, h, and num_chans describe the image to compress. num_chans may be +// 1, 2, 3, or 4. The image pitch in bytes per scanline will be w*num_chans. +// The leftmost pixel on the top scanline is stored first in memory. level may +// range from [0,10], use MZ_NO_COMPRESSION, MZ_BEST_SPEED, +// MZ_BEST_COMPRESSION, etc. or a decent default is MZ_DEFAULT_LEVEL If flip is +// true, the image will be flipped on the Y axis (useful for OpenGL apps). // On return: // Function returns a pointer to the compressed data, or NULL on failure. // *pLen_out will be set to the size of the PNG image file. -// The caller must mz_free() the returned heap block (which will typically be larger than *pLen_out) when it's no longer needed. -void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip); -void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out); +// The caller must mz_free() the returned heap block (which will typically be +// larger than *pLen_out) when it's no longer needed. +void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, + int h, int num_chans, + size_t *pLen_out, + mz_uint level, mz_bool flip); +void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, + int num_chans, size_t *pLen_out); -// Output stream interface. The compressor uses this interface to write compressed data. It'll typically be called TDEFL_OUT_BUF_SIZE at a time. -typedef mz_bool (*tdefl_put_buf_func_ptr)(const void* pBuf, int len, void *pUser); +// Output stream interface. The compressor uses this interface to write +// compressed data. It'll typically be called TDEFL_OUT_BUF_SIZE at a time. +typedef mz_bool (*tdefl_put_buf_func_ptr)(const void *pBuf, int len, + void *pUser); -// tdefl_compress_mem_to_output() compresses a block to an output stream. The above helpers use this function internally. -mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags); +// tdefl_compress_mem_to_output() compresses a block to an output stream. The +// above helpers use this function internally. +mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, + tdefl_put_buf_func_ptr pPut_buf_func, + void *pPut_buf_user, int flags); -enum { TDEFL_MAX_HUFF_TABLES = 3, TDEFL_MAX_HUFF_SYMBOLS_0 = 288, TDEFL_MAX_HUFF_SYMBOLS_1 = 32, TDEFL_MAX_HUFF_SYMBOLS_2 = 19, TDEFL_LZ_DICT_SIZE = 32768, TDEFL_LZ_DICT_SIZE_MASK = TDEFL_LZ_DICT_SIZE - 1, TDEFL_MIN_MATCH_LEN = 3, TDEFL_MAX_MATCH_LEN = 258 }; +enum { + TDEFL_MAX_HUFF_TABLES = 3, + TDEFL_MAX_HUFF_SYMBOLS_0 = 288, + TDEFL_MAX_HUFF_SYMBOLS_1 = 32, + TDEFL_MAX_HUFF_SYMBOLS_2 = 19, + TDEFL_LZ_DICT_SIZE = 32768, + TDEFL_LZ_DICT_SIZE_MASK = TDEFL_LZ_DICT_SIZE - 1, + TDEFL_MIN_MATCH_LEN = 3, + TDEFL_MAX_MATCH_LEN = 258 +}; -// TDEFL_OUT_BUF_SIZE MUST be large enough to hold a single entire compressed output block (using static/fixed Huffman codes). +// TDEFL_OUT_BUF_SIZE MUST be large enough to hold a single entire compressed +// output block (using static/fixed Huffman codes). #if TDEFL_LESS_MEMORY -enum { TDEFL_LZ_CODE_BUF_SIZE = 24 * 1024, TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13 ) / 10, TDEFL_MAX_HUFF_SYMBOLS = 288, TDEFL_LZ_HASH_BITS = 12, TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS }; +enum { + TDEFL_LZ_CODE_BUF_SIZE = 24 * 1024, + TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13) / 10, + TDEFL_MAX_HUFF_SYMBOLS = 288, + TDEFL_LZ_HASH_BITS = 12, + TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, + TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, + TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS +}; #else -enum { TDEFL_LZ_CODE_BUF_SIZE = 64 * 1024, TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13 ) / 10, TDEFL_MAX_HUFF_SYMBOLS = 288, TDEFL_LZ_HASH_BITS = 15, TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS }; +enum { + TDEFL_LZ_CODE_BUF_SIZE = 64 * 1024, + TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13) / 10, + TDEFL_MAX_HUFF_SYMBOLS = 288, + TDEFL_LZ_HASH_BITS = 15, + TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, + TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, + TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS +}; #endif -// The low-level tdefl functions below may be used directly if the above helper functions aren't flexible enough. The low-level functions don't make any heap allocations, unlike the above helper functions. -typedef enum -{ +// The low-level tdefl functions below may be used directly if the above helper +// functions aren't flexible enough. The low-level functions don't make any heap +// allocations, unlike the above helper functions. +typedef enum { TDEFL_STATUS_BAD_PARAM = -2, TDEFL_STATUS_PUT_BUF_FAILED = -1, TDEFL_STATUS_OKAY = 0, @@ -865,8 +1182,7 @@ typedef enum } tdefl_status; // Must map to MZ_NO_FLUSH, MZ_SYNC_FLUSH, etc. enums -typedef enum -{ +typedef enum { TDEFL_NO_FLUSH = 0, TDEFL_SYNC_FLUSH = 2, TDEFL_FULL_FLUSH = 3, @@ -874,16 +1190,18 @@ typedef enum } tdefl_flush; // tdefl's compression state structure. -typedef struct -{ +typedef struct { tdefl_put_buf_func_ptr m_pPut_buf_func; void *m_pPut_buf_user; mz_uint m_flags, m_max_probes[2]; int m_greedy_parsing; mz_uint m_adler32, m_lookahead_pos, m_lookahead_size, m_dict_size; mz_uint8 *m_pLZ_code_buf, *m_pLZ_flags, *m_pOutput_buf, *m_pOutput_buf_end; - mz_uint m_num_flags_left, m_total_lz_bytes, m_lz_code_buf_dict_pos, m_bits_in, m_bit_buffer; - mz_uint m_saved_match_dist, m_saved_match_len, m_saved_lit, m_output_flush_ofs, m_output_flush_remaining, m_finished, m_block_index, m_wants_to_finish; + mz_uint m_num_flags_left, m_total_lz_bytes, m_lz_code_buf_dict_pos, m_bits_in, + m_bit_buffer; + mz_uint m_saved_match_dist, m_saved_match_len, m_saved_lit, + m_output_flush_ofs, m_output_flush_remaining, m_finished, m_block_index, + m_wants_to_finish; tdefl_status m_prev_return_status; const void *m_pIn_buf; void *m_pOut_buf; @@ -902,29 +1220,42 @@ typedef struct } tdefl_compressor; // Initializes the compressor. -// There is no corresponding deinit() function because the tdefl API's do not dynamically allocate memory. -// pBut_buf_func: If NULL, output data will be supplied to the specified callback. In this case, the user should call the tdefl_compress_buffer() API for compression. -// If pBut_buf_func is NULL the user should always call the tdefl_compress() API. -// flags: See the above enums (TDEFL_HUFFMAN_ONLY, TDEFL_WRITE_ZLIB_HEADER, etc.) -tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags); +// There is no corresponding deinit() function because the tdefl API's do not +// dynamically allocate memory. pBut_buf_func: If NULL, output data will be +// supplied to the specified callback. In this case, the user should call the +// tdefl_compress_buffer() API for compression. If pBut_buf_func is NULL the +// user should always call the tdefl_compress() API. flags: See the above enums +// (TDEFL_HUFFMAN_ONLY, TDEFL_WRITE_ZLIB_HEADER, etc.) +tdefl_status tdefl_init(tdefl_compressor *d, + tdefl_put_buf_func_ptr pPut_buf_func, + void *pPut_buf_user, int flags); -// Compresses a block of data, consuming as much of the specified input buffer as possible, and writing as much compressed data to the specified output buffer as possible. -tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush); +// Compresses a block of data, consuming as much of the specified input buffer +// as possible, and writing as much compressed data to the specified output +// buffer as possible. +tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, + size_t *pIn_buf_size, void *pOut_buf, + size_t *pOut_buf_size, tdefl_flush flush); -// tdefl_compress_buffer() is only usable when the tdefl_init() is called with a non-NULL tdefl_put_buf_func_ptr. -// tdefl_compress_buffer() always consumes the entire input buffer. -tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush); +// tdefl_compress_buffer() is only usable when the tdefl_init() is called with a +// non-NULL tdefl_put_buf_func_ptr. tdefl_compress_buffer() always consumes the +// entire input buffer. +tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, + size_t in_buf_size, tdefl_flush flush); tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d); mz_uint32 tdefl_get_adler32(tdefl_compressor *d); -// Can't use tdefl_create_comp_flags_from_zip_params if MINIZ_NO_ZLIB_APIS isn't defined, because it uses some of its macros. +// Can't use tdefl_create_comp_flags_from_zip_params if MINIZ_NO_ZLIB_APIS isn't +// defined, because it uses some of its macros. #ifndef MINIZ_NO_ZLIB_APIS // Create tdefl_compress() flags given zlib-style compression parameters. -// level may range from [0,10] (where 10 is absolute max compression, but may be much slower on some files) -// window_bits may be -15 (raw deflate) or 15 (zlib) -// strategy may be either MZ_DEFAULT_STRATEGY, MZ_FILTERED, MZ_HUFFMAN_ONLY, MZ_RLE, or MZ_FIXED -mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy); +// level may range from [0,10] (where 10 is absolute max compression, but may be +// much slower on some files) window_bits may be -15 (raw deflate) or 15 (zlib) +// strategy may be either MZ_DEFAULT_STRATEGY, MZ_FILTERED, MZ_HUFFMAN_ONLY, +// MZ_RLE, or MZ_FIXED +mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, + int strategy); #endif // #ifndef MINIZ_NO_ZLIB_APIS #ifdef __cplusplus @@ -933,109 +1264,145 @@ mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int #endif // MINIZ_HEADER_INCLUDED -// ------------------- End of Header: Implementation follows. (If you only want the header, define MINIZ_HEADER_FILE_ONLY.) +// ------------------- End of Header: Implementation follows. (If you only want +// the header, define MINIZ_HEADER_FILE_ONLY.) #ifndef MINIZ_HEADER_FILE_ONLY -typedef unsigned char mz_validate_uint16[sizeof(mz_uint16)==2 ? 1 : -1]; -typedef unsigned char mz_validate_uint32[sizeof(mz_uint32)==4 ? 1 : -1]; -typedef unsigned char mz_validate_uint64[sizeof(mz_uint64)==8 ? 1 : -1]; +typedef unsigned char mz_validate_uint16[sizeof(mz_uint16) == 2 ? 1 : -1]; +typedef unsigned char mz_validate_uint32[sizeof(mz_uint32) == 4 ? 1 : -1]; +typedef unsigned char mz_validate_uint64[sizeof(mz_uint64) == 8 ? 1 : -1]; -#include #include +#include #define MZ_ASSERT(x) assert(x) #ifdef MINIZ_NO_MALLOC - #define MZ_MALLOC(x) NULL - #define MZ_FREE(x) (void)x, ((void)0) - #define MZ_REALLOC(p, x) NULL +#define MZ_MALLOC(x) NULL +#define MZ_FREE(x) (void)x, ((void)0) +#define MZ_REALLOC(p, x) NULL #else - #define MZ_MALLOC(x) malloc(x) - #define MZ_FREE(x) free(x) - #define MZ_REALLOC(p, x) realloc(p, x) +#define MZ_MALLOC(x) malloc(x) +#define MZ_FREE(x) free(x) +#define MZ_REALLOC(p, x) realloc(p, x) #endif -#define MZ_MAX(a,b) (((a)>(b))?(a):(b)) -#define MZ_MIN(a,b) (((a)<(b))?(a):(b)) +#define MZ_MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define MZ_MIN(a, b) (((a) < (b)) ? (a) : (b)) #define MZ_CLEAR_OBJ(obj) memset(&(obj), 0, sizeof(obj)) #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN - #define MZ_READ_LE16(p) *((const mz_uint16 *)(p)) - #define MZ_READ_LE32(p) *((const mz_uint32 *)(p)) +#define MZ_READ_LE16(p) *((const mz_uint16 *)(p)) +#define MZ_READ_LE32(p) *((const mz_uint32 *)(p)) #else - #define MZ_READ_LE16(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U)) - #define MZ_READ_LE32(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U) | ((mz_uint32)(((const mz_uint8 *)(p))[2]) << 16U) | ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U)) +#define MZ_READ_LE16(p) \ + ((mz_uint32)(((const mz_uint8 *)(p))[0]) | \ + ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U)) +#define MZ_READ_LE32(p) \ + ((mz_uint32)(((const mz_uint8 *)(p))[0]) | \ + ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U) | \ + ((mz_uint32)(((const mz_uint8 *)(p))[2]) << 16U) | \ + ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U)) #endif #ifdef _MSC_VER - #define MZ_FORCEINLINE __forceinline +#define MZ_FORCEINLINE __forceinline #elif defined(__GNUC__) - #define MZ_FORCEINLINE inline __attribute__((__always_inline__)) +#define MZ_FORCEINLINE inline __attribute__((__always_inline__)) #else - #define MZ_FORCEINLINE inline +#define MZ_FORCEINLINE inline #endif #ifdef __cplusplus - extern "C" { +extern "C" { #endif // ------------------- zlib-style API's -mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len) -{ - mz_uint32 i, s1 = (mz_uint32)(adler & 0xffff), s2 = (mz_uint32)(adler >> 16); size_t block_len = buf_len % 5552; - if (!ptr) return MZ_ADLER32_INIT; +mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len) { + mz_uint32 i, s1 = (mz_uint32)(adler & 0xffff), s2 = (mz_uint32)(adler >> 16); + size_t block_len = buf_len % 5552; + if (!ptr) + return MZ_ADLER32_INIT; while (buf_len) { for (i = 0; i + 7 < block_len; i += 8, ptr += 8) { - s1 += ptr[0], s2 += s1; s1 += ptr[1], s2 += s1; s1 += ptr[2], s2 += s1; s1 += ptr[3], s2 += s1; - s1 += ptr[4], s2 += s1; s1 += ptr[5], s2 += s1; s1 += ptr[6], s2 += s1; s1 += ptr[7], s2 += s1; + s1 += ptr[0], s2 += s1; + s1 += ptr[1], s2 += s1; + s1 += ptr[2], s2 += s1; + s1 += ptr[3], s2 += s1; + s1 += ptr[4], s2 += s1; + s1 += ptr[5], s2 += s1; + s1 += ptr[6], s2 += s1; + s1 += ptr[7], s2 += s1; } - for ( ; i < block_len; ++i) s1 += *ptr++, s2 += s1; - s1 %= 65521U, s2 %= 65521U; buf_len -= block_len; block_len = 5552; + for (; i < block_len; ++i) + s1 += *ptr++, s2 += s1; + s1 %= 65521U, s2 %= 65521U; + buf_len -= block_len; + block_len = 5552; } return (s2 << 16) + s1; } -// Karl Malbrain's compact CRC-32. See "A compact CCITT crc16 and crc32 C implementation that balances processor cache usage against speed": http://www.geocities.com/malbrain/ -mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len) -{ - static const mz_uint32 s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, - 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c }; +// Karl Malbrain's compact CRC-32. See "A compact CCITT crc16 and crc32 C +// implementation that balances processor cache usage against speed": +// http://www.geocities.com/malbrain/ +mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len) { + static const mz_uint32 s_crc32[16] = { + 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, + 0x4db26158, 0x5005713c, 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, + 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c}; mz_uint32 crcu32 = (mz_uint32)crc; - if (!ptr) return MZ_CRC32_INIT; - crcu32 = ~crcu32; while (buf_len--) { mz_uint8 b = *ptr++; crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; } + if (!ptr) + return MZ_CRC32_INIT; + crcu32 = ~crcu32; + while (buf_len--) { + mz_uint8 b = *ptr++; + crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; + crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; + } return ~crcu32; } -void mz_free(void *p) -{ - MZ_FREE(p); -} +void mz_free(void *p) { MZ_FREE(p); } #ifndef MINIZ_NO_ZLIB_APIS -static void *def_alloc_func(void *opaque, size_t items, size_t size) { (void)opaque, (void)items, (void)size; return MZ_MALLOC(items * size); } -static void def_free_func(void *opaque, void *address) { (void)opaque, (void)address; MZ_FREE(address); } -static void *def_realloc_func(void *opaque, void *address, size_t items, size_t size) { (void)opaque, (void)address, (void)items, (void)size; return MZ_REALLOC(address, items * size); } - -const char *mz_version(void) -{ - return MZ_VERSION; +static void *def_alloc_func(void *opaque, size_t items, size_t size) { + (void)opaque, (void)items, (void)size; + return MZ_MALLOC(items * size); +} +static void def_free_func(void *opaque, void *address) { + (void)opaque, (void)address; + MZ_FREE(address); +} +static void *def_realloc_func(void *opaque, void *address, size_t items, + size_t size) { + (void)opaque, (void)address, (void)items, (void)size; + return MZ_REALLOC(address, items * size); } -int mz_deflateInit(mz_streamp pStream, int level) -{ - return mz_deflateInit2(pStream, level, MZ_DEFLATED, MZ_DEFAULT_WINDOW_BITS, 9, MZ_DEFAULT_STRATEGY); +const char *mz_version(void) { return MZ_VERSION; } + +int mz_deflateInit(mz_streamp pStream, int level) { + return mz_deflateInit2(pStream, level, MZ_DEFLATED, MZ_DEFAULT_WINDOW_BITS, 9, + MZ_DEFAULT_STRATEGY); } -int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy) -{ +int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, + int mem_level, int strategy) { tdefl_compressor *pComp; - mz_uint comp_flags = TDEFL_COMPUTE_ADLER32 | tdefl_create_comp_flags_from_zip_params(level, window_bits, strategy); + mz_uint comp_flags = + TDEFL_COMPUTE_ADLER32 | + tdefl_create_comp_flags_from_zip_params(level, window_bits, strategy); - if (!pStream) return MZ_STREAM_ERROR; - if ((method != MZ_DEFLATED) || ((mem_level < 1) || (mem_level > 9)) || ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS))) return MZ_PARAM_ERROR; + if (!pStream) + return MZ_STREAM_ERROR; + if ((method != MZ_DEFLATED) || ((mem_level < 1) || (mem_level > 9)) || + ((window_bits != MZ_DEFAULT_WINDOW_BITS) && + (-window_bits != MZ_DEFAULT_WINDOW_BITS))) + return MZ_PARAM_ERROR; pStream->data_type = 0; pStream->adler = MZ_ADLER32_INIT; @@ -1043,17 +1410,19 @@ int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, pStream->reserved = 0; pStream->total_in = 0; pStream->total_out = 0; - if (!pStream->zalloc) pStream->zalloc = def_alloc_func; - if (!pStream->zfree) pStream->zfree = def_free_func; + if (!pStream->zalloc) + pStream->zalloc = def_alloc_func; + if (!pStream->zfree) + pStream->zfree = def_free_func; - pComp = (tdefl_compressor *)pStream->zalloc(pStream->opaque, 1, sizeof(tdefl_compressor)); + pComp = (tdefl_compressor *)pStream->zalloc(pStream->opaque, 1, + sizeof(tdefl_compressor)); if (!pComp) return MZ_MEM_ERROR; pStream->state = (struct mz_internal_state *)pComp; - if (tdefl_init(pComp, NULL, NULL, comp_flags) != TDEFL_STATUS_OKAY) - { + if (tdefl_init(pComp, NULL, NULL, comp_flags) != TDEFL_STATUS_OKAY) { mz_deflateEnd(pStream); return MZ_PARAM_ERROR; } @@ -1061,56 +1430,64 @@ int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, return MZ_OK; } -int mz_deflateReset(mz_streamp pStream) -{ - if ((!pStream) || (!pStream->state) || (!pStream->zalloc) || (!pStream->zfree)) return MZ_STREAM_ERROR; +int mz_deflateReset(mz_streamp pStream) { + if ((!pStream) || (!pStream->state) || (!pStream->zalloc) || + (!pStream->zfree)) + return MZ_STREAM_ERROR; pStream->total_in = pStream->total_out = 0; - tdefl_init((tdefl_compressor*)pStream->state, NULL, NULL, ((tdefl_compressor*)pStream->state)->m_flags); + tdefl_init((tdefl_compressor *)pStream->state, NULL, NULL, + ((tdefl_compressor *)pStream->state)->m_flags); return MZ_OK; } -int mz_deflate(mz_streamp pStream, int flush) -{ +int mz_deflate(mz_streamp pStream, int flush) { size_t in_bytes, out_bytes; mz_ulong orig_total_in, orig_total_out; int mz_status = MZ_OK; - if ((!pStream) || (!pStream->state) || (flush < 0) || (flush > MZ_FINISH) || (!pStream->next_out)) return MZ_STREAM_ERROR; - if (!pStream->avail_out) return MZ_BUF_ERROR; + if ((!pStream) || (!pStream->state) || (flush < 0) || (flush > MZ_FINISH) || + (!pStream->next_out)) + return MZ_STREAM_ERROR; + if (!pStream->avail_out) + return MZ_BUF_ERROR; - if (flush == MZ_PARTIAL_FLUSH) flush = MZ_SYNC_FLUSH; + if (flush == MZ_PARTIAL_FLUSH) + flush = MZ_SYNC_FLUSH; - if (((tdefl_compressor*)pStream->state)->m_prev_return_status == TDEFL_STATUS_DONE) + if (((tdefl_compressor *)pStream->state)->m_prev_return_status == + TDEFL_STATUS_DONE) return (flush == MZ_FINISH) ? MZ_STREAM_END : MZ_BUF_ERROR; - orig_total_in = pStream->total_in; orig_total_out = pStream->total_out; - for ( ; ; ) - { + orig_total_in = pStream->total_in; + orig_total_out = pStream->total_out; + for (;;) { tdefl_status defl_status; - in_bytes = pStream->avail_in; out_bytes = pStream->avail_out; + in_bytes = pStream->avail_in; + out_bytes = pStream->avail_out; - defl_status = tdefl_compress((tdefl_compressor*)pStream->state, pStream->next_in, &in_bytes, pStream->next_out, &out_bytes, (tdefl_flush)flush); - pStream->next_in += (mz_uint)in_bytes; pStream->avail_in -= (mz_uint)in_bytes; - pStream->total_in += (mz_uint)in_bytes; pStream->adler = tdefl_get_adler32((tdefl_compressor*)pStream->state); + defl_status = tdefl_compress((tdefl_compressor *)pStream->state, + pStream->next_in, &in_bytes, pStream->next_out, + &out_bytes, (tdefl_flush)flush); + pStream->next_in += (mz_uint)in_bytes; + pStream->avail_in -= (mz_uint)in_bytes; + pStream->total_in += (mz_uint)in_bytes; + pStream->adler = tdefl_get_adler32((tdefl_compressor *)pStream->state); - pStream->next_out += (mz_uint)out_bytes; pStream->avail_out -= (mz_uint)out_bytes; + pStream->next_out += (mz_uint)out_bytes; + pStream->avail_out -= (mz_uint)out_bytes; pStream->total_out += (mz_uint)out_bytes; - if (defl_status < 0) - { + if (defl_status < 0) { mz_status = MZ_STREAM_ERROR; break; - } - else if (defl_status == TDEFL_STATUS_DONE) - { + } else if (defl_status == TDEFL_STATUS_DONE) { mz_status = MZ_STREAM_END; break; - } - else if (!pStream->avail_out) + } else if (!pStream->avail_out) break; - else if ((!pStream->avail_in) && (flush != MZ_FINISH)) - { - if ((flush) || (pStream->total_in != orig_total_in) || (pStream->total_out != orig_total_out)) + else if ((!pStream->avail_in) && (flush != MZ_FINISH)) { + if ((flush) || (pStream->total_in != orig_total_in) || + (pStream->total_out != orig_total_out)) break; return MZ_BUF_ERROR; // Can't make forward progress without some input. } @@ -1118,32 +1495,33 @@ int mz_deflate(mz_streamp pStream, int flush) return mz_status; } -int mz_deflateEnd(mz_streamp pStream) -{ - if (!pStream) return MZ_STREAM_ERROR; - if (pStream->state) - { +int mz_deflateEnd(mz_streamp pStream) { + if (!pStream) + return MZ_STREAM_ERROR; + if (pStream->state) { pStream->zfree(pStream->opaque, pStream->state); pStream->state = NULL; } return MZ_OK; } -mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len) -{ +mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len) { (void)pStream; - // This is really over conservative. (And lame, but it's actually pretty tricky to compute a true upper bound given the way tdefl's blocking works.) - return MZ_MAX(128 + (source_len * 110) / 100, 128 + source_len + ((source_len / (31 * 1024)) + 1) * 5); + // This is really over conservative. (And lame, but it's actually pretty + // tricky to compute a true upper bound given the way tdefl's blocking works.) + return MZ_MAX(128 + (source_len * 110) / 100, + 128 + source_len + ((source_len / (31 * 1024)) + 1) * 5); } -int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level) -{ +int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, + const unsigned char *pSource, mz_ulong source_len, int level) { int status; mz_stream stream; memset(&stream, 0, sizeof(stream)); // In case mz_ulong is 64-bits (argh I hate longs). - if ((source_len | *pDest_len) > 0xFFFFFFFFU) return MZ_PARAM_ERROR; + if ((source_len | *pDest_len) > 0xFFFFFFFFU) + return MZ_PARAM_ERROR; stream.next_in = pSource; stream.avail_in = (mz_uint32)source_len; @@ -1151,11 +1529,11 @@ int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char stream.avail_out = (mz_uint32)*pDest_len; status = mz_deflateInit(&stream, level); - if (status != MZ_OK) return status; + if (status != MZ_OK) + return status; status = mz_deflate(&stream, MZ_FINISH); - if (status != MZ_STREAM_END) - { + if (status != MZ_STREAM_END) { mz_deflateEnd(&stream); return (status == MZ_OK) ? MZ_BUF_ERROR : status; } @@ -1164,29 +1542,31 @@ int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char return mz_deflateEnd(&stream); } -int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len) -{ - return mz_compress2(pDest, pDest_len, pSource, source_len, MZ_DEFAULT_COMPRESSION); +int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, + const unsigned char *pSource, mz_ulong source_len) { + return mz_compress2(pDest, pDest_len, pSource, source_len, + MZ_DEFAULT_COMPRESSION); } -mz_ulong mz_compressBound(mz_ulong source_len) -{ +mz_ulong mz_compressBound(mz_ulong source_len) { return mz_deflateBound(NULL, source_len); } -typedef struct -{ +typedef struct { tinfl_decompressor m_decomp; - mz_uint m_dict_ofs, m_dict_avail, m_first_call, m_has_flushed; int m_window_bits; + mz_uint m_dict_ofs, m_dict_avail, m_first_call, m_has_flushed; + int m_window_bits; mz_uint8 m_dict[TINFL_LZ_DICT_SIZE]; tinfl_status m_last_status; } inflate_state; -int mz_inflateInit2(mz_streamp pStream, int window_bits) -{ +int mz_inflateInit2(mz_streamp pStream, int window_bits) { inflate_state *pDecomp; - if (!pStream) return MZ_STREAM_ERROR; - if ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS)) return MZ_PARAM_ERROR; + if (!pStream) + return MZ_STREAM_ERROR; + if ((window_bits != MZ_DEFAULT_WINDOW_BITS) && + (-window_bits != MZ_DEFAULT_WINDOW_BITS)) + return MZ_PARAM_ERROR; pStream->data_type = 0; pStream->adler = 0; @@ -1194,11 +1574,15 @@ int mz_inflateInit2(mz_streamp pStream, int window_bits) pStream->total_in = 0; pStream->total_out = 0; pStream->reserved = 0; - if (!pStream->zalloc) pStream->zalloc = def_alloc_func; - if (!pStream->zfree) pStream->zfree = def_free_func; + if (!pStream->zalloc) + pStream->zalloc = def_alloc_func; + if (!pStream->zfree) + pStream->zfree = def_free_func; - pDecomp = (inflate_state*)pStream->zalloc(pStream->opaque, 1, sizeof(inflate_state)); - if (!pDecomp) return MZ_MEM_ERROR; + pDecomp = (inflate_state *)pStream->zalloc(pStream->opaque, 1, + sizeof(inflate_state)); + if (!pDecomp) + return MZ_MEM_ERROR; pStream->state = (struct mz_internal_state *)pDecomp; @@ -1213,122 +1597,152 @@ int mz_inflateInit2(mz_streamp pStream, int window_bits) return MZ_OK; } -int mz_inflateInit(mz_streamp pStream) -{ - return mz_inflateInit2(pStream, MZ_DEFAULT_WINDOW_BITS); +int mz_inflateInit(mz_streamp pStream) { + return mz_inflateInit2(pStream, MZ_DEFAULT_WINDOW_BITS); } -int mz_inflate(mz_streamp pStream, int flush) -{ - inflate_state* pState; +int mz_inflate(mz_streamp pStream, int flush) { + inflate_state *pState; mz_uint n, first_call, decomp_flags = TINFL_FLAG_COMPUTE_ADLER32; size_t in_bytes, out_bytes, orig_avail_in; tinfl_status status; - if ((!pStream) || (!pStream->state)) return MZ_STREAM_ERROR; - if (flush == MZ_PARTIAL_FLUSH) flush = MZ_SYNC_FLUSH; - if ((flush) && (flush != MZ_SYNC_FLUSH) && (flush != MZ_FINISH)) return MZ_STREAM_ERROR; + if ((!pStream) || (!pStream->state)) + return MZ_STREAM_ERROR; + if (flush == MZ_PARTIAL_FLUSH) + flush = MZ_SYNC_FLUSH; + if ((flush) && (flush != MZ_SYNC_FLUSH) && (flush != MZ_FINISH)) + return MZ_STREAM_ERROR; - pState = (inflate_state*)pStream->state; - if (pState->m_window_bits > 0) decomp_flags |= TINFL_FLAG_PARSE_ZLIB_HEADER; + pState = (inflate_state *)pStream->state; + if (pState->m_window_bits > 0) + decomp_flags |= TINFL_FLAG_PARSE_ZLIB_HEADER; orig_avail_in = pStream->avail_in; - first_call = pState->m_first_call; pState->m_first_call = 0; - if (pState->m_last_status < 0) return MZ_DATA_ERROR; + first_call = pState->m_first_call; + pState->m_first_call = 0; + if (pState->m_last_status < 0) + return MZ_DATA_ERROR; - if (pState->m_has_flushed && (flush != MZ_FINISH)) return MZ_STREAM_ERROR; + if (pState->m_has_flushed && (flush != MZ_FINISH)) + return MZ_STREAM_ERROR; pState->m_has_flushed |= (flush == MZ_FINISH); - if ((flush == MZ_FINISH) && (first_call)) - { - // MZ_FINISH on the first call implies that the input and output buffers are large enough to hold the entire compressed/decompressed file. + if ((flush == MZ_FINISH) && (first_call)) { + // MZ_FINISH on the first call implies that the input and output buffers are + // large enough to hold the entire compressed/decompressed file. decomp_flags |= TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF; - in_bytes = pStream->avail_in; out_bytes = pStream->avail_out; - status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pStream->next_out, pStream->next_out, &out_bytes, decomp_flags); + in_bytes = pStream->avail_in; + out_bytes = pStream->avail_out; + status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, + pStream->next_out, pStream->next_out, &out_bytes, + decomp_flags); pState->m_last_status = status; - pStream->next_in += (mz_uint)in_bytes; pStream->avail_in -= (mz_uint)in_bytes; pStream->total_in += (mz_uint)in_bytes; + pStream->next_in += (mz_uint)in_bytes; + pStream->avail_in -= (mz_uint)in_bytes; + pStream->total_in += (mz_uint)in_bytes; pStream->adler = tinfl_get_adler32(&pState->m_decomp); - pStream->next_out += (mz_uint)out_bytes; pStream->avail_out -= (mz_uint)out_bytes; pStream->total_out += (mz_uint)out_bytes; + pStream->next_out += (mz_uint)out_bytes; + pStream->avail_out -= (mz_uint)out_bytes; + pStream->total_out += (mz_uint)out_bytes; if (status < 0) return MZ_DATA_ERROR; - else if (status != TINFL_STATUS_DONE) - { + else if (status != TINFL_STATUS_DONE) { pState->m_last_status = TINFL_STATUS_FAILED; return MZ_BUF_ERROR; } return MZ_STREAM_END; } // flush != MZ_FINISH then we must assume there's more input. - if (flush != MZ_FINISH) decomp_flags |= TINFL_FLAG_HAS_MORE_INPUT; + if (flush != MZ_FINISH) + decomp_flags |= TINFL_FLAG_HAS_MORE_INPUT; - if (pState->m_dict_avail) - { + if (pState->m_dict_avail) { n = MZ_MIN(pState->m_dict_avail, pStream->avail_out); memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n); - pStream->next_out += n; pStream->avail_out -= n; pStream->total_out += n; - pState->m_dict_avail -= n; pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); - return ((pState->m_last_status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK; + pStream->next_out += n; + pStream->avail_out -= n; + pStream->total_out += n; + pState->m_dict_avail -= n; + pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); + return ((pState->m_last_status == TINFL_STATUS_DONE) && + (!pState->m_dict_avail)) + ? MZ_STREAM_END + : MZ_OK; } - for ( ; ; ) - { + for (;;) { in_bytes = pStream->avail_in; out_bytes = TINFL_LZ_DICT_SIZE - pState->m_dict_ofs; - status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pState->m_dict, pState->m_dict + pState->m_dict_ofs, &out_bytes, decomp_flags); + status = tinfl_decompress( + &pState->m_decomp, pStream->next_in, &in_bytes, pState->m_dict, + pState->m_dict + pState->m_dict_ofs, &out_bytes, decomp_flags); pState->m_last_status = status; - pStream->next_in += (mz_uint)in_bytes; pStream->avail_in -= (mz_uint)in_bytes; - pStream->total_in += (mz_uint)in_bytes; pStream->adler = tinfl_get_adler32(&pState->m_decomp); + pStream->next_in += (mz_uint)in_bytes; + pStream->avail_in -= (mz_uint)in_bytes; + pStream->total_in += (mz_uint)in_bytes; + pStream->adler = tinfl_get_adler32(&pState->m_decomp); pState->m_dict_avail = (mz_uint)out_bytes; n = MZ_MIN(pState->m_dict_avail, pStream->avail_out); memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n); - pStream->next_out += n; pStream->avail_out -= n; pStream->total_out += n; - pState->m_dict_avail -= n; pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); + pStream->next_out += n; + pStream->avail_out -= n; + pStream->total_out += n; + pState->m_dict_avail -= n; + pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); if (status < 0) - return MZ_DATA_ERROR; // Stream is corrupted (there could be some uncompressed data left in the output dictionary - oh well). + return MZ_DATA_ERROR; // Stream is corrupted (there could be some + // uncompressed data left in the output dictionary - + // oh well). else if ((status == TINFL_STATUS_NEEDS_MORE_INPUT) && (!orig_avail_in)) - return MZ_BUF_ERROR; // Signal caller that we can't make forward progress without supplying more input or by setting flush to MZ_FINISH. - else if (flush == MZ_FINISH) - { - // The output buffer MUST be large to hold the remaining uncompressed data when flush==MZ_FINISH. - if (status == TINFL_STATUS_DONE) - return pState->m_dict_avail ? MZ_BUF_ERROR : MZ_STREAM_END; - // status here must be TINFL_STATUS_HAS_MORE_OUTPUT, which means there's at least 1 more byte on the way. If there's no more room left in the output buffer then something is wrong. - else if (!pStream->avail_out) - return MZ_BUF_ERROR; - } - else if ((status == TINFL_STATUS_DONE) || (!pStream->avail_in) || (!pStream->avail_out) || (pState->m_dict_avail)) + return MZ_BUF_ERROR; // Signal caller that we can't make forward progress + // without supplying more input or by setting flush + // to MZ_FINISH. + else if (flush == MZ_FINISH) { + // The output buffer MUST be large to hold the remaining uncompressed data + // when flush==MZ_FINISH. + if (status == TINFL_STATUS_DONE) + return pState->m_dict_avail ? MZ_BUF_ERROR : MZ_STREAM_END; + // status here must be TINFL_STATUS_HAS_MORE_OUTPUT, which means there's + // at least 1 more byte on the way. If there's no more room left in the + // output buffer then something is wrong. + else if (!pStream->avail_out) + return MZ_BUF_ERROR; + } else if ((status == TINFL_STATUS_DONE) || (!pStream->avail_in) || + (!pStream->avail_out) || (pState->m_dict_avail)) break; } - return ((status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK; + return ((status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) + ? MZ_STREAM_END + : MZ_OK; } -int mz_inflateEnd(mz_streamp pStream) -{ +int mz_inflateEnd(mz_streamp pStream) { if (!pStream) return MZ_STREAM_ERROR; - if (pStream->state) - { + if (pStream->state) { pStream->zfree(pStream->opaque, pStream->state); pStream->state = NULL; } return MZ_OK; } -int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len) -{ +int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, + const unsigned char *pSource, mz_ulong source_len) { mz_stream stream; int status; memset(&stream, 0, sizeof(stream)); // In case mz_ulong is 64-bits (argh I hate longs). - if ((source_len | *pDest_len) > 0xFFFFFFFFU) return MZ_PARAM_ERROR; + if ((source_len | *pDest_len) > 0xFFFFFFFFU) + return MZ_PARAM_ERROR; stream.next_in = pSource; stream.avail_in = (mz_uint32)source_len; @@ -1340,268 +1754,482 @@ int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char return status; status = mz_inflate(&stream, MZ_FINISH); - if (status != MZ_STREAM_END) - { + if (status != MZ_STREAM_END) { mz_inflateEnd(&stream); - return ((status == MZ_BUF_ERROR) && (!stream.avail_in)) ? MZ_DATA_ERROR : status; + return ((status == MZ_BUF_ERROR) && (!stream.avail_in)) ? MZ_DATA_ERROR + : status; } *pDest_len = stream.total_out; return mz_inflateEnd(&stream); } -const char *mz_error(int err) -{ - static struct { int m_err; const char *m_pDesc; } s_error_descs[] = - { - { MZ_OK, "" }, { MZ_STREAM_END, "stream end" }, { MZ_NEED_DICT, "need dictionary" }, { MZ_ERRNO, "file error" }, { MZ_STREAM_ERROR, "stream error" }, - { MZ_DATA_ERROR, "data error" }, { MZ_MEM_ERROR, "out of memory" }, { MZ_BUF_ERROR, "buf error" }, { MZ_VERSION_ERROR, "version error" }, { MZ_PARAM_ERROR, "parameter error" } - }; - mz_uint i; for (i = 0; i < sizeof(s_error_descs) / sizeof(s_error_descs[0]); ++i) if (s_error_descs[i].m_err == err) return s_error_descs[i].m_pDesc; +const char *mz_error(int err) { + static struct { + int m_err; + const char *m_pDesc; + } s_error_descs[] = {{MZ_OK, ""}, + {MZ_STREAM_END, "stream end"}, + {MZ_NEED_DICT, "need dictionary"}, + {MZ_ERRNO, "file error"}, + {MZ_STREAM_ERROR, "stream error"}, + {MZ_DATA_ERROR, "data error"}, + {MZ_MEM_ERROR, "out of memory"}, + {MZ_BUF_ERROR, "buf error"}, + {MZ_VERSION_ERROR, "version error"}, + {MZ_PARAM_ERROR, "parameter error"}}; + mz_uint i; + for (i = 0; i < sizeof(s_error_descs) / sizeof(s_error_descs[0]); ++i) + if (s_error_descs[i].m_err == err) + return s_error_descs[i].m_pDesc; return NULL; } -#endif //MINIZ_NO_ZLIB_APIS +#endif // MINIZ_NO_ZLIB_APIS -// ------------------- Low-level Decompression (completely independent from all compression API's) +// ------------------- Low-level Decompression (completely independent from all +// compression API's) #define TINFL_MEMCPY(d, s, l) memcpy(d, s, l) #define TINFL_MEMSET(p, c, l) memset(p, c, l) -#define TINFL_CR_BEGIN switch(r->m_state) { case 0: -#define TINFL_CR_RETURN(state_index, result) do { status = result; r->m_state = state_index; goto common_exit; case state_index:; } MZ_MACRO_END -#define TINFL_CR_RETURN_FOREVER(state_index, result) do { for ( ; ; ) { TINFL_CR_RETURN(state_index, result); } } MZ_MACRO_END +#define TINFL_CR_BEGIN \ + switch (r->m_state) { \ + case 0: +#define TINFL_CR_RETURN(state_index, result) \ + do { \ + status = result; \ + r->m_state = state_index; \ + goto common_exit; \ + case state_index:; \ + } \ + MZ_MACRO_END +#define TINFL_CR_RETURN_FOREVER(state_index, result) \ + do { \ + for (;;) { \ + TINFL_CR_RETURN(state_index, result); \ + } \ + } \ + MZ_MACRO_END #define TINFL_CR_FINISH } -// TODO: If the caller has indicated that there's no more input, and we attempt to read beyond the input buf, then something is wrong with the input because the inflator never -// reads ahead more than it needs to. Currently TINFL_GET_BYTE() pads the end of the stream with 0's in this scenario. -#define TINFL_GET_BYTE(state_index, c) do { \ - if (pIn_buf_cur >= pIn_buf_end) { \ - for ( ; ; ) { \ - if (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) { \ - TINFL_CR_RETURN(state_index, TINFL_STATUS_NEEDS_MORE_INPUT); \ - if (pIn_buf_cur < pIn_buf_end) { \ - c = *pIn_buf_cur++; \ - break; \ - } \ - } else { \ - c = 0; \ - break; \ - } \ - } \ - } else c = *pIn_buf_cur++; } MZ_MACRO_END +// TODO: If the caller has indicated that there's no more input, and we attempt +// to read beyond the input buf, then something is wrong with the input because +// the inflator never reads ahead more than it needs to. Currently +// TINFL_GET_BYTE() pads the end of the stream with 0's in this scenario. +#define TINFL_GET_BYTE(state_index, c) \ + do { \ + if (pIn_buf_cur >= pIn_buf_end) { \ + for (;;) { \ + if (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) { \ + TINFL_CR_RETURN(state_index, TINFL_STATUS_NEEDS_MORE_INPUT); \ + if (pIn_buf_cur < pIn_buf_end) { \ + c = *pIn_buf_cur++; \ + break; \ + } \ + } else { \ + c = 0; \ + break; \ + } \ + } \ + } else \ + c = *pIn_buf_cur++; \ + } \ + MZ_MACRO_END -#define TINFL_NEED_BITS(state_index, n) do { mz_uint c; TINFL_GET_BYTE(state_index, c); bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); num_bits += 8; } while (num_bits < (mz_uint)(n)) -#define TINFL_SKIP_BITS(state_index, n) do { if (num_bits < (mz_uint)(n)) { TINFL_NEED_BITS(state_index, n); } bit_buf >>= (n); num_bits -= (n); } MZ_MACRO_END -#define TINFL_GET_BITS(state_index, b, n) do { if (num_bits < (mz_uint)(n)) { TINFL_NEED_BITS(state_index, n); } b = bit_buf & ((1 << (n)) - 1); bit_buf >>= (n); num_bits -= (n); } MZ_MACRO_END +#define TINFL_NEED_BITS(state_index, n) \ + do { \ + mz_uint c; \ + TINFL_GET_BYTE(state_index, c); \ + bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ + num_bits += 8; \ + } while (num_bits < (mz_uint)(n)) +#define TINFL_SKIP_BITS(state_index, n) \ + do { \ + if (num_bits < (mz_uint)(n)) { \ + TINFL_NEED_BITS(state_index, n); \ + } \ + bit_buf >>= (n); \ + num_bits -= (n); \ + } \ + MZ_MACRO_END +#define TINFL_GET_BITS(state_index, b, n) \ + do { \ + if (num_bits < (mz_uint)(n)) { \ + TINFL_NEED_BITS(state_index, n); \ + } \ + b = bit_buf & ((1 << (n)) - 1); \ + bit_buf >>= (n); \ + num_bits -= (n); \ + } \ + MZ_MACRO_END -// TINFL_HUFF_BITBUF_FILL() is only used rarely, when the number of bytes remaining in the input buffer falls below 2. -// It reads just enough bytes from the input stream that are needed to decode the next Huffman code (and absolutely no more). It works by trying to fully decode a -// Huffman code by using whatever bits are currently present in the bit buffer. If this fails, it reads another byte, and tries again until it succeeds or until the -// bit buffer contains >=15 bits (deflate's max. Huffman code size). -#define TINFL_HUFF_BITBUF_FILL(state_index, pHuff) \ - do { \ - temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \ - if (temp >= 0) { \ - code_len = temp >> 9; \ - if ((code_len) && (num_bits >= code_len)) \ - break; \ - } else if (num_bits > TINFL_FAST_LOOKUP_BITS) { \ - code_len = TINFL_FAST_LOOKUP_BITS; \ - do { \ - temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ - } while ((temp < 0) && (num_bits >= (code_len + 1))); if (temp >= 0) break; \ - } TINFL_GET_BYTE(state_index, c); bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); num_bits += 8; \ +// TINFL_HUFF_BITBUF_FILL() is only used rarely, when the number of bytes +// remaining in the input buffer falls below 2. It reads just enough bytes from +// the input stream that are needed to decode the next Huffman code (and +// absolutely no more). It works by trying to fully decode a Huffman code by +// using whatever bits are currently present in the bit buffer. If this fails, +// it reads another byte, and tries again until it succeeds or until the bit +// buffer contains >=15 bits (deflate's max. Huffman code size). +#define TINFL_HUFF_BITBUF_FILL(state_index, pHuff) \ + do { \ + temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \ + if (temp >= 0) { \ + code_len = temp >> 9; \ + if ((code_len) && (num_bits >= code_len)) \ + break; \ + } else if (num_bits > TINFL_FAST_LOOKUP_BITS) { \ + code_len = TINFL_FAST_LOOKUP_BITS; \ + do { \ + temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ + } while ((temp < 0) && (num_bits >= (code_len + 1))); \ + if (temp >= 0) \ + break; \ + } \ + TINFL_GET_BYTE(state_index, c); \ + bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ + num_bits += 8; \ } while (num_bits < 15); -// TINFL_HUFF_DECODE() decodes the next Huffman coded symbol. It's more complex than you would initially expect because the zlib API expects the decompressor to never read -// beyond the final byte of the deflate stream. (In other words, when this macro wants to read another byte from the input, it REALLY needs another byte in order to fully -// decode the next Huffman code.) Handling this properly is particularly important on raw deflate (non-zlib) streams, which aren't followed by a byte aligned adler-32. -// The slow path is only executed at the very end of the input buffer. -#define TINFL_HUFF_DECODE(state_index, sym, pHuff) do { \ - int temp; mz_uint code_len, c; \ - if (num_bits < 15) { \ - if ((pIn_buf_end - pIn_buf_cur) < 2) { \ - TINFL_HUFF_BITBUF_FILL(state_index, pHuff); \ - } else { \ - bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); pIn_buf_cur += 2; num_bits += 16; \ - } \ - } \ - if ((temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \ - code_len = temp >> 9, temp &= 511; \ - else { \ - code_len = TINFL_FAST_LOOKUP_BITS; do { temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; } while (temp < 0); \ - } sym = temp; bit_buf >>= code_len; num_bits -= code_len; } MZ_MACRO_END +// TINFL_HUFF_DECODE() decodes the next Huffman coded symbol. It's more complex +// than you would initially expect because the zlib API expects the decompressor +// to never read beyond the final byte of the deflate stream. (In other words, +// when this macro wants to read another byte from the input, it REALLY needs +// another byte in order to fully decode the next Huffman code.) Handling this +// properly is particularly important on raw deflate (non-zlib) streams, which +// aren't followed by a byte aligned adler-32. The slow path is only executed at +// the very end of the input buffer. +#define TINFL_HUFF_DECODE(state_index, sym, pHuff) \ + do { \ + int temp; \ + mz_uint code_len, c; \ + if (num_bits < 15) { \ + if ((pIn_buf_end - pIn_buf_cur) < 2) { \ + TINFL_HUFF_BITBUF_FILL(state_index, pHuff); \ + } else { \ + bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | \ + (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); \ + pIn_buf_cur += 2; \ + num_bits += 16; \ + } \ + } \ + if ((temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= \ + 0) \ + code_len = temp >> 9, temp &= 511; \ + else { \ + code_len = TINFL_FAST_LOOKUP_BITS; \ + do { \ + temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ + } while (temp < 0); \ + } \ + sym = temp; \ + bit_buf >>= code_len; \ + num_bits -= code_len; \ + } \ + MZ_MACRO_END -tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags) -{ - static const int s_length_base[31] = { 3,4,5,6,7,8,9,10,11,13, 15,17,19,23,27,31,35,43,51,59, 67,83,99,115,131,163,195,227,258,0,0 }; - static const int s_length_extra[31]= { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; - static const int s_dist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; - static const int s_dist_extra[32] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; - static const mz_uint8 s_length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; - static const int s_min_table_sizes[3] = { 257, 1, 4 }; +tinfl_status tinfl_decompress(tinfl_decompressor *r, + const mz_uint8 *pIn_buf_next, + size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, + mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, + const mz_uint32 decomp_flags) { + static const int s_length_base[31] = { + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; + static const int s_length_extra[31] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, + 4, 4, 5, 5, 5, 5, 0, 0, 0}; + static const int s_dist_base[32] = { + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, + 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, + 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0}; + static const int s_dist_extra[32] = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3, + 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, + 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; + static const mz_uint8 s_length_dezigzag[19] = { + 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + static const int s_min_table_sizes[3] = {257, 1, 4}; - tinfl_status status = TINFL_STATUS_FAILED; mz_uint32 num_bits, dist, counter, num_extra; tinfl_bit_buf_t bit_buf; - const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = pIn_buf_next + *pIn_buf_size; - mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next + *pOut_buf_size; - size_t out_buf_size_mask = (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) ? (size_t)-1 : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, dist_from_out_buf_start; + tinfl_status status = TINFL_STATUS_FAILED; + mz_uint32 num_bits, dist, counter, num_extra; + tinfl_bit_buf_t bit_buf; + const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = + pIn_buf_next + *pIn_buf_size; + mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = + pOut_buf_next + *pOut_buf_size; + size_t out_buf_size_mask = + (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) + ? (size_t)-1 + : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, + dist_from_out_buf_start; - // Ensure the output buffer's size is a power of 2, unless the output buffer is large enough to hold the entire output file (in which case it doesn't matter). - if (((out_buf_size_mask + 1) & out_buf_size_mask) || (pOut_buf_next < pOut_buf_start)) { *pIn_buf_size = *pOut_buf_size = 0; return TINFL_STATUS_BAD_PARAM; } - - num_bits = r->m_num_bits; bit_buf = r->m_bit_buf; dist = r->m_dist; counter = r->m_counter; num_extra = r->m_num_extra; dist_from_out_buf_start = r->m_dist_from_out_buf_start; - TINFL_CR_BEGIN - - bit_buf = num_bits = dist = counter = num_extra = r->m_zhdr0 = r->m_zhdr1 = 0; r->m_z_adler32 = r->m_check_adler32 = 1; - if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) - { - TINFL_GET_BYTE(1, r->m_zhdr0); TINFL_GET_BYTE(2, r->m_zhdr1); - counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8)); - if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)(1U << (8U + (r->m_zhdr0 >> 4))))); - if (counter) { TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED); } + // Ensure the output buffer's size is a power of 2, unless the output buffer + // is large enough to hold the entire output file (in which case it doesn't + // matter). + if (((out_buf_size_mask + 1) & out_buf_size_mask) || + (pOut_buf_next < pOut_buf_start)) { + *pIn_buf_size = *pOut_buf_size = 0; + return TINFL_STATUS_BAD_PARAM; } - do - { - TINFL_GET_BITS(3, r->m_final, 3); r->m_type = r->m_final >> 1; - if (r->m_type == 0) - { + num_bits = r->m_num_bits; + bit_buf = r->m_bit_buf; + dist = r->m_dist; + counter = r->m_counter; + num_extra = r->m_num_extra; + dist_from_out_buf_start = r->m_dist_from_out_buf_start; + TINFL_CR_BEGIN + + bit_buf = num_bits = dist = counter = num_extra = r->m_zhdr0 = r->m_zhdr1 = 0; + r->m_z_adler32 = r->m_check_adler32 = 1; + if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) { + TINFL_GET_BYTE(1, r->m_zhdr0); + TINFL_GET_BYTE(2, r->m_zhdr1); + counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || + (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8)); + if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) + counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || + ((out_buf_size_mask + 1) < + (size_t)(1U << (8U + (r->m_zhdr0 >> 4))))); + if (counter) { + TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED); + } + } + + do { + TINFL_GET_BITS(3, r->m_final, 3); + r->m_type = r->m_final >> 1; + if (r->m_type == 0) { TINFL_SKIP_BITS(5, num_bits & 7); - for (counter = 0; counter < 4; ++counter) { if (num_bits) TINFL_GET_BITS(6, r->m_raw_header[counter], 8); else TINFL_GET_BYTE(7, r->m_raw_header[counter]); } - if ((counter = (r->m_raw_header[0] | (r->m_raw_header[1] << 8))) != (mz_uint)(0xFFFF ^ (r->m_raw_header[2] | (r->m_raw_header[3] << 8)))) { TINFL_CR_RETURN_FOREVER(39, TINFL_STATUS_FAILED); } - while ((counter) && (num_bits)) - { + for (counter = 0; counter < 4; ++counter) { + if (num_bits) + TINFL_GET_BITS(6, r->m_raw_header[counter], 8); + else + TINFL_GET_BYTE(7, r->m_raw_header[counter]); + } + if ((counter = (r->m_raw_header[0] | (r->m_raw_header[1] << 8))) != + (mz_uint)(0xFFFF ^ + (r->m_raw_header[2] | (r->m_raw_header[3] << 8)))) { + TINFL_CR_RETURN_FOREVER(39, TINFL_STATUS_FAILED); + } + while ((counter) && (num_bits)) { TINFL_GET_BITS(51, dist, 8); - while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(52, TINFL_STATUS_HAS_MORE_OUTPUT); } + while (pOut_buf_cur >= pOut_buf_end) { + TINFL_CR_RETURN(52, TINFL_STATUS_HAS_MORE_OUTPUT); + } *pOut_buf_cur++ = (mz_uint8)dist; counter--; } - while (counter) - { - size_t n; while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(9, TINFL_STATUS_HAS_MORE_OUTPUT); } - while (pIn_buf_cur >= pIn_buf_end) - { - if (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) - { + while (counter) { + size_t n; + while (pOut_buf_cur >= pOut_buf_end) { + TINFL_CR_RETURN(9, TINFL_STATUS_HAS_MORE_OUTPUT); + } + while (pIn_buf_cur >= pIn_buf_end) { + if (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) { TINFL_CR_RETURN(38, TINFL_STATUS_NEEDS_MORE_INPUT); - } - else - { + } else { TINFL_CR_RETURN_FOREVER(40, TINFL_STATUS_FAILED); } } - n = MZ_MIN(MZ_MIN((size_t)(pOut_buf_end - pOut_buf_cur), (size_t)(pIn_buf_end - pIn_buf_cur)), counter); - TINFL_MEMCPY(pOut_buf_cur, pIn_buf_cur, n); pIn_buf_cur += n; pOut_buf_cur += n; counter -= (mz_uint)n; + n = MZ_MIN(MZ_MIN((size_t)(pOut_buf_end - pOut_buf_cur), + (size_t)(pIn_buf_end - pIn_buf_cur)), + counter); + TINFL_MEMCPY(pOut_buf_cur, pIn_buf_cur, n); + pIn_buf_cur += n; + pOut_buf_cur += n; + counter -= (mz_uint)n; } - } - else if (r->m_type == 3) - { + } else if (r->m_type == 3) { TINFL_CR_RETURN_FOREVER(10, TINFL_STATUS_FAILED); - } - else - { - if (r->m_type == 1) - { - mz_uint8 *p = r->m_tables[0].m_code_size; mz_uint i; - r->m_table_sizes[0] = 288; r->m_table_sizes[1] = 32; TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32); - for ( i = 0; i <= 143; ++i) *p++ = 8; for ( ; i <= 255; ++i) *p++ = 9; for ( ; i <= 279; ++i) *p++ = 7; for ( ; i <= 287; ++i) *p++ = 8; - } - else - { - for (counter = 0; counter < 3; counter++) { TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]); r->m_table_sizes[counter] += s_min_table_sizes[counter]; } - MZ_CLEAR_OBJ(r->m_tables[2].m_code_size); for (counter = 0; counter < r->m_table_sizes[2]; counter++) { mz_uint s; TINFL_GET_BITS(14, s, 3); r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s; } + } else { + if (r->m_type == 1) { + mz_uint8 *p = r->m_tables[0].m_code_size; + mz_uint i; + r->m_table_sizes[0] = 288; + r->m_table_sizes[1] = 32; + TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32); + for (i = 0; i <= 143; ++i) + *p++ = 8; + for (; i <= 255; ++i) + *p++ = 9; + for (; i <= 279; ++i) + *p++ = 7; + for (; i <= 287; ++i) + *p++ = 8; + } else { + for (counter = 0; counter < 3; counter++) { + TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]); + r->m_table_sizes[counter] += s_min_table_sizes[counter]; + } + MZ_CLEAR_OBJ(r->m_tables[2].m_code_size); + for (counter = 0; counter < r->m_table_sizes[2]; counter++) { + mz_uint s; + TINFL_GET_BITS(14, s, 3); + r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s; + } r->m_table_sizes[2] = 19; } - for ( ; (int)r->m_type >= 0; r->m_type--) - { - int tree_next, tree_cur; tinfl_huff_table *pTable; - mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16]; pTable = &r->m_tables[r->m_type]; MZ_CLEAR_OBJ(total_syms); MZ_CLEAR_OBJ(pTable->m_look_up); MZ_CLEAR_OBJ(pTable->m_tree); - for (i = 0; i < r->m_table_sizes[r->m_type]; ++i) total_syms[pTable->m_code_size[i]]++; - used_syms = 0, total = 0; next_code[0] = next_code[1] = 0; - for (i = 1; i <= 15; ++i) { used_syms += total_syms[i]; next_code[i + 1] = (total = ((total + total_syms[i]) << 1)); } - if ((65536 != total) && (used_syms > 1)) - { + for (; (int)r->m_type >= 0; r->m_type--) { + int tree_next, tree_cur; + tinfl_huff_table *pTable; + mz_uint i, j, used_syms, total, sym_index, next_code[17], + total_syms[16]; + pTable = &r->m_tables[r->m_type]; + MZ_CLEAR_OBJ(total_syms); + MZ_CLEAR_OBJ(pTable->m_look_up); + MZ_CLEAR_OBJ(pTable->m_tree); + for (i = 0; i < r->m_table_sizes[r->m_type]; ++i) + total_syms[pTable->m_code_size[i]]++; + used_syms = 0, total = 0; + next_code[0] = next_code[1] = 0; + for (i = 1; i <= 15; ++i) { + used_syms += total_syms[i]; + next_code[i + 1] = (total = ((total + total_syms[i]) << 1)); + } + if ((65536 != total) && (used_syms > 1)) { TINFL_CR_RETURN_FOREVER(35, TINFL_STATUS_FAILED); } - for (tree_next = -1, sym_index = 0; sym_index < r->m_table_sizes[r->m_type]; ++sym_index) - { - mz_uint rev_code = 0, l, cur_code, code_size = pTable->m_code_size[sym_index]; if (!code_size) continue; - cur_code = next_code[code_size]++; for (l = code_size; l > 0; l--, cur_code >>= 1) rev_code = (rev_code << 1) | (cur_code & 1); - if (code_size <= TINFL_FAST_LOOKUP_BITS) { mz_int16 k = (mz_int16)((code_size << 9) | sym_index); while (rev_code < TINFL_FAST_LOOKUP_SIZE) { pTable->m_look_up[rev_code] = k; rev_code += (1 << code_size); } continue; } - if (0 == (tree_cur = pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)])) { pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next; tree_cur = tree_next; tree_next -= 2; } - rev_code >>= (TINFL_FAST_LOOKUP_BITS - 1); - for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--) - { - tree_cur -= ((rev_code >>= 1) & 1); - if (!pTable->m_tree[-tree_cur - 1]) { pTable->m_tree[-tree_cur - 1] = (mz_int16)tree_next; tree_cur = tree_next; tree_next -= 2; } else tree_cur = pTable->m_tree[-tree_cur - 1]; + for (tree_next = -1, sym_index = 0; + sym_index < r->m_table_sizes[r->m_type]; ++sym_index) { + mz_uint rev_code = 0, l, cur_code, + code_size = pTable->m_code_size[sym_index]; + if (!code_size) + continue; + cur_code = next_code[code_size]++; + for (l = code_size; l > 0; l--, cur_code >>= 1) + rev_code = (rev_code << 1) | (cur_code & 1); + if (code_size <= TINFL_FAST_LOOKUP_BITS) { + mz_int16 k = (mz_int16)((code_size << 9) | sym_index); + while (rev_code < TINFL_FAST_LOOKUP_SIZE) { + pTable->m_look_up[rev_code] = k; + rev_code += (1 << code_size); + } + continue; } - tree_cur -= ((rev_code >>= 1) & 1); pTable->m_tree[-tree_cur - 1] = (mz_int16)sym_index; + if (0 == + (tree_cur = pTable->m_look_up[rev_code & + (TINFL_FAST_LOOKUP_SIZE - 1)])) { + pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = + (mz_int16)tree_next; + tree_cur = tree_next; + tree_next -= 2; + } + rev_code >>= (TINFL_FAST_LOOKUP_BITS - 1); + for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--) { + tree_cur -= ((rev_code >>= 1) & 1); + if (!pTable->m_tree[-tree_cur - 1]) { + pTable->m_tree[-tree_cur - 1] = (mz_int16)tree_next; + tree_cur = tree_next; + tree_next -= 2; + } else + tree_cur = pTable->m_tree[-tree_cur - 1]; + } + tree_cur -= ((rev_code >>= 1) & 1); + pTable->m_tree[-tree_cur - 1] = (mz_int16)sym_index; } - if (r->m_type == 2) - { - for (counter = 0; counter < (r->m_table_sizes[0] + r->m_table_sizes[1]); ) - { - mz_uint s; TINFL_HUFF_DECODE(16, dist, &r->m_tables[2]); if (dist < 16) { r->m_len_codes[counter++] = (mz_uint8)dist; continue; } - if ((dist == 16) && (!counter)) - { + if (r->m_type == 2) { + for (counter = 0; + counter < (r->m_table_sizes[0] + r->m_table_sizes[1]);) { + mz_uint s; + TINFL_HUFF_DECODE(16, dist, &r->m_tables[2]); + if (dist < 16) { + r->m_len_codes[counter++] = (mz_uint8)dist; + continue; + } + if ((dist == 16) && (!counter)) { TINFL_CR_RETURN_FOREVER(17, TINFL_STATUS_FAILED); } - num_extra = "\02\03\07"[dist - 16]; TINFL_GET_BITS(18, s, num_extra); s += "\03\03\013"[dist - 16]; - TINFL_MEMSET(r->m_len_codes + counter, (dist == 16) ? r->m_len_codes[counter - 1] : 0, s); counter += s; + num_extra = "\02\03\07"[dist - 16]; + TINFL_GET_BITS(18, s, num_extra); + s += "\03\03\013"[dist - 16]; + TINFL_MEMSET(r->m_len_codes + counter, + (dist == 16) ? r->m_len_codes[counter - 1] : 0, s); + counter += s; } - if ((r->m_table_sizes[0] + r->m_table_sizes[1]) != counter) - { + if ((r->m_table_sizes[0] + r->m_table_sizes[1]) != counter) { TINFL_CR_RETURN_FOREVER(21, TINFL_STATUS_FAILED); } - TINFL_MEMCPY(r->m_tables[0].m_code_size, r->m_len_codes, r->m_table_sizes[0]); TINFL_MEMCPY(r->m_tables[1].m_code_size, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]); + TINFL_MEMCPY(r->m_tables[0].m_code_size, r->m_len_codes, + r->m_table_sizes[0]); + TINFL_MEMCPY(r->m_tables[1].m_code_size, + r->m_len_codes + r->m_table_sizes[0], + r->m_table_sizes[1]); } } - for ( ; ; ) - { + for (;;) { mz_uint8 *pSrc; - for ( ; ; ) - { - if (((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2)) - { + for (;;) { + if (((pIn_buf_end - pIn_buf_cur) < 4) || + ((pOut_buf_end - pOut_buf_cur) < 2)) { TINFL_HUFF_DECODE(23, counter, &r->m_tables[0]); if (counter >= 256) break; - while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(24, TINFL_STATUS_HAS_MORE_OUTPUT); } - *pOut_buf_cur++ = (mz_uint8)counter; - } - else - { - int sym2; mz_uint code_len; -#if TINFL_USE_64BIT_BITBUF - if (num_bits < 30) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE32(pIn_buf_cur)) << num_bits); pIn_buf_cur += 4; num_bits += 32; } -#else - if (num_bits < 15) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); pIn_buf_cur += 2; num_bits += 16; } -#endif - if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) - code_len = sym2 >> 9; - else - { - code_len = TINFL_FAST_LOOKUP_BITS; do { sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; } while (sym2 < 0); + while (pOut_buf_cur >= pOut_buf_end) { + TINFL_CR_RETURN(24, TINFL_STATUS_HAS_MORE_OUTPUT); } - counter = sym2; bit_buf >>= code_len; num_bits -= code_len; + *pOut_buf_cur++ = (mz_uint8)counter; + } else { + int sym2; + mz_uint code_len; +#if TINFL_USE_64BIT_BITBUF + if (num_bits < 30) { + bit_buf |= + (((tinfl_bit_buf_t)MZ_READ_LE32(pIn_buf_cur)) << num_bits); + pIn_buf_cur += 4; + num_bits += 32; + } +#else + if (num_bits < 15) { + bit_buf |= + (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); + pIn_buf_cur += 2; + num_bits += 16; + } +#endif + if ((sym2 = + r->m_tables[0] + .m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= + 0) + code_len = sym2 >> 9; + else { + code_len = TINFL_FAST_LOOKUP_BITS; + do { + sym2 = r->m_tables[0] + .m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; + } while (sym2 < 0); + } + counter = sym2; + bit_buf >>= code_len; + num_bits -= code_len; if (counter & 256) break; #if !TINFL_USE_64BIT_BITBUF - if (num_bits < 15) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); pIn_buf_cur += 2; num_bits += 16; } -#endif - if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) - code_len = sym2 >> 9; - else - { - code_len = TINFL_FAST_LOOKUP_BITS; do { sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; } while (sym2 < 0); + if (num_bits < 15) { + bit_buf |= + (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); + pIn_buf_cur += 2; + num_bits += 16; } - bit_buf >>= code_len; num_bits -= code_len; +#endif + if ((sym2 = + r->m_tables[0] + .m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= + 0) + code_len = sym2 >> 9; + else { + code_len = TINFL_FAST_LOOKUP_BITS; + do { + sym2 = r->m_tables[0] + .m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; + } while (sym2 < 0); + } + bit_buf >>= code_len; + num_bits -= code_len; pOut_buf_cur[0] = (mz_uint8)counter; - if (sym2 & 256) - { + if (sym2 & 256) { pOut_buf_cur++; counter = sym2; break; @@ -1610,46 +2238,56 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex pOut_buf_cur += 2; } } - if ((counter &= 511) == 256) break; + if ((counter &= 511) == 256) + break; - num_extra = s_length_extra[counter - 257]; counter = s_length_base[counter - 257]; - if (num_extra) { mz_uint extra_bits; TINFL_GET_BITS(25, extra_bits, num_extra); counter += extra_bits; } + num_extra = s_length_extra[counter - 257]; + counter = s_length_base[counter - 257]; + if (num_extra) { + mz_uint extra_bits; + TINFL_GET_BITS(25, extra_bits, num_extra); + counter += extra_bits; + } TINFL_HUFF_DECODE(26, dist, &r->m_tables[1]); - num_extra = s_dist_extra[dist]; dist = s_dist_base[dist]; - if (num_extra) { mz_uint extra_bits; TINFL_GET_BITS(27, extra_bits, num_extra); dist += extra_bits; } + num_extra = s_dist_extra[dist]; + dist = s_dist_base[dist]; + if (num_extra) { + mz_uint extra_bits; + TINFL_GET_BITS(27, extra_bits, num_extra); + dist += extra_bits; + } dist_from_out_buf_start = pOut_buf_cur - pOut_buf_start; - if ((dist > dist_from_out_buf_start) && (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) - { + if ((dist > dist_from_out_buf_start) && + (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) { TINFL_CR_RETURN_FOREVER(37, TINFL_STATUS_FAILED); } - pSrc = pOut_buf_start + ((dist_from_out_buf_start - dist) & out_buf_size_mask); + pSrc = pOut_buf_start + + ((dist_from_out_buf_start - dist) & out_buf_size_mask); - if ((MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end) - { - while (counter--) - { - while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(53, TINFL_STATUS_HAS_MORE_OUTPUT); } - *pOut_buf_cur++ = pOut_buf_start[(dist_from_out_buf_start++ - dist) & out_buf_size_mask]; + if ((MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end) { + while (counter--) { + while (pOut_buf_cur >= pOut_buf_end) { + TINFL_CR_RETURN(53, TINFL_STATUS_HAS_MORE_OUTPUT); + } + *pOut_buf_cur++ = + pOut_buf_start[(dist_from_out_buf_start++ - dist) & + out_buf_size_mask]; } continue; } #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES - else if ((counter >= 9) && (counter <= dist)) - { + else if ((counter >= 9) && (counter <= dist)) { const mz_uint8 *pSrc_end = pSrc + (counter & ~7); - do - { + do { ((mz_uint32 *)pOut_buf_cur)[0] = ((const mz_uint32 *)pSrc)[0]; ((mz_uint32 *)pOut_buf_cur)[1] = ((const mz_uint32 *)pSrc)[1]; pOut_buf_cur += 8; } while ((pSrc += 8) < pSrc_end); - if ((counter &= 7) < 3) - { - if (counter) - { + if ((counter &= 7) < 3) { + if (counter) { pOut_buf_cur[0] = pSrc[0]; if (counter > 1) pOut_buf_cur[1] = pSrc[1]; @@ -1659,15 +2297,14 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex } } #endif - do - { + do { pOut_buf_cur[0] = pSrc[0]; pOut_buf_cur[1] = pSrc[1]; pOut_buf_cur[2] = pSrc[2]; - pOut_buf_cur += 3; pSrc += 3; + pOut_buf_cur += 3; + pSrc += 3; } while ((int)(counter -= 3) > 2); - if ((int)counter > 0) - { + if ((int)counter > 0) { pOut_buf_cur[0] = pSrc[0]; if ((int)counter > 1) pOut_buf_cur[1] = pSrc[1]; @@ -1676,89 +2313,142 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex } } } while (!(r->m_final & 1)); - if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) - { - TINFL_SKIP_BITS(32, num_bits & 7); for (counter = 0; counter < 4; ++counter) { mz_uint s; if (num_bits) TINFL_GET_BITS(41, s, 8); else TINFL_GET_BYTE(42, s); r->m_z_adler32 = (r->m_z_adler32 << 8) | s; } + if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) { + TINFL_SKIP_BITS(32, num_bits & 7); + for (counter = 0; counter < 4; ++counter) { + mz_uint s; + if (num_bits) + TINFL_GET_BITS(41, s, 8); + else + TINFL_GET_BYTE(42, s); + r->m_z_adler32 = (r->m_z_adler32 << 8) | s; + } } TINFL_CR_RETURN_FOREVER(34, TINFL_STATUS_DONE); TINFL_CR_FINISH common_exit: - r->m_num_bits = num_bits; r->m_bit_buf = bit_buf; r->m_dist = dist; r->m_counter = counter; r->m_num_extra = num_extra; r->m_dist_from_out_buf_start = dist_from_out_buf_start; - *pIn_buf_size = pIn_buf_cur - pIn_buf_next; *pOut_buf_size = pOut_buf_cur - pOut_buf_next; - if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0)) - { - const mz_uint8 *ptr = pOut_buf_next; size_t buf_len = *pOut_buf_size; - mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, s2 = r->m_check_adler32 >> 16; size_t block_len = buf_len % 5552; - while (buf_len) - { - for (i = 0; i + 7 < block_len; i += 8, ptr += 8) - { - s1 += ptr[0], s2 += s1; s1 += ptr[1], s2 += s1; s1 += ptr[2], s2 += s1; s1 += ptr[3], s2 += s1; - s1 += ptr[4], s2 += s1; s1 += ptr[5], s2 += s1; s1 += ptr[6], s2 += s1; s1 += ptr[7], s2 += s1; + r->m_num_bits = num_bits; + r->m_bit_buf = bit_buf; + r->m_dist = dist; + r->m_counter = counter; + r->m_num_extra = num_extra; + r->m_dist_from_out_buf_start = dist_from_out_buf_start; + *pIn_buf_size = pIn_buf_cur - pIn_buf_next; + *pOut_buf_size = pOut_buf_cur - pOut_buf_next; + if ((decomp_flags & + (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && + (status >= 0)) { + const mz_uint8 *ptr = pOut_buf_next; + size_t buf_len = *pOut_buf_size; + mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, + s2 = r->m_check_adler32 >> 16; + size_t block_len = buf_len % 5552; + while (buf_len) { + for (i = 0; i + 7 < block_len; i += 8, ptr += 8) { + s1 += ptr[0], s2 += s1; + s1 += ptr[1], s2 += s1; + s1 += ptr[2], s2 += s1; + s1 += ptr[3], s2 += s1; + s1 += ptr[4], s2 += s1; + s1 += ptr[5], s2 += s1; + s1 += ptr[6], s2 += s1; + s1 += ptr[7], s2 += s1; } - for ( ; i < block_len; ++i) s1 += *ptr++, s2 += s1; - s1 %= 65521U, s2 %= 65521U; buf_len -= block_len; block_len = 5552; + for (; i < block_len; ++i) + s1 += *ptr++, s2 += s1; + s1 %= 65521U, s2 %= 65521U; + buf_len -= block_len; + block_len = 5552; } - r->m_check_adler32 = (s2 << 16) + s1; if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32)) status = TINFL_STATUS_ADLER32_MISMATCH; + r->m_check_adler32 = (s2 << 16) + s1; + if ((status == TINFL_STATUS_DONE) && + (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && + (r->m_check_adler32 != r->m_z_adler32)) + status = TINFL_STATUS_ADLER32_MISMATCH; } return status; } // Higher level helper functions. -void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags) -{ - tinfl_decompressor decomp; void *pBuf = NULL, *pNew_buf; size_t src_buf_ofs = 0, out_buf_capacity = 0; +void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, + size_t *pOut_len, int flags) { + tinfl_decompressor decomp; + void *pBuf = NULL, *pNew_buf; + size_t src_buf_ofs = 0, out_buf_capacity = 0; *pOut_len = 0; tinfl_init(&decomp); - for ( ; ; ) - { - size_t src_buf_size = src_buf_len - src_buf_ofs, dst_buf_size = out_buf_capacity - *pOut_len, new_out_buf_capacity; - tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8*)pSrc_buf + src_buf_ofs, &src_buf_size, (mz_uint8*)pBuf, pBuf ? (mz_uint8*)pBuf + *pOut_len : NULL, &dst_buf_size, - (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF); - if ((status < 0) || (status == TINFL_STATUS_NEEDS_MORE_INPUT)) - { - MZ_FREE(pBuf); *pOut_len = 0; return NULL; + for (;;) { + size_t src_buf_size = src_buf_len - src_buf_ofs, + dst_buf_size = out_buf_capacity - *pOut_len, new_out_buf_capacity; + tinfl_status status = tinfl_decompress( + &decomp, (const mz_uint8 *)pSrc_buf + src_buf_ofs, &src_buf_size, + (mz_uint8 *)pBuf, pBuf ? (mz_uint8 *)pBuf + *pOut_len : NULL, + &dst_buf_size, + (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | + TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF); + if ((status < 0) || (status == TINFL_STATUS_NEEDS_MORE_INPUT)) { + MZ_FREE(pBuf); + *pOut_len = 0; + return NULL; } src_buf_ofs += src_buf_size; *pOut_len += dst_buf_size; - if (status == TINFL_STATUS_DONE) break; - new_out_buf_capacity = out_buf_capacity * 2; if (new_out_buf_capacity < 128) new_out_buf_capacity = 128; + if (status == TINFL_STATUS_DONE) + break; + new_out_buf_capacity = out_buf_capacity * 2; + if (new_out_buf_capacity < 128) + new_out_buf_capacity = 128; pNew_buf = MZ_REALLOC(pBuf, new_out_buf_capacity); - if (!pNew_buf) - { - MZ_FREE(pBuf); *pOut_len = 0; return NULL; + if (!pNew_buf) { + MZ_FREE(pBuf); + *pOut_len = 0; + return NULL; } - pBuf = pNew_buf; out_buf_capacity = new_out_buf_capacity; + pBuf = pNew_buf; + out_buf_capacity = new_out_buf_capacity; } return pBuf; } -size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags) -{ - tinfl_decompressor decomp; tinfl_status status; tinfl_init(&decomp); - status = tinfl_decompress(&decomp, (const mz_uint8*)pSrc_buf, &src_buf_len, (mz_uint8*)pOut_buf, (mz_uint8*)pOut_buf, &out_buf_len, (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF); - return (status != TINFL_STATUS_DONE) ? TINFL_DECOMPRESS_MEM_TO_MEM_FAILED : out_buf_len; +size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, + const void *pSrc_buf, size_t src_buf_len, + int flags) { + tinfl_decompressor decomp; + tinfl_status status; + tinfl_init(&decomp); + status = + tinfl_decompress(&decomp, (const mz_uint8 *)pSrc_buf, &src_buf_len, + (mz_uint8 *)pOut_buf, (mz_uint8 *)pOut_buf, &out_buf_len, + (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | + TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF); + return (status != TINFL_STATUS_DONE) ? TINFL_DECOMPRESS_MEM_TO_MEM_FAILED + : out_buf_len; } -int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags) -{ +int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, + tinfl_put_buf_func_ptr pPut_buf_func, + void *pPut_buf_user, int flags) { int result = 0; tinfl_decompressor decomp; - mz_uint8 *pDict = (mz_uint8*)MZ_MALLOC(TINFL_LZ_DICT_SIZE); size_t in_buf_ofs = 0, dict_ofs = 0; + mz_uint8 *pDict = (mz_uint8 *)MZ_MALLOC(TINFL_LZ_DICT_SIZE); + size_t in_buf_ofs = 0, dict_ofs = 0; if (!pDict) return TINFL_STATUS_FAILED; tinfl_init(&decomp); - for ( ; ; ) - { - size_t in_buf_size = *pIn_buf_size - in_buf_ofs, dst_buf_size = TINFL_LZ_DICT_SIZE - dict_ofs; - tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8*)pIn_buf + in_buf_ofs, &in_buf_size, pDict, pDict + dict_ofs, &dst_buf_size, - (flags & ~(TINFL_FLAG_HAS_MORE_INPUT | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))); + for (;;) { + size_t in_buf_size = *pIn_buf_size - in_buf_ofs, + dst_buf_size = TINFL_LZ_DICT_SIZE - dict_ofs; + tinfl_status status = + tinfl_decompress(&decomp, (const mz_uint8 *)pIn_buf + in_buf_ofs, + &in_buf_size, pDict, pDict + dict_ofs, &dst_buf_size, + (flags & ~(TINFL_FLAG_HAS_MORE_INPUT | + TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))); in_buf_ofs += in_buf_size; - if ((dst_buf_size) && (!(*pPut_buf_func)(pDict + dict_ofs, (int)dst_buf_size, pPut_buf_user))) + if ((dst_buf_size) && + (!(*pPut_buf_func)(pDict + dict_ofs, (int)dst_buf_size, pPut_buf_user))) break; - if (status != TINFL_STATUS_HAS_MORE_OUTPUT) - { + if (status != TINFL_STATUS_HAS_MORE_OUTPUT) { result = (status == TINFL_STATUS_DONE); break; } @@ -1769,220 +2459,390 @@ int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, return result; } -// ------------------- Low-level Compression (independent from all decompression API's) +// ------------------- Low-level Compression (independent from all decompression +// API's) // Purposely making these tables static for faster init and thread safety. static const mz_uint16 s_tdefl_len_sym[256] = { - 257,258,259,260,261,262,263,264,265,265,266,266,267,267,268,268,269,269,269,269,270,270,270,270,271,271,271,271,272,272,272,272, - 273,273,273,273,273,273,273,273,274,274,274,274,274,274,274,274,275,275,275,275,275,275,275,275,276,276,276,276,276,276,276,276, - 277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, - 279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280, - 281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281, - 282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282, - 283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283, - 284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,285 }; + 257, 258, 259, 260, 261, 262, 263, 264, 265, 265, 266, 266, 267, 267, 268, + 268, 269, 269, 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, 272, 272, + 272, 272, 273, 273, 273, 273, 273, 273, 273, 273, 274, 274, 274, 274, 274, + 274, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275, 276, 276, 276, 276, + 276, 276, 276, 276, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, 279, 279, + 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, 281, 281, 281, 281, 281, 281, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 284, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, + 285}; static const mz_uint8 s_tdefl_len_extra[256] = { - 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0 }; + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0}; static const mz_uint8 s_tdefl_small_dist_sym[512] = { - 0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11, - 11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17, - 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, - 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, - 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17 }; + 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, + 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17}; static const mz_uint8 s_tdefl_small_dist_extra[512] = { - 0,0,0,0,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7 }; + 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}; static const mz_uint8 s_tdefl_large_dist_sym[128] = { - 0,0,18,19,20,20,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26, - 26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, - 28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29 }; + 0, 0, 18, 19, 20, 20, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, + 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29}; static const mz_uint8 s_tdefl_large_dist_extra[128] = { - 0,0,8,8,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13 }; + 0, 0, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}; -// Radix sorts tdefl_sym_freq[] array by 16-bit key m_key. Returns ptr to sorted values. -typedef struct { mz_uint16 m_key, m_sym_index; } tdefl_sym_freq; -static tdefl_sym_freq* tdefl_radix_sort_syms(mz_uint num_syms, tdefl_sym_freq* pSyms0, tdefl_sym_freq* pSyms1) -{ - mz_uint32 total_passes = 2, pass_shift, pass, i, hist[256 * 2]; tdefl_sym_freq* pCur_syms = pSyms0, *pNew_syms = pSyms1; MZ_CLEAR_OBJ(hist); - for (i = 0; i < num_syms; i++) { mz_uint freq = pSyms0[i].m_key; hist[freq & 0xFF]++; hist[256 + ((freq >> 8) & 0xFF)]++; } - while ((total_passes > 1) && (num_syms == hist[(total_passes - 1) * 256])) total_passes--; - for (pass_shift = 0, pass = 0; pass < total_passes; pass++, pass_shift += 8) - { - const mz_uint32* pHist = &hist[pass << 8]; +// Radix sorts tdefl_sym_freq[] array by 16-bit key m_key. Returns ptr to sorted +// values. +typedef struct { + mz_uint16 m_key, m_sym_index; +} tdefl_sym_freq; +static tdefl_sym_freq *tdefl_radix_sort_syms(mz_uint num_syms, + tdefl_sym_freq *pSyms0, + tdefl_sym_freq *pSyms1) { + mz_uint32 total_passes = 2, pass_shift, pass, i, hist[256 * 2]; + tdefl_sym_freq *pCur_syms = pSyms0, *pNew_syms = pSyms1; + MZ_CLEAR_OBJ(hist); + for (i = 0; i < num_syms; i++) { + mz_uint freq = pSyms0[i].m_key; + hist[freq & 0xFF]++; + hist[256 + ((freq >> 8) & 0xFF)]++; + } + while ((total_passes > 1) && (num_syms == hist[(total_passes - 1) * 256])) + total_passes--; + for (pass_shift = 0, pass = 0; pass < total_passes; pass++, pass_shift += 8) { + const mz_uint32 *pHist = &hist[pass << 8]; mz_uint offsets[256], cur_ofs = 0; - for (i = 0; i < 256; i++) { offsets[i] = cur_ofs; cur_ofs += pHist[i]; } - for (i = 0; i < num_syms; i++) pNew_syms[offsets[(pCur_syms[i].m_key >> pass_shift) & 0xFF]++] = pCur_syms[i]; - { tdefl_sym_freq* t = pCur_syms; pCur_syms = pNew_syms; pNew_syms = t; } + for (i = 0; i < 256; i++) { + offsets[i] = cur_ofs; + cur_ofs += pHist[i]; + } + for (i = 0; i < num_syms; i++) + pNew_syms[offsets[(pCur_syms[i].m_key >> pass_shift) & 0xFF]++] = + pCur_syms[i]; + { + tdefl_sym_freq *t = pCur_syms; + pCur_syms = pNew_syms; + pNew_syms = t; + } } return pCur_syms; } -// tdefl_calculate_minimum_redundancy() originally written by: Alistair Moffat, alistair@cs.mu.oz.au, Jyrki Katajainen, jyrki@diku.dk, November 1996. -static void tdefl_calculate_minimum_redundancy(tdefl_sym_freq *A, int n) -{ +// tdefl_calculate_minimum_redundancy() originally written by: Alistair Moffat, +// alistair@cs.mu.oz.au, Jyrki Katajainen, jyrki@diku.dk, November 1996. +static void tdefl_calculate_minimum_redundancy(tdefl_sym_freq *A, int n) { int root, leaf, next, avbl, used, dpth; - if (n==0) return; else if (n==1) { A[0].m_key = 1; return; } - A[0].m_key += A[1].m_key; root = 0; leaf = 2; - for (next=1; next < n-1; next++) - { - if (leaf>=n || A[root].m_key=n || (root=0; next--) A[next].m_key = A[A[next].m_key].m_key+1; - avbl = 1; used = dpth = 0; root = n-2; next = n-1; - while (avbl>0) - { - while (root>=0 && (int)A[root].m_key==dpth) { used++; root--; } - while (avbl>used) { A[next--].m_key = (mz_uint16)(dpth); avbl--; } - avbl = 2*used; dpth++; used = 0; + A[0].m_key += A[1].m_key; + root = 0; + leaf = 2; + for (next = 1; next < n - 1; next++) { + if (leaf >= n || A[root].m_key < A[leaf].m_key) { + A[next].m_key = A[root].m_key; + A[root++].m_key = (mz_uint16)next; + } else + A[next].m_key = A[leaf++].m_key; + if (leaf >= n || (root < next && A[root].m_key < A[leaf].m_key)) { + A[next].m_key = (mz_uint16)(A[next].m_key + A[root].m_key); + A[root++].m_key = (mz_uint16)next; + } else + A[next].m_key = (mz_uint16)(A[next].m_key + A[leaf++].m_key); + } + A[n - 2].m_key = 0; + for (next = n - 3; next >= 0; next--) + A[next].m_key = A[A[next].m_key].m_key + 1; + avbl = 1; + used = dpth = 0; + root = n - 2; + next = n - 1; + while (avbl > 0) { + while (root >= 0 && (int)A[root].m_key == dpth) { + used++; + root--; + } + while (avbl > used) { + A[next--].m_key = (mz_uint16)(dpth); + avbl--; + } + avbl = 2 * used; + dpth++; + used = 0; } } // Limits canonical Huffman code table's max code size. enum { TDEFL_MAX_SUPPORTED_HUFF_CODESIZE = 32 }; -static void tdefl_huffman_enforce_max_code_size(int *pNum_codes, int code_list_len, int max_code_size) -{ - int i; mz_uint32 total = 0; if (code_list_len <= 1) return; - for (i = max_code_size + 1; i <= TDEFL_MAX_SUPPORTED_HUFF_CODESIZE; i++) pNum_codes[max_code_size] += pNum_codes[i]; - for (i = max_code_size; i > 0; i--) total += (((mz_uint32)pNum_codes[i]) << (max_code_size - i)); - while (total != (1UL << max_code_size)) - { +static void tdefl_huffman_enforce_max_code_size(int *pNum_codes, + int code_list_len, + int max_code_size) { + int i; + mz_uint32 total = 0; + if (code_list_len <= 1) + return; + for (i = max_code_size + 1; i <= TDEFL_MAX_SUPPORTED_HUFF_CODESIZE; i++) + pNum_codes[max_code_size] += pNum_codes[i]; + for (i = max_code_size; i > 0; i--) + total += (((mz_uint32)pNum_codes[i]) << (max_code_size - i)); + while (total != (1UL << max_code_size)) { pNum_codes[max_code_size]--; - for (i = max_code_size - 1; i > 0; i--) if (pNum_codes[i]) { pNum_codes[i]--; pNum_codes[i + 1] += 2; break; } + for (i = max_code_size - 1; i > 0; i--) + if (pNum_codes[i]) { + pNum_codes[i]--; + pNum_codes[i + 1] += 2; + break; + } total--; } } -static void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, int table_len, int code_size_limit, int static_table) -{ - int i, j, l, num_codes[1 + TDEFL_MAX_SUPPORTED_HUFF_CODESIZE]; mz_uint next_code[TDEFL_MAX_SUPPORTED_HUFF_CODESIZE + 1]; MZ_CLEAR_OBJ(num_codes); - if (static_table) - { - for (i = 0; i < table_len; i++) num_codes[d->m_huff_code_sizes[table_num][i]]++; - } - else - { - tdefl_sym_freq syms0[TDEFL_MAX_HUFF_SYMBOLS], syms1[TDEFL_MAX_HUFF_SYMBOLS], *pSyms; +static void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, + int table_len, int code_size_limit, + int static_table) { + int i, j, l, num_codes[1 + TDEFL_MAX_SUPPORTED_HUFF_CODESIZE]; + mz_uint next_code[TDEFL_MAX_SUPPORTED_HUFF_CODESIZE + 1]; + MZ_CLEAR_OBJ(num_codes); + if (static_table) { + for (i = 0; i < table_len; i++) + num_codes[d->m_huff_code_sizes[table_num][i]]++; + } else { + tdefl_sym_freq syms0[TDEFL_MAX_HUFF_SYMBOLS], syms1[TDEFL_MAX_HUFF_SYMBOLS], + *pSyms; int num_used_syms = 0; const mz_uint16 *pSym_count = &d->m_huff_count[table_num][0]; - for (i = 0; i < table_len; i++) if (pSym_count[i]) { syms0[num_used_syms].m_key = (mz_uint16)pSym_count[i]; syms0[num_used_syms++].m_sym_index = (mz_uint16)i; } + for (i = 0; i < table_len; i++) + if (pSym_count[i]) { + syms0[num_used_syms].m_key = (mz_uint16)pSym_count[i]; + syms0[num_used_syms++].m_sym_index = (mz_uint16)i; + } - pSyms = tdefl_radix_sort_syms(num_used_syms, syms0, syms1); tdefl_calculate_minimum_redundancy(pSyms, num_used_syms); + pSyms = tdefl_radix_sort_syms(num_used_syms, syms0, syms1); + tdefl_calculate_minimum_redundancy(pSyms, num_used_syms); - for (i = 0; i < num_used_syms; i++) num_codes[pSyms[i].m_key]++; + for (i = 0; i < num_used_syms; i++) + num_codes[pSyms[i].m_key]++; - tdefl_huffman_enforce_max_code_size(num_codes, num_used_syms, code_size_limit); + tdefl_huffman_enforce_max_code_size(num_codes, num_used_syms, + code_size_limit); - MZ_CLEAR_OBJ(d->m_huff_code_sizes[table_num]); MZ_CLEAR_OBJ(d->m_huff_codes[table_num]); + MZ_CLEAR_OBJ(d->m_huff_code_sizes[table_num]); + MZ_CLEAR_OBJ(d->m_huff_codes[table_num]); for (i = 1, j = num_used_syms; i <= code_size_limit; i++) - for (l = num_codes[i]; l > 0; l--) d->m_huff_code_sizes[table_num][pSyms[--j].m_sym_index] = (mz_uint8)(i); + for (l = num_codes[i]; l > 0; l--) + d->m_huff_code_sizes[table_num][pSyms[--j].m_sym_index] = (mz_uint8)(i); } - next_code[1] = 0; for (j = 0, i = 2; i <= code_size_limit; i++) next_code[i] = j = ((j + num_codes[i - 1]) << 1); + next_code[1] = 0; + for (j = 0, i = 2; i <= code_size_limit; i++) + next_code[i] = j = ((j + num_codes[i - 1]) << 1); - for (i = 0; i < table_len; i++) - { - mz_uint rev_code = 0, code, code_size; if ((code_size = d->m_huff_code_sizes[table_num][i]) == 0) continue; - code = next_code[code_size]++; for (l = code_size; l > 0; l--, code >>= 1) rev_code = (rev_code << 1) | (code & 1); + for (i = 0; i < table_len; i++) { + mz_uint rev_code = 0, code, code_size; + if ((code_size = d->m_huff_code_sizes[table_num][i]) == 0) + continue; + code = next_code[code_size]++; + for (l = code_size; l > 0; l--, code >>= 1) + rev_code = (rev_code << 1) | (code & 1); d->m_huff_codes[table_num][i] = (mz_uint16)rev_code; } } -#define TDEFL_PUT_BITS(b, l) do { \ - mz_uint bits = b; mz_uint len = l; MZ_ASSERT(bits <= ((1U << len) - 1U)); \ - d->m_bit_buffer |= (bits << d->m_bits_in); d->m_bits_in += len; \ - while (d->m_bits_in >= 8) { \ - if (d->m_pOutput_buf < d->m_pOutput_buf_end) \ - *d->m_pOutput_buf++ = (mz_uint8)(d->m_bit_buffer); \ - d->m_bit_buffer >>= 8; \ - d->m_bits_in -= 8; \ - } \ -} MZ_MACRO_END +#define TDEFL_PUT_BITS(b, l) \ + do { \ + mz_uint bits = b; \ + mz_uint len = l; \ + MZ_ASSERT(bits <= ((1U << len) - 1U)); \ + d->m_bit_buffer |= (bits << d->m_bits_in); \ + d->m_bits_in += len; \ + while (d->m_bits_in >= 8) { \ + if (d->m_pOutput_buf < d->m_pOutput_buf_end) \ + *d->m_pOutput_buf++ = (mz_uint8)(d->m_bit_buffer); \ + d->m_bit_buffer >>= 8; \ + d->m_bits_in -= 8; \ + } \ + } \ + MZ_MACRO_END -#define TDEFL_RLE_PREV_CODE_SIZE() { if (rle_repeat_count) { \ - if (rle_repeat_count < 3) { \ - d->m_huff_count[2][prev_code_size] = (mz_uint16)(d->m_huff_count[2][prev_code_size] + rle_repeat_count); \ - while (rle_repeat_count--) packed_code_sizes[num_packed_code_sizes++] = prev_code_size; \ - } else { \ - d->m_huff_count[2][16] = (mz_uint16)(d->m_huff_count[2][16] + 1); packed_code_sizes[num_packed_code_sizes++] = 16; packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_repeat_count - 3); \ -} rle_repeat_count = 0; } } +#define TDEFL_RLE_PREV_CODE_SIZE() \ + { \ + if (rle_repeat_count) { \ + if (rle_repeat_count < 3) { \ + d->m_huff_count[2][prev_code_size] = (mz_uint16)( \ + d->m_huff_count[2][prev_code_size] + rle_repeat_count); \ + while (rle_repeat_count--) \ + packed_code_sizes[num_packed_code_sizes++] = prev_code_size; \ + } else { \ + d->m_huff_count[2][16] = (mz_uint16)(d->m_huff_count[2][16] + 1); \ + packed_code_sizes[num_packed_code_sizes++] = 16; \ + packed_code_sizes[num_packed_code_sizes++] = \ + (mz_uint8)(rle_repeat_count - 3); \ + } \ + rle_repeat_count = 0; \ + } \ + } -#define TDEFL_RLE_ZERO_CODE_SIZE() { if (rle_z_count) { \ - if (rle_z_count < 3) { \ - d->m_huff_count[2][0] = (mz_uint16)(d->m_huff_count[2][0] + rle_z_count); while (rle_z_count--) packed_code_sizes[num_packed_code_sizes++] = 0; \ - } else if (rle_z_count <= 10) { \ - d->m_huff_count[2][17] = (mz_uint16)(d->m_huff_count[2][17] + 1); packed_code_sizes[num_packed_code_sizes++] = 17; packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 3); \ - } else { \ - d->m_huff_count[2][18] = (mz_uint16)(d->m_huff_count[2][18] + 1); packed_code_sizes[num_packed_code_sizes++] = 18; packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 11); \ -} rle_z_count = 0; } } +#define TDEFL_RLE_ZERO_CODE_SIZE() \ + { \ + if (rle_z_count) { \ + if (rle_z_count < 3) { \ + d->m_huff_count[2][0] = \ + (mz_uint16)(d->m_huff_count[2][0] + rle_z_count); \ + while (rle_z_count--) \ + packed_code_sizes[num_packed_code_sizes++] = 0; \ + } else if (rle_z_count <= 10) { \ + d->m_huff_count[2][17] = (mz_uint16)(d->m_huff_count[2][17] + 1); \ + packed_code_sizes[num_packed_code_sizes++] = 17; \ + packed_code_sizes[num_packed_code_sizes++] = \ + (mz_uint8)(rle_z_count - 3); \ + } else { \ + d->m_huff_count[2][18] = (mz_uint16)(d->m_huff_count[2][18] + 1); \ + packed_code_sizes[num_packed_code_sizes++] = 18; \ + packed_code_sizes[num_packed_code_sizes++] = \ + (mz_uint8)(rle_z_count - 11); \ + } \ + rle_z_count = 0; \ + } \ + } -static mz_uint8 s_tdefl_packed_code_size_syms_swizzle[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; +static mz_uint8 s_tdefl_packed_code_size_syms_swizzle[] = { + 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; -static void tdefl_start_dynamic_block(tdefl_compressor *d) -{ - int num_lit_codes, num_dist_codes, num_bit_lengths; mz_uint i, total_code_sizes_to_pack, num_packed_code_sizes, rle_z_count, rle_repeat_count, packed_code_sizes_index; - mz_uint8 code_sizes_to_pack[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], packed_code_sizes[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], prev_code_size = 0xFF; +static void tdefl_start_dynamic_block(tdefl_compressor *d) { + int num_lit_codes, num_dist_codes, num_bit_lengths; + mz_uint i, total_code_sizes_to_pack, num_packed_code_sizes, rle_z_count, + rle_repeat_count, packed_code_sizes_index; + mz_uint8 + code_sizes_to_pack[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], + packed_code_sizes[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], + prev_code_size = 0xFF; d->m_huff_count[0][256] = 1; tdefl_optimize_huffman_table(d, 0, TDEFL_MAX_HUFF_SYMBOLS_0, 15, MZ_FALSE); tdefl_optimize_huffman_table(d, 1, TDEFL_MAX_HUFF_SYMBOLS_1, 15, MZ_FALSE); - for (num_lit_codes = 286; num_lit_codes > 257; num_lit_codes--) if (d->m_huff_code_sizes[0][num_lit_codes - 1]) break; - for (num_dist_codes = 30; num_dist_codes > 1; num_dist_codes--) if (d->m_huff_code_sizes[1][num_dist_codes - 1]) break; + for (num_lit_codes = 286; num_lit_codes > 257; num_lit_codes--) + if (d->m_huff_code_sizes[0][num_lit_codes - 1]) + break; + for (num_dist_codes = 30; num_dist_codes > 1; num_dist_codes--) + if (d->m_huff_code_sizes[1][num_dist_codes - 1]) + break; - memcpy(code_sizes_to_pack, &d->m_huff_code_sizes[0][0], num_lit_codes); - memcpy(code_sizes_to_pack + num_lit_codes, &d->m_huff_code_sizes[1][0], num_dist_codes); - total_code_sizes_to_pack = num_lit_codes + num_dist_codes; num_packed_code_sizes = 0; rle_z_count = 0; rle_repeat_count = 0; + memcpy(code_sizes_to_pack, &d->m_huff_code_sizes[0][0], + sizeof(mz_uint8) * num_lit_codes); + memcpy(code_sizes_to_pack + num_lit_codes, &d->m_huff_code_sizes[1][0], + sizeof(mz_uint8) * num_dist_codes); + total_code_sizes_to_pack = num_lit_codes + num_dist_codes; + num_packed_code_sizes = 0; + rle_z_count = 0; + rle_repeat_count = 0; - memset(&d->m_huff_count[2][0], 0, sizeof(d->m_huff_count[2][0]) * TDEFL_MAX_HUFF_SYMBOLS_2); - for (i = 0; i < total_code_sizes_to_pack; i++) - { + memset(&d->m_huff_count[2][0], 0, + sizeof(d->m_huff_count[2][0]) * TDEFL_MAX_HUFF_SYMBOLS_2); + for (i = 0; i < total_code_sizes_to_pack; i++) { mz_uint8 code_size = code_sizes_to_pack[i]; - if (!code_size) - { + if (!code_size) { TDEFL_RLE_PREV_CODE_SIZE(); - if (++rle_z_count == 138) { TDEFL_RLE_ZERO_CODE_SIZE(); } - } - else - { - TDEFL_RLE_ZERO_CODE_SIZE(); - if (code_size != prev_code_size) - { - TDEFL_RLE_PREV_CODE_SIZE(); - d->m_huff_count[2][code_size] = (mz_uint16)(d->m_huff_count[2][code_size] + 1); packed_code_sizes[num_packed_code_sizes++] = code_size; + if (++rle_z_count == 138) { + TDEFL_RLE_ZERO_CODE_SIZE(); } - else if (++rle_repeat_count == 6) - { + } else { + TDEFL_RLE_ZERO_CODE_SIZE(); + if (code_size != prev_code_size) { + TDEFL_RLE_PREV_CODE_SIZE(); + d->m_huff_count[2][code_size] = + (mz_uint16)(d->m_huff_count[2][code_size] + 1); + packed_code_sizes[num_packed_code_sizes++] = code_size; + } else if (++rle_repeat_count == 6) { TDEFL_RLE_PREV_CODE_SIZE(); } } prev_code_size = code_size; } - if (rle_repeat_count) { TDEFL_RLE_PREV_CODE_SIZE(); } else { TDEFL_RLE_ZERO_CODE_SIZE(); } + if (rle_repeat_count) { + TDEFL_RLE_PREV_CODE_SIZE(); + } else { + TDEFL_RLE_ZERO_CODE_SIZE(); + } tdefl_optimize_huffman_table(d, 2, TDEFL_MAX_HUFF_SYMBOLS_2, 7, MZ_FALSE); @@ -1991,27 +2851,39 @@ static void tdefl_start_dynamic_block(tdefl_compressor *d) TDEFL_PUT_BITS(num_lit_codes - 257, 5); TDEFL_PUT_BITS(num_dist_codes - 1, 5); - for (num_bit_lengths = 18; num_bit_lengths >= 0; num_bit_lengths--) if (d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[num_bit_lengths]]) break; - num_bit_lengths = MZ_MAX(4, (num_bit_lengths + 1)); TDEFL_PUT_BITS(num_bit_lengths - 4, 4); - for (i = 0; (int)i < num_bit_lengths; i++) TDEFL_PUT_BITS(d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[i]], 3); + for (num_bit_lengths = 18; num_bit_lengths >= 0; num_bit_lengths--) + if (d->m_huff_code_sizes + [2][s_tdefl_packed_code_size_syms_swizzle[num_bit_lengths]]) + break; + num_bit_lengths = MZ_MAX(4, (num_bit_lengths + 1)); + TDEFL_PUT_BITS(num_bit_lengths - 4, 4); + for (i = 0; (int)i < num_bit_lengths; i++) + TDEFL_PUT_BITS( + d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[i]], 3); - for (packed_code_sizes_index = 0; packed_code_sizes_index < num_packed_code_sizes; ) - { - mz_uint code = packed_code_sizes[packed_code_sizes_index++]; MZ_ASSERT(code < TDEFL_MAX_HUFF_SYMBOLS_2); + for (packed_code_sizes_index = 0; + packed_code_sizes_index < num_packed_code_sizes;) { + mz_uint code = packed_code_sizes[packed_code_sizes_index++]; + MZ_ASSERT(code < TDEFL_MAX_HUFF_SYMBOLS_2); TDEFL_PUT_BITS(d->m_huff_codes[2][code], d->m_huff_code_sizes[2][code]); - if (code >= 16) TDEFL_PUT_BITS(packed_code_sizes[packed_code_sizes_index++], "\02\03\07"[code - 16]); + if (code >= 16) + TDEFL_PUT_BITS(packed_code_sizes[packed_code_sizes_index++], + "\02\03\07"[code - 16]); } } -static void tdefl_start_static_block(tdefl_compressor *d) -{ +static void tdefl_start_static_block(tdefl_compressor *d) { mz_uint i; mz_uint8 *p = &d->m_huff_code_sizes[0][0]; - for (i = 0; i <= 143; ++i) *p++ = 8; - for ( ; i <= 255; ++i) *p++ = 9; - for ( ; i <= 279; ++i) *p++ = 7; - for ( ; i <= 287; ++i) *p++ = 8; + for (i = 0; i <= 143; ++i) + *p++ = 8; + for (; i <= 255; ++i) + *p++ = 9; + for (; i <= 279; ++i) + *p++ = 7; + for (; i <= 287; ++i) + *p++ = 8; memset(d->m_huff_code_sizes[1], 5, 32); @@ -2021,11 +2893,13 @@ static void tdefl_start_static_block(tdefl_compressor *d) TDEFL_PUT_BITS(1, 2); } -static const mz_uint mz_bitmasks[17] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF }; +static const mz_uint mz_bitmasks[17] = { + 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, + 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF}; -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS -static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) -{ +#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && \ + MINIZ_HAS_64BIT_REGISTERS +static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) { mz_uint flags; mz_uint8 *pLZ_codes; mz_uint8 *pOutput_buf = d->m_pOutput_buf; @@ -2033,22 +2907,29 @@ static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) mz_uint64 bit_buffer = d->m_bit_buffer; mz_uint bits_in = d->m_bits_in; -#define TDEFL_PUT_BITS_FAST(b, l) { bit_buffer |= (((mz_uint64)(b)) << bits_in); bits_in += (l); } +#define TDEFL_PUT_BITS_FAST(b, l) \ + { \ + bit_buffer |= (((mz_uint64)(b)) << bits_in); \ + bits_in += (l); \ + } flags = 1; - for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < pLZ_code_buf_end; flags >>= 1) - { + for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < pLZ_code_buf_end; + flags >>= 1) { if (flags == 1) flags = *pLZ_codes++ | 0x100; - if (flags & 1) - { + if (flags & 1) { mz_uint s0, s1, n0, n1, sym, num_extra_bits; - mz_uint match_len = pLZ_codes[0], match_dist = *(const mz_uint16 *)(pLZ_codes + 1); pLZ_codes += 3; + mz_uint match_len = pLZ_codes[0], + match_dist = *(const mz_uint16 *)(pLZ_codes + 1); + pLZ_codes += 3; MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS_FAST(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]); + TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], + d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); + TDEFL_PUT_BITS_FAST(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], + s_tdefl_len_extra[match_len]); // This sequence coaxes MSVC into using cmov's vs. jmp's. s0 = s_tdefl_small_dist_sym[match_dist & 511]; @@ -2059,28 +2940,29 @@ static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) num_extra_bits = (match_dist < 512) ? n0 : n1; MZ_ASSERT(d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS_FAST(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits); - } - else - { + TDEFL_PUT_BITS_FAST(d->m_huff_codes[1][sym], + d->m_huff_code_sizes[1][sym]); + TDEFL_PUT_BITS_FAST(match_dist & mz_bitmasks[num_extra_bits], + num_extra_bits); + } else { mz_uint lit = *pLZ_codes++; MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); + TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], + d->m_huff_code_sizes[0][lit]); - if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end)) - { + if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end)) { flags >>= 1; lit = *pLZ_codes++; MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); + TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], + d->m_huff_code_sizes[0][lit]); - if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end)) - { + if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end)) { flags >>= 1; lit = *pLZ_codes++; MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); + TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], + d->m_huff_code_sizes[0][lit]); } } } @@ -2088,7 +2970,7 @@ static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) if (pOutput_buf >= d->m_pOutput_buf_end) return MZ_FALSE; - *(mz_uint64*)pOutput_buf = bit_buffer; + *(mz_uint64 *)pOutput_buf = bit_buffer; pOutput_buf += (bits_in >> 3); bit_buffer >>= (bits_in & ~7); bits_in &= 7; @@ -2100,8 +2982,7 @@ static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) d->m_bits_in = 0; d->m_bit_buffer = 0; - while (bits_in) - { + while (bits_in) { mz_uint32 n = MZ_MIN(bits_in, 16); TDEFL_PUT_BITS((mz_uint)bit_buffer & mz_bitmasks[n], n); bit_buffer >>= n; @@ -2113,39 +2994,37 @@ static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) return (d->m_pOutput_buf < d->m_pOutput_buf_end); } #else -static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) -{ +static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) { mz_uint flags; mz_uint8 *pLZ_codes; flags = 1; - for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < d->m_pLZ_code_buf; flags >>= 1) - { + for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < d->m_pLZ_code_buf; + flags >>= 1) { if (flags == 1) flags = *pLZ_codes++ | 0x100; - if (flags & 1) - { + if (flags & 1) { mz_uint sym, num_extra_bits; - mz_uint match_len = pLZ_codes[0], match_dist = (pLZ_codes[1] | (pLZ_codes[2] << 8)); pLZ_codes += 3; + mz_uint match_len = pLZ_codes[0], + match_dist = (pLZ_codes[1] | (pLZ_codes[2] << 8)); + pLZ_codes += 3; MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]); + TDEFL_PUT_BITS(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], + d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); + TDEFL_PUT_BITS(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], + s_tdefl_len_extra[match_len]); - if (match_dist < 512) - { - sym = s_tdefl_small_dist_sym[match_dist]; num_extra_bits = s_tdefl_small_dist_extra[match_dist]; + if (match_dist < 512) { + sym = s_tdefl_small_dist_sym[match_dist]; + num_extra_bits = s_tdefl_small_dist_extra[match_dist]; + } else { + sym = s_tdefl_large_dist_sym[match_dist >> 8]; + num_extra_bits = s_tdefl_large_dist_extra[match_dist >> 8]; } - else - { - sym = s_tdefl_large_dist_sym[match_dist >> 8]; num_extra_bits = s_tdefl_large_dist_extra[match_dist >> 8]; - } - MZ_ASSERT(d->m_huff_code_sizes[1][sym]); TDEFL_PUT_BITS(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]); TDEFL_PUT_BITS(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits); - } - else - { + } else { mz_uint lit = *pLZ_codes++; MZ_ASSERT(d->m_huff_code_sizes[0][lit]); TDEFL_PUT_BITS(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); @@ -2156,10 +3035,10 @@ static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) return (d->m_pOutput_buf < d->m_pOutput_buf_end); } -#endif // MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS +#endif // MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && + // MINIZ_HAS_64BIT_REGISTERS -static mz_bool tdefl_compress_block(tdefl_compressor *d, mz_bool static_block) -{ +static mz_bool tdefl_compress_block(tdefl_compressor *d, mz_bool static_block) { if (static_block) tdefl_start_static_block(d); else @@ -2167,13 +3046,18 @@ static mz_bool tdefl_compress_block(tdefl_compressor *d, mz_bool static_block) return tdefl_compress_lz_codes(d); } -static int tdefl_flush_block(tdefl_compressor *d, int flush) -{ +static int tdefl_flush_block(tdefl_compressor *d, int flush) { mz_uint saved_bit_buf, saved_bits_in; mz_uint8 *pSaved_output_buf; mz_bool comp_block_succeeded = MZ_FALSE; - int n, use_raw_block = ((d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS) != 0) && (d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size; - mz_uint8 *pOutput_buf_start = ((d->m_pPut_buf_func == NULL) && ((*d->m_pOut_buf_size - d->m_out_buf_ofs) >= TDEFL_OUT_BUF_SIZE)) ? ((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs) : d->m_output_buf; + int n, use_raw_block = + ((d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS) != 0) && + (d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size; + mz_uint8 *pOutput_buf_start = + ((d->m_pPut_buf_func == NULL) && + ((*d->m_pOut_buf_size - d->m_out_buf_ofs) >= TDEFL_OUT_BUF_SIZE)) + ? ((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs) + : d->m_output_buf; d->m_pOutput_buf = pOutput_buf_start; d->m_pOutput_buf_end = d->m_pOutput_buf + TDEFL_OUT_BUF_SIZE - 16; @@ -2185,82 +3069,106 @@ static int tdefl_flush_block(tdefl_compressor *d, int flush) *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> d->m_num_flags_left); d->m_pLZ_code_buf -= (d->m_num_flags_left == 8); - if ((d->m_flags & TDEFL_WRITE_ZLIB_HEADER) && (!d->m_block_index)) - { - TDEFL_PUT_BITS(0x78, 8); TDEFL_PUT_BITS(0x01, 8); + if ((d->m_flags & TDEFL_WRITE_ZLIB_HEADER) && (!d->m_block_index)) { + TDEFL_PUT_BITS(0x78, 8); + TDEFL_PUT_BITS(0x01, 8); } TDEFL_PUT_BITS(flush == TDEFL_FINISH, 1); - pSaved_output_buf = d->m_pOutput_buf; saved_bit_buf = d->m_bit_buffer; saved_bits_in = d->m_bits_in; + pSaved_output_buf = d->m_pOutput_buf; + saved_bit_buf = d->m_bit_buffer; + saved_bits_in = d->m_bits_in; if (!use_raw_block) - comp_block_succeeded = tdefl_compress_block(d, (d->m_flags & TDEFL_FORCE_ALL_STATIC_BLOCKS) || (d->m_total_lz_bytes < 48)); + comp_block_succeeded = + tdefl_compress_block(d, (d->m_flags & TDEFL_FORCE_ALL_STATIC_BLOCKS) || + (d->m_total_lz_bytes < 48)); - // If the block gets expanded, forget the current contents of the output buffer and send a raw block instead. - if ( ((use_raw_block) || ((d->m_total_lz_bytes) && ((d->m_pOutput_buf - pSaved_output_buf + 1U) >= d->m_total_lz_bytes))) && - ((d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size) ) - { - mz_uint i; d->m_pOutput_buf = pSaved_output_buf; d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in; + // If the block gets expanded, forget the current contents of the output + // buffer and send a raw block instead. + if (((use_raw_block) || + ((d->m_total_lz_bytes) && ((d->m_pOutput_buf - pSaved_output_buf + 1U) >= + d->m_total_lz_bytes))) && + ((d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size)) { + mz_uint i; + d->m_pOutput_buf = pSaved_output_buf; + d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in; TDEFL_PUT_BITS(0, 2); - if (d->m_bits_in) { TDEFL_PUT_BITS(0, 8 - d->m_bits_in); } - for (i = 2; i; --i, d->m_total_lz_bytes ^= 0xFFFF) - { + if (d->m_bits_in) { + TDEFL_PUT_BITS(0, 8 - d->m_bits_in); + } + for (i = 2; i; --i, d->m_total_lz_bytes ^= 0xFFFF) { TDEFL_PUT_BITS(d->m_total_lz_bytes & 0xFFFF, 16); } - for (i = 0; i < d->m_total_lz_bytes; ++i) - { - TDEFL_PUT_BITS(d->m_dict[(d->m_lz_code_buf_dict_pos + i) & TDEFL_LZ_DICT_SIZE_MASK], 8); + for (i = 0; i < d->m_total_lz_bytes; ++i) { + TDEFL_PUT_BITS( + d->m_dict[(d->m_lz_code_buf_dict_pos + i) & TDEFL_LZ_DICT_SIZE_MASK], + 8); } } - // Check for the extremely unlikely (if not impossible) case of the compressed block not fitting into the output buffer when using dynamic codes. - else if (!comp_block_succeeded) - { - d->m_pOutput_buf = pSaved_output_buf; d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in; + // Check for the extremely unlikely (if not impossible) case of the compressed + // block not fitting into the output buffer when using dynamic codes. + else if (!comp_block_succeeded) { + d->m_pOutput_buf = pSaved_output_buf; + d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in; tdefl_compress_block(d, MZ_TRUE); } - if (flush) - { - if (flush == TDEFL_FINISH) - { - if (d->m_bits_in) { TDEFL_PUT_BITS(0, 8 - d->m_bits_in); } - if (d->m_flags & TDEFL_WRITE_ZLIB_HEADER) { mz_uint i, a = d->m_adler32; for (i = 0; i < 4; i++) { TDEFL_PUT_BITS((a >> 24) & 0xFF, 8); a <<= 8; } } - } - else - { - mz_uint i, z = 0; TDEFL_PUT_BITS(0, 3); if (d->m_bits_in) { TDEFL_PUT_BITS(0, 8 - d->m_bits_in); } for (i = 2; i; --i, z ^= 0xFFFF) { TDEFL_PUT_BITS(z & 0xFFFF, 16); } + if (flush) { + if (flush == TDEFL_FINISH) { + if (d->m_bits_in) { + TDEFL_PUT_BITS(0, 8 - d->m_bits_in); + } + if (d->m_flags & TDEFL_WRITE_ZLIB_HEADER) { + mz_uint i, a = d->m_adler32; + for (i = 0; i < 4; i++) { + TDEFL_PUT_BITS((a >> 24) & 0xFF, 8); + a <<= 8; + } + } + } else { + mz_uint i, z = 0; + TDEFL_PUT_BITS(0, 3); + if (d->m_bits_in) { + TDEFL_PUT_BITS(0, 8 - d->m_bits_in); + } + for (i = 2; i; --i, z ^= 0xFFFF) { + TDEFL_PUT_BITS(z & 0xFFFF, 16); + } } } MZ_ASSERT(d->m_pOutput_buf < d->m_pOutput_buf_end); - memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0); - memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1); + memset(&d->m_huff_count[0][0], 0, + sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0); + memset(&d->m_huff_count[1][0], 0, + sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1); - d->m_pLZ_code_buf = d->m_lz_code_buf + 1; d->m_pLZ_flags = d->m_lz_code_buf; d->m_num_flags_left = 8; d->m_lz_code_buf_dict_pos += d->m_total_lz_bytes; d->m_total_lz_bytes = 0; d->m_block_index++; + d->m_pLZ_code_buf = d->m_lz_code_buf + 1; + d->m_pLZ_flags = d->m_lz_code_buf; + d->m_num_flags_left = 8; + d->m_lz_code_buf_dict_pos += d->m_total_lz_bytes; + d->m_total_lz_bytes = 0; + d->m_block_index++; - if ((n = (int)(d->m_pOutput_buf - pOutput_buf_start)) != 0) - { - if (d->m_pPut_buf_func) - { + if ((n = (int)(d->m_pOutput_buf - pOutput_buf_start)) != 0) { + if (d->m_pPut_buf_func) { *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf; if (!(*d->m_pPut_buf_func)(d->m_output_buf, n, d->m_pPut_buf_user)) return (d->m_prev_return_status = TDEFL_STATUS_PUT_BUF_FAILED); - } - else if (pOutput_buf_start == d->m_output_buf) - { - int bytes_to_copy = (int)MZ_MIN((size_t)n, (size_t)(*d->m_pOut_buf_size - d->m_out_buf_ofs)); - memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf, bytes_to_copy); + } else if (pOutput_buf_start == d->m_output_buf) { + int bytes_to_copy = (int)MZ_MIN( + (size_t)n, (size_t)(*d->m_pOut_buf_size - d->m_out_buf_ofs)); + memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf, + bytes_to_copy); d->m_out_buf_ofs += bytes_to_copy; - if ((n -= bytes_to_copy) != 0) - { + if ((n -= bytes_to_copy) != 0) { d->m_output_flush_ofs = bytes_to_copy; d->m_output_flush_remaining = n; } - } - else - { + } else { d->m_out_buf_ofs += n; } } @@ -2269,133 +3177,192 @@ static int tdefl_flush_block(tdefl_compressor *d, int flush) } #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES -#define TDEFL_READ_UNALIGNED_WORD(p) *(const mz_uint16*)(p) -static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len) -{ - mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len; +#define TDEFL_READ_UNALIGNED_WORD(p) ((p)[0] | (p)[1] << 8) +static MZ_FORCEINLINE void +tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, + mz_uint max_match_len, mz_uint *pMatch_dist, + mz_uint *pMatch_len) { + mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, + match_len = *pMatch_len, probe_pos = pos, next_probe_pos, + probe_len; mz_uint num_probes_left = d->m_max_probes[match_len >= 32]; - const mz_uint16 *s = (const mz_uint16*)(d->m_dict + pos), *p, *q; - mz_uint16 c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]), s01 = TDEFL_READ_UNALIGNED_WORD(s); - MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); if (max_match_len <= match_len) return; - for ( ; ; ) - { - for ( ; ; ) - { - if (--num_probes_left == 0) return; - #define TDEFL_PROBE \ - next_probe_pos = d->m_next[probe_pos]; \ - if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) return; \ - probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ - if (TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01) break; - TDEFL_PROBE; TDEFL_PROBE; TDEFL_PROBE; + const mz_uint16 *s = (const mz_uint16 *)(d->m_dict + pos), *p, *q; + mz_uint16 c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]), + s01 = *s; + MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); + if (max_match_len <= match_len) + return; + for (;;) { + for (;;) { + if (--num_probes_left == 0) + return; +#define TDEFL_PROBE \ + next_probe_pos = d->m_next[probe_pos]; \ + if ((!next_probe_pos) || \ + ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \ + return; \ + probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ + if (TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01) \ + break; + TDEFL_PROBE; + TDEFL_PROBE; + TDEFL_PROBE; } - if (!dist) break; q = (const mz_uint16*)(d->m_dict + probe_pos); if (TDEFL_READ_UNALIGNED_WORD(q) != s01) continue; p = s; probe_len = 32; - do { } while ( (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && - (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (--probe_len > 0) ); - if (!probe_len) - { - *pMatch_dist = dist; *pMatch_len = MZ_MIN(max_match_len, TDEFL_MAX_MATCH_LEN); break; - } - else if ((probe_len = ((mz_uint)(p - s) * 2) + (mz_uint)(*(const mz_uint8*)p == *(const mz_uint8*)q)) > match_len) - { - *pMatch_dist = dist; if ((*pMatch_len = match_len = MZ_MIN(max_match_len, probe_len)) == max_match_len) break; + if (!dist) + break; + q = (const mz_uint16 *)(d->m_dict + probe_pos); + if (*q != s01) + continue; + p = s; + probe_len = 32; + do { + } while ((*(++p) == *(++q)) && (*(++p) == *(++q)) && (*(++p) == *(++q)) && + (*(++p) == *(++q)) && (--probe_len > 0)); + if (!probe_len) { + *pMatch_dist = dist; + *pMatch_len = MZ_MIN(max_match_len, TDEFL_MAX_MATCH_LEN); + break; + } else if ((probe_len = ((mz_uint)(p - s) * 2) + + (mz_uint)(*(const mz_uint8 *)p == + *(const mz_uint8 *)q)) > match_len) { + *pMatch_dist = dist; + if ((*pMatch_len = match_len = MZ_MIN(max_match_len, probe_len)) == + max_match_len) + break; c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]); } } } #else -static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len) -{ - mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len; +static MZ_FORCEINLINE void +tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, + mz_uint max_match_len, mz_uint *pMatch_dist, + mz_uint *pMatch_len) { + mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, + match_len = *pMatch_len, probe_pos = pos, next_probe_pos, + probe_len; mz_uint num_probes_left = d->m_max_probes[match_len >= 32]; const mz_uint8 *s = d->m_dict + pos, *p, *q; mz_uint8 c0 = d->m_dict[pos + match_len], c1 = d->m_dict[pos + match_len - 1]; - MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); if (max_match_len <= match_len) return; - for ( ; ; ) - { - for ( ; ; ) - { - if (--num_probes_left == 0) return; - #define TDEFL_PROBE \ - next_probe_pos = d->m_next[probe_pos]; \ - if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) return; \ - probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ - if ((d->m_dict[probe_pos + match_len] == c0) && (d->m_dict[probe_pos + match_len - 1] == c1)) break; - TDEFL_PROBE; TDEFL_PROBE; TDEFL_PROBE; + MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); + if (max_match_len <= match_len) + return; + for (;;) { + for (;;) { + if (--num_probes_left == 0) + return; +#define TDEFL_PROBE \ + next_probe_pos = d->m_next[probe_pos]; \ + if ((!next_probe_pos) || \ + ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \ + return; \ + probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ + if ((d->m_dict[probe_pos + match_len] == c0) && \ + (d->m_dict[probe_pos + match_len - 1] == c1)) \ + break; + TDEFL_PROBE; + TDEFL_PROBE; + TDEFL_PROBE; } - if (!dist) break; p = s; q = d->m_dict + probe_pos; for (probe_len = 0; probe_len < max_match_len; probe_len++) if (*p++ != *q++) break; - if (probe_len > match_len) - { - *pMatch_dist = dist; if ((*pMatch_len = match_len = probe_len) == max_match_len) return; - c0 = d->m_dict[pos + match_len]; c1 = d->m_dict[pos + match_len - 1]; + if (!dist) + break; + p = s; + q = d->m_dict + probe_pos; + for (probe_len = 0; probe_len < max_match_len; probe_len++) + if (*p++ != *q++) + break; + if (probe_len > match_len) { + *pMatch_dist = dist; + if ((*pMatch_len = match_len = probe_len) == max_match_len) + return; + c0 = d->m_dict[pos + match_len]; + c1 = d->m_dict[pos + match_len - 1]; } } } #endif // #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN -static mz_bool tdefl_compress_fast(tdefl_compressor *d) -{ - // Faster, minimally featured LZRW1-style match+parse loop with better register utilization. Intended for applications where raw throughput is valued more highly than ratio. - mz_uint lookahead_pos = d->m_lookahead_pos, lookahead_size = d->m_lookahead_size, dict_size = d->m_dict_size, total_lz_bytes = d->m_total_lz_bytes, num_flags_left = d->m_num_flags_left; +static mz_bool tdefl_compress_fast(tdefl_compressor *d) { + // Faster, minimally featured LZRW1-style match+parse loop with better + // register utilization. Intended for applications where raw throughput is + // valued more highly than ratio. + mz_uint lookahead_pos = d->m_lookahead_pos, + lookahead_size = d->m_lookahead_size, dict_size = d->m_dict_size, + total_lz_bytes = d->m_total_lz_bytes, + num_flags_left = d->m_num_flags_left; mz_uint8 *pLZ_code_buf = d->m_pLZ_code_buf, *pLZ_flags = d->m_pLZ_flags; mz_uint cur_pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK; - while ((d->m_src_buf_left) || ((d->m_flush) && (lookahead_size))) - { + while ((d->m_src_buf_left) || ((d->m_flush) && (lookahead_size))) { const mz_uint TDEFL_COMP_FAST_LOOKAHEAD_SIZE = 4096; - mz_uint dst_pos = (lookahead_pos + lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK; - mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(d->m_src_buf_left, TDEFL_COMP_FAST_LOOKAHEAD_SIZE - lookahead_size); + mz_uint dst_pos = + (lookahead_pos + lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK; + mz_uint num_bytes_to_process = (mz_uint)MZ_MIN( + d->m_src_buf_left, TDEFL_COMP_FAST_LOOKAHEAD_SIZE - lookahead_size); d->m_src_buf_left -= num_bytes_to_process; lookahead_size += num_bytes_to_process; - while (num_bytes_to_process) - { + while (num_bytes_to_process) { mz_uint32 n = MZ_MIN(TDEFL_LZ_DICT_SIZE - dst_pos, num_bytes_to_process); memcpy(d->m_dict + dst_pos, d->m_pSrc, n); if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) - memcpy(d->m_dict + TDEFL_LZ_DICT_SIZE + dst_pos, d->m_pSrc, MZ_MIN(n, (TDEFL_MAX_MATCH_LEN - 1) - dst_pos)); + memcpy(d->m_dict + TDEFL_LZ_DICT_SIZE + dst_pos, d->m_pSrc, + MZ_MIN(n, (TDEFL_MAX_MATCH_LEN - 1) - dst_pos)); d->m_pSrc += n; dst_pos = (dst_pos + n) & TDEFL_LZ_DICT_SIZE_MASK; num_bytes_to_process -= n; } dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - lookahead_size, dict_size); - if ((!d->m_flush) && (lookahead_size < TDEFL_COMP_FAST_LOOKAHEAD_SIZE)) break; + if ((!d->m_flush) && (lookahead_size < TDEFL_COMP_FAST_LOOKAHEAD_SIZE)) + break; - while (lookahead_size >= 4) - { + while (lookahead_size >= 4) { mz_uint cur_match_dist, cur_match_len = 1; mz_uint8 *pCur_dict = d->m_dict + cur_pos; mz_uint first_trigram = (*(const mz_uint32 *)pCur_dict) & 0xFFFFFF; - mz_uint hash = (first_trigram ^ (first_trigram >> (24 - (TDEFL_LZ_HASH_BITS - 8)))) & TDEFL_LEVEL1_HASH_SIZE_MASK; + mz_uint hash = + (first_trigram ^ (first_trigram >> (24 - (TDEFL_LZ_HASH_BITS - 8)))) & + TDEFL_LEVEL1_HASH_SIZE_MASK; mz_uint probe_pos = d->m_hash[hash]; d->m_hash[hash] = (mz_uint16)lookahead_pos; - if (((cur_match_dist = (mz_uint16)(lookahead_pos - probe_pos)) <= dict_size) && ((*(const mz_uint32 *)(d->m_dict + (probe_pos &= TDEFL_LZ_DICT_SIZE_MASK)) & 0xFFFFFF) == first_trigram)) - { + if (((cur_match_dist = (mz_uint16)(lookahead_pos - probe_pos)) <= + dict_size) && + ((mz_uint32)( + *(d->m_dict + (probe_pos & TDEFL_LZ_DICT_SIZE_MASK)) | + (*(d->m_dict + ((probe_pos & TDEFL_LZ_DICT_SIZE_MASK) + 1)) + << 8) | + (*(d->m_dict + ((probe_pos & TDEFL_LZ_DICT_SIZE_MASK) + 2)) + << 16)) == first_trigram)) { const mz_uint16 *p = (const mz_uint16 *)pCur_dict; - const mz_uint16 *q = (const mz_uint16 *)(d->m_dict + probe_pos); + const mz_uint16 *q = + (const mz_uint16 *)(d->m_dict + + (probe_pos & TDEFL_LZ_DICT_SIZE_MASK)); mz_uint32 probe_len = 32; - do { } while ( (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && - (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (--probe_len > 0) ); - cur_match_len = ((mz_uint)(p - (const mz_uint16 *)pCur_dict) * 2) + (mz_uint)(*(const mz_uint8 *)p == *(const mz_uint8 *)q); + do { + } while ((*(++p) == *(++q)) && (*(++p) == *(++q)) && + (*(++p) == *(++q)) && (*(++p) == *(++q)) && (--probe_len > 0)); + cur_match_len = ((mz_uint)(p - (const mz_uint16 *)pCur_dict) * 2) + + (mz_uint)(*(const mz_uint8 *)p == *(const mz_uint8 *)q); if (!probe_len) cur_match_len = cur_match_dist ? TDEFL_MAX_MATCH_LEN : 0; - if ((cur_match_len < TDEFL_MIN_MATCH_LEN) || ((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U*1024U))) - { + if ((cur_match_len < TDEFL_MIN_MATCH_LEN) || + ((cur_match_len == TDEFL_MIN_MATCH_LEN) && + (cur_match_dist >= 8U * 1024U))) { cur_match_len = 1; *pLZ_code_buf++ = (mz_uint8)first_trigram; *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1); d->m_huff_count[0][(mz_uint8)first_trigram]++; - } - else - { + } else { mz_uint32 s0, s1; cur_match_len = MZ_MIN(cur_match_len, lookahead_size); - MZ_ASSERT((cur_match_len >= TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 1) && (cur_match_dist <= TDEFL_LZ_DICT_SIZE)); + MZ_ASSERT((cur_match_len >= TDEFL_MIN_MATCH_LEN) && + (cur_match_dist >= 1) && + (cur_match_dist <= TDEFL_LZ_DICT_SIZE)); cur_match_dist--; @@ -2408,17 +3375,19 @@ static mz_bool tdefl_compress_fast(tdefl_compressor *d) s1 = s_tdefl_large_dist_sym[cur_match_dist >> 8]; d->m_huff_count[1][(cur_match_dist < 512) ? s0 : s1]++; - d->m_huff_count[0][s_tdefl_len_sym[cur_match_len - TDEFL_MIN_MATCH_LEN]]++; + d->m_huff_count[0][s_tdefl_len_sym[cur_match_len - + TDEFL_MIN_MATCH_LEN]]++; } - } - else - { + } else { *pLZ_code_buf++ = (mz_uint8)first_trigram; *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1); d->m_huff_count[0][(mz_uint8)first_trigram]++; } - if (--num_flags_left == 0) { num_flags_left = 8; pLZ_flags = pLZ_code_buf++; } + if (--num_flags_left == 0) { + num_flags_left = 8; + pLZ_flags = pLZ_code_buf++; + } total_lz_bytes += cur_match_len; lookahead_pos += cur_match_len; @@ -2427,25 +3396,34 @@ static mz_bool tdefl_compress_fast(tdefl_compressor *d) MZ_ASSERT(lookahead_size >= cur_match_len); lookahead_size -= cur_match_len; - if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) - { + if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) { int n; - d->m_lookahead_pos = lookahead_pos; d->m_lookahead_size = lookahead_size; d->m_dict_size = dict_size; - d->m_total_lz_bytes = total_lz_bytes; d->m_pLZ_code_buf = pLZ_code_buf; d->m_pLZ_flags = pLZ_flags; d->m_num_flags_left = num_flags_left; + d->m_lookahead_pos = lookahead_pos; + d->m_lookahead_size = lookahead_size; + d->m_dict_size = dict_size; + d->m_total_lz_bytes = total_lz_bytes; + d->m_pLZ_code_buf = pLZ_code_buf; + d->m_pLZ_flags = pLZ_flags; + d->m_num_flags_left = num_flags_left; if ((n = tdefl_flush_block(d, 0)) != 0) return (n < 0) ? MZ_FALSE : MZ_TRUE; - total_lz_bytes = d->m_total_lz_bytes; pLZ_code_buf = d->m_pLZ_code_buf; pLZ_flags = d->m_pLZ_flags; num_flags_left = d->m_num_flags_left; + total_lz_bytes = d->m_total_lz_bytes; + pLZ_code_buf = d->m_pLZ_code_buf; + pLZ_flags = d->m_pLZ_flags; + num_flags_left = d->m_num_flags_left; } } - while (lookahead_size) - { + while (lookahead_size) { mz_uint8 lit = d->m_dict[cur_pos]; total_lz_bytes++; *pLZ_code_buf++ = lit; *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1); - if (--num_flags_left == 0) { num_flags_left = 8; pLZ_flags = pLZ_code_buf++; } + if (--num_flags_left == 0) { + num_flags_left = 8; + pLZ_flags = pLZ_code_buf++; + } d->m_huff_count[0][lit]++; @@ -2454,37 +3432,54 @@ static mz_bool tdefl_compress_fast(tdefl_compressor *d) cur_pos = (cur_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK; lookahead_size--; - if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) - { + if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) { int n; - d->m_lookahead_pos = lookahead_pos; d->m_lookahead_size = lookahead_size; d->m_dict_size = dict_size; - d->m_total_lz_bytes = total_lz_bytes; d->m_pLZ_code_buf = pLZ_code_buf; d->m_pLZ_flags = pLZ_flags; d->m_num_flags_left = num_flags_left; + d->m_lookahead_pos = lookahead_pos; + d->m_lookahead_size = lookahead_size; + d->m_dict_size = dict_size; + d->m_total_lz_bytes = total_lz_bytes; + d->m_pLZ_code_buf = pLZ_code_buf; + d->m_pLZ_flags = pLZ_flags; + d->m_num_flags_left = num_flags_left; if ((n = tdefl_flush_block(d, 0)) != 0) return (n < 0) ? MZ_FALSE : MZ_TRUE; - total_lz_bytes = d->m_total_lz_bytes; pLZ_code_buf = d->m_pLZ_code_buf; pLZ_flags = d->m_pLZ_flags; num_flags_left = d->m_num_flags_left; + total_lz_bytes = d->m_total_lz_bytes; + pLZ_code_buf = d->m_pLZ_code_buf; + pLZ_flags = d->m_pLZ_flags; + num_flags_left = d->m_num_flags_left; } } } - d->m_lookahead_pos = lookahead_pos; d->m_lookahead_size = lookahead_size; d->m_dict_size = dict_size; - d->m_total_lz_bytes = total_lz_bytes; d->m_pLZ_code_buf = pLZ_code_buf; d->m_pLZ_flags = pLZ_flags; d->m_num_flags_left = num_flags_left; + d->m_lookahead_pos = lookahead_pos; + d->m_lookahead_size = lookahead_size; + d->m_dict_size = dict_size; + d->m_total_lz_bytes = total_lz_bytes; + d->m_pLZ_code_buf = pLZ_code_buf; + d->m_pLZ_flags = pLZ_flags; + d->m_num_flags_left = num_flags_left; return MZ_TRUE; } #endif // MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN -static MZ_FORCEINLINE void tdefl_record_literal(tdefl_compressor *d, mz_uint8 lit) -{ +static MZ_FORCEINLINE void tdefl_record_literal(tdefl_compressor *d, + mz_uint8 lit) { d->m_total_lz_bytes++; *d->m_pLZ_code_buf++ = lit; - *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> 1); if (--d->m_num_flags_left == 0) { d->m_num_flags_left = 8; d->m_pLZ_flags = d->m_pLZ_code_buf++; } + *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> 1); + if (--d->m_num_flags_left == 0) { + d->m_num_flags_left = 8; + d->m_pLZ_flags = d->m_pLZ_code_buf++; + } d->m_huff_count[0][lit]++; } -static MZ_FORCEINLINE void tdefl_record_match(tdefl_compressor *d, mz_uint match_len, mz_uint match_dist) -{ +static MZ_FORCEINLINE void +tdefl_record_match(tdefl_compressor *d, mz_uint match_len, mz_uint match_dist) { mz_uint32 s0, s1; - MZ_ASSERT((match_len >= TDEFL_MIN_MATCH_LEN) && (match_dist >= 1) && (match_dist <= TDEFL_LZ_DICT_SIZE)); + MZ_ASSERT((match_len >= TDEFL_MIN_MATCH_LEN) && (match_dist >= 1) && + (match_dist <= TDEFL_LZ_DICT_SIZE)); d->m_total_lz_bytes += match_len; @@ -2492,145 +3487,176 @@ static MZ_FORCEINLINE void tdefl_record_match(tdefl_compressor *d, mz_uint match match_dist -= 1; d->m_pLZ_code_buf[1] = (mz_uint8)(match_dist & 0xFF); - d->m_pLZ_code_buf[2] = (mz_uint8)(match_dist >> 8); d->m_pLZ_code_buf += 3; + d->m_pLZ_code_buf[2] = (mz_uint8)(match_dist >> 8); + d->m_pLZ_code_buf += 3; - *d->m_pLZ_flags = (mz_uint8)((*d->m_pLZ_flags >> 1) | 0x80); if (--d->m_num_flags_left == 0) { d->m_num_flags_left = 8; d->m_pLZ_flags = d->m_pLZ_code_buf++; } + *d->m_pLZ_flags = (mz_uint8)((*d->m_pLZ_flags >> 1) | 0x80); + if (--d->m_num_flags_left == 0) { + d->m_num_flags_left = 8; + d->m_pLZ_flags = d->m_pLZ_code_buf++; + } - s0 = s_tdefl_small_dist_sym[match_dist & 511]; s1 = s_tdefl_large_dist_sym[(match_dist >> 8) & 127]; + s0 = s_tdefl_small_dist_sym[match_dist & 511]; + s1 = s_tdefl_large_dist_sym[(match_dist >> 8) & 127]; d->m_huff_count[1][(match_dist < 512) ? s0 : s1]++; - if (match_len >= TDEFL_MIN_MATCH_LEN) d->m_huff_count[0][s_tdefl_len_sym[match_len - TDEFL_MIN_MATCH_LEN]]++; + if (match_len >= TDEFL_MIN_MATCH_LEN) + d->m_huff_count[0][s_tdefl_len_sym[match_len - TDEFL_MIN_MATCH_LEN]]++; } -static mz_bool tdefl_compress_normal(tdefl_compressor *d) -{ - const mz_uint8 *pSrc = d->m_pSrc; size_t src_buf_left = d->m_src_buf_left; +static mz_bool tdefl_compress_normal(tdefl_compressor *d) { + const mz_uint8 *pSrc = d->m_pSrc; + size_t src_buf_left = d->m_src_buf_left; tdefl_flush flush = d->m_flush; - while ((src_buf_left) || ((flush) && (d->m_lookahead_size))) - { + while ((src_buf_left) || ((flush) && (d->m_lookahead_size))) { mz_uint len_to_move, cur_match_dist, cur_match_len, cur_pos; - // Update dictionary and hash chains. Keeps the lookahead size equal to TDEFL_MAX_MATCH_LEN. - if ((d->m_lookahead_size + d->m_dict_size) >= (TDEFL_MIN_MATCH_LEN - 1)) - { - mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK, ins_pos = d->m_lookahead_pos + d->m_lookahead_size - 2; - mz_uint hash = (d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK]; - mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(src_buf_left, TDEFL_MAX_MATCH_LEN - d->m_lookahead_size); + // Update dictionary and hash chains. Keeps the lookahead size equal to + // TDEFL_MAX_MATCH_LEN. + if ((d->m_lookahead_size + d->m_dict_size) >= (TDEFL_MIN_MATCH_LEN - 1)) { + mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & + TDEFL_LZ_DICT_SIZE_MASK, + ins_pos = d->m_lookahead_pos + d->m_lookahead_size - 2; + mz_uint hash = (d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] + << TDEFL_LZ_HASH_SHIFT) ^ + d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK]; + mz_uint num_bytes_to_process = (mz_uint)MZ_MIN( + src_buf_left, TDEFL_MAX_MATCH_LEN - d->m_lookahead_size); const mz_uint8 *pSrc_end = pSrc + num_bytes_to_process; src_buf_left -= num_bytes_to_process; d->m_lookahead_size += num_bytes_to_process; - while (pSrc != pSrc_end) - { - mz_uint8 c = *pSrc++; d->m_dict[dst_pos] = c; if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c; - hash = ((hash << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1); - d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; d->m_hash[hash] = (mz_uint16)(ins_pos); - dst_pos = (dst_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK; ins_pos++; - } - } - else - { - while ((src_buf_left) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN)) - { + while (pSrc != pSrc_end) { mz_uint8 c = *pSrc++; - mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK; + d->m_dict[dst_pos] = c; + if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) + d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c; + hash = ((hash << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1); + d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; + d->m_hash[hash] = (mz_uint16)(ins_pos); + dst_pos = (dst_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK; + ins_pos++; + } + } else { + while ((src_buf_left) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN)) { + mz_uint8 c = *pSrc++; + mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & + TDEFL_LZ_DICT_SIZE_MASK; src_buf_left--; d->m_dict[dst_pos] = c; if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c; - if ((++d->m_lookahead_size + d->m_dict_size) >= TDEFL_MIN_MATCH_LEN) - { + if ((++d->m_lookahead_size + d->m_dict_size) >= TDEFL_MIN_MATCH_LEN) { mz_uint ins_pos = d->m_lookahead_pos + (d->m_lookahead_size - 1) - 2; - mz_uint hash = ((d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << (TDEFL_LZ_HASH_SHIFT * 2)) ^ (d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1); - d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; d->m_hash[hash] = (mz_uint16)(ins_pos); + mz_uint hash = ((d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] + << (TDEFL_LZ_HASH_SHIFT * 2)) ^ + (d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK] + << TDEFL_LZ_HASH_SHIFT) ^ + c) & + (TDEFL_LZ_HASH_SIZE - 1); + d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; + d->m_hash[hash] = (mz_uint16)(ins_pos); } } } - d->m_dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - d->m_lookahead_size, d->m_dict_size); + d->m_dict_size = + MZ_MIN(TDEFL_LZ_DICT_SIZE - d->m_lookahead_size, d->m_dict_size); if ((!flush) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN)) break; // Simple lazy/greedy parsing state machine. - len_to_move = 1; cur_match_dist = 0; cur_match_len = d->m_saved_match_len ? d->m_saved_match_len : (TDEFL_MIN_MATCH_LEN - 1); cur_pos = d->m_lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK; - if (d->m_flags & (TDEFL_RLE_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS)) - { - if ((d->m_dict_size) && (!(d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS))) - { + len_to_move = 1; + cur_match_dist = 0; + cur_match_len = + d->m_saved_match_len ? d->m_saved_match_len : (TDEFL_MIN_MATCH_LEN - 1); + cur_pos = d->m_lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK; + if (d->m_flags & (TDEFL_RLE_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS)) { + if ((d->m_dict_size) && (!(d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS))) { mz_uint8 c = d->m_dict[(cur_pos - 1) & TDEFL_LZ_DICT_SIZE_MASK]; - cur_match_len = 0; while (cur_match_len < d->m_lookahead_size) { if (d->m_dict[cur_pos + cur_match_len] != c) break; cur_match_len++; } - if (cur_match_len < TDEFL_MIN_MATCH_LEN) cur_match_len = 0; else cur_match_dist = 1; + cur_match_len = 0; + while (cur_match_len < d->m_lookahead_size) { + if (d->m_dict[cur_pos + cur_match_len] != c) + break; + cur_match_len++; + } + if (cur_match_len < TDEFL_MIN_MATCH_LEN) + cur_match_len = 0; + else + cur_match_dist = 1; } + } else { + tdefl_find_match(d, d->m_lookahead_pos, d->m_dict_size, + d->m_lookahead_size, &cur_match_dist, &cur_match_len); } - else - { - tdefl_find_match(d, d->m_lookahead_pos, d->m_dict_size, d->m_lookahead_size, &cur_match_dist, &cur_match_len); - } - if (((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U*1024U)) || (cur_pos == cur_match_dist) || ((d->m_flags & TDEFL_FILTER_MATCHES) && (cur_match_len <= 5))) - { + if (((cur_match_len == TDEFL_MIN_MATCH_LEN) && + (cur_match_dist >= 8U * 1024U)) || + (cur_pos == cur_match_dist) || + ((d->m_flags & TDEFL_FILTER_MATCHES) && (cur_match_len <= 5))) { cur_match_dist = cur_match_len = 0; } - if (d->m_saved_match_len) - { - if (cur_match_len > d->m_saved_match_len) - { + if (d->m_saved_match_len) { + if (cur_match_len > d->m_saved_match_len) { tdefl_record_literal(d, (mz_uint8)d->m_saved_lit); - if (cur_match_len >= 128) - { + if (cur_match_len >= 128) { tdefl_record_match(d, cur_match_len, cur_match_dist); - d->m_saved_match_len = 0; len_to_move = cur_match_len; + d->m_saved_match_len = 0; + len_to_move = cur_match_len; + } else { + d->m_saved_lit = d->m_dict[cur_pos]; + d->m_saved_match_dist = cur_match_dist; + d->m_saved_match_len = cur_match_len; } - else - { - d->m_saved_lit = d->m_dict[cur_pos]; d->m_saved_match_dist = cur_match_dist; d->m_saved_match_len = cur_match_len; - } - } - else - { + } else { tdefl_record_match(d, d->m_saved_match_len, d->m_saved_match_dist); - len_to_move = d->m_saved_match_len - 1; d->m_saved_match_len = 0; + len_to_move = d->m_saved_match_len - 1; + d->m_saved_match_len = 0; } - } - else if (!cur_match_dist) - tdefl_record_literal(d, d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]); - else if ((d->m_greedy_parsing) || (d->m_flags & TDEFL_RLE_MATCHES) || (cur_match_len >= 128)) - { + } else if (!cur_match_dist) + tdefl_record_literal(d, + d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]); + else if ((d->m_greedy_parsing) || (d->m_flags & TDEFL_RLE_MATCHES) || + (cur_match_len >= 128)) { tdefl_record_match(d, cur_match_len, cur_match_dist); len_to_move = cur_match_len; - } - else - { - d->m_saved_lit = d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]; d->m_saved_match_dist = cur_match_dist; d->m_saved_match_len = cur_match_len; + } else { + d->m_saved_lit = d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]; + d->m_saved_match_dist = cur_match_dist; + d->m_saved_match_len = cur_match_len; } // Move the lookahead forward by len_to_move bytes. d->m_lookahead_pos += len_to_move; MZ_ASSERT(d->m_lookahead_size >= len_to_move); d->m_lookahead_size -= len_to_move; d->m_dict_size = MZ_MIN(d->m_dict_size + len_to_move, TDEFL_LZ_DICT_SIZE); - // Check if it's time to flush the current LZ codes to the internal output buffer. - if ( (d->m_pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) || - ( (d->m_total_lz_bytes > 31*1024) && (((((mz_uint)(d->m_pLZ_code_buf - d->m_lz_code_buf) * 115) >> 7) >= d->m_total_lz_bytes) || (d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS))) ) - { + // Check if it's time to flush the current LZ codes to the internal output + // buffer. + if ((d->m_pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) || + ((d->m_total_lz_bytes > 31 * 1024) && + (((((mz_uint)(d->m_pLZ_code_buf - d->m_lz_code_buf) * 115) >> 7) >= + d->m_total_lz_bytes) || + (d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS)))) { int n; - d->m_pSrc = pSrc; d->m_src_buf_left = src_buf_left; + d->m_pSrc = pSrc; + d->m_src_buf_left = src_buf_left; if ((n = tdefl_flush_block(d, 0)) != 0) return (n < 0) ? MZ_FALSE : MZ_TRUE; } } - d->m_pSrc = pSrc; d->m_src_buf_left = src_buf_left; + d->m_pSrc = pSrc; + d->m_src_buf_left = src_buf_left; return MZ_TRUE; } -static tdefl_status tdefl_flush_output_buffer(tdefl_compressor *d) -{ - if (d->m_pIn_buf_size) - { +static tdefl_status tdefl_flush_output_buffer(tdefl_compressor *d) { + if (d->m_pIn_buf_size) { *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf; } - if (d->m_pOut_buf_size) - { - size_t n = MZ_MIN(*d->m_pOut_buf_size - d->m_out_buf_ofs, d->m_output_flush_remaining); - memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf + d->m_output_flush_ofs, n); + if (d->m_pOut_buf_size) { + size_t n = MZ_MIN(*d->m_pOut_buf_size - d->m_out_buf_ofs, + d->m_output_flush_remaining); + memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, + d->m_output_buf + d->m_output_flush_ofs, n); d->m_output_flush_ofs += (mz_uint)n; d->m_output_flush_remaining -= (mz_uint)n; d->m_out_buf_ofs += n; @@ -2638,29 +3664,40 @@ static tdefl_status tdefl_flush_output_buffer(tdefl_compressor *d) *d->m_pOut_buf_size = d->m_out_buf_ofs; } - return (d->m_finished && !d->m_output_flush_remaining) ? TDEFL_STATUS_DONE : TDEFL_STATUS_OKAY; + return (d->m_finished && !d->m_output_flush_remaining) ? TDEFL_STATUS_DONE + : TDEFL_STATUS_OKAY; } -tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush) -{ - if (!d) - { - if (pIn_buf_size) *pIn_buf_size = 0; - if (pOut_buf_size) *pOut_buf_size = 0; +tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, + size_t *pIn_buf_size, void *pOut_buf, + size_t *pOut_buf_size, tdefl_flush flush) { + if (!d) { + if (pIn_buf_size) + *pIn_buf_size = 0; + if (pOut_buf_size) + *pOut_buf_size = 0; return TDEFL_STATUS_BAD_PARAM; } - d->m_pIn_buf = pIn_buf; d->m_pIn_buf_size = pIn_buf_size; - d->m_pOut_buf = pOut_buf; d->m_pOut_buf_size = pOut_buf_size; - d->m_pSrc = (const mz_uint8 *)(pIn_buf); d->m_src_buf_left = pIn_buf_size ? *pIn_buf_size : 0; + d->m_pIn_buf = pIn_buf; + d->m_pIn_buf_size = pIn_buf_size; + d->m_pOut_buf = pOut_buf; + d->m_pOut_buf_size = pOut_buf_size; + d->m_pSrc = (const mz_uint8 *)(pIn_buf); + d->m_src_buf_left = pIn_buf_size ? *pIn_buf_size : 0; d->m_out_buf_ofs = 0; d->m_flush = flush; - if ( ((d->m_pPut_buf_func != NULL) == ((pOut_buf != NULL) || (pOut_buf_size != NULL))) || (d->m_prev_return_status != TDEFL_STATUS_OKAY) || - (d->m_wants_to_finish && (flush != TDEFL_FINISH)) || (pIn_buf_size && *pIn_buf_size && !pIn_buf) || (pOut_buf_size && *pOut_buf_size && !pOut_buf) ) - { - if (pIn_buf_size) *pIn_buf_size = 0; - if (pOut_buf_size) *pOut_buf_size = 0; + if (((d->m_pPut_buf_func != NULL) == + ((pOut_buf != NULL) || (pOut_buf_size != NULL))) || + (d->m_prev_return_status != TDEFL_STATUS_OKAY) || + (d->m_wants_to_finish && (flush != TDEFL_FINISH)) || + (pIn_buf_size && *pIn_buf_size && !pIn_buf) || + (pOut_buf_size && *pOut_buf_size && !pOut_buf)) { + if (pIn_buf_size) + *pIn_buf_size = 0; + if (pOut_buf_size) + *pOut_buf_size = 0; return (d->m_prev_return_status = TDEFL_STATUS_BAD_PARAM); } d->m_wants_to_finish |= (flush == TDEFL_FINISH); @@ -2671,179 +3708,329 @@ tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pI #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN if (((d->m_flags & TDEFL_MAX_PROBES_MASK) == 1) && ((d->m_flags & TDEFL_GREEDY_PARSING_FLAG) != 0) && - ((d->m_flags & (TDEFL_FILTER_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS | TDEFL_RLE_MATCHES)) == 0)) - { + ((d->m_flags & (TDEFL_FILTER_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS | + TDEFL_RLE_MATCHES)) == 0)) { if (!tdefl_compress_fast(d)) return d->m_prev_return_status; - } - else + } else #endif // #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN { if (!tdefl_compress_normal(d)) return d->m_prev_return_status; } - if ((d->m_flags & (TDEFL_WRITE_ZLIB_HEADER | TDEFL_COMPUTE_ADLER32)) && (pIn_buf)) - d->m_adler32 = (mz_uint32)mz_adler32(d->m_adler32, (const mz_uint8 *)pIn_buf, d->m_pSrc - (const mz_uint8 *)pIn_buf); + if ((d->m_flags & (TDEFL_WRITE_ZLIB_HEADER | TDEFL_COMPUTE_ADLER32)) && + (pIn_buf)) + d->m_adler32 = + (mz_uint32)mz_adler32(d->m_adler32, (const mz_uint8 *)pIn_buf, + d->m_pSrc - (const mz_uint8 *)pIn_buf); - if ((flush) && (!d->m_lookahead_size) && (!d->m_src_buf_left) && (!d->m_output_flush_remaining)) - { + if ((flush) && (!d->m_lookahead_size) && (!d->m_src_buf_left) && + (!d->m_output_flush_remaining)) { if (tdefl_flush_block(d, flush) < 0) return d->m_prev_return_status; d->m_finished = (flush == TDEFL_FINISH); - if (flush == TDEFL_FULL_FLUSH) { MZ_CLEAR_OBJ(d->m_hash); MZ_CLEAR_OBJ(d->m_next); d->m_dict_size = 0; } + if (flush == TDEFL_FULL_FLUSH) { + MZ_CLEAR_OBJ(d->m_hash); + MZ_CLEAR_OBJ(d->m_next); + d->m_dict_size = 0; + } } return (d->m_prev_return_status = tdefl_flush_output_buffer(d)); } -tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush) -{ - MZ_ASSERT(d->m_pPut_buf_func); return tdefl_compress(d, pIn_buf, &in_buf_size, NULL, NULL, flush); +tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, + size_t in_buf_size, tdefl_flush flush) { + MZ_ASSERT(d->m_pPut_buf_func); + return tdefl_compress(d, pIn_buf, &in_buf_size, NULL, NULL, flush); } -tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags) -{ - d->m_pPut_buf_func = pPut_buf_func; d->m_pPut_buf_user = pPut_buf_user; - d->m_flags = (mz_uint)(flags); d->m_max_probes[0] = 1 + ((flags & 0xFFF) + 2) / 3; d->m_greedy_parsing = (flags & TDEFL_GREEDY_PARSING_FLAG) != 0; +tdefl_status tdefl_init(tdefl_compressor *d, + tdefl_put_buf_func_ptr pPut_buf_func, + void *pPut_buf_user, int flags) { + d->m_pPut_buf_func = pPut_buf_func; + d->m_pPut_buf_user = pPut_buf_user; + d->m_flags = (mz_uint)(flags); + d->m_max_probes[0] = 1 + ((flags & 0xFFF) + 2) / 3; + d->m_greedy_parsing = (flags & TDEFL_GREEDY_PARSING_FLAG) != 0; d->m_max_probes[1] = 1 + (((flags & 0xFFF) >> 2) + 2) / 3; - if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG)) MZ_CLEAR_OBJ(d->m_hash); - d->m_lookahead_pos = d->m_lookahead_size = d->m_dict_size = d->m_total_lz_bytes = d->m_lz_code_buf_dict_pos = d->m_bits_in = 0; - d->m_output_flush_ofs = d->m_output_flush_remaining = d->m_finished = d->m_block_index = d->m_bit_buffer = d->m_wants_to_finish = 0; - d->m_pLZ_code_buf = d->m_lz_code_buf + 1; d->m_pLZ_flags = d->m_lz_code_buf; d->m_num_flags_left = 8; - d->m_pOutput_buf = d->m_output_buf; d->m_pOutput_buf_end = d->m_output_buf; d->m_prev_return_status = TDEFL_STATUS_OKAY; - d->m_saved_match_dist = d->m_saved_match_len = d->m_saved_lit = 0; d->m_adler32 = 1; - d->m_pIn_buf = NULL; d->m_pOut_buf = NULL; - d->m_pIn_buf_size = NULL; d->m_pOut_buf_size = NULL; - d->m_flush = TDEFL_NO_FLUSH; d->m_pSrc = NULL; d->m_src_buf_left = 0; d->m_out_buf_ofs = 0; - memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0); - memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1); + if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG)) + MZ_CLEAR_OBJ(d->m_hash); + d->m_lookahead_pos = d->m_lookahead_size = d->m_dict_size = + d->m_total_lz_bytes = d->m_lz_code_buf_dict_pos = d->m_bits_in = 0; + d->m_output_flush_ofs = d->m_output_flush_remaining = d->m_finished = + d->m_block_index = d->m_bit_buffer = d->m_wants_to_finish = 0; + d->m_pLZ_code_buf = d->m_lz_code_buf + 1; + d->m_pLZ_flags = d->m_lz_code_buf; + d->m_num_flags_left = 8; + d->m_pOutput_buf = d->m_output_buf; + d->m_pOutput_buf_end = d->m_output_buf; + d->m_prev_return_status = TDEFL_STATUS_OKAY; + d->m_saved_match_dist = d->m_saved_match_len = d->m_saved_lit = 0; + d->m_adler32 = 1; + d->m_pIn_buf = NULL; + d->m_pOut_buf = NULL; + d->m_pIn_buf_size = NULL; + d->m_pOut_buf_size = NULL; + d->m_flush = TDEFL_NO_FLUSH; + d->m_pSrc = NULL; + d->m_src_buf_left = 0; + d->m_out_buf_ofs = 0; + memset(&d->m_huff_count[0][0], 0, + sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0); + memset(&d->m_huff_count[1][0], 0, + sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1); return TDEFL_STATUS_OKAY; } -tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d) -{ +tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d) { return d->m_prev_return_status; } -mz_uint32 tdefl_get_adler32(tdefl_compressor *d) -{ - return d->m_adler32; +mz_uint32 tdefl_get_adler32(tdefl_compressor *d) { return d->m_adler32; } + +mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, + tdefl_put_buf_func_ptr pPut_buf_func, + void *pPut_buf_user, int flags) { + tdefl_compressor *pComp; + mz_bool succeeded; + if (((buf_len) && (!pBuf)) || (!pPut_buf_func)) + return MZ_FALSE; + pComp = (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); + if (!pComp) + return MZ_FALSE; + succeeded = (tdefl_init(pComp, pPut_buf_func, pPut_buf_user, flags) == + TDEFL_STATUS_OKAY); + succeeded = + succeeded && (tdefl_compress_buffer(pComp, pBuf, buf_len, TDEFL_FINISH) == + TDEFL_STATUS_DONE); + MZ_FREE(pComp); + return succeeded; } -mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags) -{ - tdefl_compressor *pComp; mz_bool succeeded; if (((buf_len) && (!pBuf)) || (!pPut_buf_func)) return MZ_FALSE; - pComp = (tdefl_compressor*)MZ_MALLOC(sizeof(tdefl_compressor)); if (!pComp) return MZ_FALSE; - succeeded = (tdefl_init(pComp, pPut_buf_func, pPut_buf_user, flags) == TDEFL_STATUS_OKAY); - succeeded = succeeded && (tdefl_compress_buffer(pComp, pBuf, buf_len, TDEFL_FINISH) == TDEFL_STATUS_DONE); - MZ_FREE(pComp); return succeeded; -} - -typedef struct -{ +typedef struct { size_t m_size, m_capacity; mz_uint8 *m_pBuf; mz_bool m_expandable; } tdefl_output_buffer; -static mz_bool tdefl_output_buffer_putter(const void *pBuf, int len, void *pUser) -{ +static mz_bool tdefl_output_buffer_putter(const void *pBuf, int len, + void *pUser) { tdefl_output_buffer *p = (tdefl_output_buffer *)pUser; size_t new_size = p->m_size + len; - if (new_size > p->m_capacity) - { - size_t new_capacity = p->m_capacity; mz_uint8 *pNew_buf; if (!p->m_expandable) return MZ_FALSE; - do { new_capacity = MZ_MAX(128U, new_capacity << 1U); } while (new_size > new_capacity); - pNew_buf = (mz_uint8*)MZ_REALLOC(p->m_pBuf, new_capacity); if (!pNew_buf) return MZ_FALSE; - p->m_pBuf = pNew_buf; p->m_capacity = new_capacity; + if (new_size > p->m_capacity) { + size_t new_capacity = p->m_capacity; + mz_uint8 *pNew_buf; + if (!p->m_expandable) + return MZ_FALSE; + do { + new_capacity = MZ_MAX(128U, new_capacity << 1U); + } while (new_size > new_capacity); + pNew_buf = (mz_uint8 *)MZ_REALLOC(p->m_pBuf, new_capacity); + if (!pNew_buf) + return MZ_FALSE; + p->m_pBuf = pNew_buf; + p->m_capacity = new_capacity; } - memcpy((mz_uint8*)p->m_pBuf + p->m_size, pBuf, len); p->m_size = new_size; + memcpy((mz_uint8 *)p->m_pBuf + p->m_size, pBuf, len); + p->m_size = new_size; return MZ_TRUE; } -void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags) -{ - tdefl_output_buffer out_buf; MZ_CLEAR_OBJ(out_buf); - if (!pOut_len) return MZ_FALSE; else *pOut_len = 0; +void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, + size_t *pOut_len, int flags) { + tdefl_output_buffer out_buf; + MZ_CLEAR_OBJ(out_buf); + if (!pOut_len) + return MZ_FALSE; + else + *pOut_len = 0; out_buf.m_expandable = MZ_TRUE; - if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) return NULL; - *pOut_len = out_buf.m_size; return out_buf.m_pBuf; + if (!tdefl_compress_mem_to_output( + pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) + return NULL; + *pOut_len = out_buf.m_size; + return out_buf.m_pBuf; } -size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags) -{ - tdefl_output_buffer out_buf; MZ_CLEAR_OBJ(out_buf); - if (!pOut_buf) return 0; - out_buf.m_pBuf = (mz_uint8*)pOut_buf; out_buf.m_capacity = out_buf_len; - if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) return 0; +size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, + const void *pSrc_buf, size_t src_buf_len, + int flags) { + tdefl_output_buffer out_buf; + MZ_CLEAR_OBJ(out_buf); + if (!pOut_buf) + return 0; + out_buf.m_pBuf = (mz_uint8 *)pOut_buf; + out_buf.m_capacity = out_buf_len; + if (!tdefl_compress_mem_to_output( + pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) + return 0; return out_buf.m_size; } #ifndef MINIZ_NO_ZLIB_APIS -static const mz_uint s_tdefl_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 }; +static const mz_uint s_tdefl_num_probes[11] = {0, 1, 6, 32, 16, 32, + 128, 256, 512, 768, 1500}; -// level may actually range from [0,10] (10 is a "hidden" max level, where we want a bit more compression and it's fine if throughput to fall off a cliff on some files). -mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy) -{ - mz_uint comp_flags = s_tdefl_num_probes[(level >= 0) ? MZ_MIN(10, level) : MZ_DEFAULT_LEVEL] | ((level <= 3) ? TDEFL_GREEDY_PARSING_FLAG : 0); - if (window_bits > 0) comp_flags |= TDEFL_WRITE_ZLIB_HEADER; +// level may actually range from [0,10] (10 is a "hidden" max level, where we +// want a bit more compression and it's fine if throughput to fall off a cliff +// on some files). +mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, + int strategy) { + mz_uint comp_flags = + s_tdefl_num_probes[(level >= 0) ? MZ_MIN(10, level) : MZ_DEFAULT_LEVEL] | + ((level <= 3) ? TDEFL_GREEDY_PARSING_FLAG : 0); + if (window_bits > 0) + comp_flags |= TDEFL_WRITE_ZLIB_HEADER; - if (!level) comp_flags |= TDEFL_FORCE_ALL_RAW_BLOCKS; - else if (strategy == MZ_FILTERED) comp_flags |= TDEFL_FILTER_MATCHES; - else if (strategy == MZ_HUFFMAN_ONLY) comp_flags &= ~TDEFL_MAX_PROBES_MASK; - else if (strategy == MZ_FIXED) comp_flags |= TDEFL_FORCE_ALL_STATIC_BLOCKS; - else if (strategy == MZ_RLE) comp_flags |= TDEFL_RLE_MATCHES; + if (!level) + comp_flags |= TDEFL_FORCE_ALL_RAW_BLOCKS; + else if (strategy == MZ_FILTERED) + comp_flags |= TDEFL_FILTER_MATCHES; + else if (strategy == MZ_HUFFMAN_ONLY) + comp_flags &= ~TDEFL_MAX_PROBES_MASK; + else if (strategy == MZ_FIXED) + comp_flags |= TDEFL_FORCE_ALL_STATIC_BLOCKS; + else if (strategy == MZ_RLE) + comp_flags |= TDEFL_RLE_MATCHES; return comp_flags; } -#endif //MINIZ_NO_ZLIB_APIS +#endif // MINIZ_NO_ZLIB_APIS #ifdef _MSC_VER -#pragma warning (push) -#pragma warning (disable:4204) // nonstandard extension used : non-constant aggregate initializer (also supported by GNU C and C99, so no big deal) +#pragma warning(push) +#pragma warning(disable : 4204) // nonstandard extension used : non-constant + // aggregate initializer (also supported by GNU + // C and C99, so no big deal) #endif -// Simple PNG writer function by Alex Evans, 2011. Released into the public domain: https://gist.github.com/908299, more context at +// Simple PNG writer function by Alex Evans, 2011. Released into the public +// domain: https://gist.github.com/908299, more context at // http://altdevblogaday.org/2011/04/06/a-smaller-jpg-encoder/. -// This is actually a modification of Alex's original code so PNG files generated by this function pass pngcheck. -void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip) -{ - // Using a local copy of this array here in case MINIZ_NO_ZLIB_APIS was defined. - static const mz_uint s_tdefl_png_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 }; - tdefl_compressor *pComp = (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); tdefl_output_buffer out_buf; int i, bpl = w * num_chans, y, z; mz_uint32 c; *pLen_out = 0; - if (!pComp) return NULL; - MZ_CLEAR_OBJ(out_buf); out_buf.m_expandable = MZ_TRUE; out_buf.m_capacity = 57+MZ_MAX(64, (1+bpl)*h); if (NULL == (out_buf.m_pBuf = (mz_uint8*)MZ_MALLOC(out_buf.m_capacity))) { MZ_FREE(pComp); return NULL; } +// This is actually a modification of Alex's original code so PNG files +// generated by this function pass pngcheck. +void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, + int h, int num_chans, + size_t *pLen_out, + mz_uint level, mz_bool flip) { + // Using a local copy of this array here in case MINIZ_NO_ZLIB_APIS was + // defined. + static const mz_uint s_tdefl_png_num_probes[11] = { + 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500}; + tdefl_compressor *pComp = + (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); + tdefl_output_buffer out_buf; + int i, bpl = w * num_chans, y, z; + mz_uint32 c; + *pLen_out = 0; + if (!pComp) + return NULL; + MZ_CLEAR_OBJ(out_buf); + out_buf.m_expandable = MZ_TRUE; + out_buf.m_capacity = 57 + MZ_MAX(64, (1 + bpl) * h); + if (NULL == (out_buf.m_pBuf = (mz_uint8 *)MZ_MALLOC(out_buf.m_capacity))) { + MZ_FREE(pComp); + return NULL; + } // write dummy header - for (z = 41; z; --z) tdefl_output_buffer_putter(&z, 1, &out_buf); + for (z = 41; z; --z) + tdefl_output_buffer_putter(&z, 1, &out_buf); // compress image data - tdefl_init(pComp, tdefl_output_buffer_putter, &out_buf, s_tdefl_png_num_probes[MZ_MIN(10, level)] | TDEFL_WRITE_ZLIB_HEADER); - for (y = 0; y < h; ++y) { tdefl_compress_buffer(pComp, &z, 1, TDEFL_NO_FLUSH); tdefl_compress_buffer(pComp, (mz_uint8*)pImage + (flip ? (h - 1 - y) : y) * bpl, bpl, TDEFL_NO_FLUSH); } - if (tdefl_compress_buffer(pComp, NULL, 0, TDEFL_FINISH) != TDEFL_STATUS_DONE) { MZ_FREE(pComp); MZ_FREE(out_buf.m_pBuf); return NULL; } + tdefl_init(pComp, tdefl_output_buffer_putter, &out_buf, + s_tdefl_png_num_probes[MZ_MIN(10, level)] | + TDEFL_WRITE_ZLIB_HEADER); + for (y = 0; y < h; ++y) { + tdefl_compress_buffer(pComp, &z, 1, TDEFL_NO_FLUSH); + tdefl_compress_buffer(pComp, + (mz_uint8 *)pImage + (flip ? (h - 1 - y) : y) * bpl, + bpl, TDEFL_NO_FLUSH); + } + if (tdefl_compress_buffer(pComp, NULL, 0, TDEFL_FINISH) != + TDEFL_STATUS_DONE) { + MZ_FREE(pComp); + MZ_FREE(out_buf.m_pBuf); + return NULL; + } // write real header - *pLen_out = out_buf.m_size-41; + *pLen_out = out_buf.m_size - 41; { static const mz_uint8 chans[] = {0x00, 0x00, 0x04, 0x02, 0x06}; - mz_uint8 pnghdr[41]={0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52, - 0,0,(mz_uint8)(w>>8),(mz_uint8)w,0,0,(mz_uint8)(h>>8),(mz_uint8)h,8,chans[num_chans],0,0,0,0,0,0,0, - (mz_uint8)(*pLen_out>>24),(mz_uint8)(*pLen_out>>16),(mz_uint8)(*pLen_out>>8),(mz_uint8)*pLen_out,0x49,0x44,0x41,0x54}; - c=(mz_uint32)mz_crc32(MZ_CRC32_INIT,pnghdr+12,17); for (i=0; i<4; ++i, c<<=8) ((mz_uint8*)(pnghdr+29))[i]=(mz_uint8)(c>>24); + mz_uint8 pnghdr[41] = {0x89, + 0x50, + 0x4e, + 0x47, + 0x0d, + 0x0a, + 0x1a, + 0x0a, + 0x00, + 0x00, + 0x00, + 0x0d, + 0x49, + 0x48, + 0x44, + 0x52, + 0, + 0, + (mz_uint8)(w >> 8), + (mz_uint8)w, + 0, + 0, + (mz_uint8)(h >> 8), + (mz_uint8)h, + 8, + chans[num_chans], + 0, + 0, + 0, + 0, + 0, + 0, + 0, + (mz_uint8)(*pLen_out >> 24), + (mz_uint8)(*pLen_out >> 16), + (mz_uint8)(*pLen_out >> 8), + (mz_uint8)*pLen_out, + 0x49, + 0x44, + 0x41, + 0x54}; + c = (mz_uint32)mz_crc32(MZ_CRC32_INIT, pnghdr + 12, 17); + for (i = 0; i < 4; ++i, c <<= 8) + ((mz_uint8 *)(pnghdr + 29))[i] = (mz_uint8)(c >> 24); memcpy(out_buf.m_pBuf, pnghdr, 41); } // write footer (IDAT CRC-32, followed by IEND chunk) - if (!tdefl_output_buffer_putter("\0\0\0\0\0\0\0\0\x49\x45\x4e\x44\xae\x42\x60\x82", 16, &out_buf)) { *pLen_out = 0; MZ_FREE(pComp); MZ_FREE(out_buf.m_pBuf); return NULL; } - c = (mz_uint32)mz_crc32(MZ_CRC32_INIT,out_buf.m_pBuf+41-4, *pLen_out+4); for (i=0; i<4; ++i, c<<=8) (out_buf.m_pBuf+out_buf.m_size-16)[i] = (mz_uint8)(c >> 24); + if (!tdefl_output_buffer_putter( + "\0\0\0\0\0\0\0\0\x49\x45\x4e\x44\xae\x42\x60\x82", 16, &out_buf)) { + *pLen_out = 0; + MZ_FREE(pComp); + MZ_FREE(out_buf.m_pBuf); + return NULL; + } + c = (mz_uint32)mz_crc32(MZ_CRC32_INIT, out_buf.m_pBuf + 41 - 4, + *pLen_out + 4); + for (i = 0; i < 4; ++i, c <<= 8) + (out_buf.m_pBuf + out_buf.m_size - 16)[i] = (mz_uint8)(c >> 24); // compute final size of file, grab compressed data buffer and return - *pLen_out += 57; MZ_FREE(pComp); return out_buf.m_pBuf; + *pLen_out += 57; + MZ_FREE(pComp); + return out_buf.m_pBuf; } -void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out) -{ - // Level 6 corresponds to TDEFL_DEFAULT_MAX_PROBES or MZ_DEFAULT_LEVEL (but we can't depend on MZ_DEFAULT_LEVEL being available in case the zlib API's where #defined out) - return tdefl_write_image_to_png_file_in_memory_ex(pImage, w, h, num_chans, pLen_out, 6, MZ_FALSE); +void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, + int num_chans, size_t *pLen_out) { + // Level 6 corresponds to TDEFL_DEFAULT_MAX_PROBES or MZ_DEFAULT_LEVEL (but we + // can't depend on MZ_DEFAULT_LEVEL being available in case the zlib API's + // where #defined out) + return tdefl_write_image_to_png_file_in_memory_ex(pImage, w, h, num_chans, + pLen_out, 6, MZ_FALSE); } #ifdef _MSC_VER -#pragma warning (pop) +#pragma warning(pop) #endif // ------------------- .ZIP archive reading @@ -2851,138 +4038,171 @@ void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, #ifndef MINIZ_NO_ARCHIVE_APIS #ifdef MINIZ_NO_STDIO - #define MZ_FILE void * +#define MZ_FILE void * #else - #include - #include +#include +#include - #if defined(_MSC_VER) || defined(__MINGW64__) - static FILE *mz_fopen(const char *pFilename, const char *pMode) - { - FILE* pFile = NULL; - fopen_s(&pFile, pFilename, pMode); - return pFile; - } - static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream) - { - FILE* pFile = NULL; - if (freopen_s(&pFile, pPath, pMode, pStream)) - return NULL; - return pFile; - } - #ifndef MINIZ_NO_TIME - #include - #endif - #define MZ_FILE FILE - #define MZ_FOPEN mz_fopen - #define MZ_FCLOSE fclose - #define MZ_FREAD fread - #define MZ_FWRITE fwrite - #define MZ_FTELL64 _ftelli64 - #define MZ_FSEEK64 _fseeki64 - #define MZ_FILE_STAT_STRUCT _stat - #define MZ_FILE_STAT _stat - #define MZ_FFLUSH fflush - #define MZ_FREOPEN mz_freopen - #define MZ_DELETE_FILE remove - #elif defined(__MINGW32__) - #ifndef MINIZ_NO_TIME - #include - #endif - #define MZ_FILE FILE - #define MZ_FOPEN(f, m) fopen(f, m) - #define MZ_FCLOSE fclose - #define MZ_FREAD fread - #define MZ_FWRITE fwrite - #define MZ_FTELL64 ftello64 - #define MZ_FSEEK64 fseeko64 - #define MZ_FILE_STAT_STRUCT _stat - #define MZ_FILE_STAT _stat - #define MZ_FFLUSH fflush - #define MZ_FREOPEN(f, m, s) freopen(f, m, s) - #define MZ_DELETE_FILE remove - #elif defined(__TINYC__) - #ifndef MINIZ_NO_TIME - #include - #endif - #define MZ_FILE FILE - #define MZ_FOPEN(f, m) fopen(f, m) - #define MZ_FCLOSE fclose - #define MZ_FREAD fread - #define MZ_FWRITE fwrite - #define MZ_FTELL64 ftell - #define MZ_FSEEK64 fseek - #define MZ_FILE_STAT_STRUCT stat - #define MZ_FILE_STAT stat - #define MZ_FFLUSH fflush - #define MZ_FREOPEN(f, m, s) freopen(f, m, s) - #define MZ_DELETE_FILE remove - #elif defined(__GNUC__) && _LARGEFILE64_SOURCE - #ifndef MINIZ_NO_TIME - #include - #endif - #define MZ_FILE FILE - #define MZ_FOPEN(f, m) fopen64(f, m) - #define MZ_FCLOSE fclose - #define MZ_FREAD fread - #define MZ_FWRITE fwrite - #define MZ_FTELL64 ftello64 - #define MZ_FSEEK64 fseeko64 - #define MZ_FILE_STAT_STRUCT stat64 - #define MZ_FILE_STAT stat64 - #define MZ_FFLUSH fflush - #define MZ_FREOPEN(p, m, s) freopen64(p, m, s) - #define MZ_DELETE_FILE remove - #else - #ifndef MINIZ_NO_TIME - #include - #endif - #define MZ_FILE FILE - #define MZ_FOPEN(f, m) fopen(f, m) - #define MZ_FCLOSE fclose - #define MZ_FREAD fread - #define MZ_FWRITE fwrite - #define MZ_FTELL64 ftello - #define MZ_FSEEK64 fseeko - #define MZ_FILE_STAT_STRUCT stat - #define MZ_FILE_STAT stat - #define MZ_FFLUSH fflush - #define MZ_FREOPEN(f, m, s) freopen(f, m, s) - #define MZ_DELETE_FILE remove - #endif // #ifdef _MSC_VER +#if defined(_MSC_VER) +static FILE *mz_fopen(const char *pFilename, const char *pMode) { + FILE *pFile = NULL; + fopen_s(&pFile, pFilename, pMode); + return pFile; +} +static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream) { + FILE *pFile = NULL; + if (freopen_s(&pFile, pPath, pMode, pStream)) + return NULL; + return pFile; +} +#ifndef MINIZ_NO_TIME +#include +#endif +#define MZ_FILE FILE +#define MZ_FOPEN mz_fopen +#define MZ_FCLOSE fclose +#define MZ_FREAD fread +#define MZ_FWRITE fwrite +#define MZ_FTELL64 _ftelli64 +#define MZ_FSEEK64 _fseeki64 +#define MZ_FILE_STAT_STRUCT _stat +#define MZ_FILE_STAT _stat +#define MZ_FFLUSH fflush +#define MZ_FREOPEN mz_freopen +#define MZ_DELETE_FILE remove +#elif defined(__MINGW32__) +#ifndef MINIZ_NO_TIME +#include +#endif +#define MZ_FILE FILE +#define MZ_FOPEN(f, m) fopen(f, m) +#define MZ_FCLOSE fclose +#define MZ_FREAD fread +#define MZ_FWRITE fwrite +#define MZ_FTELL64 ftell +#define MZ_FSEEK64 fseek +#define MZ_FILE_STAT_STRUCT _stat +#define MZ_FILE_STAT _stat +#define MZ_FFLUSH fflush +#define MZ_FREOPEN(f, m, s) freopen(f, m, s) +#define MZ_DELETE_FILE remove +#elif defined(__TINYC__) +#ifndef MINIZ_NO_TIME +#include +#endif +#define MZ_FILE FILE +#define MZ_FOPEN(f, m) fopen(f, m) +#define MZ_FCLOSE fclose +#define MZ_FREAD fread +#define MZ_FWRITE fwrite +#define MZ_FTELL64 ftell +#define MZ_FSEEK64 fseek +#define MZ_FILE_STAT_STRUCT stat +#define MZ_FILE_STAT stat +#define MZ_FFLUSH fflush +#define MZ_FREOPEN(f, m, s) freopen(f, m, s) +#define MZ_DELETE_FILE remove +#elif defined(__GNUC__) && _LARGEFILE64_SOURCE +#ifndef MINIZ_NO_TIME +#include +#endif +#define MZ_FILE FILE +#define MZ_FOPEN(f, m) fopen64(f, m) +#define MZ_FCLOSE fclose +#define MZ_FREAD fread +#define MZ_FWRITE fwrite +#define MZ_FTELL64 ftello64 +#define MZ_FSEEK64 fseeko64 +#define MZ_FILE_STAT_STRUCT stat64 +#define MZ_FILE_STAT stat64 +#define MZ_FFLUSH fflush +#define MZ_FREOPEN(p, m, s) freopen64(p, m, s) +#define MZ_DELETE_FILE remove +#else +#ifndef MINIZ_NO_TIME +#include +#endif +#define MZ_FILE FILE +#define MZ_FOPEN(f, m) fopen(f, m) +#define MZ_FCLOSE fclose +#define MZ_FREAD fread +#define MZ_FWRITE fwrite +#if _FILE_OFFSET_BITS == 64 || _POSIX_C_SOURCE >= 200112L +#define MZ_FTELL64 ftello +#define MZ_FSEEK64 fseeko +#else +#define MZ_FTELL64 ftell +#define MZ_FSEEK64 fseek +#endif +#define MZ_FILE_STAT_STRUCT stat +#define MZ_FILE_STAT stat +#define MZ_FFLUSH fflush +#define MZ_FREOPEN(f, m, s) freopen(f, m, s) +#define MZ_DELETE_FILE remove +#endif // #ifdef _MSC_VER #endif // #ifdef MINIZ_NO_STDIO #define MZ_TOLOWER(c) ((((c) >= 'A') && ((c) <= 'Z')) ? ((c) - 'A' + 'a') : (c)) -// Various ZIP archive enums. To completely avoid cross platform compiler alignment and platform endian issues, miniz.c doesn't use structs for any of this stuff. -enum -{ +// Various ZIP archive enums. To completely avoid cross platform compiler +// alignment and platform endian issues, miniz.c doesn't use structs for any of +// this stuff. +enum { // ZIP archive identifiers and record sizes - MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06054b50, MZ_ZIP_CENTRAL_DIR_HEADER_SIG = 0x02014b50, MZ_ZIP_LOCAL_DIR_HEADER_SIG = 0x04034b50, - MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22, + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06054b50, + MZ_ZIP_CENTRAL_DIR_HEADER_SIG = 0x02014b50, + MZ_ZIP_LOCAL_DIR_HEADER_SIG = 0x04034b50, + MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30, + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46, + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22, // Central directory header record offsets - MZ_ZIP_CDH_SIG_OFS = 0, MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4, MZ_ZIP_CDH_VERSION_NEEDED_OFS = 6, MZ_ZIP_CDH_BIT_FLAG_OFS = 8, - MZ_ZIP_CDH_METHOD_OFS = 10, MZ_ZIP_CDH_FILE_TIME_OFS = 12, MZ_ZIP_CDH_FILE_DATE_OFS = 14, MZ_ZIP_CDH_CRC32_OFS = 16, - MZ_ZIP_CDH_COMPRESSED_SIZE_OFS = 20, MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS = 24, MZ_ZIP_CDH_FILENAME_LEN_OFS = 28, MZ_ZIP_CDH_EXTRA_LEN_OFS = 30, - MZ_ZIP_CDH_COMMENT_LEN_OFS = 32, MZ_ZIP_CDH_DISK_START_OFS = 34, MZ_ZIP_CDH_INTERNAL_ATTR_OFS = 36, MZ_ZIP_CDH_EXTERNAL_ATTR_OFS = 38, MZ_ZIP_CDH_LOCAL_HEADER_OFS = 42, + MZ_ZIP_CDH_SIG_OFS = 0, + MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4, + MZ_ZIP_CDH_VERSION_NEEDED_OFS = 6, + MZ_ZIP_CDH_BIT_FLAG_OFS = 8, + MZ_ZIP_CDH_METHOD_OFS = 10, + MZ_ZIP_CDH_FILE_TIME_OFS = 12, + MZ_ZIP_CDH_FILE_DATE_OFS = 14, + MZ_ZIP_CDH_CRC32_OFS = 16, + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS = 20, + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS = 24, + MZ_ZIP_CDH_FILENAME_LEN_OFS = 28, + MZ_ZIP_CDH_EXTRA_LEN_OFS = 30, + MZ_ZIP_CDH_COMMENT_LEN_OFS = 32, + MZ_ZIP_CDH_DISK_START_OFS = 34, + MZ_ZIP_CDH_INTERNAL_ATTR_OFS = 36, + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS = 38, + MZ_ZIP_CDH_LOCAL_HEADER_OFS = 42, // Local directory header offsets - MZ_ZIP_LDH_SIG_OFS = 0, MZ_ZIP_LDH_VERSION_NEEDED_OFS = 4, MZ_ZIP_LDH_BIT_FLAG_OFS = 6, MZ_ZIP_LDH_METHOD_OFS = 8, MZ_ZIP_LDH_FILE_TIME_OFS = 10, - MZ_ZIP_LDH_FILE_DATE_OFS = 12, MZ_ZIP_LDH_CRC32_OFS = 14, MZ_ZIP_LDH_COMPRESSED_SIZE_OFS = 18, MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS = 22, - MZ_ZIP_LDH_FILENAME_LEN_OFS = 26, MZ_ZIP_LDH_EXTRA_LEN_OFS = 28, + MZ_ZIP_LDH_SIG_OFS = 0, + MZ_ZIP_LDH_VERSION_NEEDED_OFS = 4, + MZ_ZIP_LDH_BIT_FLAG_OFS = 6, + MZ_ZIP_LDH_METHOD_OFS = 8, + MZ_ZIP_LDH_FILE_TIME_OFS = 10, + MZ_ZIP_LDH_FILE_DATE_OFS = 12, + MZ_ZIP_LDH_CRC32_OFS = 14, + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS = 18, + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS = 22, + MZ_ZIP_LDH_FILENAME_LEN_OFS = 26, + MZ_ZIP_LDH_EXTRA_LEN_OFS = 28, // End of central directory offsets - MZ_ZIP_ECDH_SIG_OFS = 0, MZ_ZIP_ECDH_NUM_THIS_DISK_OFS = 4, MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS = 6, MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 8, - MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS = 10, MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12, MZ_ZIP_ECDH_CDIR_OFS_OFS = 16, MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20, + MZ_ZIP_ECDH_SIG_OFS = 0, + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS = 4, + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS = 6, + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 8, + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS = 10, + MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12, + MZ_ZIP_ECDH_CDIR_OFS_OFS = 16, + MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20, }; -typedef struct -{ +typedef struct { void *m_p; size_t m_size, m_capacity; mz_uint m_element_size; } mz_zip_array; -struct mz_zip_internal_state_tag -{ +struct mz_zip_internal_state_tag { mz_zip_array m_central_dir; mz_zip_array m_central_dir_offsets; mz_zip_array m_sorted_central_dir_offsets; @@ -2992,232 +4212,324 @@ struct mz_zip_internal_state_tag size_t m_mem_capacity; }; -#define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) (array_ptr)->m_element_size = element_size -#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[index] +#define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) \ + (array_ptr)->m_element_size = element_size +#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) \ + ((element_type *)((array_ptr)->m_p))[index] -static MZ_FORCEINLINE void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray) -{ +static MZ_FORCEINLINE void mz_zip_array_clear(mz_zip_archive *pZip, + mz_zip_array *pArray) { pZip->m_pFree(pZip->m_pAlloc_opaque, pArray->m_p); memset(pArray, 0, sizeof(mz_zip_array)); } -static mz_bool mz_zip_array_ensure_capacity(mz_zip_archive *pZip, mz_zip_array *pArray, size_t min_new_capacity, mz_uint growing) -{ - void *pNew_p; size_t new_capacity = min_new_capacity; MZ_ASSERT(pArray->m_element_size); if (pArray->m_capacity >= min_new_capacity) return MZ_TRUE; - if (growing) { new_capacity = MZ_MAX(1, pArray->m_capacity); while (new_capacity < min_new_capacity) new_capacity *= 2; } - if (NULL == (pNew_p = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pArray->m_p, pArray->m_element_size, new_capacity))) return MZ_FALSE; - pArray->m_p = pNew_p; pArray->m_capacity = new_capacity; +static mz_bool mz_zip_array_ensure_capacity(mz_zip_archive *pZip, + mz_zip_array *pArray, + size_t min_new_capacity, + mz_uint growing) { + void *pNew_p; + size_t new_capacity = min_new_capacity; + MZ_ASSERT(pArray->m_element_size); + if (pArray->m_capacity >= min_new_capacity) + return MZ_TRUE; + if (growing) { + new_capacity = MZ_MAX(1, pArray->m_capacity); + while (new_capacity < min_new_capacity) + new_capacity *= 2; + } + if (NULL == (pNew_p = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pArray->m_p, + pArray->m_element_size, new_capacity))) + return MZ_FALSE; + pArray->m_p = pNew_p; + pArray->m_capacity = new_capacity; return MZ_TRUE; } -static MZ_FORCEINLINE mz_bool mz_zip_array_reserve(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_capacity, mz_uint growing) -{ - if (new_capacity > pArray->m_capacity) { if (!mz_zip_array_ensure_capacity(pZip, pArray, new_capacity, growing)) return MZ_FALSE; } +static MZ_FORCEINLINE mz_bool mz_zip_array_reserve(mz_zip_archive *pZip, + mz_zip_array *pArray, + size_t new_capacity, + mz_uint growing) { + if (new_capacity > pArray->m_capacity) { + if (!mz_zip_array_ensure_capacity(pZip, pArray, new_capacity, growing)) + return MZ_FALSE; + } return MZ_TRUE; } -static MZ_FORCEINLINE mz_bool mz_zip_array_resize(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_size, mz_uint growing) -{ - if (new_size > pArray->m_capacity) { if (!mz_zip_array_ensure_capacity(pZip, pArray, new_size, growing)) return MZ_FALSE; } +static MZ_FORCEINLINE mz_bool mz_zip_array_resize(mz_zip_archive *pZip, + mz_zip_array *pArray, + size_t new_size, + mz_uint growing) { + if (new_size > pArray->m_capacity) { + if (!mz_zip_array_ensure_capacity(pZip, pArray, new_size, growing)) + return MZ_FALSE; + } pArray->m_size = new_size; return MZ_TRUE; } -static MZ_FORCEINLINE mz_bool mz_zip_array_ensure_room(mz_zip_archive *pZip, mz_zip_array *pArray, size_t n) -{ +static MZ_FORCEINLINE mz_bool mz_zip_array_ensure_room(mz_zip_archive *pZip, + mz_zip_array *pArray, + size_t n) { return mz_zip_array_reserve(pZip, pArray, pArray->m_size + n, MZ_TRUE); } -static MZ_FORCEINLINE mz_bool mz_zip_array_push_back(mz_zip_archive *pZip, mz_zip_array *pArray, const void *pElements, size_t n) -{ - if (n==0) return MZ_TRUE; - assert(NULL!=pElements); - size_t orig_size = pArray->m_size; if (!mz_zip_array_resize(pZip, pArray, orig_size + n, MZ_TRUE)) return MZ_FALSE; - memcpy((mz_uint8*)pArray->m_p + orig_size * pArray->m_element_size, pElements, n * pArray->m_element_size); +static MZ_FORCEINLINE mz_bool mz_zip_array_push_back(mz_zip_archive *pZip, + mz_zip_array *pArray, + const void *pElements, + size_t n) { + if (0 == n) + return MZ_TRUE; + if (!pElements) + return MZ_FALSE; + + size_t orig_size = pArray->m_size; + if (!mz_zip_array_resize(pZip, pArray, orig_size + n, MZ_TRUE)) + return MZ_FALSE; + memcpy((mz_uint8 *)pArray->m_p + orig_size * pArray->m_element_size, + pElements, n * pArray->m_element_size); return MZ_TRUE; } #ifndef MINIZ_NO_TIME -static time_t mz_zip_dos_to_time_t(int dos_time, int dos_date) -{ +static time_t mz_zip_dos_to_time_t(int dos_time, int dos_date) { struct tm tm; - memset(&tm, 0, sizeof(tm)); tm.tm_isdst = -1; - tm.tm_year = ((dos_date >> 9) & 127) + 1980 - 1900; tm.tm_mon = ((dos_date >> 5) & 15) - 1; tm.tm_mday = dos_date & 31; - tm.tm_hour = (dos_time >> 11) & 31; tm.tm_min = (dos_time >> 5) & 63; tm.tm_sec = (dos_time << 1) & 62; + memset(&tm, 0, sizeof(tm)); + tm.tm_isdst = -1; + tm.tm_year = ((dos_date >> 9) & 127) + 1980 - 1900; + tm.tm_mon = ((dos_date >> 5) & 15) - 1; + tm.tm_mday = dos_date & 31; + tm.tm_hour = (dos_time >> 11) & 31; + tm.tm_min = (dos_time >> 5) & 63; + tm.tm_sec = (dos_time << 1) & 62; return mktime(&tm); } -static void mz_zip_time_to_dos_time(time_t time, mz_uint16 *pDOS_time, mz_uint16 *pDOS_date) -{ +#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS +static void mz_zip_time_t_to_dos_time(time_t time, mz_uint16 *pDOS_time, + mz_uint16 *pDOS_date) { #ifdef _MSC_VER struct tm tm_struct; struct tm *tm = &tm_struct; errno_t err = localtime_s(tm, &time); - if (err) - { - *pDOS_date = 0; *pDOS_time = 0; + if (err) { + *pDOS_date = 0; + *pDOS_time = 0; return; } #else struct tm *tm = localtime(&time); -#endif - *pDOS_time = (mz_uint16)(((tm->tm_hour) << 11) + ((tm->tm_min) << 5) + ((tm->tm_sec) >> 1)); - *pDOS_date = (mz_uint16)(((tm->tm_year + 1900 - 1980) << 9) + ((tm->tm_mon + 1) << 5) + tm->tm_mday); +#endif /* #ifdef _MSC_VER */ + + *pDOS_time = (mz_uint16)(((tm->tm_hour) << 11) + ((tm->tm_min) << 5) + + ((tm->tm_sec) >> 1)); + *pDOS_date = (mz_uint16)(((tm->tm_year + 1900 - 1980) << 9) + + ((tm->tm_mon + 1) << 5) + tm->tm_mday); } -#endif +#endif /* MINIZ_NO_ARCHIVE_WRITING_APIS */ #ifndef MINIZ_NO_STDIO -static mz_bool mz_zip_get_file_modified_time(const char *pFilename, mz_uint16 *pDOS_time, mz_uint16 *pDOS_date) -{ -#ifdef MINIZ_NO_TIME - (void)pFilename; *pDOS_date = *pDOS_time = 0; -#else +#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS +static mz_bool mz_zip_get_file_modified_time(const char *pFilename, + time_t *pTime) { struct MZ_FILE_STAT_STRUCT file_stat; - // On Linux with x86 glibc, this call will fail on large files (>= 0x80000000 bytes) unless you compiled with _LARGEFILE64_SOURCE. Argh. + + /* On Linux with x86 glibc, this call will fail on large files (I think >= + * 0x80000000 bytes) unless you compiled with _LARGEFILE64_SOURCE. Argh. */ if (MZ_FILE_STAT(pFilename, &file_stat) != 0) return MZ_FALSE; - mz_zip_time_to_dos_time(file_stat.st_mtime, pDOS_time, pDOS_date); -#endif // #ifdef MINIZ_NO_TIME + + *pTime = file_stat.st_mtime; + return MZ_TRUE; } +#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS*/ + +static mz_bool mz_zip_set_file_times(const char *pFilename, time_t access_time, + time_t modified_time) { + struct utimbuf t; + + memset(&t, 0, sizeof(t)); + t.actime = access_time; + t.modtime = modified_time; -#ifndef MINIZ_NO_TIME -static mz_bool mz_zip_set_file_times(const char *pFilename, time_t access_time, time_t modified_time) -{ - struct utimbuf t; t.actime = access_time; t.modtime = modified_time; return !utime(pFilename, &t); } -#endif // #ifndef MINIZ_NO_TIME -#endif // #ifndef MINIZ_NO_STDIO +#endif /* #ifndef MINIZ_NO_STDIO */ +#endif /* #ifndef MINIZ_NO_TIME */ -static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, mz_uint32 flags) -{ +static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, + mz_uint32 flags) { (void)flags; if ((!pZip) || (pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID)) return MZ_FALSE; - if (!pZip->m_pAlloc) pZip->m_pAlloc = def_alloc_func; - if (!pZip->m_pFree) pZip->m_pFree = def_free_func; - if (!pZip->m_pRealloc) pZip->m_pRealloc = def_realloc_func; + if (!pZip->m_pAlloc) + pZip->m_pAlloc = def_alloc_func; + if (!pZip->m_pFree) + pZip->m_pFree = def_free_func; + if (!pZip->m_pRealloc) + pZip->m_pRealloc = def_realloc_func; pZip->m_zip_mode = MZ_ZIP_MODE_READING; pZip->m_archive_size = 0; pZip->m_central_directory_file_ofs = 0; pZip->m_total_files = 0; - if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state)))) + if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc( + pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state)))) return MZ_FALSE; memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32)); + MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, + sizeof(mz_uint8)); + MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, + sizeof(mz_uint32)); + MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, + sizeof(mz_uint32)); return MZ_TRUE; } -static MZ_FORCEINLINE mz_bool mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, mz_uint r_index) -{ - const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE; - const mz_uint8 *pR = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, r_index)); - mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS), r_len = MZ_READ_LE16(pR + MZ_ZIP_CDH_FILENAME_LEN_OFS); +static MZ_FORCEINLINE mz_bool +mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, + const mz_zip_array *pCentral_dir_offsets, + mz_uint l_index, mz_uint r_index) { + const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT( + pCentral_dir_array, mz_uint8, + MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, + l_index)), + *pE; + const mz_uint8 *pR = &MZ_ZIP_ARRAY_ELEMENT( + pCentral_dir_array, mz_uint8, + MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, r_index)); + mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS), + r_len = MZ_READ_LE16(pR + MZ_ZIP_CDH_FILENAME_LEN_OFS); mz_uint8 l = 0, r = 0; - pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; pR += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; + pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; + pR += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; pE = pL + MZ_MIN(l_len, r_len); - while (pL < pE) - { + while (pL < pE) { if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR))) break; - pL++; pR++; + pL++; + pR++; } return (pL == pE) ? (l_len < r_len) : (l < r); } -#define MZ_SWAP_UINT32(a, b) do { mz_uint32 t = a; a = b; b = t; } MZ_MACRO_END +#define MZ_SWAP_UINT32(a, b) \ + do { \ + mz_uint32 t = a; \ + a = b; \ + b = t; \ + } \ + MZ_MACRO_END -// Heap sort of lowercased filenames, used to help accelerate plain central directory searches by mz_zip_reader_locate_file(). (Could also use qsort(), but it could allocate memory.) -static void mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip) -{ +// Heap sort of lowercased filenames, used to help accelerate plain central +// directory searches by mz_zip_reader_locate_file(). (Could also use qsort(), +// but it could allocate memory.) +static void +mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip) { mz_zip_internal_state *pState = pZip->m_pState; const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets; const mz_zip_array *pCentral_dir = &pState->m_central_dir; - mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0); + mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT( + &pState->m_sorted_central_dir_offsets, mz_uint32, 0); const int size = pZip->m_total_files; int start = (size - 2) >> 1, end; - while (start >= 0) - { + while (start >= 0) { int child, root = start; - for ( ; ; ) - { + for (;;) { if ((child = (root << 1) + 1) >= size) break; - child += (((child + 1) < size) && (mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1]))); - if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child])) + child += + (((child + 1) < size) && + (mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, + pIndices[child], pIndices[child + 1]))); + if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, + pIndices[root], pIndices[child])) break; - MZ_SWAP_UINT32(pIndices[root], pIndices[child]); root = child; + MZ_SWAP_UINT32(pIndices[root], pIndices[child]); + root = child; } start--; } end = size - 1; - while (end > 0) - { + while (end > 0) { int child, root = 0; MZ_SWAP_UINT32(pIndices[end], pIndices[0]); - for ( ; ; ) - { + for (;;) { if ((child = (root << 1) + 1) >= end) break; - child += (((child + 1) < end) && mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1])); - if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child])) + child += + (((child + 1) < end) && + mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, + pIndices[child], pIndices[child + 1])); + if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, + pIndices[root], pIndices[child])) break; - MZ_SWAP_UINT32(pIndices[root], pIndices[child]); root = child; + MZ_SWAP_UINT32(pIndices[root], pIndices[child]); + root = child; } end--; } } -static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint32 flags) -{ +static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, + mz_uint32 flags) { mz_uint cdir_size, num_this_disk, cdir_disk_index; mz_uint64 cdir_ofs; mz_int64 cur_file_ofs; const mz_uint8 *p; - mz_uint32 buf_u32[4096 / sizeof(mz_uint32)]; mz_uint8 *pBuf = (mz_uint8 *)buf_u32; - mz_bool sort_central_dir = ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0); - // Basic sanity checks - reject files which are too small, and check the first 4 bytes of the file to make sure a local header is there. + mz_uint32 buf_u32[4096 / sizeof(mz_uint32)]; + mz_uint8 *pBuf = (mz_uint8 *)buf_u32; + mz_bool sort_central_dir = + ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0); + // Basic sanity checks - reject files which are too small, and check the first + // 4 bytes of the file to make sure a local header is there. if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) return MZ_FALSE; - // Find the end of central directory record by scanning the file from the end towards the beginning. - cur_file_ofs = MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0); - for ( ; ; ) - { - int i, n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs); + // Find the end of central directory record by scanning the file from the end + // towards the beginning. + cur_file_ofs = + MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0); + for (;;) { + int i, + n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs); if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n) return MZ_FALSE; for (i = n - 4; i >= 0; --i) if (MZ_READ_LE32(pBuf + i) == MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) break; - if (i >= 0) - { + if (i >= 0) { cur_file_ofs += i; break; } - if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >= (0xFFFF + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE))) + if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >= + (0xFFFF + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE))) return MZ_FALSE; cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0); } // Read and verify the end of central directory record. - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) return MZ_FALSE; - if ((MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) || - ((pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS)) != MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS))) + if ((MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) != + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) || + ((pZip->m_total_files = + MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS)) != + MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS))) return MZ_FALSE; num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS); cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS); - if (((num_this_disk | cdir_disk_index) != 0) && ((num_this_disk != 1) || (cdir_disk_index != 1))) + if (((num_this_disk | cdir_disk_index) != 0) && + ((num_this_disk != 1) || (cdir_disk_index != 1))) return MZ_FALSE; - if ((cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS)) < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) + if ((cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS)) < + pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) return MZ_FALSE; cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS); @@ -3226,46 +4538,66 @@ static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint32 fl pZip->m_central_directory_file_ofs = cdir_ofs; - if (pZip->m_total_files) - { - mz_uint i, n; + if (pZip->m_total_files) { + mz_uint i, n; - // Read the entire central directory into a heap block, and allocate another heap block to hold the unsorted central dir file record offsets, and another to hold the sorted indices. - if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size, MZ_FALSE)) || - (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets, pZip->m_total_files, MZ_FALSE))) + // Read the entire central directory into a heap block, and allocate another + // heap block to hold the unsorted central dir file record offsets, and + // another to hold the sorted indices. + if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size, + MZ_FALSE)) || + (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets, + pZip->m_total_files, MZ_FALSE))) return MZ_FALSE; - if (sort_central_dir) - { - if (!mz_zip_array_resize(pZip, &pZip->m_pState->m_sorted_central_dir_offsets, pZip->m_total_files, MZ_FALSE)) + if (sort_central_dir) { + if (!mz_zip_array_resize(pZip, + &pZip->m_pState->m_sorted_central_dir_offsets, + pZip->m_total_files, MZ_FALSE)) return MZ_FALSE; } - if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs, pZip->m_pState->m_central_dir.m_p, cdir_size) != cdir_size) + if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs, + pZip->m_pState->m_central_dir.m_p, + cdir_size) != cdir_size) return MZ_FALSE; - // Now create an index into the central directory file records, do some basic sanity checking on each record, and check for zip64 entries (which are not yet supported). + // Now create an index into the central directory file records, do some + // basic sanity checking on each record, and check for zip64 entries (which + // are not yet supported). p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p; - for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i) - { + for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i) { mz_uint total_header_size, comp_size, decomp_size, disk_index; - if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) || (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG)) + if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) || + (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG)) return MZ_FALSE; - MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, i) = (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p); + MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, + i) = + (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p); if (sort_central_dir) - MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets, mz_uint32, i) = i; + MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets, + mz_uint32, i) = i; comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS); - if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) && (decomp_size != comp_size)) || (decomp_size && !comp_size) || (decomp_size == 0xFFFFFFFF) || (comp_size == 0xFFFFFFFF)) + if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) && + (decomp_size != comp_size)) || + (decomp_size && !comp_size) || (decomp_size == 0xFFFFFFFF) || + (comp_size == 0xFFFFFFFF)) return MZ_FALSE; disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS); if ((disk_index != num_this_disk) && (disk_index != 1)) return MZ_FALSE; - if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size) + if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) + + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size) return MZ_FALSE; - if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) > n) + if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) + + MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) > + n) return MZ_FALSE; - n -= total_header_size; p += total_header_size; + n -= total_header_size; + p += total_header_size; } } @@ -3275,31 +4607,32 @@ static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint32 fl return MZ_TRUE; } -mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint32 flags) -{ +mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, + mz_uint32 flags) { if ((!pZip) || (!pZip->m_pRead)) return MZ_FALSE; if (!mz_zip_reader_init_internal(pZip, flags)) return MZ_FALSE; pZip->m_archive_size = size; - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { + if (!mz_zip_reader_read_central_dir(pZip, flags)) { mz_zip_reader_end(pZip); return MZ_FALSE; } return MZ_TRUE; } -static size_t mz_zip_mem_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n) -{ +static size_t mz_zip_mem_read_func(void *pOpaque, mz_uint64 file_ofs, + void *pBuf, size_t n) { mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; - size_t s = (file_ofs >= pZip->m_archive_size) ? 0 : (size_t)MZ_MIN(pZip->m_archive_size - file_ofs, n); + size_t s = (file_ofs >= pZip->m_archive_size) + ? 0 + : (size_t)MZ_MIN(pZip->m_archive_size - file_ofs, n); memcpy(pBuf, (const mz_uint8 *)pZip->m_pState->m_pMem + file_ofs, s); return s; } -mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint32 flags) -{ +mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, + size_t size, mz_uint32 flags) { if (!mz_zip_reader_init_internal(pZip, flags)) return MZ_FALSE; pZip->m_archive_size = size; @@ -3311,8 +4644,7 @@ mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t si pZip->m_pState->m_pMem = (void *)pMem; #endif pZip->m_pState->m_mem_size = size; - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { + if (!mz_zip_reader_read_central_dir(pZip, flags)) { mz_zip_reader_end(pZip); return MZ_FALSE; } @@ -3320,29 +4652,29 @@ mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t si } #ifndef MINIZ_NO_STDIO -static size_t mz_zip_file_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n) -{ +static size_t mz_zip_file_read_func(void *pOpaque, mz_uint64 file_ofs, + void *pBuf, size_t n) { mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile); - if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET)))) + if (((mz_int64)file_ofs < 0) || + (((cur_ofs != (mz_int64)file_ofs)) && + (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET)))) return 0; return MZ_FREAD(pBuf, 1, n, pZip->m_pState->m_pFile); } -mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags) -{ +mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, + mz_uint32 flags) { mz_uint64 file_size; MZ_FILE *pFile = MZ_FOPEN(pFilename, "rb"); if (!pFile) return MZ_FALSE; - if (MZ_FSEEK64(pFile, 0, SEEK_END)) - { + if (MZ_FSEEK64(pFile, 0, SEEK_END)) { MZ_FCLOSE(pFile); return MZ_FALSE; } file_size = MZ_FTELL64(pFile); - if (!mz_zip_reader_init_internal(pZip, flags)) - { + if (!mz_zip_reader_init_internal(pZip, flags)) { MZ_FCLOSE(pFile); return MZ_FALSE; } @@ -3350,8 +4682,7 @@ mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_ pZip->m_pIO_opaque = pZip; pZip->m_pState->m_pFile = pFile; pZip->m_archive_size = file_size; - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { + if (!mz_zip_reader_read_central_dir(pZip, flags)) { mz_zip_reader_end(pZip); return MZ_FALSE; } @@ -3359,20 +4690,23 @@ mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_ } #endif // #ifndef MINIZ_NO_STDIO -mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip) -{ +mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip) { return pZip ? pZip->m_total_files : 0; } -static MZ_FORCEINLINE const mz_uint8 *mz_zip_reader_get_cdh(mz_zip_archive *pZip, mz_uint file_index) -{ - if ((!pZip) || (!pZip->m_pState) || (file_index >= pZip->m_total_files) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) +static MZ_FORCEINLINE const mz_uint8 * +mz_zip_reader_get_cdh(mz_zip_archive *pZip, mz_uint file_index) { + if ((!pZip) || (!pZip->m_pState) || (file_index >= pZip->m_total_files) || + (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) return NULL; - return &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index)); + return &MZ_ZIP_ARRAY_ELEMENT( + &pZip->m_pState->m_central_dir, mz_uint8, + MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, + file_index)); } -mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index) -{ +mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, + mz_uint file_index) { mz_uint m_bit_flag; const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index); if (!p) @@ -3381,8 +4715,8 @@ mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index return (m_bit_flag & 1); } -mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index) -{ +mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, + mz_uint file_index) { mz_uint filename_len, external_attr; const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index); if (!p) @@ -3390,14 +4724,15 @@ mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_ind // First see if the filename ends with a '/' character. filename_len = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - if (filename_len) - { + if (filename_len) { if (*(p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_len - 1) == '/') return MZ_TRUE; } - // Bugfix: This code was also checking if the internal attribute was non-zero, which wasn't correct. - // Most/all zip writers (hopefully) set DOS file/directory attributes in the low 16-bits, so check for the DOS directory flag and ignore the source OS ID in the created by field. + // Bugfix: This code was also checking if the internal attribute was non-zero, + // which wasn't correct. Most/all zip writers (hopefully) set DOS + // file/directory attributes in the low 16-bits, so check for the DOS + // directory flag and ignore the source OS ID in the created by field. // FIXME: Remove this check? Is it necessary - we already check the filename. external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS); if ((external_attr & 0x10) != 0) @@ -3406,8 +4741,8 @@ mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_ind return MZ_FALSE; } -mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat) -{ +mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, + mz_zip_archive_file_stat *pStat) { mz_uint n; const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index); if ((!p) || (!pStat)) @@ -3415,13 +4750,16 @@ mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip // Unpack the central directory record. pStat->m_file_index = file_index; - pStat->m_central_dir_ofs = MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index); + pStat->m_central_dir_ofs = MZ_ZIP_ARRAY_ELEMENT( + &pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index); pStat->m_version_made_by = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS); pStat->m_version_needed = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_NEEDED_OFS); pStat->m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); pStat->m_method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS); #ifndef MINIZ_NO_TIME - pStat->m_time = mz_zip_dos_to_time_t(MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_TIME_OFS), MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_DATE_OFS)); + pStat->m_time = + mz_zip_dos_to_time_t(MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_TIME_OFS), + MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_DATE_OFS)); #endif pStat->m_crc32 = MZ_READ_LE32(p + MZ_ZIP_CDH_CRC32_OFS); pStat->m_comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); @@ -3431,24 +4769,35 @@ mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip pStat->m_local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS); // Copy as much of the filename and comment as possible. - n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE - 1); - memcpy(pStat->m_filename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); pStat->m_filename[n] = '\0'; + n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); + n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE - 1); + memcpy(pStat->m_filename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); + pStat->m_filename[n] = '\0'; - n = MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS); n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE - 1); + n = MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS); + n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE - 1); pStat->m_comment_size = n; - memcpy(pStat->m_comment, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS), n); pStat->m_comment[n] = '\0'; + memcpy(pStat->m_comment, + p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS), + n); + pStat->m_comment[n] = '\0'; return MZ_TRUE; } -mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size) -{ +mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, + char *pFilename, mz_uint filename_buf_size) { mz_uint n; const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index); - if (!p) { if (filename_buf_size) pFilename[0] = '\0'; return 0; } + if (!p) { + if (filename_buf_size) + pFilename[0] = '\0'; + return 0; + } n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - if (filename_buf_size) - { + if (filename_buf_size) { n = MZ_MIN(n, filename_buf_size - 1); memcpy(pFilename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); pFilename[n] = '\0'; @@ -3456,8 +4805,10 @@ mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, cha return n + 1; } -static MZ_FORCEINLINE mz_bool mz_zip_reader_string_equal(const char *pA, const char *pB, mz_uint len, mz_uint flags) -{ +static MZ_FORCEINLINE mz_bool mz_zip_reader_string_equal(const char *pA, + const char *pB, + mz_uint len, + mz_uint flags) { mz_uint i; if (flags & MZ_ZIP_FLAG_CASE_SENSITIVE) return 0 == memcmp(pA, pB, len); @@ -3467,34 +4818,43 @@ static MZ_FORCEINLINE mz_bool mz_zip_reader_string_equal(const char *pA, const c return MZ_TRUE; } -static MZ_FORCEINLINE int mz_zip_reader_filename_compare(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, const char *pR, mz_uint r_len) -{ - const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE; +static MZ_FORCEINLINE int +mz_zip_reader_filename_compare(const mz_zip_array *pCentral_dir_array, + const mz_zip_array *pCentral_dir_offsets, + mz_uint l_index, const char *pR, mz_uint r_len) { + const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT( + pCentral_dir_array, mz_uint8, + MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, + l_index)), + *pE; mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS); mz_uint8 l = 0, r = 0; pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; pE = pL + MZ_MIN(l_len, r_len); - while (pL < pE) - { + while (pL < pE) { if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR))) break; - pL++; pR++; + pL++; + pR++; } return (pL == pE) ? (int)(l_len - r_len) : (l - r); } -static int mz_zip_reader_locate_file_binary_search(mz_zip_archive *pZip, const char *pFilename) -{ +static int mz_zip_reader_locate_file_binary_search(mz_zip_archive *pZip, + const char *pFilename) { mz_zip_internal_state *pState = pZip->m_pState; const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets; const mz_zip_array *pCentral_dir = &pState->m_central_dir; - mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0); + mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT( + &pState->m_sorted_central_dir_offsets, mz_uint32, 0); const int size = pZip->m_total_files; const mz_uint filename_len = (mz_uint)strlen(pFilename); int l = 0, h = size - 1; - while (l <= h) - { - int m = (l + h) >> 1, file_index = pIndices[m], comp = mz_zip_reader_filename_compare(pCentral_dir, pCentral_dir_offsets, file_index, pFilename, filename_len); + while (l <= h) { + int m = (l + h) >> 1, file_index = pIndices[m], + comp = + mz_zip_reader_filename_compare(pCentral_dir, pCentral_dir_offsets, + file_index, pFilename, filename_len); if (!comp) return file_index; else if (comp < 0) @@ -3505,53 +4865,74 @@ static int mz_zip_reader_locate_file_binary_search(mz_zip_archive *pZip, const c return -1; } -int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags) -{ - mz_uint file_index; size_t name_len, comment_len; - if ((!pZip) || (!pZip->m_pState) || (!pName) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) +int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, + const char *pComment, mz_uint flags) { + mz_uint file_index; + size_t name_len, comment_len; + if ((!pZip) || (!pZip->m_pState) || (!pName) || + (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) return -1; - if (((flags & (MZ_ZIP_FLAG_IGNORE_PATH | MZ_ZIP_FLAG_CASE_SENSITIVE)) == 0) && (!pComment) && (pZip->m_pState->m_sorted_central_dir_offsets.m_size)) + if (((flags & (MZ_ZIP_FLAG_IGNORE_PATH | MZ_ZIP_FLAG_CASE_SENSITIVE)) == 0) && + (!pComment) && (pZip->m_pState->m_sorted_central_dir_offsets.m_size)) return mz_zip_reader_locate_file_binary_search(pZip, pName); - name_len = strlen(pName); if (name_len > 0xFFFF) return -1; - comment_len = pComment ? strlen(pComment) : 0; if (comment_len > 0xFFFF) return -1; - for (file_index = 0; file_index < pZip->m_total_files; file_index++) - { - const mz_uint8 *pHeader = &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index)); + name_len = strlen(pName); + if (name_len > 0xFFFF) + return -1; + comment_len = pComment ? strlen(pComment) : 0; + if (comment_len > 0xFFFF) + return -1; + for (file_index = 0; file_index < pZip->m_total_files; file_index++) { + const mz_uint8 *pHeader = &MZ_ZIP_ARRAY_ELEMENT( + &pZip->m_pState->m_central_dir, mz_uint8, + MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, + file_index)); mz_uint filename_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_FILENAME_LEN_OFS); - const char *pFilename = (const char *)pHeader + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; + const char *pFilename = + (const char *)pHeader + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; if (filename_len < name_len) continue; - if (comment_len) - { - mz_uint file_extra_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_EXTRA_LEN_OFS), file_comment_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_COMMENT_LEN_OFS); + if (comment_len) { + mz_uint file_extra_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_EXTRA_LEN_OFS), + file_comment_len = + MZ_READ_LE16(pHeader + MZ_ZIP_CDH_COMMENT_LEN_OFS); const char *pFile_comment = pFilename + filename_len + file_extra_len; - if ((file_comment_len != comment_len) || (!mz_zip_reader_string_equal(pComment, pFile_comment, file_comment_len, flags))) + if ((file_comment_len != comment_len) || + (!mz_zip_reader_string_equal(pComment, pFile_comment, + file_comment_len, flags))) continue; } - if ((flags & MZ_ZIP_FLAG_IGNORE_PATH) && (filename_len)) - { + if ((flags & MZ_ZIP_FLAG_IGNORE_PATH) && (filename_len)) { int ofs = filename_len - 1; - do - { - if ((pFilename[ofs] == '/') || (pFilename[ofs] == '\\') || (pFilename[ofs] == ':')) + do { + if ((pFilename[ofs] == '/') || (pFilename[ofs] == '\\') || + (pFilename[ofs] == ':')) break; } while (--ofs >= 0); ofs++; - pFilename += ofs; filename_len -= ofs; + pFilename += ofs; + filename_len -= ofs; } - if ((filename_len == name_len) && (mz_zip_reader_string_equal(pName, pFilename, filename_len, flags))) + if ((filename_len == name_len) && + (mz_zip_reader_string_equal(pName, pFilename, filename_len, flags))) return file_index; } return -1; } -mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size) -{ +mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, + mz_uint file_index, void *pBuf, + size_t buf_size, mz_uint flags, + void *pUser_read_buf, + size_t user_read_buf_size) { int status = TINFL_STATUS_DONE; - mz_uint64 needed_size, cur_file_ofs, comp_remaining, out_buf_ofs = 0, read_buf_size, read_buf_ofs = 0, read_buf_avail; + mz_uint64 needed_size, cur_file_ofs, comp_remaining, + out_buf_ofs = 0, read_buf_size, read_buf_ofs = 0, read_buf_avail; mz_zip_archive_file_stat file_stat; void *pRead_buf; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; + mz_uint32 + local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / + sizeof(mz_uint32)]; + mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; tinfl_decompressor inflator; if ((buf_size) && (!pBuf)) @@ -3560,12 +4941,15 @@ mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) return MZ_FALSE; - // Empty file, or a directory (but not always a directory - I've seen odd zips with directories that have compressed data which inflates to 0 bytes) + // Empty file, or a directory (but not always a directory - I've seen odd zips + // with directories that have compressed data which inflates to 0 bytes) if (!file_stat.m_comp_size) return MZ_TRUE; - // Entry is a subdirectory (I've seen old zips with dir entries which have compressed deflate data which inflates to 0 bytes, but these entries claim to uncompress to 512 bytes in the headers). - // I'm torn how to handle this case - should it fail instead? + // Entry is a subdirectory (I've seen old zips with dir entries which have + // compressed deflate data which inflates to 0 bytes, but these entries claim + // to uncompress to 512 bytes in the headers). I'm torn how to handle this + // case - should it fail instead? if (mz_zip_reader_is_file_a_directory(pZip, file_index)) return MZ_TRUE; @@ -3574,45 +4958,51 @@ mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file return MZ_FALSE; // This function only supports stored and deflate. - if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED)) + if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && + (file_stat.m_method != MZ_DEFLATED)) return MZ_FALSE; // Ensure supplied output buffer is large enough. - needed_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size : file_stat.m_uncomp_size; + needed_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size + : file_stat.m_uncomp_size; if (buf_size < needed_size) return MZ_FALSE; // Read and parse the local directory entry. cur_file_ofs = file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) return MZ_FALSE; if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) return MZ_FALSE; - cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); + cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size) return MZ_FALSE; - if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method)) - { + if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method)) { // The file is stored or the caller has requested the compressed data. - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, (size_t)needed_size) != needed_size) + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, + (size_t)needed_size) != needed_size) return MZ_FALSE; - return ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) != 0) || (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) == file_stat.m_crc32); + return ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) != 0) || + (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, + (size_t)file_stat.m_uncomp_size) == file_stat.m_crc32); } - // Decompress the file either directly from memory or from a file input buffer. + // Decompress the file either directly from memory or from a file input + // buffer. tinfl_init(&inflator); - if (pZip->m_pState->m_pMem) - { + if (pZip->m_pState->m_pMem) { // Read directly from the archive in memory. pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs; read_buf_size = read_buf_avail = file_stat.m_comp_size; comp_remaining = 0; - } - else if (pUser_read_buf) - { + } else if (pUser_read_buf) { // Use a user provided read buffer. if (!user_read_buf_size) return MZ_FALSE; @@ -3620,31 +5010,30 @@ mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file read_buf_size = user_read_buf_size; read_buf_avail = 0; comp_remaining = file_stat.m_comp_size; - } - else - { + } else { // Temporarily allocate a read buffer. read_buf_size = MZ_MIN(file_stat.m_comp_size, MZ_ZIP_MAX_IO_BUF_SIZE); #ifdef _MSC_VER - if (((0, sizeof(size_t) == sizeof(mz_uint32))) && (read_buf_size > 0x7FFFFFFF)) + if (((0, sizeof(size_t) == sizeof(mz_uint32))) && + (read_buf_size > 0x7FFFFFFF)) #else if (((sizeof(size_t) == sizeof(mz_uint32))) && (read_buf_size > 0x7FFFFFFF)) #endif return MZ_FALSE; - if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size))) + if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, + (size_t)read_buf_size))) return MZ_FALSE; read_buf_avail = 0; comp_remaining = file_stat.m_comp_size; } - do - { - size_t in_buf_size, out_buf_size = (size_t)(file_stat.m_uncomp_size - out_buf_ofs); - if ((!read_buf_avail) && (!pZip->m_pState->m_pMem)) - { + do { + size_t in_buf_size, + out_buf_size = (size_t)(file_stat.m_uncomp_size - out_buf_ofs); + if ((!read_buf_avail) && (!pZip->m_pState->m_pMem)) { read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, + (size_t)read_buf_avail) != read_buf_avail) { status = TINFL_STATUS_FAILED; break; } @@ -3653,16 +5042,21 @@ mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file read_buf_ofs = 0; } in_buf_size = (size_t)read_buf_avail; - status = tinfl_decompress(&inflator, (mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pBuf, (mz_uint8 *)pBuf + out_buf_ofs, &out_buf_size, TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF | (comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0)); + status = tinfl_decompress( + &inflator, (mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, + (mz_uint8 *)pBuf, (mz_uint8 *)pBuf + out_buf_ofs, &out_buf_size, + TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF | + (comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0)); read_buf_avail -= in_buf_size; read_buf_ofs += in_buf_size; out_buf_ofs += out_buf_size; } while (status == TINFL_STATUS_NEEDS_MORE_INPUT); - if (status == TINFL_STATUS_DONE) - { + if (status == TINFL_STATUS_DONE) { // Make sure the entire file was decompressed, and check its CRC. - if ((out_buf_ofs != file_stat.m_uncomp_size) || (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32)) + if ((out_buf_ofs != file_stat.m_uncomp_size) || + (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, + (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32)) status = TINFL_STATUS_FAILED; } @@ -3672,26 +5066,33 @@ mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file return status == TINFL_STATUS_DONE; } -mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size) -{ +mz_bool mz_zip_reader_extract_file_to_mem_no_alloc( + mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, + mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size) { int file_index = mz_zip_reader_locate_file(pZip, pFilename, NULL, flags); if (file_index < 0) return MZ_FALSE; - return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size); + return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, + flags, pUser_read_buf, + user_read_buf_size); } -mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags) -{ - return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, NULL, 0); +mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, + void *pBuf, size_t buf_size, + mz_uint flags) { + return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, + flags, NULL, 0); } -mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags) -{ - return mz_zip_reader_extract_file_to_mem_no_alloc(pZip, pFilename, pBuf, buf_size, flags, NULL, 0); +mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, + const char *pFilename, void *pBuf, + size_t buf_size, mz_uint flags) { + return mz_zip_reader_extract_file_to_mem_no_alloc(pZip, pFilename, pBuf, + buf_size, flags, NULL, 0); } -void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags) -{ +void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, + size_t *pSize, mz_uint flags) { mz_uint64 comp_size, uncomp_size, alloc_size; const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index); void *pBuf; @@ -3711,47 +5112,61 @@ void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, si if (((sizeof(size_t) == sizeof(mz_uint32))) && (alloc_size > 0x7FFFFFFF)) #endif return NULL; - if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)alloc_size))) + if (NULL == + (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)alloc_size))) return NULL; - if (!mz_zip_reader_extract_to_mem(pZip, file_index, pBuf, (size_t)alloc_size, flags)) - { + if (!mz_zip_reader_extract_to_mem(pZip, file_index, pBuf, (size_t)alloc_size, + flags)) { pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); return NULL; } - if (pSize) *pSize = (size_t)alloc_size; + if (pSize) + *pSize = (size_t)alloc_size; return pBuf; } -void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags) -{ +void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, + const char *pFilename, size_t *pSize, + mz_uint flags) { int file_index = mz_zip_reader_locate_file(pZip, pFilename, NULL, flags); - if (file_index < 0) - { - if (pSize) *pSize = 0; + if (file_index < 0) { + if (pSize) + *pSize = 0; return MZ_FALSE; } return mz_zip_reader_extract_to_heap(pZip, file_index, pSize, flags); } -mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags) -{ - int status = TINFL_STATUS_DONE; mz_uint file_crc32 = MZ_CRC32_INIT; - mz_uint64 read_buf_size, read_buf_ofs = 0, read_buf_avail, comp_remaining, out_buf_ofs = 0, cur_file_ofs; +mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, + mz_uint file_index, + mz_file_write_func pCallback, + void *pOpaque, mz_uint flags) { + int status = TINFL_STATUS_DONE; + mz_uint file_crc32 = MZ_CRC32_INIT; + mz_uint64 read_buf_size, read_buf_ofs = 0, read_buf_avail, comp_remaining, + out_buf_ofs = 0, cur_file_ofs; mz_zip_archive_file_stat file_stat; - void *pRead_buf = NULL; void *pWrite_buf = NULL; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; + void *pRead_buf = NULL; + void *pWrite_buf = NULL; + mz_uint32 + local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / + sizeof(mz_uint32)]; + mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) return MZ_FALSE; - // Empty file, or a directory (but not always a directory - I've seen odd zips with directories that have compressed data which inflates to 0 bytes) + // Empty file, or a directory (but not always a directory - I've seen odd zips + // with directories that have compressed data which inflates to 0 bytes) if (!file_stat.m_comp_size) return MZ_TRUE; - // Entry is a subdirectory (I've seen old zips with dir entries which have compressed deflate data which inflates to 0 bytes, but these entries claim to uncompress to 512 bytes in the headers). - // I'm torn how to handle this case - should it fail instead? + // Entry is a subdirectory (I've seen old zips with dir entries which have + // compressed deflate data which inflates to 0 bytes, but these entries claim + // to uncompress to 512 bytes in the headers). I'm torn how to handle this + // case - should it fail instead? if (mz_zip_reader_is_file_a_directory(pZip, file_index)) return MZ_TRUE; @@ -3760,69 +5175,76 @@ mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_ind return MZ_FALSE; // This function only supports stored and deflate. - if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED)) + if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && + (file_stat.m_method != MZ_DEFLATED)) return MZ_FALSE; // Read and parse the local directory entry. cur_file_ofs = file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) return MZ_FALSE; if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) return MZ_FALSE; - cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); + cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size) return MZ_FALSE; - // Decompress the file either directly from memory or from a file input buffer. - if (pZip->m_pState->m_pMem) - { + // Decompress the file either directly from memory or from a file input + // buffer. + if (pZip->m_pState->m_pMem) { pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs; read_buf_size = read_buf_avail = file_stat.m_comp_size; comp_remaining = 0; - } - else - { + } else { read_buf_size = MZ_MIN(file_stat.m_comp_size, MZ_ZIP_MAX_IO_BUF_SIZE); - if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size))) + if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, + (size_t)read_buf_size))) return MZ_FALSE; read_buf_avail = 0; comp_remaining = file_stat.m_comp_size; } - if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method)) - { + if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method)) { // The file is stored or the caller has requested the compressed data. - if (pZip->m_pState->m_pMem) - { + if (pZip->m_pState->m_pMem) { #ifdef _MSC_VER - if (((0, sizeof(size_t) == sizeof(mz_uint32))) && (file_stat.m_comp_size > 0xFFFFFFFF)) + if (((0, sizeof(size_t) == sizeof(mz_uint32))) && + (file_stat.m_comp_size > 0xFFFFFFFF)) #else - if (((sizeof(size_t) == sizeof(mz_uint32))) && (file_stat.m_comp_size > 0xFFFFFFFF)) + if (((sizeof(size_t) == sizeof(mz_uint32))) && + (file_stat.m_comp_size > 0xFFFFFFFF)) #endif return MZ_FALSE; - if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)file_stat.m_comp_size) != file_stat.m_comp_size) + if (pCallback(pOpaque, out_buf_ofs, pRead_buf, + (size_t)file_stat.m_comp_size) != file_stat.m_comp_size) status = TINFL_STATUS_FAILED; else if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)file_stat.m_comp_size); + file_crc32 = + (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, + (size_t)file_stat.m_comp_size); + // cur_file_ofs += file_stat.m_comp_size; out_buf_ofs += file_stat.m_comp_size; - } - else - { - while (comp_remaining) - { + // comp_remaining = 0; + } else { + while (comp_remaining) { read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, + (size_t)read_buf_avail) != read_buf_avail) { status = TINFL_STATUS_FAILED; break; } if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)read_buf_avail); + file_crc32 = (mz_uint32)mz_crc32( + file_crc32, (const mz_uint8 *)pRead_buf, (size_t)read_buf_avail); - if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { + if (pCallback(pOpaque, out_buf_ofs, pRead_buf, + (size_t)read_buf_avail) != read_buf_avail) { status = TINFL_STATUS_FAILED; break; } @@ -3831,25 +5253,24 @@ mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_ind comp_remaining -= read_buf_avail; } } - } - else - { + } else { tinfl_decompressor inflator; tinfl_init(&inflator); - if (NULL == (pWrite_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, TINFL_LZ_DICT_SIZE))) + if (NULL == (pWrite_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, + TINFL_LZ_DICT_SIZE))) status = TINFL_STATUS_FAILED; - else - { - do - { - mz_uint8 *pWrite_buf_cur = (mz_uint8 *)pWrite_buf + (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - size_t in_buf_size, out_buf_size = TINFL_LZ_DICT_SIZE - (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - if ((!read_buf_avail) && (!pZip->m_pState->m_pMem)) - { + else { + do { + mz_uint8 *pWrite_buf_cur = + (mz_uint8 *)pWrite_buf + (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); + size_t in_buf_size, + out_buf_size = + TINFL_LZ_DICT_SIZE - (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); + if ((!read_buf_avail) && (!pZip->m_pState->m_pMem)) { read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, + (size_t)read_buf_avail) != read_buf_avail) { status = TINFL_STATUS_FAILED; break; } @@ -3859,32 +5280,36 @@ mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_ind } in_buf_size = (size_t)read_buf_avail; - status = tinfl_decompress(&inflator, (const mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pWrite_buf, pWrite_buf_cur, &out_buf_size, comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0); + status = tinfl_decompress( + &inflator, (const mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, + (mz_uint8 *)pWrite_buf, pWrite_buf_cur, &out_buf_size, + comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0); read_buf_avail -= in_buf_size; read_buf_ofs += in_buf_size; - if (out_buf_size) - { - if (pCallback(pOpaque, out_buf_ofs, pWrite_buf_cur, out_buf_size) != out_buf_size) - { + if (out_buf_size) { + if (pCallback(pOpaque, out_buf_ofs, pWrite_buf_cur, out_buf_size) != + out_buf_size) { status = TINFL_STATUS_FAILED; break; } - file_crc32 = (mz_uint32)mz_crc32(file_crc32, pWrite_buf_cur, out_buf_size); - if ((out_buf_ofs += out_buf_size) > file_stat.m_uncomp_size) - { + file_crc32 = + (mz_uint32)mz_crc32(file_crc32, pWrite_buf_cur, out_buf_size); + if ((out_buf_ofs += out_buf_size) > file_stat.m_uncomp_size) { status = TINFL_STATUS_FAILED; break; } } - } while ((status == TINFL_STATUS_NEEDS_MORE_INPUT) || (status == TINFL_STATUS_HAS_MORE_OUTPUT)); + } while ((status == TINFL_STATUS_NEEDS_MORE_INPUT) || + (status == TINFL_STATUS_HAS_MORE_OUTPUT)); } } - if ((status == TINFL_STATUS_DONE) && (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))) - { + if ((status == TINFL_STATUS_DONE) && + (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))) { // Make sure the entire file was decompressed, and check its CRC. - if ((out_buf_ofs != file_stat.m_uncomp_size) || (file_crc32 != file_stat.m_crc32)) + if ((out_buf_ofs != file_stat.m_uncomp_size) || + (file_crc32 != file_stat.m_crc32)) status = TINFL_STATUS_FAILED; } @@ -3896,72 +5321,82 @@ mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_ind return status == TINFL_STATUS_DONE; } -mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags) -{ +mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, + const char *pFilename, + mz_file_write_func pCallback, + void *pOpaque, mz_uint flags) { int file_index = mz_zip_reader_locate_file(pZip, pFilename, NULL, flags); if (file_index < 0) return MZ_FALSE; - return mz_zip_reader_extract_to_callback(pZip, file_index, pCallback, pOpaque, flags); + return mz_zip_reader_extract_to_callback(pZip, file_index, pCallback, pOpaque, + flags); } #ifndef MINIZ_NO_STDIO -static size_t mz_zip_file_write_callback(void *pOpaque, mz_uint64 ofs, const void *pBuf, size_t n) -{ - (void)ofs; return MZ_FWRITE(pBuf, 1, n, (MZ_FILE*)pOpaque); +static size_t mz_zip_file_write_callback(void *pOpaque, mz_uint64 ofs, + const void *pBuf, size_t n) { + (void)ofs; + return MZ_FWRITE(pBuf, 1, n, (MZ_FILE *)pOpaque); } -mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags) -{ +mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, + const char *pDst_filename, + mz_uint flags) { mz_bool status; mz_zip_archive_file_stat file_stat; MZ_FILE *pFile; if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) return MZ_FALSE; + pFile = MZ_FOPEN(pDst_filename, "wb"); if (!pFile) return MZ_FALSE; - status = mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_file_write_callback, pFile, flags); + status = mz_zip_reader_extract_to_callback( + pZip, file_index, mz_zip_file_write_callback, pFile, flags); if (MZ_FCLOSE(pFile) == EOF) return MZ_FALSE; #ifndef MINIZ_NO_TIME - if (status) + if (status) { mz_zip_set_file_times(pDst_filename, file_stat.m_time, file_stat.m_time); + } #endif + return status; } #endif // #ifndef MINIZ_NO_STDIO -mz_bool mz_zip_reader_end(mz_zip_archive *pZip) -{ - if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) +mz_bool mz_zip_reader_end(mz_zip_archive *pZip) { + if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || + (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) return MZ_FALSE; - if (pZip->m_pState) - { - mz_zip_internal_state *pState = pZip->m_pState; pZip->m_pState = NULL; - mz_zip_array_clear(pZip, &pState->m_central_dir); - mz_zip_array_clear(pZip, &pState->m_central_dir_offsets); - mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets); + mz_zip_internal_state *pState = pZip->m_pState; + pZip->m_pState = NULL; + mz_zip_array_clear(pZip, &pState->m_central_dir); + mz_zip_array_clear(pZip, &pState->m_central_dir_offsets); + mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets); #ifndef MINIZ_NO_STDIO - if (pState->m_pFile) - { - MZ_FCLOSE(pState->m_pFile); - pState->m_pFile = NULL; - } + if (pState->m_pFile) { + MZ_FCLOSE(pState->m_pFile); + pState->m_pFile = NULL; + } #endif // #ifndef MINIZ_NO_STDIO - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - } + pZip->m_pFree(pZip->m_pAlloc_opaque, pState); + pZip->m_zip_mode = MZ_ZIP_MODE_INVALID; return MZ_TRUE; } #ifndef MINIZ_NO_STDIO -mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags) -{ - int file_index = mz_zip_reader_locate_file(pZip, pArchive_filename, NULL, flags); +mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, + const char *pArchive_filename, + const char *pDst_filename, + mz_uint flags) { + int file_index = + mz_zip_reader_locate_file(pZip, pArchive_filename, NULL, flags); if (file_index < 0) return MZ_FALSE; return mz_zip_reader_extract_to_file(pZip, file_index, pDst_filename, flags); @@ -3972,75 +5407,92 @@ mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pAr #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS -static void mz_write_le16(mz_uint8 *p, mz_uint16 v) { p[0] = (mz_uint8)v; p[1] = (mz_uint8)(v >> 8); } -static void mz_write_le32(mz_uint8 *p, mz_uint32 v) { p[0] = (mz_uint8)v; p[1] = (mz_uint8)(v >> 8); p[2] = (mz_uint8)(v >> 16); p[3] = (mz_uint8)(v >> 24); } +static void mz_write_le16(mz_uint8 *p, mz_uint16 v) { + p[0] = (mz_uint8)v; + p[1] = (mz_uint8)(v >> 8); +} +static void mz_write_le32(mz_uint8 *p, mz_uint32 v) { + p[0] = (mz_uint8)v; + p[1] = (mz_uint8)(v >> 8); + p[2] = (mz_uint8)(v >> 16); + p[3] = (mz_uint8)(v >> 24); +} #define MZ_WRITE_LE16(p, v) mz_write_le16((mz_uint8 *)(p), (mz_uint16)(v)) #define MZ_WRITE_LE32(p, v) mz_write_le32((mz_uint8 *)(p), (mz_uint32)(v)) -mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size) -{ - if ((!pZip) || (pZip->m_pState) || (!pZip->m_pWrite) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID)) +mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size) { + if ((!pZip) || (pZip->m_pState) || (!pZip->m_pWrite) || + (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID)) return MZ_FALSE; - if (pZip->m_file_offset_alignment) - { + if (pZip->m_file_offset_alignment) { // Ensure user specified file offset alignment is a power of 2. if (pZip->m_file_offset_alignment & (pZip->m_file_offset_alignment - 1)) return MZ_FALSE; } - if (!pZip->m_pAlloc) pZip->m_pAlloc = def_alloc_func; - if (!pZip->m_pFree) pZip->m_pFree = def_free_func; - if (!pZip->m_pRealloc) pZip->m_pRealloc = def_realloc_func; + if (!pZip->m_pAlloc) + pZip->m_pAlloc = def_alloc_func; + if (!pZip->m_pFree) + pZip->m_pFree = def_free_func; + if (!pZip->m_pRealloc) + pZip->m_pRealloc = def_realloc_func; pZip->m_zip_mode = MZ_ZIP_MODE_WRITING; pZip->m_archive_size = existing_size; pZip->m_central_directory_file_ofs = 0; pZip->m_total_files = 0; - if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state)))) + if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc( + pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state)))) return MZ_FALSE; memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32)); + MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, + sizeof(mz_uint8)); + MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, + sizeof(mz_uint32)); + MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, + sizeof(mz_uint32)); return MZ_TRUE; } -static size_t mz_zip_heap_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n) -{ +static size_t mz_zip_heap_write_func(void *pOpaque, mz_uint64 file_ofs, + const void *pBuf, size_t n) { mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; mz_zip_internal_state *pState = pZip->m_pState; mz_uint64 new_size = MZ_MAX(file_ofs + n, pState->m_mem_size); -#ifdef _MSC_VER - if ((!n) || ((0, sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF))) -#else - if ((!n) || ((sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF))) -#endif + + if ((!n) || + ((sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF))) return 0; - if (new_size > pState->m_mem_capacity) - { + + if (new_size > pState->m_mem_capacity) { void *pNew_block; - size_t new_capacity = MZ_MAX(64, pState->m_mem_capacity); while (new_capacity < new_size) new_capacity *= 2; - if (NULL == (pNew_block = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pState->m_pMem, 1, new_capacity))) + size_t new_capacity = MZ_MAX(64, pState->m_mem_capacity); + while (new_capacity < new_size) + new_capacity *= 2; + if (NULL == (pNew_block = pZip->m_pRealloc( + pZip->m_pAlloc_opaque, pState->m_pMem, 1, new_capacity))) return 0; - pState->m_pMem = pNew_block; pState->m_mem_capacity = new_capacity; + pState->m_pMem = pNew_block; + pState->m_mem_capacity = new_capacity; } memcpy((mz_uint8 *)pState->m_pMem + file_ofs, pBuf, n); pState->m_mem_size = (size_t)new_size; return n; } -mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size) -{ +mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, + size_t size_to_reserve_at_beginning, + size_t initial_allocation_size) { pZip->m_pWrite = mz_zip_heap_write_func; pZip->m_pIO_opaque = pZip; if (!mz_zip_writer_init(pZip, size_to_reserve_at_beginning)) return MZ_FALSE; - if (0 != (initial_allocation_size = MZ_MAX(initial_allocation_size, size_to_reserve_at_beginning))) - { - if (NULL == (pZip->m_pState->m_pMem = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, initial_allocation_size))) - { + if (0 != (initial_allocation_size = MZ_MAX(initial_allocation_size, + size_to_reserve_at_beginning))) { + if (NULL == (pZip->m_pState->m_pMem = pZip->m_pAlloc( + pZip->m_pAlloc_opaque, 1, initial_allocation_size))) { mz_zip_writer_end(pZip); return MZ_FALSE; } @@ -4050,61 +5502,65 @@ mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_ } #ifndef MINIZ_NO_STDIO -static size_t mz_zip_file_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n) -{ +static size_t mz_zip_file_write_func(void *pOpaque, mz_uint64 file_ofs, + const void *pBuf, size_t n) { mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile); - if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET)))) + if (((mz_int64)file_ofs < 0) || + (((cur_ofs != (mz_int64)file_ofs)) && + (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET)))) return 0; return MZ_FWRITE(pBuf, 1, n, pZip->m_pState->m_pFile); } -mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning) -{ +mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, + mz_uint64 size_to_reserve_at_beginning) { MZ_FILE *pFile; pZip->m_pWrite = mz_zip_file_write_func; pZip->m_pIO_opaque = pZip; if (!mz_zip_writer_init(pZip, size_to_reserve_at_beginning)) return MZ_FALSE; - if (NULL == (pFile = MZ_FOPEN(pFilename, "wb"))) - { + if (NULL == (pFile = MZ_FOPEN(pFilename, "wb"))) { mz_zip_writer_end(pZip); return MZ_FALSE; } pZip->m_pState->m_pFile = pFile; - if (size_to_reserve_at_beginning) - { - mz_uint64 cur_ofs = 0; char buf[4096]; MZ_CLEAR_OBJ(buf); - do - { + if (size_to_reserve_at_beginning) { + mz_uint64 cur_ofs = 0; + char buf[4096]; + MZ_CLEAR_OBJ(buf); + do { size_t n = (size_t)MZ_MIN(sizeof(buf), size_to_reserve_at_beginning); - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_ofs, buf, n) != n) - { + if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_ofs, buf, n) != n) { mz_zip_writer_end(pZip); return MZ_FALSE; } - cur_ofs += n; size_to_reserve_at_beginning -= n; + cur_ofs += n; + size_to_reserve_at_beginning -= n; } while (size_to_reserve_at_beginning); } return MZ_TRUE; } #endif // #ifndef MINIZ_NO_STDIO -mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename) -{ +mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, + const char *pFilename) { mz_zip_internal_state *pState; if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) return MZ_FALSE; - // No sense in trying to write to an archive that's already at the support max size - if ((pZip->m_total_files == 0xFFFF) || ((pZip->m_archive_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) > 0xFFFFFFFF)) + // No sense in trying to write to an archive that's already at the support max + // size + if ((pZip->m_total_files == 0xFFFF) || + ((pZip->m_archive_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) > 0xFFFFFFFF)) return MZ_FALSE; pState = pZip->m_pState; - if (pState->m_pFile) - { + if (pState->m_pFile) { #ifdef MINIZ_NO_STDIO - pFilename; return MZ_FALSE; + pFilename; + return MZ_FALSE; #else // Archive is being read from stdio - try to reopen as writable. if (pZip->m_pIO_opaque != pZip) @@ -4112,27 +5568,29 @@ mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilena if (!pFilename) return MZ_FALSE; pZip->m_pWrite = mz_zip_file_write_func; - if (NULL == (pState->m_pFile = MZ_FREOPEN(pFilename, "r+b", pState->m_pFile))) - { - // The mz_zip_archive is now in a bogus state because pState->m_pFile is NULL, so just close it. + if (NULL == + (pState->m_pFile = MZ_FREOPEN(pFilename, "r+b", pState->m_pFile))) { + // The mz_zip_archive is now in a bogus state because pState->m_pFile is + // NULL, so just close it. mz_zip_reader_end(pZip); return MZ_FALSE; } #endif // #ifdef MINIZ_NO_STDIO - } - else if (pState->m_pMem) - { - // Archive lives in a memory block. Assume it's from the heap that we can resize using the realloc callback. + } else if (pState->m_pMem) { + // Archive lives in a memory block. Assume it's from the heap that we can + // resize using the realloc callback. if (pZip->m_pIO_opaque != pZip) return MZ_FALSE; pState->m_mem_capacity = pState->m_mem_size; pZip->m_pWrite = mz_zip_heap_write_func; } - // Archive is being read via a user provided read function - make sure the user has specified a write function too. + // Archive is being read via a user provided read function - make sure the + // user has specified a write function too. else if (!pZip->m_pWrite) return MZ_FALSE; - // Start writing new files at the archive's current central directory location. + // Start writing new files at the archive's current central directory + // location. pZip->m_archive_size = pZip->m_central_directory_file_ofs; pZip->m_zip_mode = MZ_ZIP_MODE_WRITING; pZip->m_central_directory_file_ofs = 0; @@ -4140,30 +5598,36 @@ mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilena return MZ_TRUE; } -mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags) -{ - return mz_zip_writer_add_mem_ex(pZip, pArchive_name, pBuf, buf_size, NULL, 0, level_and_flags, 0, 0); +mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, + const void *pBuf, size_t buf_size, + mz_uint level_and_flags) { + return mz_zip_writer_add_mem_ex(pZip, pArchive_name, pBuf, buf_size, NULL, 0, + level_and_flags, 0, 0); } -typedef struct -{ +typedef struct { mz_zip_archive *m_pZip; mz_uint64 m_cur_archive_file_ofs; mz_uint64 m_comp_size; } mz_zip_writer_add_state; -static mz_bool mz_zip_writer_add_put_buf_callback(const void* pBuf, int len, void *pUser) -{ +static mz_bool mz_zip_writer_add_put_buf_callback(const void *pBuf, int len, + void *pUser) { mz_zip_writer_add_state *pState = (mz_zip_writer_add_state *)pUser; - if ((int)pState->m_pZip->m_pWrite(pState->m_pZip->m_pIO_opaque, pState->m_cur_archive_file_ofs, pBuf, len) != len) + if ((int)pState->m_pZip->m_pWrite(pState->m_pZip->m_pIO_opaque, + pState->m_cur_archive_file_ofs, pBuf, + len) != len) return MZ_FALSE; pState->m_cur_archive_file_ofs += len; pState->m_comp_size += len; return MZ_TRUE; } -static mz_bool mz_zip_writer_create_local_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, mz_uint16 extra_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date) -{ +static mz_bool mz_zip_writer_create_local_dir_header( + mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, + mz_uint16 extra_size, mz_uint64 uncomp_size, mz_uint64 comp_size, + mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, + mz_uint16 dos_time, mz_uint16 dos_date) { (void)pZip; memset(pDst, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE); MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_SIG_OFS, MZ_ZIP_LOCAL_DIR_HEADER_SIG); @@ -4180,11 +5644,19 @@ static mz_bool mz_zip_writer_create_local_dir_header(mz_zip_archive *pZip, mz_ui return MZ_TRUE; } -static mz_bool mz_zip_writer_create_central_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, mz_uint16 extra_size, mz_uint16 comment_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, mz_uint64 local_header_ofs, mz_uint32 ext_attributes) -{ +static mz_bool mz_zip_writer_create_central_dir_header( + mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, + mz_uint16 extra_size, mz_uint16 comment_size, mz_uint64 uncomp_size, + mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, + mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, + mz_uint64 local_header_ofs, mz_uint32 ext_attributes) { (void)pZip; + mz_uint16 version_made_by = 10 * MZ_VER_MAJOR + MZ_VER_MINOR; + version_made_by |= (MZ_PLATFORM << 8); + memset(pDst, 0, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE); MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_SIG_OFS, MZ_ZIP_CENTRAL_DIR_HEADER_SIG); + MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_VERSION_MADE_BY_OFS, version_made_by); MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_VERSION_NEEDED_OFS, method ? 20 : 0); MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_BIT_FLAG_OFS, bit_flags); MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_METHOD_OFS, method); @@ -4201,41 +5673,57 @@ static mz_bool mz_zip_writer_create_central_dir_header(mz_zip_archive *pZip, mz_ return MZ_TRUE; } -static mz_bool mz_zip_writer_add_to_central_dir(mz_zip_archive *pZip, const char *pFilename, mz_uint16 filename_size, const void *pExtra, mz_uint16 extra_size, const void *pComment, mz_uint16 comment_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, mz_uint64 local_header_ofs, mz_uint32 ext_attributes) -{ +static mz_bool mz_zip_writer_add_to_central_dir( + mz_zip_archive *pZip, const char *pFilename, mz_uint16 filename_size, + const void *pExtra, mz_uint16 extra_size, const void *pComment, + mz_uint16 comment_size, mz_uint64 uncomp_size, mz_uint64 comp_size, + mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, + mz_uint16 dos_time, mz_uint16 dos_date, mz_uint64 local_header_ofs, + mz_uint32 ext_attributes) { mz_zip_internal_state *pState = pZip->m_pState; mz_uint32 central_dir_ofs = (mz_uint32)pState->m_central_dir.m_size; size_t orig_central_dir_size = pState->m_central_dir.m_size; mz_uint8 central_dir_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE]; // No zip64 support yet - if ((local_header_ofs > 0xFFFFFFFF) || (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + extra_size + comment_size) > 0xFFFFFFFF)) + if ((local_header_ofs > 0xFFFFFFFF) || + (((mz_uint64)pState->m_central_dir.m_size + + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + extra_size + + comment_size) > 0xFFFFFFFF)) return MZ_FALSE; - if (!mz_zip_writer_create_central_dir_header(pZip, central_dir_header, filename_size, extra_size, comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_header_ofs, ext_attributes)) + if (!mz_zip_writer_create_central_dir_header( + pZip, central_dir_header, filename_size, extra_size, comment_size, + uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, + dos_date, local_header_ofs, ext_attributes)) return MZ_FALSE; - if ((!mz_zip_array_push_back(pZip, &pState->m_central_dir, central_dir_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pFilename, filename_size)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pExtra, extra_size)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pComment, comment_size)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, ¢ral_dir_ofs, 1))) - { + if ((!mz_zip_array_push_back(pZip, &pState->m_central_dir, central_dir_header, + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) || + (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pFilename, + filename_size)) || + (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pExtra, + extra_size)) || + (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pComment, + comment_size)) || + (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, + ¢ral_dir_ofs, 1))) { // Try to push the central directory array back into its original state. - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); + mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, + MZ_FALSE); return MZ_FALSE; } return MZ_TRUE; } -static mz_bool mz_zip_writer_validate_archive_name(const char *pArchive_name) -{ - // Basic ZIP archive filename validity checks: Valid filenames cannot start with a forward slash, cannot contain a drive letter, and cannot use DOS-style backward slashes. +static mz_bool mz_zip_writer_validate_archive_name(const char *pArchive_name) { + // Basic ZIP archive filename validity checks: Valid filenames cannot start + // with a forward slash, cannot contain a drive letter, and cannot use + // DOS-style backward slashes. if (*pArchive_name == '/') return MZ_FALSE; - while (*pArchive_name) - { + while (*pArchive_name) { if ((*pArchive_name == '\\') || (*pArchive_name == ':')) return MZ_FALSE; pArchive_name++; @@ -4243,33 +5731,39 @@ static mz_bool mz_zip_writer_validate_archive_name(const char *pArchive_name) return MZ_TRUE; } -static mz_uint mz_zip_writer_compute_padding_needed_for_file_alignment(mz_zip_archive *pZip) -{ +static mz_uint +mz_zip_writer_compute_padding_needed_for_file_alignment(mz_zip_archive *pZip) { mz_uint32 n; if (!pZip->m_file_offset_alignment) return 0; n = (mz_uint32)(pZip->m_archive_size & (pZip->m_file_offset_alignment - 1)); - return (pZip->m_file_offset_alignment - n) & (pZip->m_file_offset_alignment - 1); + return (pZip->m_file_offset_alignment - n) & + (pZip->m_file_offset_alignment - 1); } -static mz_bool mz_zip_writer_write_zeros(mz_zip_archive *pZip, mz_uint64 cur_file_ofs, mz_uint32 n) -{ +static mz_bool mz_zip_writer_write_zeros(mz_zip_archive *pZip, + mz_uint64 cur_file_ofs, mz_uint32 n) { char buf[4096]; memset(buf, 0, MZ_MIN(sizeof(buf), n)); - while (n) - { + while (n) { mz_uint32 s = MZ_MIN(sizeof(buf), n); if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_file_ofs, buf, s) != s) return MZ_FALSE; - cur_file_ofs += s; n -= s; + cur_file_ofs += s; + n -= s; } return MZ_TRUE; } -mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32) -{ +mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, + const char *pArchive_name, const void *pBuf, + size_t buf_size, const void *pComment, + mz_uint16 comment_size, + mz_uint level_and_flags, mz_uint64 uncomp_size, + mz_uint32 uncomp_crc32) { + mz_uint32 ext_attributes = 0; mz_uint16 method = 0, dos_time = 0, dos_date = 0; - mz_uint level, ext_attributes = 0, num_alignment_padding_bytes; + mz_uint level, num_alignment_padding_bytes; mz_uint64 local_dir_header_ofs, cur_archive_file_ofs, comp_size = 0; size_t archive_name_size; mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE]; @@ -4280,9 +5774,13 @@ mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name if ((int)level_and_flags < 0) level_and_flags = MZ_DEFAULT_LEVEL; level = level_and_flags & 0xF; - store_data_uncompressed = ((!level) || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)); + store_data_uncompressed = + ((!level) || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)); - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || ((buf_size) && (!pBuf)) || (!pArchive_name) || ((comment_size) && (!pComment)) || (pZip->m_total_files == 0xFFFF) || (level > MZ_UBER_COMPRESSION)) + if ((!pZip) || (!pZip->m_pState) || + (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || ((buf_size) && (!pBuf)) || + (!pArchive_name) || ((comment_size) && (!pComment)) || + (pZip->m_total_files == 0xFFFF) || (level > MZ_UBER_COMPRESSION)) return MZ_FALSE; local_dir_header_ofs = cur_archive_file_ofs = pZip->m_archive_size; @@ -4298,8 +5796,9 @@ mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name #ifndef MINIZ_NO_TIME { - time_t cur_time; time(&cur_time); - mz_zip_time_to_dos_time(cur_time, &dos_time, &dos_date); + time_t cur_time; + time(&cur_time); + mz_zip_time_t_to_dos_time(cur_time, &dos_time, &dos_date); } #endif // #ifndef MINIZ_NO_TIME @@ -4307,14 +5806,17 @@ mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name if (archive_name_size > 0xFFFF) return MZ_FALSE; - num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); + num_alignment_padding_bytes = + mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); // no zip64 support yet - if ((pZip->m_total_files == 0xFFFF) || ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + comment_size + archive_name_size) > 0xFFFFFFFF)) + if ((pZip->m_total_files == 0xFFFF) || + ((pZip->m_archive_size + num_alignment_padding_bytes + + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + + comment_size + archive_name_size) > 0xFFFFFFFF)) return MZ_FALSE; - if ((archive_name_size) && (pArchive_name[archive_name_size - 1] == '/')) - { + if ((archive_name_size) && (pArchive_name[archive_name_size - 1] == '/')) { // Set DOS Subdirectory attribute bit. ext_attributes |= 0x10; // Subdirectories cannot contain data. @@ -4322,48 +5824,56 @@ mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name return MZ_FALSE; } - // Try to do any allocations before writing to the archive, so if an allocation fails the file remains unmodified. (A good idea if we're doing an in-place modification.) - if ((!mz_zip_array_ensure_room(pZip, &pState->m_central_dir, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + comment_size)) || (!mz_zip_array_ensure_room(pZip, &pState->m_central_dir_offsets, 1))) + // Try to do any allocations before writing to the archive, so if an + // allocation fails the file remains unmodified. (A good idea if we're doing + // an in-place modification.) + if ((!mz_zip_array_ensure_room(pZip, &pState->m_central_dir, + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + + archive_name_size + comment_size)) || + (!mz_zip_array_ensure_room(pZip, &pState->m_central_dir_offsets, 1))) return MZ_FALSE; - if ((!store_data_uncompressed) && (buf_size)) - { - if (NULL == (pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor)))) + if ((!store_data_uncompressed) && (buf_size)) { + if (NULL == (pComp = (tdefl_compressor *)pZip->m_pAlloc( + pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor)))) return MZ_FALSE; } - if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes + sizeof(local_dir_header))) - { + if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, + num_alignment_padding_bytes + + sizeof(local_dir_header))) { pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); return MZ_FALSE; } local_dir_header_ofs += num_alignment_padding_bytes; - if (pZip->m_file_offset_alignment) { MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); } - cur_archive_file_ofs += num_alignment_padding_bytes + sizeof(local_dir_header); + if (pZip->m_file_offset_alignment) { + MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == + 0); + } + cur_archive_file_ofs += + num_alignment_padding_bytes + sizeof(local_dir_header); MZ_CLEAR_OBJ(local_dir_header); - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { + if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, + archive_name_size) != archive_name_size) { pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); return MZ_FALSE; } cur_archive_file_ofs += archive_name_size; - if (!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - { - uncomp_crc32 = (mz_uint32)mz_crc32(MZ_CRC32_INIT, (const mz_uint8*)pBuf, buf_size); + if (!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) { + uncomp_crc32 = + (mz_uint32)mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, buf_size); uncomp_size = buf_size; - if (uncomp_size <= 3) - { + if (uncomp_size <= 3) { level = 0; store_data_uncompressed = MZ_TRUE; } } - if (store_data_uncompressed) - { - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pBuf, buf_size) != buf_size) - { + if (store_data_uncompressed) { + if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pBuf, + buf_size) != buf_size) { pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); return MZ_FALSE; } @@ -4373,18 +5883,19 @@ mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name if (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA) method = MZ_DEFLATED; - } - else if (buf_size) - { + } else if (buf_size) { mz_zip_writer_add_state state; state.m_pZip = pZip; state.m_cur_archive_file_ofs = cur_archive_file_ofs; state.m_comp_size = 0; - if ((tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY) || - (tdefl_compress_buffer(pComp, pBuf, buf_size, TDEFL_FINISH) != TDEFL_STATUS_DONE)) - { + if ((tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, + tdefl_create_comp_flags_from_zip_params( + level, -15, MZ_DEFAULT_STRATEGY)) != + TDEFL_STATUS_OKAY) || + (tdefl_compress_buffer(pComp, pBuf, buf_size, TDEFL_FINISH) != + TDEFL_STATUS_DONE)) { pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); return MZ_FALSE; } @@ -4402,13 +5913,19 @@ mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name if ((comp_size > 0xFFFFFFFF) || (cur_archive_file_ofs > 0xFFFFFFFF)) return MZ_FALSE; - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, 0, uncomp_size, comp_size, uncomp_crc32, method, 0, dos_time, dos_date)) + if (!mz_zip_writer_create_local_dir_header( + pZip, local_dir_header, (mz_uint16)archive_name_size, 0, uncomp_size, + comp_size, uncomp_crc32, method, 0, dos_time, dos_date)) return MZ_FALSE; - if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) + if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, + sizeof(local_dir_header)) != sizeof(local_dir_header)) return MZ_FALSE; - if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, NULL, 0, pComment, comment_size, uncomp_size, comp_size, uncomp_crc32, method, 0, dos_time, dos_date, local_dir_header_ofs, ext_attributes)) + if (!mz_zip_writer_add_to_central_dir( + pZip, pArchive_name, (mz_uint16)archive_name_size, NULL, 0, pComment, + comment_size, uncomp_size, comp_size, uncomp_crc32, method, 0, + dos_time, dos_date, local_dir_header_ofs, ext_attributes)) return MZ_FALSE; pZip->m_total_files++; @@ -4418,24 +5935,30 @@ mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name } #ifndef MINIZ_NO_STDIO -mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags) -{ +mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, + const char *pSrc_filename, const void *pComment, + mz_uint16 comment_size, mz_uint level_and_flags, + mz_uint32 ext_attributes) { mz_uint uncomp_crc32 = MZ_CRC32_INIT, level, num_alignment_padding_bytes; - mz_uint16 method = 0, dos_time = 0, dos_date = 0, ext_attributes = 0; - mz_uint64 local_dir_header_ofs, cur_archive_file_ofs, uncomp_size = 0, comp_size = 0; + mz_uint16 method = 0, dos_time = 0, dos_date = 0; + time_t file_modified_time; + mz_uint64 local_dir_header_ofs, cur_archive_file_ofs, uncomp_size = 0, + comp_size = 0; size_t archive_name_size; mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE]; MZ_FILE *pSrc_file = NULL; - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pArchive_name) || ((comment_size) && (!pComment)) || ( level_and_flags > MZ_UBER_COMPRESSION)) - return MZ_FALSE; - - local_dir_header_ofs = cur_archive_file_ofs = pZip->m_archive_size; - if ((int)level_and_flags < 0) level_and_flags = MZ_DEFAULT_LEVEL; level = level_and_flags & 0xF; + if ((!pZip) || (!pZip->m_pState) || + (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pArchive_name) || + ((comment_size) && (!pComment)) || (level > MZ_UBER_COMPRESSION)) + return MZ_FALSE; + + local_dir_header_ofs = cur_archive_file_ofs = pZip->m_archive_size; + if (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA) return MZ_FALSE; if (!mz_zip_writer_validate_archive_name(pArchive_name)) @@ -4445,14 +5968,20 @@ mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, if (archive_name_size > 0xFFFF) return MZ_FALSE; - num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); + num_alignment_padding_bytes = + mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); // no zip64 support yet - if ((pZip->m_total_files == 0xFFFF) || ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + comment_size + archive_name_size) > 0xFFFFFFFF)) + if ((pZip->m_total_files == 0xFFFF) || + ((pZip->m_archive_size + num_alignment_padding_bytes + + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + + comment_size + archive_name_size) > 0xFFFFFFFF)) return MZ_FALSE; - if (!mz_zip_get_file_modified_time(pSrc_filename, &dos_time, &dos_date)) + memset(&file_modified_time, 0, sizeof(file_modified_time)); + if (!mz_zip_get_file_modified_time(pSrc_filename, &file_modified_time)) return MZ_FALSE; + mz_zip_time_t_to_dos_time(file_modified_time, &dos_time, &dos_date); pSrc_file = MZ_FOPEN(pSrc_filename, "rb"); if (!pSrc_file) @@ -4461,8 +5990,7 @@ mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, uncomp_size = MZ_FTELL64(pSrc_file); MZ_FSEEK64(pSrc_file, 0, SEEK_SET); - if (uncomp_size > 0xFFFFFFFF) - { + if (uncomp_size > 0xFFFFFFFF) { // No zip64 support yet MZ_FCLOSE(pSrc_file); return MZ_FALSE; @@ -4470,57 +5998,59 @@ mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, if (uncomp_size <= 3) level = 0; - if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes + sizeof(local_dir_header))) - { + if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, + num_alignment_padding_bytes + + sizeof(local_dir_header))) { MZ_FCLOSE(pSrc_file); return MZ_FALSE; } local_dir_header_ofs += num_alignment_padding_bytes; - if (pZip->m_file_offset_alignment) { MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); } - cur_archive_file_ofs += num_alignment_padding_bytes + sizeof(local_dir_header); + if (pZip->m_file_offset_alignment) { + MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == + 0); + } + cur_archive_file_ofs += + num_alignment_padding_bytes + sizeof(local_dir_header); MZ_CLEAR_OBJ(local_dir_header); - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { + if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, + archive_name_size) != archive_name_size) { MZ_FCLOSE(pSrc_file); return MZ_FALSE; } cur_archive_file_ofs += archive_name_size; - if (uncomp_size) - { + if (uncomp_size) { mz_uint64 uncomp_remaining = uncomp_size; - void *pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, MZ_ZIP_MAX_IO_BUF_SIZE); - if (!pRead_buf) - { + void *pRead_buf = + pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, MZ_ZIP_MAX_IO_BUF_SIZE); + if (!pRead_buf) { MZ_FCLOSE(pSrc_file); return MZ_FALSE; } - if (!level) - { - while (uncomp_remaining) - { + if (!level) { + while (uncomp_remaining) { mz_uint n = (mz_uint)MZ_MIN(MZ_ZIP_MAX_IO_BUF_SIZE, uncomp_remaining); - if ((MZ_FREAD(pRead_buf, 1, n, pSrc_file) != n) || (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pRead_buf, n) != n)) - { + if ((MZ_FREAD(pRead_buf, 1, n, pSrc_file) != n) || + (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pRead_buf, + n) != n)) { pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); MZ_FCLOSE(pSrc_file); return MZ_FALSE; } - uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, n); + uncomp_crc32 = + (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, n); uncomp_remaining -= n; cur_archive_file_ofs += n; } comp_size = uncomp_size; - } - else - { + } else { mz_bool result = MZ_FALSE; mz_zip_writer_add_state state; - tdefl_compressor *pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor)); - if (!pComp) - { + tdefl_compressor *pComp = (tdefl_compressor *)pZip->m_pAlloc( + pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor)); + if (!pComp) { pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); MZ_FCLOSE(pSrc_file); return MZ_FALSE; @@ -4530,39 +6060,41 @@ mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, state.m_cur_archive_file_ofs = cur_archive_file_ofs; state.m_comp_size = 0; - if (tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY) - { + if (tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, + tdefl_create_comp_flags_from_zip_params( + level, -15, MZ_DEFAULT_STRATEGY)) != + TDEFL_STATUS_OKAY) { pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); MZ_FCLOSE(pSrc_file); return MZ_FALSE; } - for ( ; ; ) - { - size_t in_buf_size = (mz_uint32)MZ_MIN(uncomp_remaining, MZ_ZIP_MAX_IO_BUF_SIZE); + for (;;) { + size_t in_buf_size = + (mz_uint32)MZ_MIN(uncomp_remaining, MZ_ZIP_MAX_IO_BUF_SIZE); tdefl_status status; if (MZ_FREAD(pRead_buf, 1, in_buf_size, pSrc_file) != in_buf_size) break; - uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, in_buf_size); + uncomp_crc32 = (mz_uint32)mz_crc32( + uncomp_crc32, (const mz_uint8 *)pRead_buf, in_buf_size); uncomp_remaining -= in_buf_size; - status = tdefl_compress_buffer(pComp, pRead_buf, in_buf_size, uncomp_remaining ? TDEFL_NO_FLUSH : TDEFL_FINISH); - if (status == TDEFL_STATUS_DONE) - { + status = tdefl_compress_buffer(pComp, pRead_buf, in_buf_size, + uncomp_remaining ? TDEFL_NO_FLUSH + : TDEFL_FINISH); + if (status == TDEFL_STATUS_DONE) { result = MZ_TRUE; break; - } - else if (status != TDEFL_STATUS_OKAY) + } else if (status != TDEFL_STATUS_OKAY) break; } pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - if (!result) - { + if (!result) { pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); MZ_FCLOSE(pSrc_file); return MZ_FALSE; @@ -4577,19 +6109,26 @@ mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); } - MZ_FCLOSE(pSrc_file); pSrc_file = NULL; + MZ_FCLOSE(pSrc_file); + pSrc_file = NULL; // no zip64 support yet if ((comp_size > 0xFFFFFFFF) || (cur_archive_file_ofs > 0xFFFFFFFF)) return MZ_FALSE; - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, 0, uncomp_size, comp_size, uncomp_crc32, method, 0, dos_time, dos_date)) + if (!mz_zip_writer_create_local_dir_header( + pZip, local_dir_header, (mz_uint16)archive_name_size, 0, uncomp_size, + comp_size, uncomp_crc32, method, 0, dos_time, dos_date)) return MZ_FALSE; - if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) + if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, + sizeof(local_dir_header)) != sizeof(local_dir_header)) return MZ_FALSE; - if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, NULL, 0, pComment, comment_size, uncomp_size, comp_size, uncomp_crc32, method, 0, dos_time, dos_date, local_dir_header_ofs, ext_attributes)) + if (!mz_zip_writer_add_to_central_dir( + pZip, pArchive_name, (mz_uint16)archive_name_size, NULL, 0, pComment, + comment_size, uncomp_size, comp_size, uncomp_crc32, method, 0, + dos_time, dos_date, local_dir_header_ofs, ext_attributes)) return MZ_FALSE; pZip->m_total_files++; @@ -4599,66 +6138,89 @@ mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, } #endif // #ifndef MINIZ_NO_STDIO -mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint file_index) -{ +mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, + mz_zip_archive *pSource_zip, + mz_uint file_index) { mz_uint n, bit_flags, num_alignment_padding_bytes; mz_uint64 comp_bytes_remaining, local_dir_header_ofs; mz_uint64 cur_src_file_ofs, cur_dst_file_ofs; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; + mz_uint32 + local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / + sizeof(mz_uint32)]; + mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; mz_uint8 central_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE]; size_t orig_central_dir_size; mz_zip_internal_state *pState; - void *pBuf; const mz_uint8 *pSrc_central_header; + void *pBuf; + const mz_uint8 *pSrc_central_header; if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING)) return MZ_FALSE; - if (NULL == (pSrc_central_header = mz_zip_reader_get_cdh(pSource_zip, file_index))) + if (NULL == + (pSrc_central_header = mz_zip_reader_get_cdh(pSource_zip, file_index))) return MZ_FALSE; pState = pZip->m_pState; - num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); + num_alignment_padding_bytes = + mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); // no zip64 support yet - if ((pZip->m_total_files == 0xFFFF) || ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) > 0xFFFFFFFF)) + if ((pZip->m_total_files == 0xFFFF) || + ((pZip->m_archive_size + num_alignment_padding_bytes + + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) > + 0xFFFFFFFF)) return MZ_FALSE; - cur_src_file_ofs = MZ_READ_LE32(pSrc_central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS); + cur_src_file_ofs = + MZ_READ_LE32(pSrc_central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS); cur_dst_file_ofs = pZip->m_archive_size; - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) + if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, + pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) return MZ_FALSE; if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) return MZ_FALSE; cur_src_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE; - if (!mz_zip_writer_write_zeros(pZip, cur_dst_file_ofs, num_alignment_padding_bytes)) + if (!mz_zip_writer_write_zeros(pZip, cur_dst_file_ofs, + num_alignment_padding_bytes)) return MZ_FALSE; cur_dst_file_ofs += num_alignment_padding_bytes; local_dir_header_ofs = cur_dst_file_ofs; - if (pZip->m_file_offset_alignment) { MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); } + if (pZip->m_file_offset_alignment) { + MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == + 0); + } - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) + if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pLocal_header, + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) return MZ_FALSE; cur_dst_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE; - n = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - comp_bytes_remaining = n + MZ_READ_LE32(pSrc_central_header + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); + n = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); + comp_bytes_remaining = + n + MZ_READ_LE32(pSrc_central_header + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); - if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)MZ_MAX(sizeof(mz_uint32) * 4, MZ_MIN(MZ_ZIP_MAX_IO_BUF_SIZE, comp_bytes_remaining))))) + if (NULL == + (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, + (size_t)MZ_MAX(sizeof(mz_uint32) * 4, + MZ_MIN(MZ_ZIP_MAX_IO_BUF_SIZE, + comp_bytes_remaining))))) return MZ_FALSE; - while (comp_bytes_remaining) - { + while (comp_bytes_remaining) { n = (mz_uint)MZ_MIN(MZ_ZIP_MAX_IO_BUF_SIZE, comp_bytes_remaining); - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, n) != n) - { + if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, + n) != n) { pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); return MZ_FALSE; } cur_src_file_ofs += n; - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n) - { + if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n) { pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); return MZ_FALSE; } @@ -4668,22 +6230,21 @@ mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive * } bit_flags = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_BIT_FLAG_OFS); - if (bit_flags & 8) - { + if (bit_flags & 8) { // Copy data descriptor - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, sizeof(mz_uint32) * 4) != sizeof(mz_uint32) * 4) - { + if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, + sizeof(mz_uint32) * 4) != sizeof(mz_uint32) * 4) { pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); return MZ_FALSE; } n = sizeof(mz_uint32) * ((MZ_READ_LE32(pBuf) == 0x08074b50) ? 4 : 3); - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n) - { + if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n) { pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); return MZ_FALSE; } + // cur_src_file_ofs += n; cur_dst_file_ofs += n; } pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); @@ -4695,23 +6256,29 @@ mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive * orig_central_dir_size = pState->m_central_dir.m_size; memcpy(central_header, pSrc_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE); - MZ_WRITE_LE32(central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS, local_dir_header_ofs); - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) + MZ_WRITE_LE32(central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS, + local_dir_header_ofs); + if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, central_header, + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) return MZ_FALSE; - n = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_EXTRA_LEN_OFS) + MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_COMMENT_LEN_OFS); - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n)) - { - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); + n = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_FILENAME_LEN_OFS) + + MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_EXTRA_LEN_OFS) + + MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_COMMENT_LEN_OFS); + if (!mz_zip_array_push_back( + pZip, &pState->m_central_dir, + pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n)) { + mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, + MZ_FALSE); return MZ_FALSE; } if (pState->m_central_dir.m_size > 0xFFFFFFFF) return MZ_FALSE; n = (mz_uint32)orig_central_dir_size; - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, &n, 1)) - { - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); + if (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, &n, 1)) { + mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, + MZ_FALSE); return MZ_FALSE; } @@ -4721,8 +6288,7 @@ mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive * return MZ_TRUE; } -mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip) -{ +mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip) { mz_zip_internal_state *pState; mz_uint64 central_dir_ofs, central_dir_size; mz_uint8 hdr[MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE]; @@ -4733,31 +6299,37 @@ mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip) pState = pZip->m_pState; // no zip64 support yet - if ((pZip->m_total_files > 0xFFFF) || ((pZip->m_archive_size + pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) > 0xFFFFFFFF)) + if ((pZip->m_total_files > 0xFFFF) || + ((pZip->m_archive_size + pState->m_central_dir.m_size + + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) > 0xFFFFFFFF)) return MZ_FALSE; central_dir_ofs = 0; central_dir_size = 0; - if (pZip->m_total_files) - { + if (pZip->m_total_files) { // Write central directory central_dir_ofs = pZip->m_archive_size; central_dir_size = pState->m_central_dir.m_size; pZip->m_central_directory_file_ofs = central_dir_ofs; - if (pZip->m_pWrite(pZip->m_pIO_opaque, central_dir_ofs, pState->m_central_dir.m_p, (size_t)central_dir_size) != central_dir_size) + if (pZip->m_pWrite(pZip->m_pIO_opaque, central_dir_ofs, + pState->m_central_dir.m_p, + (size_t)central_dir_size) != central_dir_size) return MZ_FALSE; pZip->m_archive_size += central_dir_size; } // Write end of central directory record MZ_CLEAR_OBJ(hdr); - MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_SIG_OFS, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG); - MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, pZip->m_total_files); + MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_SIG_OFS, + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG); + MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, + pZip->m_total_files); MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS, pZip->m_total_files); MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_SIZE_OFS, central_dir_size); MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_OFS_OFS, central_dir_ofs); - if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, sizeof(hdr)) != sizeof(hdr)) + if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, + sizeof(hdr)) != sizeof(hdr)) return MZ_FALSE; #ifndef MINIZ_NO_STDIO if ((pState->m_pFile) && (MZ_FFLUSH(pState->m_pFile) == EOF)) @@ -4770,8 +6342,8 @@ mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip) return MZ_TRUE; } -mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **pBuf, size_t *pSize) -{ +mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **pBuf, + size_t *pSize) { if ((!pZip) || (!pZip->m_pState) || (!pBuf) || (!pSize)) return MZ_FALSE; if (pZip->m_pWrite != mz_zip_heap_write_func) @@ -4786,11 +6358,12 @@ mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **pBuf, s return MZ_TRUE; } -mz_bool mz_zip_writer_end(mz_zip_archive *pZip) -{ +mz_bool mz_zip_writer_end(mz_zip_archive *pZip) { mz_zip_internal_state *pState; mz_bool status = MZ_TRUE; - if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || ((pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) && (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED))) + if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || + ((pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) && + (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED))) return MZ_FALSE; pState = pZip->m_pState; @@ -4800,15 +6373,13 @@ mz_bool mz_zip_writer_end(mz_zip_archive *pZip) mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets); #ifndef MINIZ_NO_STDIO - if (pState->m_pFile) - { + if (pState->m_pFile) { MZ_FCLOSE(pState->m_pFile); pState->m_pFile = NULL; } #endif // #ifndef MINIZ_NO_STDIO - if ((pZip->m_pWrite == mz_zip_heap_write_func) && (pState->m_pMem)) - { + if ((pZip->m_pWrite == mz_zip_heap_write_func) && (pState->m_pMem)) { pZip->m_pFree(pZip->m_pAlloc_opaque, pState->m_pMem); pState->m_pMem = NULL; } @@ -4819,44 +6390,48 @@ mz_bool mz_zip_writer_end(mz_zip_archive *pZip) } #ifndef MINIZ_NO_STDIO -mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags) -{ +mz_bool mz_zip_add_mem_to_archive_file_in_place( + const char *pZip_filename, const char *pArchive_name, const void *pBuf, + size_t buf_size, const void *pComment, mz_uint16 comment_size, + mz_uint level_and_flags) { mz_bool status, created_new_archive = MZ_FALSE; mz_zip_archive zip_archive; struct MZ_FILE_STAT_STRUCT file_stat; MZ_CLEAR_OBJ(zip_archive); if ((int)level_and_flags < 0) - level_and_flags = MZ_DEFAULT_LEVEL; - if ((!pZip_filename) || (!pArchive_name) || ((buf_size) && (!pBuf)) || ((comment_size) && (!pComment)) || ((level_and_flags & 0xF) > MZ_UBER_COMPRESSION)) + level_and_flags = MZ_DEFAULT_LEVEL; + if ((!pZip_filename) || (!pArchive_name) || ((buf_size) && (!pBuf)) || + ((comment_size) && (!pComment)) || + ((level_and_flags & 0xF) > MZ_UBER_COMPRESSION)) return MZ_FALSE; if (!mz_zip_writer_validate_archive_name(pArchive_name)) return MZ_FALSE; - if (MZ_FILE_STAT(pZip_filename, &file_stat) != 0) - { + if (MZ_FILE_STAT(pZip_filename, &file_stat) != 0) { // Create a new archive. if (!mz_zip_writer_init_file(&zip_archive, pZip_filename, 0)) return MZ_FALSE; created_new_archive = MZ_TRUE; - } - else - { + } else { // Append to an existing archive. - if (!mz_zip_reader_init_file(&zip_archive, pZip_filename, level_and_flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY)) + if (!mz_zip_reader_init_file(&zip_archive, pZip_filename, + level_and_flags | + MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY)) return MZ_FALSE; - if (!mz_zip_writer_init_from_reader(&zip_archive, pZip_filename)) - { + if (!mz_zip_writer_init_from_reader(&zip_archive, pZip_filename)) { mz_zip_reader_end(&zip_archive); return MZ_FALSE; } } - status = mz_zip_writer_add_mem_ex(&zip_archive, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, 0, 0); - // Always finalize, even if adding failed for some reason, so we have a valid central directory. (This may not always succeed, but we can try.) + status = + mz_zip_writer_add_mem_ex(&zip_archive, pArchive_name, pBuf, buf_size, + pComment, comment_size, level_and_flags, 0, 0); + // Always finalize, even if adding failed for some reason, so we have a valid + // central directory. (This may not always succeed, but we can try.) if (!mz_zip_writer_finalize_archive(&zip_archive)) status = MZ_FALSE; if (!mz_zip_writer_end(&zip_archive)) status = MZ_FALSE; - if ((!status) && (created_new_archive)) - { + if ((!status) && (created_new_archive)) { // It's a new archive and something went wrong, so just delete it. int ignoredStatus = MZ_DELETE_FILE(pZip_filename); (void)ignoredStatus; @@ -4864,8 +6439,9 @@ mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const return status; } -void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags) -{ +void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, + const char *pArchive_name, + size_t *pSize, mz_uint flags) { int file_index; mz_zip_archive zip_archive; void *p = NULL; @@ -4877,10 +6453,13 @@ void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char return NULL; MZ_CLEAR_OBJ(zip_archive); - if (!mz_zip_reader_init_file(&zip_archive, pZip_filename, flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY)) + if (!mz_zip_reader_init_file(&zip_archive, pZip_filename, + flags | + MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY)) return NULL; - if ((file_index = mz_zip_reader_locate_file(&zip_archive, pArchive_name, NULL, flags)) >= 0) + if ((file_index = mz_zip_reader_locate_file(&zip_archive, pArchive_name, NULL, + flags)) >= 0) p = mz_zip_reader_extract_to_heap(&zip_archive, file_index, pSize, flags); mz_zip_reader_end(&zip_archive); diff --git a/contrib/zip/src/zip.c b/contrib/zip/src/zip.c index 80573096b..812fa71e5 100644 --- a/contrib/zip/src/zip.c +++ b/contrib/zip/src/zip.c @@ -7,29 +7,40 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ - -#include "zip.h" -#include "miniz.h" +#define __STDC_WANT_LIB_EXT1__ 1 #include #include #include -#if defined _WIN32 || defined __WIN32__ -/* Win32, DOS */ +#if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) || \ + defined(__MINGW32__) +/* Win32, DOS, MSVC, MSVS */ #include #define MKDIR(DIRNAME) _mkdir(DIRNAME) #define STRCLONE(STR) ((STR) ? _strdup(STR) : NULL) #define HAS_DEVICE(P) \ - ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) && \ - (P)[1] == ':') + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) && \ + (P)[1] == ':') #define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE(P) ? 2 : 0) #define ISSLASH(C) ((C) == '/' || (C) == '\\') #else + +#include // needed for symlink() on BSD +int symlink(const char *target, const char *linkpath); // needed on Linux + #define MKDIR(DIRNAME) mkdir(DIRNAME, 0755) #define STRCLONE(STR) ((STR) ? strdup(STR) : NULL) + +#endif + +#include "miniz.h" +#include "zip.h" + +#ifndef HAS_DEVICE +#define HAS_DEVICE(P) 0 #endif #ifndef FILESYSTEM_PREFIX_LEN @@ -40,601 +51,871 @@ #define ISSLASH(C) ((C) == '/') #endif -#define CLEANUP(ptr) \ - do { \ - if (ptr) { \ - free((void *)ptr); \ - ptr = NULL; \ - } \ - } while (0) +#define CLEANUP(ptr) \ + do { \ + if (ptr) { \ + free((void *)ptr); \ + ptr = NULL; \ + } \ + } while (0) -static char *basename(const char *name) { - char const *p; - char const *base = name += FILESYSTEM_PREFIX_LEN(name); - int all_slashes = 1; +static const char *base_name(const char *name) { + char const *p; + char const *base = name += FILESYSTEM_PREFIX_LEN(name); + int all_slashes = 1; - for (p = name; *p; p++) { - if (ISSLASH(*p)) - base = p + 1; - else - all_slashes = 0; - } + for (p = name; *p; p++) { + if (ISSLASH(*p)) + base = p + 1; + else + all_slashes = 0; + } - /* If NAME is all slashes, arrange to return `/'. */ - if (*base == '\0' && ISSLASH(*name) && all_slashes) --base; + /* If NAME is all slashes, arrange to return `/'. */ + if (*base == '\0' && ISSLASH(*name) && all_slashes) + --base; - return (char *)base; + return base; } static int mkpath(const char *path) { - char const *p; - char npath[MAX_PATH + 1] = {0}; - int len = 0; + char const *p; + char npath[MAX_PATH + 1]; + int len = 0; + int has_device = HAS_DEVICE(path); - for (p = path; *p && len < MAX_PATH; p++) { - if (ISSLASH(*p) && len > 0) { - if (MKDIR(npath) == -1) - if (errno != EEXIST) return -1; - } - npath[len++] = *p; + memset(npath, 0, MAX_PATH + 1); + if (has_device) { + // only on windows + npath[0] = path[0]; + npath[1] = path[1]; + len = 2; + } + for (p = path + len; *p && len < MAX_PATH; p++) { + if (ISSLASH(*p) && ((!has_device && len > 0) || (has_device && len > 2))) { + if (MKDIR(npath) == -1) + if (errno != EEXIST) + return -1; } + npath[len++] = *p; + } - return 0; + return 0; } -static char *strrpl(const char *str, char oldchar, char newchar) { - char *rpl = (char *)malloc(sizeof(char) * (1 + strlen(str))); - char *begin = rpl; - char c; - while((c = *str++)) { - if (c == oldchar) { - c = newchar; - } - *rpl++ = c; - } - *rpl = '\0'; +static char *strrpl(const char *str, size_t n, char oldchar, char newchar) { + char c; + size_t i; + char *rpl = (char *)calloc((1 + n), sizeof(char)); + char *begin = rpl; + if (!rpl) { + return NULL; + } - return begin; + for (i = 0; (i < n) && (c = *str++); ++i) { + if (c == oldchar) { + c = newchar; + } + *rpl++ = c; + } + + return begin; } struct zip_entry_t { - int index; - const char *name; - mz_uint64 uncomp_size; - mz_uint64 comp_size; - mz_uint32 uncomp_crc32; - mz_uint64 offset; - mz_uint8 header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE]; - mz_uint64 header_offset; - mz_uint16 method; - mz_zip_writer_add_state state; - tdefl_compressor comp; + int index; + char *name; + mz_uint64 uncomp_size; + mz_uint64 comp_size; + mz_uint32 uncomp_crc32; + mz_uint64 offset; + mz_uint8 header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE]; + mz_uint64 header_offset; + mz_uint16 method; + mz_zip_writer_add_state state; + tdefl_compressor comp; + mz_uint32 external_attr; + time_t m_time; }; struct zip_t { - mz_zip_archive archive; - mz_uint level; - struct zip_entry_t entry; - char mode; + mz_zip_archive archive; + mz_uint level; + struct zip_entry_t entry; }; struct zip_t *zip_open(const char *zipname, int level, char mode) { - struct zip_t *zip = NULL; + struct zip_t *zip = NULL; - if (!zipname || strlen(zipname) < 1) { - // zip_t archive name is empty or NULL - goto cleanup; + if (!zipname || strlen(zipname) < 1) { + // zip_t archive name is empty or NULL + goto cleanup; + } + + if (level < 0) + level = MZ_DEFAULT_LEVEL; + if ((level & 0xF) > MZ_UBER_COMPRESSION) { + // Wrong compression level + goto cleanup; + } + + zip = (struct zip_t *)calloc((size_t)1, sizeof(struct zip_t)); + if (!zip) + goto cleanup; + + zip->level = (mz_uint)level; + switch (mode) { + case 'w': + // Create a new archive. + if (!mz_zip_writer_init_file(&(zip->archive), zipname, 0)) { + // Cannot initialize zip_archive writer + goto cleanup; } + break; - if (level < 0) level = MZ_DEFAULT_LEVEL; - if ((level & 0xF) > MZ_UBER_COMPRESSION) { - // Wrong compression level - goto cleanup; + case 'r': + case 'a': + if (!mz_zip_reader_init_file( + &(zip->archive), zipname, + zip->level | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY)) { + // An archive file does not exist or cannot initialize + // zip_archive reader + goto cleanup; } - - zip = (struct zip_t *)calloc((size_t)1, sizeof(struct zip_t)); - if (!zip) goto cleanup; - - zip->level = level; - zip->mode = mode; - switch (mode) { - case 'w': - // Create a new archive. - if (!mz_zip_writer_init_file(&(zip->archive), zipname, 0)) { - // Cannot initialize zip_archive writer - goto cleanup; - } - break; - - case 'r': - case 'a': - if (!mz_zip_reader_init_file( - &(zip->archive), zipname, - level | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY)) { - // An archive file does not exist or cannot initialize - // zip_archive reader - goto cleanup; - } - - if (mode == 'a' && - !mz_zip_writer_init_from_reader(&(zip->archive), zipname)) { - mz_zip_reader_end(&(zip->archive)); - goto cleanup; - } - - break; - - default: - goto cleanup; + if (mode == 'a' && + !mz_zip_writer_init_from_reader(&(zip->archive), zipname)) { + mz_zip_reader_end(&(zip->archive)); + goto cleanup; } + break; - return zip; + default: + goto cleanup; + } + + return zip; cleanup: - CLEANUP(zip); - return NULL; + CLEANUP(zip); + return NULL; } void zip_close(struct zip_t *zip) { - if (zip) { - // Always finalize, even if adding failed for some reason, so we have a - // valid central directory. - mz_zip_writer_finalize_archive(&(zip->archive)); + if (zip) { + // Always finalize, even if adding failed for some reason, so we have a + // valid central directory. + mz_zip_writer_finalize_archive(&(zip->archive)); - mz_zip_writer_end(&(zip->archive)); - mz_zip_reader_end(&(zip->archive)); + mz_zip_writer_end(&(zip->archive)); + mz_zip_reader_end(&(zip->archive)); - CLEANUP(zip); - } + CLEANUP(zip); + } } int zip_entry_open(struct zip_t *zip, const char *entryname) { - char *locname = NULL; - size_t entrylen = 0; - mz_zip_archive *pzip = NULL; - mz_uint num_alignment_padding_bytes, level; + size_t entrylen = 0; + mz_zip_archive *pzip = NULL; + mz_uint num_alignment_padding_bytes, level; + mz_zip_archive_file_stat stats; - if (!zip || !entryname) { - return -1; + if (!zip || !entryname) { + return -1; + } + + entrylen = strlen(entryname); + if (entrylen < 1) { + return -1; + } + + /* + .ZIP File Format Specification Version: 6.3.3 + + 4.4.17.1 The name of the file, with optional relative path. + The path stored MUST not contain a drive or + device letter, or a leading slash. All slashes + MUST be forward slashes '/' as opposed to + backwards slashes '\' for compatibility with Amiga + and UNIX file systems etc. If input came from standard + input, there is no file name field. + */ + zip->entry.name = strrpl(entryname, entrylen, '\\', '/'); + if (!zip->entry.name) { + // Cannot parse zip entry name + return -1; + } + + pzip = &(zip->archive); + if (pzip->m_zip_mode == MZ_ZIP_MODE_READING) { + zip->entry.index = + mz_zip_reader_locate_file(pzip, zip->entry.name, NULL, 0); + if (zip->entry.index < 0) { + goto cleanup; } - entrylen = strlen(entryname); - if (entrylen < 1) { - return -1; + if (!mz_zip_reader_file_stat(pzip, (mz_uint)zip->entry.index, &stats)) { + goto cleanup; } - pzip = &(zip->archive); - /* - .ZIP File Format Specification Version: 6.3.3 - - 4.4.17.1 The name of the file, with optional relative path. - The path stored MUST not contain a drive or - device letter, or a leading slash. All slashes - MUST be forward slashes '/' as opposed to - backwards slashes '\' for compatibility with Amiga - and UNIX file systems etc. If input came from standard - input, there is no file name field. - */ - locname = strrpl(entryname, '\\', '/'); - - if (zip->mode == 'r') { - zip->entry.index = mz_zip_reader_locate_file(pzip, locname, NULL, 0); - CLEANUP(locname); - return (zip->entry.index < 0) ? -1 : 0; - } - - zip->entry.index = zip->archive.m_total_files; - zip->entry.name = locname; - if (!zip->entry.name) { - // Cannot parse zip entry name - return -1; - } - - zip->entry.comp_size = 0; - zip->entry.uncomp_size = 0; - zip->entry.uncomp_crc32 = MZ_CRC32_INIT; - zip->entry.offset = zip->archive.m_archive_size; - zip->entry.header_offset = zip->archive.m_archive_size; - memset(zip->entry.header, 0, - MZ_ZIP_LOCAL_DIR_HEADER_SIZE * sizeof(mz_uint8)); - zip->entry.method = 0; - - num_alignment_padding_bytes = - mz_zip_writer_compute_padding_needed_for_file_alignment(pzip); - - if (!pzip->m_pState || (pzip->m_zip_mode != MZ_ZIP_MODE_WRITING)) { - // Wrong zip mode - return -1; - } - if (zip->level & MZ_ZIP_FLAG_COMPRESSED_DATA) { - // Wrong zip compression level - return -1; - } - // no zip64 support yet - if ((pzip->m_total_files == 0xFFFF) || - ((pzip->m_archive_size + num_alignment_padding_bytes + - MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + - entrylen) > 0xFFFFFFFF)) { - // No zip64 support yet - return -1; - } - if (!mz_zip_writer_write_zeros( - pzip, zip->entry.offset, - num_alignment_padding_bytes + sizeof(zip->entry.header))) { - // Cannot memset zip entry header - return -1; - } - - zip->entry.header_offset += num_alignment_padding_bytes; - if (pzip->m_file_offset_alignment) { - MZ_ASSERT((zip->entry.header_offset & - (pzip->m_file_offset_alignment - 1)) == 0); - } - zip->entry.offset += - num_alignment_padding_bytes + sizeof(zip->entry.header); - - if (pzip->m_pWrite(pzip->m_pIO_opaque, zip->entry.offset, zip->entry.name, - entrylen) != entrylen) { - // Cannot write data to zip entry - return -1; - } - - zip->entry.offset += entrylen; - level = zip->level & 0xF; - if (level) { - zip->entry.state.m_pZip = pzip; - zip->entry.state.m_cur_archive_file_ofs = zip->entry.offset; - zip->entry.state.m_comp_size = 0; - - if (tdefl_init(&(zip->entry.comp), mz_zip_writer_add_put_buf_callback, - &(zip->entry.state), - tdefl_create_comp_flags_from_zip_params( - level, -15, MZ_DEFAULT_STRATEGY)) != - TDEFL_STATUS_OKAY) { - // Cannot initialize the zip compressor - return -1; - } - } + zip->entry.comp_size = stats.m_comp_size; + zip->entry.uncomp_size = stats.m_uncomp_size; + zip->entry.uncomp_crc32 = stats.m_crc32; + zip->entry.offset = stats.m_central_dir_ofs; + zip->entry.header_offset = stats.m_local_header_ofs; + zip->entry.method = stats.m_method; + zip->entry.external_attr = stats.m_external_attr; + zip->entry.m_time = stats.m_time; return 0; + } + + zip->entry.index = (int)zip->archive.m_total_files; + zip->entry.comp_size = 0; + zip->entry.uncomp_size = 0; + zip->entry.uncomp_crc32 = MZ_CRC32_INIT; + zip->entry.offset = zip->archive.m_archive_size; + zip->entry.header_offset = zip->archive.m_archive_size; + memset(zip->entry.header, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE * sizeof(mz_uint8)); + zip->entry.method = 0; + zip->entry.external_attr = 0; + + num_alignment_padding_bytes = + mz_zip_writer_compute_padding_needed_for_file_alignment(pzip); + + if (!pzip->m_pState || (pzip->m_zip_mode != MZ_ZIP_MODE_WRITING)) { + // Wrong zip mode + goto cleanup; + } + if (zip->level & MZ_ZIP_FLAG_COMPRESSED_DATA) { + // Wrong zip compression level + goto cleanup; + } + // no zip64 support yet + if ((pzip->m_total_files == 0xFFFF) || + ((pzip->m_archive_size + num_alignment_padding_bytes + + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + + entrylen) > 0xFFFFFFFF)) { + // No zip64 support yet + goto cleanup; + } + if (!mz_zip_writer_write_zeros(pzip, zip->entry.offset, + num_alignment_padding_bytes + + sizeof(zip->entry.header))) { + // Cannot memset zip entry header + goto cleanup; + } + + zip->entry.header_offset += num_alignment_padding_bytes; + if (pzip->m_file_offset_alignment) { + MZ_ASSERT( + (zip->entry.header_offset & (pzip->m_file_offset_alignment - 1)) == 0); + } + zip->entry.offset += num_alignment_padding_bytes + sizeof(zip->entry.header); + + if (pzip->m_pWrite(pzip->m_pIO_opaque, zip->entry.offset, zip->entry.name, + entrylen) != entrylen) { + // Cannot write data to zip entry + goto cleanup; + } + + zip->entry.offset += entrylen; + level = zip->level & 0xF; + if (level) { + zip->entry.state.m_pZip = pzip; + zip->entry.state.m_cur_archive_file_ofs = zip->entry.offset; + zip->entry.state.m_comp_size = 0; + + if (tdefl_init(&(zip->entry.comp), mz_zip_writer_add_put_buf_callback, + &(zip->entry.state), + (int)tdefl_create_comp_flags_from_zip_params( + (int)level, -15, MZ_DEFAULT_STRATEGY)) != + TDEFL_STATUS_OKAY) { + // Cannot initialize the zip compressor + goto cleanup; + } + } + + zip->entry.m_time = time(NULL); + + return 0; + +cleanup: + CLEANUP(zip->entry.name); + return -1; +} + +int zip_entry_openbyindex(struct zip_t *zip, int index) { + mz_zip_archive *pZip = NULL; + mz_zip_archive_file_stat stats; + mz_uint namelen; + const mz_uint8 *pHeader; + const char *pFilename; + + if (!zip) { + // zip_t handler is not initialized + return -1; + } + + pZip = &(zip->archive); + if (pZip->m_zip_mode != MZ_ZIP_MODE_READING) { + // open by index requires readonly mode + return -1; + } + + if (index < 0 || (mz_uint)index >= pZip->m_total_files) { + // index out of range + return -1; + } + + if (!(pHeader = &MZ_ZIP_ARRAY_ELEMENT( + &pZip->m_pState->m_central_dir, mz_uint8, + MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, + mz_uint32, index)))) { + // cannot find header in central directory + return -1; + } + + namelen = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_FILENAME_LEN_OFS); + pFilename = (const char *)pHeader + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; + + /* + .ZIP File Format Specification Version: 6.3.3 + + 4.4.17.1 The name of the file, with optional relative path. + The path stored MUST not contain a drive or + device letter, or a leading slash. All slashes + MUST be forward slashes '/' as opposed to + backwards slashes '\' for compatibility with Amiga + and UNIX file systems etc. If input came from standard + input, there is no file name field. + */ + zip->entry.name = strrpl(pFilename, namelen, '\\', '/'); + if (!zip->entry.name) { + // local entry name is NULL + return -1; + } + + if (!mz_zip_reader_file_stat(pZip, (mz_uint)index, &stats)) { + return -1; + } + + zip->entry.index = index; + zip->entry.comp_size = stats.m_comp_size; + zip->entry.uncomp_size = stats.m_uncomp_size; + zip->entry.uncomp_crc32 = stats.m_crc32; + zip->entry.offset = stats.m_central_dir_ofs; + zip->entry.header_offset = stats.m_local_header_ofs; + zip->entry.method = stats.m_method; + zip->entry.external_attr = stats.m_external_attr; + zip->entry.m_time = stats.m_time; + + return 0; } int zip_entry_close(struct zip_t *zip) { - mz_zip_archive *pzip = NULL; - mz_uint level; - tdefl_status done; - mz_uint16 entrylen; - time_t t; - struct tm *tm; - mz_uint16 dos_time, dos_date; - int status = -1; + mz_zip_archive *pzip = NULL; + mz_uint level; + tdefl_status done; + mz_uint16 entrylen; + mz_uint16 dos_time, dos_date; + int status = -1; - if (!zip) { - // zip_t handler is not initialized - return -1; - } + if (!zip) { + // zip_t handler is not initialized + goto cleanup; + } - if (zip->mode == 'r') { - return 0; - } - - pzip = &(zip->archive); - level = zip->level & 0xF; - if (level) { - done = tdefl_compress_buffer(&(zip->entry.comp), "", 0, TDEFL_FINISH); - if (done != TDEFL_STATUS_DONE && done != TDEFL_STATUS_OKAY) { - // Cannot flush compressed buffer - goto cleanup; - } - zip->entry.comp_size = zip->entry.state.m_comp_size; - zip->entry.offset = zip->entry.state.m_cur_archive_file_ofs; - zip->entry.method = MZ_DEFLATED; - } - - entrylen = (mz_uint16)strlen(zip->entry.name); - t = time(NULL); - tm = localtime(&t); - dos_time = (mz_uint16)(((tm->tm_hour) << 11) + ((tm->tm_min) << 5) + - ((tm->tm_sec) >> 1)); - dos_date = (mz_uint16)(((tm->tm_year + 1900 - 1980) << 9) + - ((tm->tm_mon + 1) << 5) + tm->tm_mday); - - // no zip64 support yet - if ((zip->entry.comp_size > 0xFFFFFFFF) || - (zip->entry.offset > 0xFFFFFFFF)) { - // No zip64 support, yet - goto cleanup; - } - - if (!mz_zip_writer_create_local_dir_header( - pzip, zip->entry.header, entrylen, 0, zip->entry.uncomp_size, - zip->entry.comp_size, zip->entry.uncomp_crc32, zip->entry.method, 0, - dos_time, dos_date)) { - // Cannot create zip entry header - goto cleanup; - } - - if (pzip->m_pWrite(pzip->m_pIO_opaque, zip->entry.header_offset, - zip->entry.header, sizeof(zip->entry.header)) != - sizeof(zip->entry.header)) { - // Cannot write zip entry header - goto cleanup; - } - - if (!mz_zip_writer_add_to_central_dir( - pzip, zip->entry.name, entrylen, NULL, 0, "", 0, - zip->entry.uncomp_size, zip->entry.comp_size, - zip->entry.uncomp_crc32, zip->entry.method, 0, dos_time, dos_date, - zip->entry.header_offset, 0)) { - // Cannot write to zip central dir - goto cleanup; - } - - pzip->m_total_files++; - pzip->m_archive_size = zip->entry.offset; + pzip = &(zip->archive); + if (pzip->m_zip_mode == MZ_ZIP_MODE_READING) { status = 0; + goto cleanup; + } + + level = zip->level & 0xF; + if (level) { + done = tdefl_compress_buffer(&(zip->entry.comp), "", 0, TDEFL_FINISH); + if (done != TDEFL_STATUS_DONE && done != TDEFL_STATUS_OKAY) { + // Cannot flush compressed buffer + goto cleanup; + } + zip->entry.comp_size = zip->entry.state.m_comp_size; + zip->entry.offset = zip->entry.state.m_cur_archive_file_ofs; + zip->entry.method = MZ_DEFLATED; + } + + entrylen = (mz_uint16)strlen(zip->entry.name); + // no zip64 support yet + if ((zip->entry.comp_size > 0xFFFFFFFF) || (zip->entry.offset > 0xFFFFFFFF)) { + // No zip64 support, yet + goto cleanup; + } + + mz_zip_time_t_to_dos_time(zip->entry.m_time, &dos_time, &dos_date); + if (!mz_zip_writer_create_local_dir_header( + pzip, zip->entry.header, entrylen, 0, zip->entry.uncomp_size, + zip->entry.comp_size, zip->entry.uncomp_crc32, zip->entry.method, 0, + dos_time, dos_date)) { + // Cannot create zip entry header + goto cleanup; + } + + if (pzip->m_pWrite(pzip->m_pIO_opaque, zip->entry.header_offset, + zip->entry.header, + sizeof(zip->entry.header)) != sizeof(zip->entry.header)) { + // Cannot write zip entry header + goto cleanup; + } + + if (!mz_zip_writer_add_to_central_dir( + pzip, zip->entry.name, entrylen, NULL, 0, "", 0, + zip->entry.uncomp_size, zip->entry.comp_size, zip->entry.uncomp_crc32, + zip->entry.method, 0, dos_time, dos_date, zip->entry.header_offset, + zip->entry.external_attr)) { + // Cannot write to zip central dir + goto cleanup; + } + + pzip->m_total_files++; + pzip->m_archive_size = zip->entry.offset; + status = 0; cleanup: + if (zip) { + zip->entry.m_time = 0; CLEANUP(zip->entry.name); - return status; + } + return status; +} + +const char *zip_entry_name(struct zip_t *zip) { + if (!zip) { + // zip_t handler is not initialized + return NULL; + } + + return zip->entry.name; +} + +int zip_entry_index(struct zip_t *zip) { + if (!zip) { + // zip_t handler is not initialized + return -1; + } + + return zip->entry.index; +} + +int zip_entry_isdir(struct zip_t *zip) { + if (!zip) { + // zip_t handler is not initialized + return -1; + } + + if (zip->entry.index < 0) { + // zip entry is not opened + return -1; + } + + return (int)mz_zip_reader_is_file_a_directory(&zip->archive, + (mz_uint)zip->entry.index); +} + +unsigned long long zip_entry_size(struct zip_t *zip) { + return zip ? zip->entry.uncomp_size : 0; +} + +unsigned int zip_entry_crc32(struct zip_t *zip) { + return zip ? zip->entry.uncomp_crc32 : 0; } int zip_entry_write(struct zip_t *zip, const void *buf, size_t bufsize) { - mz_uint level; - mz_zip_archive *pzip = NULL; - tdefl_status status; + mz_uint level; + mz_zip_archive *pzip = NULL; + tdefl_status status; - if (!zip) { - // zip_t handler is not initialized + if (!zip) { + // zip_t handler is not initialized + return -1; + } + + pzip = &(zip->archive); + if (buf && bufsize > 0) { + zip->entry.uncomp_size += bufsize; + zip->entry.uncomp_crc32 = (mz_uint32)mz_crc32( + zip->entry.uncomp_crc32, (const mz_uint8 *)buf, bufsize); + + level = zip->level & 0xF; + if (!level) { + if ((pzip->m_pWrite(pzip->m_pIO_opaque, zip->entry.offset, buf, + bufsize) != bufsize)) { + // Cannot write buffer return -1; + } + zip->entry.offset += bufsize; + zip->entry.comp_size += bufsize; + } else { + status = tdefl_compress_buffer(&(zip->entry.comp), buf, bufsize, + TDEFL_NO_FLUSH); + if (status != TDEFL_STATUS_DONE && status != TDEFL_STATUS_OKAY) { + // Cannot compress buffer + return -1; + } } + } - pzip = &(zip->archive); - if (buf && bufsize > 0) { - zip->entry.uncomp_size += bufsize; - zip->entry.uncomp_crc32 = (mz_uint32)mz_crc32( - zip->entry.uncomp_crc32, (const mz_uint8 *)buf, bufsize); - - level = zip->level & 0xF; - if (!level) { - if ((pzip->m_pWrite(pzip->m_pIO_opaque, zip->entry.offset, buf, - bufsize) != bufsize)) { - // Cannot write buffer - return -1; - } - zip->entry.offset += bufsize; - zip->entry.comp_size += bufsize; - } else { - status = tdefl_compress_buffer(&(zip->entry.comp), buf, bufsize, - TDEFL_NO_FLUSH); - if (status != TDEFL_STATUS_DONE && status != TDEFL_STATUS_OKAY) { - // Cannot compress buffer - return -1; - } - } - } - - return 0; + return 0; } int zip_entry_fwrite(struct zip_t *zip, const char *filename) { - int status = 0; - size_t n = 0; - FILE *stream = NULL; - mz_uint8 buf[MZ_ZIP_MAX_IO_BUF_SIZE] = {0}; + int status = 0; + size_t n = 0; + FILE *stream = NULL; + mz_uint8 buf[MZ_ZIP_MAX_IO_BUF_SIZE]; + struct MZ_FILE_STAT_STRUCT file_stat; - if (!zip) { - // zip_t handler is not initialized - return -1; + if (!zip) { + // zip_t handler is not initialized + return -1; + } + + memset(buf, 0, MZ_ZIP_MAX_IO_BUF_SIZE); + memset((void *)&file_stat, 0, sizeof(struct MZ_FILE_STAT_STRUCT)); + if (MZ_FILE_STAT(filename, &file_stat) != 0) { + // problem getting information - check errno + return -1; + } + + if ((file_stat.st_mode & 0200) == 0) { + // MS-DOS read-only attribute + zip->entry.external_attr |= 0x01; + } + zip->entry.external_attr |= (mz_uint32)((file_stat.st_mode & 0xFFFF) << 16); + zip->entry.m_time = file_stat.st_mtime; + +#if defined(_MSC_VER) + if (fopen_s(&stream, filename, "rb")) +#else + if (!(stream = fopen(filename, "rb"))) +#endif + { + // Cannot open filename + return -1; + } + + while ((n = fread(buf, sizeof(mz_uint8), MZ_ZIP_MAX_IO_BUF_SIZE, stream)) > + 0) { + if (zip_entry_write(zip, buf, n) < 0) { + status = -1; + break; } + } + fclose(stream); - stream = fopen(filename, "rb"); - if (!stream) { - // Cannot open filename - return -1; - } - - while ((n = fread(buf, sizeof(mz_uint8), MZ_ZIP_MAX_IO_BUF_SIZE, stream)) > - 0) { - if (zip_entry_write(zip, buf, n) < 0) { - status = -1; - break; - } - } - fclose(stream); - - return status; + return status; } -int zip_entry_read(struct zip_t *zip, void **buf, size_t *bufsize) { - mz_zip_archive *pzip = NULL; - mz_uint idx; +ssize_t zip_entry_read(struct zip_t *zip, void **buf, size_t *bufsize) { + mz_zip_archive *pzip = NULL; + mz_uint idx; + size_t size = 0; - if (!zip) { - // zip_t handler is not initialized - return -1; - } + if (!zip) { + // zip_t handler is not initialized + return -1; + } - if (zip->mode != 'r' || zip->entry.index < 0) { - // the entry is not found or we do not have read access - return -1; - } + pzip = &(zip->archive); + if (pzip->m_zip_mode != MZ_ZIP_MODE_READING || zip->entry.index < 0) { + // the entry is not found or we do not have read access + return -1; + } - pzip = &(zip->archive); - idx = (mz_uint)zip->entry.index; - if (mz_zip_reader_is_file_a_directory(pzip, idx)) { - // the entry is a directory - return -1; - } + idx = (mz_uint)zip->entry.index; + if (mz_zip_reader_is_file_a_directory(pzip, idx)) { + // the entry is a directory + return -1; + } - *buf = mz_zip_reader_extract_to_heap(pzip, idx, bufsize, 0); - return (*buf) ? 0 : -1; + *buf = mz_zip_reader_extract_to_heap(pzip, idx, &size, 0); + if (*buf && bufsize) { + *bufsize = size; + } + return size; +} + +ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) { + mz_zip_archive *pzip = NULL; + + if (!zip) { + // zip_t handler is not initialized + return -1; + } + + pzip = &(zip->archive); + if (pzip->m_zip_mode != MZ_ZIP_MODE_READING || zip->entry.index < 0) { + // the entry is not found or we do not have read access + return -1; + } + + if (!mz_zip_reader_extract_to_mem_no_alloc(pzip, (mz_uint)zip->entry.index, + buf, bufsize, 0, NULL, 0)) { + return -1; + } + + return (ssize_t)zip->entry.uncomp_size; } int zip_entry_fread(struct zip_t *zip, const char *filename) { - mz_zip_archive *pzip = NULL; - mz_uint idx; + mz_zip_archive *pzip = NULL; + mz_uint idx; + mz_uint32 xattr = 0; + mz_zip_archive_file_stat info; - if (!zip) { - // zip_t handler is not initialized - return -1; + if (!zip) { + // zip_t handler is not initialized + return -1; + } + + memset((void *)&info, 0, sizeof(mz_zip_archive_file_stat)); + pzip = &(zip->archive); + if (pzip->m_zip_mode != MZ_ZIP_MODE_READING || zip->entry.index < 0) { + // the entry is not found or we do not have read access + return -1; + } + + idx = (mz_uint)zip->entry.index; + if (mz_zip_reader_is_file_a_directory(pzip, idx)) { + // the entry is a directory + return -1; + } + + if (!mz_zip_reader_extract_to_file(pzip, idx, filename, 0)) { + return -1; + } + +#if defined(_MSC_VER) +#else + if (!mz_zip_reader_file_stat(pzip, idx, &info)) { + // Cannot get information about zip archive; + return -1; + } + + xattr = (info.m_external_attr >> 16) & 0xFFFF; + if (xattr > 0) { + if (chmod(filename, (mode_t)xattr) < 0) { + return -1; } + } +#endif - if (zip->mode != 'r' || zip->entry.index < 0) { - // the entry is not found or we do not have read access - return -1; - } - - pzip = &(zip->archive); - idx = (mz_uint)zip->entry.index; - if (mz_zip_reader_is_file_a_directory(pzip, idx)) { - // the entry is a directory - return -1; - } - - return (mz_zip_reader_extract_to_file(pzip, idx, filename, 0)) ? 0 : -1; + return 0; } int zip_entry_extract(struct zip_t *zip, size_t (*on_extract)(void *arg, unsigned long long offset, const void *buf, size_t bufsize), void *arg) { - mz_zip_archive *pzip = NULL; - mz_uint idx; + mz_zip_archive *pzip = NULL; + mz_uint idx; - if (!zip) { - // zip_t handler is not initialized - return -1; - } + if (!zip) { + // zip_t handler is not initialized + return -1; + } - if (zip->mode != 'r' || zip->entry.index < 0) { - // the entry is not found or we do not have read access - return -1; - } + pzip = &(zip->archive); + if (pzip->m_zip_mode != MZ_ZIP_MODE_READING || zip->entry.index < 0) { + // the entry is not found or we do not have read access + return -1; + } - pzip = &(zip->archive); - idx = (mz_uint)zip->entry.index; + idx = (mz_uint)zip->entry.index; + return (mz_zip_reader_extract_to_callback(pzip, idx, on_extract, arg, 0)) + ? 0 + : -1; +} - return (mz_zip_reader_extract_to_callback(pzip, idx, on_extract, arg, 0)) - ? 0 - : -1; +int zip_total_entries(struct zip_t *zip) { + if (!zip) { + // zip_t handler is not initialized + return -1; + } + + return (int)zip->archive.m_total_files; } int zip_create(const char *zipname, const char *filenames[], size_t len) { - int status = 0; - size_t i; - mz_zip_archive zip_archive; + int status = 0; + size_t i; + mz_zip_archive zip_archive; + struct MZ_FILE_STAT_STRUCT file_stat; + mz_uint32 ext_attributes = 0; - if (!zipname || strlen(zipname) < 1) { - // zip_t archive name is empty or NULL - return -1; + if (!zipname || strlen(zipname) < 1) { + // zip_t archive name is empty or NULL + return -1; + } + + // Create a new archive. + if (!memset(&(zip_archive), 0, sizeof(zip_archive))) { + // Cannot memset zip archive + return -1; + } + + if (!mz_zip_writer_init_file(&zip_archive, zipname, 0)) { + // Cannot initialize zip_archive writer + return -1; + } + + memset((void *)&file_stat, 0, sizeof(struct MZ_FILE_STAT_STRUCT)); + + for (i = 0; i < len; ++i) { + const char *name = filenames[i]; + if (!name) { + status = -1; + break; } - // Create a new archive. - if (!memset(&(zip_archive), 0, sizeof(zip_archive))) { - // Cannot memset zip archive - return -1; + if (MZ_FILE_STAT(name, &file_stat) != 0) { + // problem getting information - check errno + return -1; } - if (!mz_zip_writer_init_file(&zip_archive, zipname, 0)) { - // Cannot initialize zip_archive writer - return -1; + if ((file_stat.st_mode & 0200) == 0) { + // MS-DOS read-only attribute + ext_attributes |= 0x01; } + ext_attributes |= (mz_uint32)((file_stat.st_mode & 0xFFFF) << 16); - for (i = 0; i < len; ++i) { - const char *name = filenames[i]; - if (!name) { - status = -1; - break; - } - - if (!mz_zip_writer_add_file(&zip_archive, basename(name), name, "", 0, - ZIP_DEFAULT_COMPRESSION_LEVEL)) { - // Cannot add file to zip_archive - status = -1; - break; - } + if (!mz_zip_writer_add_file(&zip_archive, base_name(name), name, "", 0, + ZIP_DEFAULT_COMPRESSION_LEVEL, + ext_attributes)) { + // Cannot add file to zip_archive + status = -1; + break; } + } - mz_zip_writer_finalize_archive(&zip_archive); - mz_zip_writer_end(&zip_archive); - return status; + mz_zip_writer_finalize_archive(&zip_archive); + mz_zip_writer_end(&zip_archive); + return status; } int zip_extract(const char *zipname, const char *dir, int (*on_extract)(const char *filename, void *arg), void *arg) { - int status = -1; - mz_uint i, n; - char path[MAX_PATH + 1] = {0}; - mz_zip_archive zip_archive; - mz_zip_archive_file_stat info; - size_t dirlen = 0; + int status = -1; + mz_uint i, n; + char path[MAX_PATH + 1]; + char symlink_to[MAX_PATH + 1]; + mz_zip_archive zip_archive; + mz_zip_archive_file_stat info; + size_t dirlen = 0; + mz_uint32 xattr = 0; - if (!memset(&(zip_archive), 0, sizeof(zip_archive))) { - // Cannot memset zip archive - return -1; - } + memset(path, 0, sizeof(path)); + memset(symlink_to, 0, sizeof(symlink_to)); + if (!memset(&(zip_archive), 0, sizeof(zip_archive))) { + // Cannot memset zip archive + return -1; + } - if (!zipname || !dir) { - // Cannot parse zip archive name - return -1; - } + if (!zipname || !dir) { + // Cannot parse zip archive name + return -1; + } - dirlen = strlen(dir); - if (dirlen + 1 > MAX_PATH) { - return -1; - } + dirlen = strlen(dir); + if (dirlen + 1 > MAX_PATH) { + return -1; + } - // Now try to open the archive. - if (!mz_zip_reader_init_file(&zip_archive, zipname, 0)) { - // Cannot initialize zip_archive reader - return -1; - } + // Now try to open the archive. + if (!mz_zip_reader_init_file(&zip_archive, zipname, 0)) { + // Cannot initialize zip_archive reader + return -1; + } - strcpy(path, dir); - if (!ISSLASH(path[dirlen - 1])) { -#if defined _WIN32 || defined __WIN32__ - path[dirlen] = '\\'; + memset((void *)&info, 0, sizeof(mz_zip_archive_file_stat)); + +#if defined(_MSC_VER) + strcpy_s(path, MAX_PATH, dir); #else - path[dirlen] = '/'; + strcpy(path, dir); #endif - ++dirlen; + + if (!ISSLASH(path[dirlen - 1])) { +#if defined(_WIN32) || defined(__WIN32__) + path[dirlen] = '\\'; +#else + path[dirlen] = '/'; +#endif + ++dirlen; + } + + // Get and print information about each file in the archive. + n = mz_zip_reader_get_num_files(&zip_archive); + for (i = 0; i < n; ++i) { + if (!mz_zip_reader_file_stat(&zip_archive, i, &info)) { + // Cannot get information about zip archive; + goto out; + } +#if defined(_MSC_VER) + strncpy_s(&path[dirlen], MAX_PATH - dirlen, info.m_filename, + MAX_PATH - dirlen); +#else + strncpy(&path[dirlen], info.m_filename, MAX_PATH - dirlen); +#endif + if (mkpath(path) < 0) { + // Cannot make a path + goto out; } - // Get and print information about each file in the archive. - n = mz_zip_reader_get_num_files(&zip_archive); - for (i = 0; i < n; ++i) { - if (!mz_zip_reader_file_stat(&zip_archive, i, &info)) { - // Cannot get information about zip archive; - goto out; - } - strncpy(&path[dirlen], info.m_filename, MAX_PATH - dirlen); - if (mkpath(path) < 0) { - // Cannot make a path - goto out; + if ((((info.m_version_made_by >> 8) == 3) || ((info.m_version_made_by >> 8) == 19)) // if zip is produced on Unix or macOS (3 and 19 from section 4.4.2.2 of zip standard) + && info.m_external_attr & (0x20 << 24)) { // and has sym link attribute (0x80 is file, 0x40 is directory) +#if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) || \ + defined(__MINGW32__) +#else + if (info.m_uncomp_size > MAX_PATH || !mz_zip_reader_extract_to_mem_no_alloc(&zip_archive, i, symlink_to, MAX_PATH, 0, NULL, 0)) { + goto out; + } + symlink_to[info.m_uncomp_size] = '\0'; + if (symlink(symlink_to, path) != 0) { + goto out; + } +#endif + } else { + if (!mz_zip_reader_is_file_a_directory(&zip_archive, i)) { + if (!mz_zip_reader_extract_to_file(&zip_archive, i, path, 0)) { + // Cannot extract zip archive to file + goto out; } + } - if (!mz_zip_reader_is_file_a_directory(&zip_archive, i)) { - if (!mz_zip_reader_extract_to_file(&zip_archive, i, path, 0)) { - // Cannot extract zip archive to file - goto out; - } - } - - if (on_extract) { - if (on_extract(path, arg) < 0) { - goto out; - } +#if defined(_MSC_VER) +#else + xattr = (info.m_external_attr >> 16) & 0xFFFF; + if (xattr > 0) { + if (chmod(path, (mode_t)xattr) < 0) { + goto out; } + } +#endif } - status = 0; + + if (on_extract) { + if (on_extract(path, arg) < 0) { + goto out; + } + } + } + status = 0; out: - // Close the archive, freeing any resources it was using - if (!mz_zip_reader_end(&zip_archive)) { - // Cannot end zip reader - status = -1; - } + // Close the archive, freeing any resources it was using + if (!mz_zip_reader_end(&zip_archive)) { + // Cannot end zip reader + status = -1; + } - return status; + return status; } diff --git a/contrib/zip/src/zip.h b/contrib/zip/src/zip.h index 1611b5417..5f39df50a 100644 --- a/contrib/zip/src/zip.h +++ b/contrib/zip/src/zip.h @@ -13,11 +13,24 @@ #define ZIP_H #include +#include #ifdef __cplusplus extern "C" { #endif +#if !defined(_SSIZE_T_DEFINED) && !defined(_SSIZE_T_DEFINED_) && \ + !defined(_SSIZE_T) && !defined(_SSIZE_T_) && !defined(__ssize_t_defined) +#define _SSIZE_T +// 64-bit Windows is the only mainstream platform +// where sizeof(long) != sizeof(void*) +#ifdef _WIN64 +typedef long long ssize_t; /* byte count or error */ +#else +typedef long ssize_t; /* byte count or error */ +#endif +#endif + #ifndef MAX_PATH #define MAX_PATH 32767 /* # chars in a path name including NULL */ #endif @@ -47,7 +60,7 @@ struct zip_t; extern struct zip_t *zip_open(const char *zipname, int level, char mode); /* - Closes zip archive, releases resources - always finalize. + Closes the zip archive, releases resources - always finalize. Args: zip: zip archive handler. @@ -55,7 +68,10 @@ extern struct zip_t *zip_open(const char *zipname, int level, char mode); extern void zip_close(struct zip_t *zip); /* - Opens a new entry for writing in a zip archive. + Opens an entry by name in the zip archive. + For zip archive opened in 'w' or 'a' mode the function will append + a new entry. In readonly mode the function tries to locate the entry + in global dictionary. Args: zip: zip archive handler. @@ -66,6 +82,19 @@ extern void zip_close(struct zip_t *zip); */ extern int zip_entry_open(struct zip_t *zip, const char *entryname); +/* + Opens a new entry by index in the zip archive. + This function is only valid if zip archive was opened in 'r' (readonly) mode. + + Args: + zip: zip archive handler. + index: index in local dictionary. + + Returns: + The return code - 0 on success, negative number (< 0) on error. +*/ +extern int zip_entry_openbyindex(struct zip_t *zip, int index); + /* Closes a zip entry, flushes buffer and releases resources. @@ -77,6 +106,67 @@ extern int zip_entry_open(struct zip_t *zip, const char *entryname); */ extern int zip_entry_close(struct zip_t *zip); +/* + Returns a local name of the current zip entry. + The main difference between user's entry name and local entry name + is optional relative path. + Following .ZIP File Format Specification - the path stored MUST not contain + a drive or device letter, or a leading slash. + All slashes MUST be forward slashes '/' as opposed to backwards slashes '\' + for compatibility with Amiga and UNIX file systems etc. + + Args: + zip: zip archive handler. + + Returns: + The pointer to the current zip entry name, or NULL on error. +*/ +extern const char *zip_entry_name(struct zip_t *zip); + +/* + Returns an index of the current zip entry. + + Args: + zip: zip archive handler. + + Returns: + The index on success, negative number (< 0) on error. +*/ +extern int zip_entry_index(struct zip_t *zip); + +/* + Determines if the current zip entry is a directory entry. + + Args: + zip: zip archive handler. + + Returns: + The return code - 1 (true), 0 (false), negative number (< 0) on error. +*/ +extern int zip_entry_isdir(struct zip_t *zip); + +/* + Returns an uncompressed size of the current zip entry. + + Args: + zip: zip archive handler. + + Returns: + The uncompressed size in bytes. +*/ +extern unsigned long long zip_entry_size(struct zip_t *zip); + +/* + Returns CRC-32 checksum of the current zip entry. + + Args: + zip: zip archive handler. + + Returns: + The CRC-32 checksum. +*/ +extern unsigned int zip_entry_crc32(struct zip_t *zip); + /* Compresses an input buffer for the current zip entry. @@ -116,9 +206,31 @@ extern int zip_entry_fwrite(struct zip_t *zip, const char *filename); - for large entries, please take a look at zip_entry_extract function. Returns: - The return code - 0 on success, negative number (< 0) on error. + The return code - the number of bytes actually read on success. + Otherwise a -1 on error. */ -extern int zip_entry_read(struct zip_t *zip, void **buf, size_t *bufsize); +extern ssize_t zip_entry_read(struct zip_t *zip, void **buf, size_t *bufsize); + +/* + Extracts the current zip entry into a memory buffer using no memory + allocation. + + Args: + zip: zip archive handler. + buf: preallocated output buffer. + bufsize: output buffer size (in bytes). + + Note: + - ensure supplied output buffer is large enough. + - zip_entry_size function (returns uncompressed size for the current entry) + can be handy to estimate how big buffer is needed. + - for large entries, please take a look at zip_entry_extract function. + + Returns: + The return code - the number of bytes actually read on success. + Otherwise a -1 on error (e.g. bufsize is not large enough). +*/ +extern ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize); /* Extracts the current zip entry into output file. @@ -133,9 +245,9 @@ extern int zip_entry_read(struct zip_t *zip, void **buf, size_t *bufsize); extern int zip_entry_fread(struct zip_t *zip, const char *filename); /* - Extract the current zip entry using a callback function (on_extract). + Extracts the current zip entry using a callback function (on_extract). - Args: + Args: zip: zip archive handler. on_extract: callback function. arg: opaque pointer (optional argument, @@ -144,12 +256,23 @@ extern int zip_entry_fread(struct zip_t *zip, const char *filename); Returns: The return code - 0 on success, negative number (< 0) on error. */ -extern int zip_entry_extract(struct zip_t *zip, - size_t (*on_extract)(void *arg, - unsigned long long offset, - const void *data, - size_t size), - void *arg); +extern int +zip_entry_extract(struct zip_t *zip, + size_t (*on_extract)(void *arg, unsigned long long offset, + const void *data, size_t size), + void *arg); + +/* + Returns the number of all entries (files and directories) in the zip archive. + + Args: + zip: zip archive handler. + + Returns: + The return code - the number of entries on success, + negative number (< 0) on error. +*/ +extern int zip_total_entries(struct zip_t *zip); /* Creates a new archive and puts files into a single zip archive. diff --git a/contrib/zip/test/CMakeLists.txt b/contrib/zip/test/CMakeLists.txt index 7734dcbe7..9b2a8db10 100644 --- a/contrib/zip/test/CMakeLists.txt +++ b/contrib/zip/test/CMakeLists.txt @@ -1,7 +1,19 @@ cmake_minimum_required(VERSION 2.8) +if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang") + if(ENABLE_COVERAGE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g ") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftest-coverage") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") + endif() +endif () + # test include_directories(../src) add_executable(test.exe test.c ../src/zip.c) +add_executable(test_miniz.exe test_miniz.c) add_test(NAME test COMMAND test.exe) +add_test(NAME test_miniz COMMAND test_miniz.exe) diff --git a/contrib/zip/test/test.c b/contrib/zip/test/test.c index 0b9c9f7b6..c455bf687 100644 --- a/contrib/zip/test/test.c +++ b/contrib/zip/test/test.c @@ -4,102 +4,458 @@ #include #include #include +#include -#define ZIPNAME "test.zip" +#if defined(_MSC_VER) || defined(__MINGW64__) || defined(__MINGW32__) +#define MZ_FILE_STAT_STRUCT _stat +#define MZ_FILE_STAT _stat +#else +#define MZ_FILE_STAT_STRUCT stat +#define MZ_FILE_STAT stat +#endif + +#define ZIPNAME "test.zip\0" #define TESTDATA1 "Some test data 1...\0" +#define CRC32DATA1 2220805626 #define TESTDATA2 "Some test data 2...\0" +#define CRC32DATA2 2532008468 + +#define RFILE "4.txt\0" +#define RMODE 0100444 + +#define WFILE "6.txt\0" +#define WMODE 0100666 + +#define XFILE "7.txt\0" +#define XMODE 0100777 + +#define UNUSED(x) (void)x + +static int total_entries = 0; static void test_write(void) { - struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w'); - assert(zip != NULL); + struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w'); + assert(zip != NULL); - assert(0 == zip_entry_open(zip, "test/test-1.txt")); - assert(0 == zip_entry_write(zip, TESTDATA1, strlen(TESTDATA1))); - assert(0 == zip_entry_close(zip)); + assert(0 == zip_entry_open(zip, "test/test-1.txt")); + assert(0 == zip_entry_write(zip, TESTDATA1, strlen(TESTDATA1))); + assert(0 == strcmp(zip_entry_name(zip), "test/test-1.txt")); + assert(total_entries == zip_entry_index(zip)); + assert(strlen(TESTDATA1) == zip_entry_size(zip)); + assert(CRC32DATA1 == zip_entry_crc32(zip)); + ++total_entries; + assert(0 == zip_entry_close(zip)); - zip_close(zip); + zip_close(zip); } static void test_append(void) { - struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'a'); - assert(zip != NULL); + struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'a'); + assert(zip != NULL); - assert(0 == zip_entry_open(zip, "test\\test-2.txt")); - assert(0 == zip_entry_write(zip, TESTDATA2, strlen(TESTDATA2))); - assert(0 == zip_entry_close(zip)); + assert(0 == zip_entry_open(zip, "test\\test-2.txt")); + assert(0 == strcmp(zip_entry_name(zip), "test/test-2.txt")); + assert(total_entries == zip_entry_index(zip)); + assert(0 == zip_entry_write(zip, TESTDATA2, strlen(TESTDATA2))); + assert(strlen(TESTDATA2) == zip_entry_size(zip)); + assert(CRC32DATA2 == zip_entry_crc32(zip)); - zip_close(zip); + ++total_entries; + assert(0 == zip_entry_close(zip)); + + assert(0 == zip_entry_open(zip, "test\\empty/")); + assert(0 == strcmp(zip_entry_name(zip), "test/empty/")); + assert(0 == zip_entry_size(zip)); + assert(0 == zip_entry_crc32(zip)); + + assert(total_entries == zip_entry_index(zip)); + ++total_entries; + assert(0 == zip_entry_close(zip)); + + assert(0 == zip_entry_open(zip, "empty/")); + assert(0 == strcmp(zip_entry_name(zip), "empty/")); + assert(0 == zip_entry_size(zip)); + assert(0 == zip_entry_crc32(zip)); + + assert(total_entries == zip_entry_index(zip)); + ++total_entries; + assert(0 == zip_entry_close(zip)); + + zip_close(zip); } static void test_read(void) { - char *buf = NULL; - size_t bufsize; - struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); - assert(zip != NULL); + char *buf = NULL; + ssize_t bufsize; + size_t buftmp; + struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); + assert(zip != NULL); - assert(0 == zip_entry_open(zip, "test\\test-1.txt")); - assert(0 == zip_entry_read(zip, (void **)&buf, &bufsize)); - assert(bufsize == strlen(TESTDATA1)); - assert(0 == strncmp(buf, TESTDATA1, bufsize)); - assert(0 == zip_entry_close(zip)); - free(buf); - buf = NULL; - bufsize = 0; + assert(0 == zip_entry_open(zip, "test\\test-1.txt")); + assert(strlen(TESTDATA1) == zip_entry_size(zip)); + assert(CRC32DATA1 == zip_entry_crc32(zip)); - assert(0 == zip_entry_open(zip, "test/test-2.txt")); - assert(0 == zip_entry_read(zip, (void **)&buf, &bufsize)); - assert(bufsize == strlen(TESTDATA2)); - assert(0 == strncmp(buf, TESTDATA2, bufsize)); - assert(0 == zip_entry_close(zip)); - free(buf); - buf = NULL; - bufsize = 0; + bufsize = zip_entry_read(zip, (void **)&buf, &buftmp); + assert(bufsize == strlen(TESTDATA1)); + assert((size_t)bufsize == buftmp); + assert(0 == strncmp(buf, TESTDATA1, bufsize)); + assert(0 == zip_entry_close(zip)); + free(buf); + buf = NULL; + bufsize = 0; - zip_close(zip); + assert(0 == zip_entry_open(zip, "test/test-2.txt")); + assert(strlen(TESTDATA2) == zip_entry_size(zip)); + assert(CRC32DATA2 == zip_entry_crc32(zip)); + + bufsize = zip_entry_read(zip, (void **)&buf, NULL); + assert((size_t)bufsize == strlen(TESTDATA2)); + assert(0 == strncmp(buf, TESTDATA2, (size_t)bufsize)); + assert(0 == zip_entry_close(zip)); + free(buf); + buf = NULL; + bufsize = 0; + + assert(0 == zip_entry_open(zip, "test\\empty/")); + assert(0 == strcmp(zip_entry_name(zip), "test/empty/")); + assert(0 == zip_entry_size(zip)); + assert(0 == zip_entry_crc32(zip)); + assert(0 == zip_entry_close(zip)); + + buftmp = strlen(TESTDATA2); + buf = calloc(buftmp, sizeof(char)); + assert(0 == zip_entry_open(zip, "test/test-2.txt")); + + bufsize = zip_entry_noallocread(zip, (void *)buf, buftmp); + assert(buftmp == (size_t)bufsize); + assert(0 == strncmp(buf, TESTDATA2, buftmp)); + assert(0 == zip_entry_close(zip)); + free(buf); + buf = NULL; + bufsize = 0; + + buftmp = strlen(TESTDATA1); + buf = calloc(buftmp, sizeof(char)); + assert(0 == zip_entry_open(zip, "test/test-1.txt")); + + bufsize = zip_entry_noallocread(zip, (void *)buf, buftmp); + assert(buftmp == (size_t)bufsize); + assert(0 == strncmp(buf, TESTDATA1, buftmp)); + assert(0 == zip_entry_close(zip)); + free(buf); + buf = NULL; + bufsize = 0; + + zip_close(zip); } struct buffer_t { - char *data; - size_t size; + char *data; + size_t size; }; static size_t on_extract(void *arg, unsigned long long offset, const void *data, size_t size) { - struct buffer_t *buf = (struct buffer_t *)arg; - buf->data = realloc(buf->data, buf->size + size + 1); - assert(NULL != buf->data); + UNUSED(offset); - memcpy(&(buf->data[buf->size]), data, size); - buf->size += size; - buf->data[buf->size] = 0; + struct buffer_t *buf = (struct buffer_t *)arg; + buf->data = realloc(buf->data, buf->size + size + 1); + assert(NULL != buf->data); - return size; + memcpy(&(buf->data[buf->size]), data, size); + buf->size += size; + buf->data[buf->size] = 0; + + return size; } static void test_extract(void) { - struct buffer_t buf = {0}; + struct buffer_t buf; - struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); - assert(zip != NULL); + struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); + assert(zip != NULL); + memset((void *)&buf, 0, sizeof(struct buffer_t)); - assert(0 == zip_entry_open(zip, "test/test-1.txt")); - assert(0 == zip_entry_extract(zip, on_extract, &buf)); + assert(0 == zip_entry_open(zip, "test/test-1.txt")); + assert(0 == zip_entry_extract(zip, on_extract, &buf)); - assert(buf.size == strlen(TESTDATA1)); - assert(0 == strncmp(buf.data, TESTDATA1, buf.size)); + assert(buf.size == strlen(TESTDATA1)); + assert(0 == strncmp(buf.data, TESTDATA1, buf.size)); + assert(0 == zip_entry_close(zip)); + free(buf.data); + buf.data = NULL; + buf.size = 0; + + zip_close(zip); +} + +static void test_total_entries(void) { + struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); + assert(zip != NULL); + + int n = zip_total_entries(zip); + zip_close(zip); + + assert(n == total_entries); +} + +static void test_entry_name(void) { + struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); + assert(zip != NULL); + + assert(zip_entry_name(zip) == NULL); + + assert(0 == zip_entry_open(zip, "test\\test-1.txt")); + assert(NULL != zip_entry_name(zip)); + assert(0 == strcmp(zip_entry_name(zip), "test/test-1.txt")); + assert(strlen(TESTDATA1) == zip_entry_size(zip)); + assert(CRC32DATA1 == zip_entry_crc32(zip)); + assert(0 == zip_entry_index(zip)); + + assert(0 == zip_entry_close(zip)); + + assert(0 == zip_entry_open(zip, "test/test-2.txt")); + assert(NULL != zip_entry_name(zip)); + assert(0 == strcmp(zip_entry_name(zip), "test/test-2.txt")); + assert(strlen(TESTDATA2) == zip_entry_size(zip)); + assert(CRC32DATA2 == zip_entry_crc32(zip)); + assert(1 == zip_entry_index(zip)); + + assert(0 == zip_entry_close(zip)); + + zip_close(zip); +} + +static void test_entry_index(void) { + struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); + assert(zip != NULL); + + assert(0 == zip_entry_open(zip, "test\\test-1.txt")); + assert(0 == zip_entry_index(zip)); + assert(0 == strcmp(zip_entry_name(zip), "test/test-1.txt")); + assert(strlen(TESTDATA1) == zip_entry_size(zip)); + assert(CRC32DATA1 == zip_entry_crc32(zip)); + assert(0 == zip_entry_close(zip)); + + assert(0 == zip_entry_open(zip, "test/test-2.txt")); + assert(1 == zip_entry_index(zip)); + assert(0 == strcmp(zip_entry_name(zip), "test/test-2.txt")); + assert(strlen(TESTDATA2) == zip_entry_size(zip)); + assert(CRC32DATA2 == zip_entry_crc32(zip)); + assert(0 == zip_entry_close(zip)); + + zip_close(zip); +} + +static void test_entry_openbyindex(void) { + struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); + assert(zip != NULL); + + assert(0 == zip_entry_openbyindex(zip, 1)); + assert(1 == zip_entry_index(zip)); + assert(strlen(TESTDATA2) == zip_entry_size(zip)); + assert(CRC32DATA2 == zip_entry_crc32(zip)); + assert(0 == strcmp(zip_entry_name(zip), "test/test-2.txt")); + assert(0 == zip_entry_close(zip)); + + assert(0 == zip_entry_openbyindex(zip, 0)); + assert(0 == zip_entry_index(zip)); + assert(strlen(TESTDATA1) == zip_entry_size(zip)); + assert(CRC32DATA1 == zip_entry_crc32(zip)); + assert(0 == strcmp(zip_entry_name(zip), "test/test-1.txt")); + assert(0 == zip_entry_close(zip)); + + zip_close(zip); +} + +static void test_list_entries(void) { + struct zip_t *zip = zip_open(ZIPNAME, 0, 'r'); + assert(zip != NULL); + + int i = 0, n = zip_total_entries(zip); + for (; i < n; ++i) { + assert(0 == zip_entry_openbyindex(zip, i)); + fprintf(stdout, "[%d]: %s", i, zip_entry_name(zip)); + if (zip_entry_isdir(zip)) { + fprintf(stdout, " (DIR)"); + } + fprintf(stdout, "\n"); assert(0 == zip_entry_close(zip)); - free(buf.data); - buf.data = NULL; - buf.size = 0; + } - zip_close(zip); + zip_close(zip); +} + +static void test_fwrite(void) { + const char *filename = WFILE; + FILE *stream = NULL; + struct zip_t *zip = NULL; +#if defined(_MSC_VER) + if (0 != fopen_s(&stream, filename, "w+")) +#else + if (!(stream = fopen(filename, "w+"))) +#endif + { + // Cannot open filename + fprintf(stdout, "Cannot open filename\n"); + assert(0 == -1); + } + fwrite(TESTDATA1, sizeof(char), strlen(TESTDATA1), stream); + assert(0 == fclose(stream)); + + zip = zip_open(ZIPNAME, 9, 'w'); + assert(zip != NULL); + assert(0 == zip_entry_open(zip, WFILE)); + assert(0 == zip_entry_fwrite(zip, WFILE)); + assert(0 == zip_entry_close(zip)); + + zip_close(zip); + remove(WFILE); + remove(ZIPNAME); +} + +static void test_exe_permissions(void) { +#if defined(_WIN32) || defined(__WIN32__) +#else + struct MZ_FILE_STAT_STRUCT file_stats; + const char *filenames[] = {XFILE}; + FILE *f = fopen(XFILE, "w"); + fclose(f); + chmod(XFILE, XMODE); + + remove(ZIPNAME); + + assert(0 == zip_create(ZIPNAME, filenames, 1)); + + remove(XFILE); + + assert(0 == zip_extract(ZIPNAME, ".", NULL, NULL)); + + assert(0 == MZ_FILE_STAT(XFILE, &file_stats)); + assert(XMODE == file_stats.st_mode); + + remove(XFILE); + remove(ZIPNAME); +#endif +} + +static void test_read_permissions(void) { +#if defined(_MSC_VER) +#else + + struct MZ_FILE_STAT_STRUCT file_stats; + const char *filenames[] = {RFILE}; + FILE *f = fopen(RFILE, "w"); + fclose(f); + chmod(RFILE, RMODE); + + remove(ZIPNAME); + + assert(0 == zip_create(ZIPNAME, filenames, 1)); + + // chmod from 444 to 666 to be able delete the file on windows + chmod(RFILE, WMODE); + remove(RFILE); + + assert(0 == zip_extract(ZIPNAME, ".", NULL, NULL)); + + assert(0 == MZ_FILE_STAT(RFILE, &file_stats)); + assert(RMODE == file_stats.st_mode); + + chmod(RFILE, WMODE); + remove(RFILE); + remove(ZIPNAME); +#endif +} + +static void test_write_permissions(void) { +#if defined(_MSC_VER) +#else + + struct MZ_FILE_STAT_STRUCT file_stats; + const char *filenames[] = {WFILE}; + FILE *f = fopen(WFILE, "w"); + fclose(f); + chmod(WFILE, WMODE); + + remove(ZIPNAME); + + assert(0 == zip_create(ZIPNAME, filenames, 1)); + + remove(WFILE); + + assert(0 == zip_extract(ZIPNAME, ".", NULL, NULL)); + + assert(0 == MZ_FILE_STAT(WFILE, &file_stats)); + assert(WMODE == file_stats.st_mode); + + remove(WFILE); + remove(ZIPNAME); +#endif +} + +static void test_mtime(void) { + struct MZ_FILE_STAT_STRUCT file_stat1, file_stat2; + + const char *filename = WFILE; + FILE *stream = NULL; + struct zip_t *zip = NULL; +#if defined(_MSC_VER) + if (0 != fopen_s(&stream, filename, "w+")) +#else + if (!(stream = fopen(filename, "w+"))) +#endif + { + // Cannot open filename + fprintf(stdout, "Cannot open filename\n"); + assert(0 == -1); + } + fwrite(TESTDATA1, sizeof(char), strlen(TESTDATA1), stream); + assert(0 == fclose(stream)); + + memset(&file_stat1, 0, sizeof(file_stat1)); + memset(&file_stat2, 0, sizeof(file_stat2)); + zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w'); + assert(zip != NULL); + assert(0 == zip_entry_open(zip, filename)); + assert(0 == zip_entry_fwrite(zip, filename)); + assert(0 == zip_entry_close(zip)); + zip_close(zip); + + assert(0 == MZ_FILE_STAT(filename, &file_stat1)); + + remove(filename); + assert(0 == zip_extract(ZIPNAME, ".", NULL, NULL)); + assert(0 == MZ_FILE_STAT(filename, &file_stat2)); + fprintf(stdout, "file_stat1.st_mtime: %lu\n", file_stat1.st_mtime); + fprintf(stdout, "file_stat2.st_mtime: %lu\n", file_stat2.st_mtime); + assert(labs(file_stat1.st_mtime - file_stat2.st_mtime) <= 1); + + remove(filename); + remove(ZIPNAME); } int main(int argc, char *argv[]) { - test_write(); - test_append(); - test_read(); - test_extract(); + UNUSED(argc); + UNUSED(argv); - return remove(ZIPNAME); + remove(ZIPNAME); + + test_write(); + test_append(); + test_read(); + test_extract(); + test_total_entries(); + test_entry_name(); + test_entry_index(); + test_entry_openbyindex(); + test_list_entries(); + test_fwrite(); + test_read_permissions(); + test_write_permissions(); + test_exe_permissions(); + test_mtime(); + + remove(ZIPNAME); + return 0; } diff --git a/contrib/zip/test/test_miniz.c b/contrib/zip/test/test_miniz.c new file mode 100644 index 000000000..ebc0564dc --- /dev/null +++ b/contrib/zip/test/test_miniz.c @@ -0,0 +1,104 @@ +// Demonstrates miniz.c's compress() and uncompress() functions +// (same as zlib's). Public domain, May 15 2011, Rich Geldreich, +// richgel99@gmail.com. See "unlicense" statement at the end of tinfl.c. + +#include +#include + +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int uint; + +// The string to compress. +static const char *s_pStr = + "Good morning Dr. Chandra. This is Hal. I am ready for my first lesson." + "Good morning Dr. Chandra. This is Hal. I am ready for my first lesson." + "Good morning Dr. Chandra. This is Hal. I am ready for my first lesson." + "Good morning Dr. Chandra. This is Hal. I am ready for my first lesson." + "Good morning Dr. Chandra. This is Hal. I am ready for my first lesson." + "Good morning Dr. Chandra. This is Hal. I am ready for my first lesson." + "Good morning Dr. Chandra. This is Hal. I am ready for my first lesson."; + +int main(int argc, char *argv[]) { + uint step = 0; + int cmp_status; + uLong src_len = (uLong)strlen(s_pStr); + uLong cmp_len = compressBound(src_len); + uLong uncomp_len = src_len; + uint8 *pCmp, *pUncomp; + uint total_succeeded = 0; + (void)argc, (void)argv; + + printf("miniz.c version: %s\n", MZ_VERSION); + + do { + // Allocate buffers to hold compressed and uncompressed data. + pCmp = (mz_uint8 *)malloc((size_t)cmp_len); + pUncomp = (mz_uint8 *)malloc((size_t)src_len); + if ((!pCmp) || (!pUncomp)) { + printf("Out of memory!\n"); + return EXIT_FAILURE; + } + + // Compress the string. + cmp_status = + compress(pCmp, &cmp_len, (const unsigned char *)s_pStr, src_len); + if (cmp_status != Z_OK) { + printf("compress() failed!\n"); + free(pCmp); + free(pUncomp); + return EXIT_FAILURE; + } + + printf("Compressed from %u to %u bytes\n", (mz_uint32)src_len, + (mz_uint32)cmp_len); + + if (step) { + // Purposely corrupt the compressed data if fuzzy testing (this is a + // very crude fuzzy test). + uint n = 1 + (rand() % 3); + while (n--) { + uint i = rand() % cmp_len; + pCmp[i] ^= (rand() & 0xFF); + } + } + + // Decompress. + cmp_status = uncompress(pUncomp, &uncomp_len, pCmp, cmp_len); + total_succeeded += (cmp_status == Z_OK); + + if (step) { + printf("Simple fuzzy test: step %u total_succeeded: %u\n", step, + total_succeeded); + } else { + if (cmp_status != Z_OK) { + printf("uncompress failed!\n"); + free(pCmp); + free(pUncomp); + return EXIT_FAILURE; + } + + printf("Decompressed from %u to %u bytes\n", (mz_uint32)cmp_len, + (mz_uint32)uncomp_len); + + // Ensure uncompress() returned the expected data. + if ((uncomp_len != src_len) || + (memcmp(pUncomp, s_pStr, (size_t)src_len))) { + printf("Decompression failed!\n"); + free(pCmp); + free(pUncomp); + return EXIT_FAILURE; + } + } + + free(pCmp); + free(pUncomp); + + step++; + + // Keep on fuzzy testing if there's a non-empty command line. + } while (argc >= 2); + + printf("Success.\n"); + return EXIT_SUCCESS; +} From ca08c4a20948c5fa96be43015edbf726c81b6d12 Mon Sep 17 00:00:00 2001 From: Matias Date: Wed, 27 Mar 2019 11:20:16 +0100 Subject: [PATCH 059/187] FBX: Fix for loading taking a very long time on models with many duplicate names (issue_2390) --- code/FBXConverter.cpp | 9 +++++---- code/FBXConverter.h | 8 +++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index a61ae4006..692f081da 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -410,16 +410,17 @@ namespace Assimp { void FBXConverter::GetUniqueName(const std::string &name, std::string &uniqueName) { - int i = 0; uniqueName = name; - while (mNodeNames.find(uniqueName) != mNodeNames.end()) + int i = 0; + auto it = mNodeNameInstances.find(uniqueName); + if (it != mNodeNameInstances.end()) { - ++i; + i = it->second + 1; std::stringstream ext; ext << name << std::setfill('0') << std::setw(3) << i; uniqueName = ext.str(); } - mNodeNames.insert(uniqueName); + mNodeNameInstances[name] = i; } diff --git a/code/FBXConverter.h b/code/FBXConverter.h index 398baa445..1ed88406e 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -58,6 +58,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include struct aiScene; struct aiNode; @@ -74,8 +75,6 @@ namespace FBX { class Document; -using NodeNameCache = std::set; - /** * Convert a FBX #Document to #aiScene * @param out Empty scene to be populated @@ -444,7 +443,10 @@ private: typedef std::map NodeAnimBitMap; NodeAnimBitMap node_anim_chain_bits; - NodeNameCache mNodeNames; + // number of nodes with the same name + typedef std::unordered_map NodeNameMap; + NodeNameMap mNodeNameInstances; + double anim_fps; aiScene* const out; From ab92f50fa8e41b359c758f1ac27aef34131ba814 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 11:28:37 -0400 Subject: [PATCH 060/187] Add upstreamed change to miniz.h --- contrib/zip/src/miniz.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/contrib/zip/src/miniz.h b/contrib/zip/src/miniz.h index 0e269d18a..2c27a94d8 100644 --- a/contrib/zip/src/miniz.h +++ b/contrib/zip/src/miniz.h @@ -281,10 +281,15 @@ #define MINIZ_LITTLE_ENDIAN 1 #endif +/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES only if not set */ +#if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES) #if MINIZ_X86_OR_X64_CPU -// Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient -// integer loads and stores from unaligned addresses. +/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */ #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 +#define MINIZ_UNALIGNED_USE_MEMCPY +#else +#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0 +#endif #endif #if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || \ From 769dd42b73dee89cc2e9cccb23990b6da520ec91 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 11:29:40 -0400 Subject: [PATCH 061/187] Add compile definition to fix issue defines MINIZ_USE_UNALIGNED_LOADS_AND_STORES to be 0 to override default of 1 for x86 platforms. --- code/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 0f8f9f48a..38a97f2a5 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -865,6 +865,7 @@ SET( ziplib_SRCS ../contrib/zip/src/zip.c ../contrib/zip/src/zip.h ) +add_compile_definitions(MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0) SOURCE_GROUP( ziplib FILES ${ziplib_SRCS} ) From d718793163828be2138bc34ef3af05a52dc4f770 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 11:43:21 -0400 Subject: [PATCH 062/187] Fix change to CMakeLists.txt change CMakeLists.txt to use add_definitions instead of add_compile_definitions on old versions of cmake --- code/CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 38a97f2a5..a10c0bd28 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -865,7 +865,13 @@ SET( ziplib_SRCS ../contrib/zip/src/zip.c ../contrib/zip/src/zip.h ) -add_compile_definitions(MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0) + +# TODO if cmake required version has been updated to >3.12.0, collapse this to the second case only +if(${CMAKE_VERSION} VERSION_LESS "3.12.0") + add_definitions(-DMINIZ_USE_UNALIGNED_LOADS_AND_STORES=0) +else + add_compile_definitions(MINIZ_USE_UNALIGNED_LOADS_AND_STORES=0) +endif SOURCE_GROUP( ziplib FILES ${ziplib_SRCS} ) From 4efa3736baa522a80c2abe53d38a7b9405663c7b Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 12:03:39 -0400 Subject: [PATCH 063/187] Actually fix cmake this time --- code/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index a10c0bd28..a265a01dc 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -869,9 +869,9 @@ SET( ziplib_SRCS # TODO if cmake required version has been updated to >3.12.0, collapse this to the second case only if(${CMAKE_VERSION} VERSION_LESS "3.12.0") add_definitions(-DMINIZ_USE_UNALIGNED_LOADS_AND_STORES=0) -else +else() add_compile_definitions(MINIZ_USE_UNALIGNED_LOADS_AND_STORES=0) -endif +endif() SOURCE_GROUP( ziplib FILES ${ziplib_SRCS} ) From 7b4c704e6b39df7be68685dc1bb203c62bdbfb66 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 29 Mar 2019 08:27:38 +0100 Subject: [PATCH 064/187] Update README.md Fix format findings. --- contrib/zip/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contrib/zip/README.md b/contrib/zip/README.md index 14eb9a34c..d5fb8cd20 100644 --- a/contrib/zip/README.md +++ b/contrib/zip/README.md @@ -71,7 +71,7 @@ int arg = 2; zip_extract("foo.zip", "/tmp", on_extract_entry, &arg); ``` -* Extract a zip entry into memory. +* Extract a zip entry into memory. ```c void *buf = NULL; size_t bufsize; @@ -89,7 +89,7 @@ zip_close(zip); free(buf); ``` -* Extract a zip entry into memory (no internal allocation). +* Extract a zip entry into memory (no internal allocation). ```c unsigned char *buf; size_t bufsize; @@ -110,7 +110,7 @@ zip_close(zip); free(buf); ``` -* Extract a zip entry into memory using callback. +* Extract a zip entry into memory using callback. ```c struct buffer_t { char *data; @@ -144,7 +144,7 @@ free(buf.data); ``` -* Extract a zip entry into a file. +* Extract a zip entry into a file. ```c struct zip_t *zip = zip_open("foo.zip", 0, 'r'); { @@ -157,7 +157,7 @@ struct zip_t *zip = zip_open("foo.zip", 0, 'r'); zip_close(zip); ``` -* List of all zip entries +* List of all zip entries ```c struct zip_t *zip = zip_open("foo.zip", 0, 'r'); int i, n = zip_total_entries(zip); @@ -174,7 +174,7 @@ for (i = 0; i < n; ++i) { zip_close(zip); ``` -# Bindings +## Bindings Compile zip library as a dynamic library. ```shell $ mkdir build From 92ec834fecdd7e6e87911699f52965552ffe2c05 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 29 Mar 2019 08:42:19 +0100 Subject: [PATCH 065/187] Update zip.c Fix compiler warnings. --- contrib/zip/src/zip.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/contrib/zip/src/zip.c b/contrib/zip/src/zip.c index 812fa71e5..ff3a8fe1e 100644 --- a/contrib/zip/src/zip.c +++ b/contrib/zip/src/zip.c @@ -85,12 +85,14 @@ static int mkpath(const char *path) { int has_device = HAS_DEVICE(path); memset(npath, 0, MAX_PATH + 1); - if (has_device) { - // only on windows - npath[0] = path[0]; - npath[1] = path[1]; - len = 2; - } + +#ifdef _WIN32 + // only on windows fix the path + npath[0] = path[0]; + npath[1] = path[1]; + len = 2; +#endif // _WIN32 + for (p = path + len; *p && len < MAX_PATH; p++) { if (ISSLASH(*p) && ((!has_device && len > 0) || (has_device && len > 2))) { if (MKDIR(npath) == -1) @@ -668,7 +670,10 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) { int zip_entry_fread(struct zip_t *zip, const char *filename) { mz_zip_archive *pzip = NULL; mz_uint idx; +#if defined(_MSC_VER) +#else mz_uint32 xattr = 0; +#endif mz_zip_archive_file_stat info; if (!zip) { From d62724ab4f1d68702a867184b9df1430a7bd5ff8 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 29 Mar 2019 09:05:24 +0100 Subject: [PATCH 066/187] Update test.c fix compiler warnings. --- contrib/zip/test/test.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/contrib/zip/test/test.c b/contrib/zip/test/test.c index c455bf687..454430533 100644 --- a/contrib/zip/test/test.c +++ b/contrib/zip/test/test.c @@ -102,8 +102,7 @@ static void test_read(void) { assert(0 == zip_entry_close(zip)); free(buf); buf = NULL; - bufsize = 0; - + assert(0 == zip_entry_open(zip, "test/test-2.txt")); assert(strlen(TESTDATA2) == zip_entry_size(zip)); assert(CRC32DATA2 == zip_entry_crc32(zip)); @@ -132,8 +131,7 @@ static void test_read(void) { assert(0 == zip_entry_close(zip)); free(buf); buf = NULL; - bufsize = 0; - + buftmp = strlen(TESTDATA1); buf = calloc(buftmp, sizeof(char)); assert(0 == zip_entry_open(zip, "test/test-1.txt")); From d314afaebc4d59e87c9a282bfd1a99722aacef4e Mon Sep 17 00:00:00 2001 From: Marco Di Benedetto Date: Fri, 29 Mar 2019 12:19:39 +0100 Subject: [PATCH 067/187] added casts for rapidjson in gltf asset writer. --- code/glTFAssetWriter.inl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/glTFAssetWriter.inl b/code/glTFAssetWriter.inl index 259ad03f6..20afb24e7 100644 --- a/code/glTFAssetWriter.inl +++ b/code/glTFAssetWriter.inl @@ -294,17 +294,17 @@ namespace glTF { // filling object "compressedData" json_comp_data.SetObject(); json_comp_data.AddMember("buffer", ptr_ext_comp->Buffer, w.mAl); - json_comp_data.AddMember("byteOffset", ptr_ext_comp->Offset, w.mAl); + json_comp_data.AddMember("byteOffset", static_cast(ptr_ext_comp->Offset), w.mAl); json_comp_data.AddMember("componentType", 5121, w.mAl); json_comp_data.AddMember("type", "SCALAR", w.mAl); - json_comp_data.AddMember("count", ptr_ext_comp->Count, w.mAl); + json_comp_data.AddMember("count", static_cast(ptr_ext_comp->Count), w.mAl); if(ptr_ext_comp->Binary) json_comp_data.AddMember("mode", "binary", w.mAl); else json_comp_data.AddMember("mode", "ascii", w.mAl); - json_comp_data.AddMember("indicesCount", ptr_ext_comp->IndicesCount, w.mAl); - json_comp_data.AddMember("verticesCount", ptr_ext_comp->VerticesCount, w.mAl); + json_comp_data.AddMember("indicesCount", static_cast(ptr_ext_comp->IndicesCount), w.mAl); + json_comp_data.AddMember("verticesCount", static_cast(ptr_ext_comp->VerticesCount), w.mAl); // filling object "Open3DGC-compression" Value json_o3dgc; From a79f832a541dc36af78055bf66a655b0b387b6cd Mon Sep 17 00:00:00 2001 From: Marco Di Benedetto Date: Fri, 29 Mar 2019 12:21:47 +0100 Subject: [PATCH 068/187] updated cmakelists. --- contrib/zlib/CMakeLists.txt | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/contrib/zlib/CMakeLists.txt b/contrib/zlib/CMakeLists.txt index a13b7725e..5f1368adb 100644 --- a/contrib/zlib/CMakeLists.txt +++ b/contrib/zlib/CMakeLists.txt @@ -130,6 +130,12 @@ set(ZLIB_SRCS zutil.c ) +if(NOT MINGW) + set(ZLIB_DLL_SRCS + win32/zlib1.rc # If present will override custom build rule below. + ) +endif() + if(CMAKE_COMPILER_IS_GNUCC) if(ASM686) set(ZLIB_ASMS contrib/asm686/match.S) @@ -168,7 +174,26 @@ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents) string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*" "\\1" ZLIB_FULL_VERSION ${_zlib_h_contents}) +if(MINGW) + # This gets us DLL resource information when compiling on MinGW. + if(NOT CMAKE_RC_COMPILER) + set(CMAKE_RC_COMPILER windres.exe) + endif() + + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj + COMMAND ${CMAKE_RC_COMPILER} + -D GCC_WINDRES + -I ${CMAKE_CURRENT_SOURCE_DIR} + -I ${CMAKE_CURRENT_BINARY_DIR} + -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj + -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) + set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) +endif(MINGW) + +add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) +set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) +set_target_properties(zlib PROPERTIES SOVERSION 1) INSTALL( TARGETS zlibstatic LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} From 89b3de947366e04c40a1e145356b2c9f0a671c40 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 29 Mar 2019 16:24:45 +0100 Subject: [PATCH 069/187] Update FBXConverter.h Introduce using instead of typedef. --- code/FBXConverter.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/code/FBXConverter.h b/code/FBXConverter.h index 1ed88406e..8c31fba31 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -418,7 +418,6 @@ private: void TransferDataToScene(); private: - // 0: not assigned yet, others: index is value - 1 unsigned int defaultMaterialIndex; @@ -428,23 +427,22 @@ private: std::vector lights; std::vector cameras; std::vector textures; - - typedef std::map MaterialMap; + using MaterialMap = std::map; MaterialMap materials_converted; - typedef std::map VideoMap; + using VideoMap = std::map; VideoMap textures_converted; - typedef std::map > MeshMap; + using MeshMap = std::map >; MeshMap meshes_converted; // fixed node name -> which trafo chain components have animations? - typedef std::map NodeAnimBitMap; + using NodeAnimBitMap = std::map ; NodeAnimBitMap node_anim_chain_bits; // number of nodes with the same name - typedef std::unordered_map NodeNameMap; + using NodeNameMap = std::unordered_map ; NodeNameMap mNodeNameInstances; double anim_fps; From eb81619e5677dd0a1d64cabde62f5ecf569606f5 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 12:25:37 -0400 Subject: [PATCH 070/187] Fix core.py raising string instead of correct RuntimeError --- port/PyAssimp/pyassimp/core.py | 1094 ++++++++++++++++---------------- 1 file changed, 547 insertions(+), 547 deletions(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index 25821ff9b..b518825f5 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -1,547 +1,547 @@ -""" -PyAssimp - -This is the main-module of PyAssimp. -""" - -import sys -if sys.version_info < (2,6): - raise 'pyassimp: need python 2.6 or newer' - -# xrange was renamed range in Python 3 and the original range from Python 2 was removed. -# To keep compatibility with both Python 2 and 3, xrange is set to range for version 3.0 and up. -if sys.version_info >= (3,0): - xrange = range - -import ctypes -import os - -try: import numpy -except: numpy = None - -import logging -logger = logging.getLogger("pyassimp") -# attach default null handler to logger so it doesn't complain -# even if you don't attach another handler to logger -logger.addHandler(logging.NullHandler()) - -from . import structs -from . import helper -from . import postprocess -from .errors import AssimpError - -class AssimpLib(object): - """ - Assimp-Singleton - """ - load, load_mem, export, export_blob, release, dll = helper.search_library() -_assimp_lib = AssimpLib() - -def make_tuple(ai_obj, type = None): - res = None - - #notes: - # ai_obj._fields_ = [ ("attr", c_type), ... ] - # getattr(ai_obj, e[0]).__class__ == float - - if isinstance(ai_obj, structs.Matrix4x4): - if numpy: - res = numpy.array([getattr(ai_obj, e[0]) for e in ai_obj._fields_]).reshape((4,4)) - #import pdb;pdb.set_trace() - else: - res = [getattr(ai_obj, e[0]) for e in ai_obj._fields_] - res = [res[i:i+4] for i in xrange(0,16,4)] - elif isinstance(ai_obj, structs.Matrix3x3): - if numpy: - res = numpy.array([getattr(ai_obj, e[0]) for e in ai_obj._fields_]).reshape((3,3)) - else: - res = [getattr(ai_obj, e[0]) for e in ai_obj._fields_] - res = [res[i:i+3] for i in xrange(0,9,3)] - else: - if numpy: - res = numpy.array([getattr(ai_obj, e[0]) for e in ai_obj._fields_]) - else: - res = [getattr(ai_obj, e[0]) for e in ai_obj._fields_] - - return res - -# Returns unicode object for Python 2, and str object for Python 3. -def _convert_assimp_string(assimp_string): - try: - return unicode(assimp_string.data, errors='ignore') - except: - return str(assimp_string.data, errors='ignore') - -# It is faster and more correct to have an init function for each assimp class -def _init_face(aiFace): - aiFace.indices = [aiFace.mIndices[i] for i in range(aiFace.mNumIndices)] -assimp_struct_inits = { structs.Face : _init_face } - -def call_init(obj, caller = None): - if helper.hasattr_silent(obj,'contents'): #pointer - _init(obj.contents, obj, caller) - else: - _init(obj,parent=caller) - -def _is_init_type(obj): - if helper.hasattr_silent(obj,'contents'): #pointer - return _is_init_type(obj[0]) - # null-pointer case that arises when we reach a mesh attribute - # like mBitangents which use mNumVertices rather than mNumBitangents - # so it breaks the 'is iterable' check. - # Basically: - # FIXME! - elif not bool(obj): - return False - tname = obj.__class__.__name__ - return not (tname[:2] == 'c_' or tname == 'Structure' \ - or tname == 'POINTER') and not isinstance(obj,int) - -def _init(self, target = None, parent = None): - """ - Custom initialize() for C structs, adds safely accessible member functionality. - - :param target: set the object which receive the added methods. Useful when manipulating - pointers, to skip the intermediate 'contents' deferencing. - """ - if not target: - target = self - - dirself = dir(self) - for m in dirself: - - if m.startswith("_"): - continue - - if m.startswith('mNum'): - if 'm' + m[4:] in dirself: - continue # will be processed later on - else: - name = m[1:].lower() - - obj = getattr(self, m) - setattr(target, name, obj) - continue - - if m == 'mName': - target.name = str(_convert_assimp_string(self.mName)) - target.__class__.__repr__ = lambda x: str(x.__class__) + "(" + getattr(x, 'name','') + ")" - target.__class__.__str__ = lambda x: getattr(x, 'name', '') - continue - - name = m[1:].lower() - - obj = getattr(self, m) - - # Create tuples - if isinstance(obj, structs.assimp_structs_as_tuple): - setattr(target, name, make_tuple(obj)) - logger.debug(str(self) + ": Added array " + str(getattr(target, name)) + " as self." + name.lower()) - continue - - if m.startswith('m'): - - if name == "parent": - setattr(target, name, parent) - logger.debug("Added a parent as self." + name) - continue - - if helper.hasattr_silent(self, 'mNum' + m[1:]): - - length = getattr(self, 'mNum' + m[1:]) - - # -> special case: properties are - # stored as a dict. - if m == 'mProperties': - setattr(target, name, _get_properties(obj, length)) - continue - - - if not length: # empty! - setattr(target, name, []) - logger.debug(str(self) + ": " + name + " is an empty list.") - continue - - - try: - if obj._type_ in structs.assimp_structs_as_tuple: - if numpy: - setattr(target, name, numpy.array([make_tuple(obj[i]) for i in range(length)], dtype=numpy.float32)) - - logger.debug(str(self) + ": Added an array of numpy arrays (type "+ str(type(obj)) + ") as self." + name) - else: - setattr(target, name, [make_tuple(obj[i]) for i in range(length)]) - - logger.debug(str(self) + ": Added a list of lists (type "+ str(type(obj)) + ") as self." + name) - - else: - setattr(target, name, [obj[i] for i in range(length)]) #TODO: maybe not necessary to recreate an array? - - logger.debug(str(self) + ": Added list of " + str(obj) + " " + name + " as self." + name + " (type: " + str(type(obj)) + ")") - - # initialize array elements - try: - init = assimp_struct_inits[type(obj[0])] - except KeyError: - if _is_init_type(obj[0]): - for e in getattr(target, name): - call_init(e, target) - else: - for e in getattr(target, name): - init(e) - - - except IndexError: - logger.error("in " + str(self) +" : mismatch between mNum" + name + " and the actual amount of data in m" + name + ". This may be due to version mismatch between libassimp and pyassimp. Quitting now.") - sys.exit(1) - - except ValueError as e: - - logger.error("In " + str(self) + "->" + name + ": " + str(e) + ". Quitting now.") - if "setting an array element with a sequence" in str(e): - logger.error("Note that pyassimp does not currently " - "support meshes with mixed triangles " - "and quads. Try to load your mesh with" - " a post-processing to triangulate your" - " faces.") - raise e - - - - else: # starts with 'm' but not iterable - setattr(target, name, obj) - logger.debug("Added " + name + " as self." + name + " (type: " + str(type(obj)) + ")") - - if _is_init_type(obj): - call_init(obj, target) - - if isinstance(self, structs.Mesh): - _finalize_mesh(self, target) - - if isinstance(self, structs.Texture): - _finalize_texture(self, target) - - if isinstance(self, structs.Metadata): - _finalize_metadata(self, target) - - - return self - - -def pythonize_assimp(type, obj, scene): - """ This method modify the Assimp data structures - to make them easier to work with in Python. - - Supported operations: - - MESH: replace a list of mesh IDs by reference to these meshes - - ADDTRANSFORMATION: add a reference to an object's transformation taken from their associated node. - - :param type: the type of modification to operate (cf above) - :param obj: the input object to modify - :param scene: a reference to the whole scene - """ - - if type == "MESH": - meshes = [] - for i in obj: - meshes.append(scene.meshes[i]) - return meshes - - if type == "ADDTRANSFORMATION": - def getnode(node, name): - if node.name == name: return node - for child in node.children: - n = getnode(child, name) - if n: return n - - node = getnode(scene.rootnode, obj.name) - if not node: - raise AssimpError("Object " + str(obj) + " has no associated node!") - setattr(obj, "transformation", node.transformation) - -def recur_pythonize(node, scene): - ''' - Recursively call pythonize_assimp on - nodes tree to apply several post-processing to - pythonize the assimp datastructures. - ''' - node.meshes = pythonize_assimp("MESH", node.meshes, scene) - for mesh in node.meshes: - mesh.material = scene.materials[mesh.materialindex] - for cam in scene.cameras: - pythonize_assimp("ADDTRANSFORMATION", cam, scene) - for c in node.children: - recur_pythonize(c, scene) - -def load(filename, - file_type = None, - processing = postprocess.aiProcess_Triangulate): - ''' - Load a model into a scene. On failure throws AssimpError. - - Arguments - --------- - filename: Either a filename or a file object to load model from. - If a file object is passed, file_type MUST be specified - Otherwise Assimp has no idea which importer to use. - This is named 'filename' so as to not break legacy code. - processing: assimp postprocessing parameters. Verbose keywords are imported - from postprocessing, and the parameters can be combined bitwise to - generate the final processing value. Note that the default value will - triangulate quad faces. Example of generating other possible values: - processing = (pyassimp.postprocess.aiProcess_Triangulate | - pyassimp.postprocess.aiProcess_OptimizeMeshes) - file_type: string of file extension, such as 'stl' - - Returns - --------- - Scene object with model data - ''' - - if hasattr(filename, 'read'): - # This is the case where a file object has been passed to load. - # It is calling the following function: - # const aiScene* aiImportFileFromMemory(const char* pBuffer, - # unsigned int pLength, - # unsigned int pFlags, - # const char* pHint) - if file_type == None: - raise AssimpError('File type must be specified when passing file objects!') - data = filename.read() - model = _assimp_lib.load_mem(data, - len(data), - processing, - file_type) - else: - # a filename string has been passed - model = _assimp_lib.load(filename.encode(sys.getfilesystemencoding()), processing) - - if not model: - raise AssimpError('Could not import file!') - scene = _init(model.contents) - recur_pythonize(scene.rootnode, scene) - return scene - -def export(scene, - filename, - file_type = None, - processing = postprocess.aiProcess_Triangulate): - ''' - Export a scene. On failure throws AssimpError. - - Arguments - --------- - scene: scene to export. - filename: Filename that the scene should be exported to. - file_type: string of file exporter to use. For example "collada". - processing: assimp postprocessing parameters. Verbose keywords are imported - from postprocessing, and the parameters can be combined bitwise to - generate the final processing value. Note that the default value will - triangulate quad faces. Example of generating other possible values: - processing = (pyassimp.postprocess.aiProcess_Triangulate | - pyassimp.postprocess.aiProcess_OptimizeMeshes) - - ''' - - from ctypes import pointer - exportStatus = _assimp_lib.export(pointer(scene), file_type.encode("ascii"), filename.encode(sys.getfilesystemencoding()), processing) - - if exportStatus != 0: - raise AssimpError('Could not export scene!') - -def export_blob(scene, - file_type = None, - processing = postprocess.aiProcess_Triangulate): - ''' - Export a scene and return a blob in the correct format. On failure throws AssimpError. - - Arguments - --------- - scene: scene to export. - file_type: string of file exporter to use. For example "collada". - processing: assimp postprocessing parameters. Verbose keywords are imported - from postprocessing, and the parameters can be combined bitwise to - generate the final processing value. Note that the default value will - triangulate quad faces. Example of generating other possible values: - processing = (pyassimp.postprocess.aiProcess_Triangulate | - pyassimp.postprocess.aiProcess_OptimizeMeshes) - Returns - --------- - Pointer to structs.ExportDataBlob - ''' - from ctypes import pointer - exportBlobPtr = _assimp_lib.export_blob(pointer(scene), file_type.encode("ascii"), processing) - - if exportBlobPtr == 0: - raise AssimpError('Could not export scene to blob!') - return exportBlobPtr - -def release(scene): - from ctypes import pointer - _assimp_lib.release(pointer(scene)) - -def _finalize_texture(tex, target): - setattr(target, "achformathint", tex.achFormatHint) - if numpy: - data = numpy.array([make_tuple(getattr(tex, "pcData")[i]) for i in range(tex.mWidth * tex.mHeight)]) - else: - data = [make_tuple(getattr(tex, "pcData")[i]) for i in range(tex.mWidth * tex.mHeight)] - setattr(target, "data", data) - -def _finalize_mesh(mesh, target): - """ Building of meshes is a bit specific. - - We override here the various datasets that can - not be process as regular fields. - - For instance, the length of the normals array is - mNumVertices (no mNumNormals is available) - """ - nb_vertices = getattr(mesh, "mNumVertices") - - def fill(name): - mAttr = getattr(mesh, name) - if numpy: - if mAttr: - data = numpy.array([make_tuple(getattr(mesh, name)[i]) for i in range(nb_vertices)], dtype=numpy.float32) - setattr(target, name[1:].lower(), data) - else: - setattr(target, name[1:].lower(), numpy.array([], dtype="float32")) - else: - if mAttr: - data = [make_tuple(getattr(mesh, name)[i]) for i in range(nb_vertices)] - setattr(target, name[1:].lower(), data) - else: - setattr(target, name[1:].lower(), []) - - def fillarray(name): - mAttr = getattr(mesh, name) - - data = [] - for index, mSubAttr in enumerate(mAttr): - if mSubAttr: - data.append([make_tuple(getattr(mesh, name)[index][i]) for i in range(nb_vertices)]) - - if numpy: - setattr(target, name[1:].lower(), numpy.array(data, dtype=numpy.float32)) - else: - setattr(target, name[1:].lower(), data) - - fill("mNormals") - fill("mTangents") - fill("mBitangents") - - fillarray("mColors") - fillarray("mTextureCoords") - - # prepare faces - if numpy: - faces = numpy.array([f.indices for f in target.faces], dtype=numpy.int32) - else: - faces = [f.indices for f in target.faces] - setattr(target, 'faces', faces) - -def _init_metadata_entry(entry): - from ctypes import POINTER, c_bool, c_int32, c_uint64, c_float, c_double, cast - - entry.type = entry.mType - if entry.type == structs.MetadataEntry.AI_BOOL: - entry.data = cast(entry.mData, POINTER(c_bool)).contents.value - elif entry.type == structs.MetadataEntry.AI_INT32: - entry.data = cast(entry.mData, POINTER(c_int32)).contents.value - elif entry.type == structs.MetadataEntry.AI_UINT64: - entry.data = cast(entry.mData, POINTER(c_uint64)).contents.value - elif entry.type == structs.MetadataEntry.AI_FLOAT: - entry.data = cast(entry.mData, POINTER(c_float)).contents.value - elif entry.type == structs.MetadataEntry.AI_DOUBLE: - entry.data = cast(entry.mData, POINTER(c_double)).contents.value - elif entry.type == structs.MetadataEntry.AI_AISTRING: - assimp_string = cast(entry.mData, POINTER(structs.String)).contents - entry.data = _convert_assimp_string(assimp_string) - elif entry.type == structs.MetadataEntry.AI_AIVECTOR3D: - assimp_vector = cast(entry.mData, POINTER(structs.Vector3D)).contents - entry.data = make_tuple(assimp_vector) - - return entry - -def _finalize_metadata(metadata, target): - """ Building the metadata object is a bit specific. - - Firstly, there are two separate arrays: one with metadata keys and one - with metadata values, and there are no corresponding mNum* attributes, - so the C arrays are not converted to Python arrays using the generic - code in the _init function. - - Secondly, a metadata entry value has to be cast according to declared - metadata entry type. - """ - length = metadata.mNumProperties - setattr(target, 'keys', [str(_convert_assimp_string(metadata.mKeys[i])) for i in range(length)]) - setattr(target, 'values', [_init_metadata_entry(metadata.mValues[i]) for i in range(length)]) - -class PropertyGetter(dict): - def __getitem__(self, key): - semantic = 0 - if isinstance(key, tuple): - key, semantic = key - - return dict.__getitem__(self, (key, semantic)) - - def keys(self): - for k in dict.keys(self): - yield k[0] - - def __iter__(self): - return self.keys() - - def items(self): - for k, v in dict.items(self): - yield k[0], v - - -def _get_properties(properties, length): - """ - Convenience Function to get the material properties as a dict - and values in a python format. - """ - result = {} - #read all properties - for p in [properties[i] for i in range(length)]: - #the name - p = p.contents - key = str(_convert_assimp_string(p.mKey)) - key = (key.split('.')[1], p.mSemantic) - - #the data - from ctypes import POINTER, cast, c_int, c_float, sizeof - if p.mType == 1: - arr = cast(p.mData, POINTER(c_float * int(p.mDataLength/sizeof(c_float)) )).contents - value = [x for x in arr] - elif p.mType == 3: #string can't be an array - value = _convert_assimp_string(cast(p.mData, POINTER(structs.MaterialPropertyString)).contents) - - elif p.mType == 4: - arr = cast(p.mData, POINTER(c_int * int(p.mDataLength/sizeof(c_int)) )).contents - value = [x for x in arr] - else: - value = p.mData[:p.mDataLength] - - if len(value) == 1: - [value] = value - - result[key] = value - - return PropertyGetter(result) - -def decompose_matrix(matrix): - if not isinstance(matrix, structs.Matrix4x4): - raise AssimpError("pyassimp.decompose_matrix failed: Not a Matrix4x4!") - - scaling = structs.Vector3D() - rotation = structs.Quaternion() - position = structs.Vector3D() - - from ctypes import byref, pointer - _assimp_lib.dll.aiDecomposeMatrix(pointer(matrix), byref(scaling), byref(rotation), byref(position)) - return scaling._init(), rotation._init(), position._init() - +""" +PyAssimp + +This is the main-module of PyAssimp. +""" + +import sys +if sys.version_info < (2,6): + raise RuntimeError('pyassimp: need python 2.6 or newer') + +# xrange was renamed range in Python 3 and the original range from Python 2 was removed. +# To keep compatibility with both Python 2 and 3, xrange is set to range for version 3.0 and up. +if sys.version_info >= (3,0): + xrange = range + +import ctypes +import os + +try: import numpy +except: numpy = None + +import logging +logger = logging.getLogger("pyassimp") +# attach default null handler to logger so it doesn't complain +# even if you don't attach another handler to logger +logger.addHandler(logging.NullHandler()) + +from . import structs +from . import helper +from . import postprocess +from .errors import AssimpError + +class AssimpLib(object): + """ + Assimp-Singleton + """ + load, load_mem, export, export_blob, release, dll = helper.search_library() +_assimp_lib = AssimpLib() + +def make_tuple(ai_obj, type = None): + res = None + + #notes: + # ai_obj._fields_ = [ ("attr", c_type), ... ] + # getattr(ai_obj, e[0]).__class__ == float + + if isinstance(ai_obj, structs.Matrix4x4): + if numpy: + res = numpy.array([getattr(ai_obj, e[0]) for e in ai_obj._fields_]).reshape((4,4)) + #import pdb;pdb.set_trace() + else: + res = [getattr(ai_obj, e[0]) for e in ai_obj._fields_] + res = [res[i:i+4] for i in xrange(0,16,4)] + elif isinstance(ai_obj, structs.Matrix3x3): + if numpy: + res = numpy.array([getattr(ai_obj, e[0]) for e in ai_obj._fields_]).reshape((3,3)) + else: + res = [getattr(ai_obj, e[0]) for e in ai_obj._fields_] + res = [res[i:i+3] for i in xrange(0,9,3)] + else: + if numpy: + res = numpy.array([getattr(ai_obj, e[0]) for e in ai_obj._fields_]) + else: + res = [getattr(ai_obj, e[0]) for e in ai_obj._fields_] + + return res + +# Returns unicode object for Python 2, and str object for Python 3. +def _convert_assimp_string(assimp_string): + try: + return unicode(assimp_string.data, errors='ignore') + except: + return str(assimp_string.data, errors='ignore') + +# It is faster and more correct to have an init function for each assimp class +def _init_face(aiFace): + aiFace.indices = [aiFace.mIndices[i] for i in range(aiFace.mNumIndices)] +assimp_struct_inits = { structs.Face : _init_face } + +def call_init(obj, caller = None): + if helper.hasattr_silent(obj,'contents'): #pointer + _init(obj.contents, obj, caller) + else: + _init(obj,parent=caller) + +def _is_init_type(obj): + if helper.hasattr_silent(obj,'contents'): #pointer + return _is_init_type(obj[0]) + # null-pointer case that arises when we reach a mesh attribute + # like mBitangents which use mNumVertices rather than mNumBitangents + # so it breaks the 'is iterable' check. + # Basically: + # FIXME! + elif not bool(obj): + return False + tname = obj.__class__.__name__ + return not (tname[:2] == 'c_' or tname == 'Structure' \ + or tname == 'POINTER') and not isinstance(obj,int) + +def _init(self, target = None, parent = None): + """ + Custom initialize() for C structs, adds safely accessible member functionality. + + :param target: set the object which receive the added methods. Useful when manipulating + pointers, to skip the intermediate 'contents' deferencing. + """ + if not target: + target = self + + dirself = dir(self) + for m in dirself: + + if m.startswith("_"): + continue + + if m.startswith('mNum'): + if 'm' + m[4:] in dirself: + continue # will be processed later on + else: + name = m[1:].lower() + + obj = getattr(self, m) + setattr(target, name, obj) + continue + + if m == 'mName': + target.name = str(_convert_assimp_string(self.mName)) + target.__class__.__repr__ = lambda x: str(x.__class__) + "(" + getattr(x, 'name','') + ")" + target.__class__.__str__ = lambda x: getattr(x, 'name', '') + continue + + name = m[1:].lower() + + obj = getattr(self, m) + + # Create tuples + if isinstance(obj, structs.assimp_structs_as_tuple): + setattr(target, name, make_tuple(obj)) + logger.debug(str(self) + ": Added array " + str(getattr(target, name)) + " as self." + name.lower()) + continue + + if m.startswith('m'): + + if name == "parent": + setattr(target, name, parent) + logger.debug("Added a parent as self." + name) + continue + + if helper.hasattr_silent(self, 'mNum' + m[1:]): + + length = getattr(self, 'mNum' + m[1:]) + + # -> special case: properties are + # stored as a dict. + if m == 'mProperties': + setattr(target, name, _get_properties(obj, length)) + continue + + + if not length: # empty! + setattr(target, name, []) + logger.debug(str(self) + ": " + name + " is an empty list.") + continue + + + try: + if obj._type_ in structs.assimp_structs_as_tuple: + if numpy: + setattr(target, name, numpy.array([make_tuple(obj[i]) for i in range(length)], dtype=numpy.float32)) + + logger.debug(str(self) + ": Added an array of numpy arrays (type "+ str(type(obj)) + ") as self." + name) + else: + setattr(target, name, [make_tuple(obj[i]) for i in range(length)]) + + logger.debug(str(self) + ": Added a list of lists (type "+ str(type(obj)) + ") as self." + name) + + else: + setattr(target, name, [obj[i] for i in range(length)]) #TODO: maybe not necessary to recreate an array? + + logger.debug(str(self) + ": Added list of " + str(obj) + " " + name + " as self." + name + " (type: " + str(type(obj)) + ")") + + # initialize array elements + try: + init = assimp_struct_inits[type(obj[0])] + except KeyError: + if _is_init_type(obj[0]): + for e in getattr(target, name): + call_init(e, target) + else: + for e in getattr(target, name): + init(e) + + + except IndexError: + logger.error("in " + str(self) +" : mismatch between mNum" + name + " and the actual amount of data in m" + name + ". This may be due to version mismatch between libassimp and pyassimp. Quitting now.") + sys.exit(1) + + except ValueError as e: + + logger.error("In " + str(self) + "->" + name + ": " + str(e) + ". Quitting now.") + if "setting an array element with a sequence" in str(e): + logger.error("Note that pyassimp does not currently " + "support meshes with mixed triangles " + "and quads. Try to load your mesh with" + " a post-processing to triangulate your" + " faces.") + raise e + + + + else: # starts with 'm' but not iterable + setattr(target, name, obj) + logger.debug("Added " + name + " as self." + name + " (type: " + str(type(obj)) + ")") + + if _is_init_type(obj): + call_init(obj, target) + + if isinstance(self, structs.Mesh): + _finalize_mesh(self, target) + + if isinstance(self, structs.Texture): + _finalize_texture(self, target) + + if isinstance(self, structs.Metadata): + _finalize_metadata(self, target) + + + return self + + +def pythonize_assimp(type, obj, scene): + """ This method modify the Assimp data structures + to make them easier to work with in Python. + + Supported operations: + - MESH: replace a list of mesh IDs by reference to these meshes + - ADDTRANSFORMATION: add a reference to an object's transformation taken from their associated node. + + :param type: the type of modification to operate (cf above) + :param obj: the input object to modify + :param scene: a reference to the whole scene + """ + + if type == "MESH": + meshes = [] + for i in obj: + meshes.append(scene.meshes[i]) + return meshes + + if type == "ADDTRANSFORMATION": + def getnode(node, name): + if node.name == name: return node + for child in node.children: + n = getnode(child, name) + if n: return n + + node = getnode(scene.rootnode, obj.name) + if not node: + raise AssimpError("Object " + str(obj) + " has no associated node!") + setattr(obj, "transformation", node.transformation) + +def recur_pythonize(node, scene): + ''' + Recursively call pythonize_assimp on + nodes tree to apply several post-processing to + pythonize the assimp datastructures. + ''' + node.meshes = pythonize_assimp("MESH", node.meshes, scene) + for mesh in node.meshes: + mesh.material = scene.materials[mesh.materialindex] + for cam in scene.cameras: + pythonize_assimp("ADDTRANSFORMATION", cam, scene) + for c in node.children: + recur_pythonize(c, scene) + +def load(filename, + file_type = None, + processing = postprocess.aiProcess_Triangulate): + ''' + Load a model into a scene. On failure throws AssimpError. + + Arguments + --------- + filename: Either a filename or a file object to load model from. + If a file object is passed, file_type MUST be specified + Otherwise Assimp has no idea which importer to use. + This is named 'filename' so as to not break legacy code. + processing: assimp postprocessing parameters. Verbose keywords are imported + from postprocessing, and the parameters can be combined bitwise to + generate the final processing value. Note that the default value will + triangulate quad faces. Example of generating other possible values: + processing = (pyassimp.postprocess.aiProcess_Triangulate | + pyassimp.postprocess.aiProcess_OptimizeMeshes) + file_type: string of file extension, such as 'stl' + + Returns + --------- + Scene object with model data + ''' + + if hasattr(filename, 'read'): + # This is the case where a file object has been passed to load. + # It is calling the following function: + # const aiScene* aiImportFileFromMemory(const char* pBuffer, + # unsigned int pLength, + # unsigned int pFlags, + # const char* pHint) + if file_type == None: + raise AssimpError('File type must be specified when passing file objects!') + data = filename.read() + model = _assimp_lib.load_mem(data, + len(data), + processing, + file_type) + else: + # a filename string has been passed + model = _assimp_lib.load(filename.encode(sys.getfilesystemencoding()), processing) + + if not model: + raise AssimpError('Could not import file!') + scene = _init(model.contents) + recur_pythonize(scene.rootnode, scene) + return scene + +def export(scene, + filename, + file_type = None, + processing = postprocess.aiProcess_Triangulate): + ''' + Export a scene. On failure throws AssimpError. + + Arguments + --------- + scene: scene to export. + filename: Filename that the scene should be exported to. + file_type: string of file exporter to use. For example "collada". + processing: assimp postprocessing parameters. Verbose keywords are imported + from postprocessing, and the parameters can be combined bitwise to + generate the final processing value. Note that the default value will + triangulate quad faces. Example of generating other possible values: + processing = (pyassimp.postprocess.aiProcess_Triangulate | + pyassimp.postprocess.aiProcess_OptimizeMeshes) + + ''' + + from ctypes import pointer + exportStatus = _assimp_lib.export(pointer(scene), file_type.encode("ascii"), filename.encode(sys.getfilesystemencoding()), processing) + + if exportStatus != 0: + raise AssimpError('Could not export scene!') + +def export_blob(scene, + file_type = None, + processing = postprocess.aiProcess_Triangulate): + ''' + Export a scene and return a blob in the correct format. On failure throws AssimpError. + + Arguments + --------- + scene: scene to export. + file_type: string of file exporter to use. For example "collada". + processing: assimp postprocessing parameters. Verbose keywords are imported + from postprocessing, and the parameters can be combined bitwise to + generate the final processing value. Note that the default value will + triangulate quad faces. Example of generating other possible values: + processing = (pyassimp.postprocess.aiProcess_Triangulate | + pyassimp.postprocess.aiProcess_OptimizeMeshes) + Returns + --------- + Pointer to structs.ExportDataBlob + ''' + from ctypes import pointer + exportBlobPtr = _assimp_lib.export_blob(pointer(scene), file_type.encode("ascii"), processing) + + if exportBlobPtr == 0: + raise AssimpError('Could not export scene to blob!') + return exportBlobPtr + +def release(scene): + from ctypes import pointer + _assimp_lib.release(pointer(scene)) + +def _finalize_texture(tex, target): + setattr(target, "achformathint", tex.achFormatHint) + if numpy: + data = numpy.array([make_tuple(getattr(tex, "pcData")[i]) for i in range(tex.mWidth * tex.mHeight)]) + else: + data = [make_tuple(getattr(tex, "pcData")[i]) for i in range(tex.mWidth * tex.mHeight)] + setattr(target, "data", data) + +def _finalize_mesh(mesh, target): + """ Building of meshes is a bit specific. + + We override here the various datasets that can + not be process as regular fields. + + For instance, the length of the normals array is + mNumVertices (no mNumNormals is available) + """ + nb_vertices = getattr(mesh, "mNumVertices") + + def fill(name): + mAttr = getattr(mesh, name) + if numpy: + if mAttr: + data = numpy.array([make_tuple(getattr(mesh, name)[i]) for i in range(nb_vertices)], dtype=numpy.float32) + setattr(target, name[1:].lower(), data) + else: + setattr(target, name[1:].lower(), numpy.array([], dtype="float32")) + else: + if mAttr: + data = [make_tuple(getattr(mesh, name)[i]) for i in range(nb_vertices)] + setattr(target, name[1:].lower(), data) + else: + setattr(target, name[1:].lower(), []) + + def fillarray(name): + mAttr = getattr(mesh, name) + + data = [] + for index, mSubAttr in enumerate(mAttr): + if mSubAttr: + data.append([make_tuple(getattr(mesh, name)[index][i]) for i in range(nb_vertices)]) + + if numpy: + setattr(target, name[1:].lower(), numpy.array(data, dtype=numpy.float32)) + else: + setattr(target, name[1:].lower(), data) + + fill("mNormals") + fill("mTangents") + fill("mBitangents") + + fillarray("mColors") + fillarray("mTextureCoords") + + # prepare faces + if numpy: + faces = numpy.array([f.indices for f in target.faces], dtype=numpy.int32) + else: + faces = [f.indices for f in target.faces] + setattr(target, 'faces', faces) + +def _init_metadata_entry(entry): + from ctypes import POINTER, c_bool, c_int32, c_uint64, c_float, c_double, cast + + entry.type = entry.mType + if entry.type == structs.MetadataEntry.AI_BOOL: + entry.data = cast(entry.mData, POINTER(c_bool)).contents.value + elif entry.type == structs.MetadataEntry.AI_INT32: + entry.data = cast(entry.mData, POINTER(c_int32)).contents.value + elif entry.type == structs.MetadataEntry.AI_UINT64: + entry.data = cast(entry.mData, POINTER(c_uint64)).contents.value + elif entry.type == structs.MetadataEntry.AI_FLOAT: + entry.data = cast(entry.mData, POINTER(c_float)).contents.value + elif entry.type == structs.MetadataEntry.AI_DOUBLE: + entry.data = cast(entry.mData, POINTER(c_double)).contents.value + elif entry.type == structs.MetadataEntry.AI_AISTRING: + assimp_string = cast(entry.mData, POINTER(structs.String)).contents + entry.data = _convert_assimp_string(assimp_string) + elif entry.type == structs.MetadataEntry.AI_AIVECTOR3D: + assimp_vector = cast(entry.mData, POINTER(structs.Vector3D)).contents + entry.data = make_tuple(assimp_vector) + + return entry + +def _finalize_metadata(metadata, target): + """ Building the metadata object is a bit specific. + + Firstly, there are two separate arrays: one with metadata keys and one + with metadata values, and there are no corresponding mNum* attributes, + so the C arrays are not converted to Python arrays using the generic + code in the _init function. + + Secondly, a metadata entry value has to be cast according to declared + metadata entry type. + """ + length = metadata.mNumProperties + setattr(target, 'keys', [str(_convert_assimp_string(metadata.mKeys[i])) for i in range(length)]) + setattr(target, 'values', [_init_metadata_entry(metadata.mValues[i]) for i in range(length)]) + +class PropertyGetter(dict): + def __getitem__(self, key): + semantic = 0 + if isinstance(key, tuple): + key, semantic = key + + return dict.__getitem__(self, (key, semantic)) + + def keys(self): + for k in dict.keys(self): + yield k[0] + + def __iter__(self): + return self.keys() + + def items(self): + for k, v in dict.items(self): + yield k[0], v + + +def _get_properties(properties, length): + """ + Convenience Function to get the material properties as a dict + and values in a python format. + """ + result = {} + #read all properties + for p in [properties[i] for i in range(length)]: + #the name + p = p.contents + key = str(_convert_assimp_string(p.mKey)) + key = (key.split('.')[1], p.mSemantic) + + #the data + from ctypes import POINTER, cast, c_int, c_float, sizeof + if p.mType == 1: + arr = cast(p.mData, POINTER(c_float * int(p.mDataLength/sizeof(c_float)) )).contents + value = [x for x in arr] + elif p.mType == 3: #string can't be an array + value = _convert_assimp_string(cast(p.mData, POINTER(structs.MaterialPropertyString)).contents) + + elif p.mType == 4: + arr = cast(p.mData, POINTER(c_int * int(p.mDataLength/sizeof(c_int)) )).contents + value = [x for x in arr] + else: + value = p.mData[:p.mDataLength] + + if len(value) == 1: + [value] = value + + result[key] = value + + return PropertyGetter(result) + +def decompose_matrix(matrix): + if not isinstance(matrix, structs.Matrix4x4): + raise AssimpError("pyassimp.decompose_matrix failed: Not a Matrix4x4!") + + scaling = structs.Vector3D() + rotation = structs.Quaternion() + position = structs.Vector3D() + + from ctypes import byref, pointer + _assimp_lib.dll.aiDecomposeMatrix(pointer(matrix), byref(scaling), byref(rotation), byref(position)) + return scaling._init(), rotation._init(), position._init() + From ae6c1e5ad88846b961ce384bbcc08dfd39814e50 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 12:28:50 -0400 Subject: [PATCH 071/187] Fix what I assume was a typo in scripts/StepImporter/CppGenerator.py - get_hierarchy is not used internally, so it did not cause runtime errors in the tests. Tests should perhaps be revised to reflect this. --- scripts/StepImporter/CppGenerator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/StepImporter/CppGenerator.py b/scripts/StepImporter/CppGenerator.py index 13ee7642c..228035291 100644 --- a/scripts/StepImporter/CppGenerator.py +++ b/scripts/StepImporter/CppGenerator.py @@ -218,7 +218,7 @@ def get_derived(e,schema): return res def get_hierarchy(e,schema): - return get_derived(e.schema)+[e.name]+get_base_classes(e,schema) + return get_derived(e, schema)+[e.name]+get_base_classes(e,schema) def sort_entity_list(schema): deps = [] From 1371cb59d99e4d7df39c80171a95f74fdf92d109 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 12:53:20 -0400 Subject: [PATCH 072/187] scripts/StepImporter/CppGenerator.py: remove unused format parameter on line 158 --- scripts/StepImporter/CppGenerator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/StepImporter/CppGenerator.py b/scripts/StepImporter/CppGenerator.py index 228035291..59254f780 100644 --- a/scripts/StepImporter/CppGenerator.py +++ b/scripts/StepImporter/CppGenerator.py @@ -155,7 +155,7 @@ def get_single_conversion(field,schema,argnum=0,classname='?'): name = field.name if field.collection: typen = 'LIST' - return template_convert_single.format(type=typen,name=name,argnum=argnum,classname=classname,full_type=field.fullspec) + return template_convert_single.format(name=name,argnum=argnum,classname=classname,full_type=field.fullspec) def count_args_up(entity,schema): return len(entity.members) + (count_args_up(schema.entities[entity.parent],schema) if entity.parent else 0) From 49033513efeb63b9d8514251e7b459a4f7efc62a Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:06:14 -0400 Subject: [PATCH 073/187] port/PyAssimp/pyassimp/core.py: remove deprecated unused import & unnecessary from ctype import pointer --- port/PyAssimp/pyassimp/core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index b518825f5..d908fab9c 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -20,6 +20,7 @@ try: import numpy except: numpy = None import logging +import ctypes logger = logging.getLogger("pyassimp") # attach default null handler to logger so it doesn't complain # even if you don't attach another handler to logger @@ -343,8 +344,7 @@ def export(scene, ''' - from ctypes import pointer - exportStatus = _assimp_lib.export(pointer(scene), file_type.encode("ascii"), filename.encode(sys.getfilesystemencoding()), processing) + exportStatus = _assimp_lib.export(ctypes.pointer(scene), file_type.encode("ascii"), filename.encode(sys.getfilesystemencoding()), processing) if exportStatus != 0: raise AssimpError('Could not export scene!') From 4e714fce0e4c0701224ad64bb0bc28a7c676008c Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:06:33 -0400 Subject: [PATCH 074/187] port/PyAssimp/pyassimp/core.py: remove unused import & second import of ctypes --- port/PyAssimp/pyassimp/core.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index d908fab9c..60a2d8f92 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -13,12 +13,9 @@ if sys.version_info < (2,6): if sys.version_info >= (3,0): xrange = range -import ctypes -import os try: import numpy except: numpy = None - import logging import ctypes logger = logging.getLogger("pyassimp") From 44e89520eb6ebb419f38b1a191e5d0cfafe5d249 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:06:48 -0400 Subject: [PATCH 075/187] scripts/StepImporter/CppGenerator.py: return 0 exit code on success --- scripts/StepImporter/CppGenerator.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/StepImporter/CppGenerator.py b/scripts/StepImporter/CppGenerator.py index 59254f780..f081d882a 100644 --- a/scripts/StepImporter/CppGenerator.py +++ b/scripts/StepImporter/CppGenerator.py @@ -300,5 +300,8 @@ def work(filename): with open(output_file_cpp,'wt') as outp: outp.write(inp.read().replace('{schema-static-table}',schema_table).replace('{converter-impl}',converters)) + # Finished without error, so return 0 + return 0 + if __name__ == "__main__": sys.exit(work(sys.argv[1] if len(sys.argv)>1 else 'schema.exp')) From 51844b206d88a25f04c5817dadacee4e53325e23 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:08:14 -0400 Subject: [PATCH 076/187] port/PyAssimp/pyassimp/formats.py: add missing comma (implicit string concatenation, assumed unintentional) --- port/PyAssimp/pyassimp/formats.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/PyAssimp/pyassimp/formats.py b/port/PyAssimp/pyassimp/formats.py index baba1645c..5d454e5b7 100644 --- a/port/PyAssimp/pyassimp/formats.py +++ b/port/PyAssimp/pyassimp/formats.py @@ -21,7 +21,7 @@ FORMATS = ["CSM", "STL", "IRR", "Q3O", - "Q3D" + "Q3D", "MS3D", "Q3S", "ZGL", From 0292acd5a9fd12953b1d2b7fafc9dd7acfb098bd Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:10:17 -0400 Subject: [PATCH 077/187] scripts/BlenderImporter/genblenddna.py: return 0 on success --- scripts/BlenderImporter/genblenddna.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/BlenderImporter/genblenddna.py b/scripts/BlenderImporter/genblenddna.py index caa58ded7..cca595eca 100644 --- a/scripts/BlenderImporter/genblenddna.py +++ b/scripts/BlenderImporter/genblenddna.py @@ -291,7 +291,9 @@ def main(): #s += "#endif\n" output.write(templt.replace("",s)) - + + # we got here, so no error + return 0 if __name__ == "__main__": sys.exit(main()) From e849b94f68f916dd8604fa5ccbfeea60571f0d78 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:18:01 -0400 Subject: [PATCH 078/187] port/PyAssimp/pyassimp/core.py & helper.py: catch specific exceptions instead of BaseException --- port/PyAssimp/pyassimp/core.py | 4 +- port/PyAssimp/pyassimp/helper.py | 560 +++++++++++++++---------------- 2 files changed, 282 insertions(+), 282 deletions(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index 60a2d8f92..974a7d61a 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -15,7 +15,7 @@ if sys.version_info >= (3,0): try: import numpy -except: numpy = None +except ImportError: numpy = None import logging import ctypes logger = logging.getLogger("pyassimp") @@ -67,7 +67,7 @@ def make_tuple(ai_obj, type = None): def _convert_assimp_string(assimp_string): try: return unicode(assimp_string.data, errors='ignore') - except: + except UnicodeError: return str(assimp_string.data, errors='ignore') # It is faster and more correct to have an init function for each assimp class diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index 4e9f10e94..0e9cfd3bf 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -1,280 +1,280 @@ -#-*- coding: UTF-8 -*- - -""" -Some fancy helper functions. -""" - -import os -import ctypes -from ctypes import POINTER -import operator - -from distutils.sysconfig import get_python_lib -import re -import sys - -try: import numpy -except: numpy = None - -import logging;logger = logging.getLogger("pyassimp") - -from .errors import AssimpError - -additional_dirs, ext_whitelist = [],[] - -# populate search directories and lists of allowed file extensions -# depending on the platform we're running on. -if os.name=='posix': - additional_dirs.append('./') - additional_dirs.append('/usr/lib/') - additional_dirs.append('/usr/lib/x86_64-linux-gnu/') - additional_dirs.append('/usr/local/lib/') - - if 'LD_LIBRARY_PATH' in os.environ: - additional_dirs.extend([item for item in os.environ['LD_LIBRARY_PATH'].split(':') if item]) - - # check if running from anaconda. - if "conda" or "continuum" in sys.version.lower(): - cur_path = get_python_lib() - pattern = re.compile('.*\/lib\/') - conda_lib = pattern.match(cur_path).group() - logger.info("Adding Anaconda lib path:"+ conda_lib) - additional_dirs.append(conda_lib) - - # note - this won't catch libassimp.so.N.n, but - # currently there's always a symlink called - # libassimp.so in /usr/local/lib. - ext_whitelist.append('.so') - # libassimp.dylib in /usr/local/lib - ext_whitelist.append('.dylib') - -elif os.name=='nt': - ext_whitelist.append('.dll') - path_dirs = os.environ['PATH'].split(';') - additional_dirs.extend(path_dirs) - -def vec2tuple(x): - """ Converts a VECTOR3D to a Tuple """ - return (x.x, x.y, x.z) - -def transform(vector3, matrix4x4): - """ Apply a transformation matrix on a 3D vector. - - :param vector3: array with 3 elements - :param matrix4x4: 4x4 matrix - """ - if numpy: - return numpy.dot(matrix4x4, numpy.append(vector3, 1.)) - else: - m0,m1,m2,m3 = matrix4x4; x,y,z = vector3 - return [ - m0[0]*x + m0[1]*y + m0[2]*z + m0[3], - m1[0]*x + m1[1]*y + m1[2]*z + m1[3], - m2[0]*x + m2[1]*y + m2[2]*z + m2[3], - m3[0]*x + m3[1]*y + m3[2]*z + m3[3] - ] - -def _inv(matrix4x4): - m0,m1,m2,m3 = matrix4x4 - - det = m0[3]*m1[2]*m2[1]*m3[0] - m0[2]*m1[3]*m2[1]*m3[0] - \ - m0[3]*m1[1]*m2[2]*m3[0] + m0[1]*m1[3]*m2[2]*m3[0] + \ - m0[2]*m1[1]*m2[3]*m3[0] - m0[1]*m1[2]*m2[3]*m3[0] - \ - m0[3]*m1[2]*m2[0]*m3[1] + m0[2]*m1[3]*m2[0]*m3[1] + \ - m0[3]*m1[0]*m2[2]*m3[1] - m0[0]*m1[3]*m2[2]*m3[1] - \ - m0[2]*m1[0]*m2[3]*m3[1] + m0[0]*m1[2]*m2[3]*m3[1] + \ - m0[3]*m1[1]*m2[0]*m3[2] - m0[1]*m1[3]*m2[0]*m3[2] - \ - m0[3]*m1[0]*m2[1]*m3[2] + m0[0]*m1[3]*m2[1]*m3[2] + \ - m0[1]*m1[0]*m2[3]*m3[2] - m0[0]*m1[1]*m2[3]*m3[2] - \ - m0[2]*m1[1]*m2[0]*m3[3] + m0[1]*m1[2]*m2[0]*m3[3] + \ - m0[2]*m1[0]*m2[1]*m3[3] - m0[0]*m1[2]*m2[1]*m3[3] - \ - m0[1]*m1[0]*m2[2]*m3[3] + m0[0]*m1[1]*m2[2]*m3[3] - - return[[( m1[2]*m2[3]*m3[1] - m1[3]*m2[2]*m3[1] + m1[3]*m2[1]*m3[2] - m1[1]*m2[3]*m3[2] - m1[2]*m2[1]*m3[3] + m1[1]*m2[2]*m3[3]) /det, - ( m0[3]*m2[2]*m3[1] - m0[2]*m2[3]*m3[1] - m0[3]*m2[1]*m3[2] + m0[1]*m2[3]*m3[2] + m0[2]*m2[1]*m3[3] - m0[1]*m2[2]*m3[3]) /det, - ( m0[2]*m1[3]*m3[1] - m0[3]*m1[2]*m3[1] + m0[3]*m1[1]*m3[2] - m0[1]*m1[3]*m3[2] - m0[2]*m1[1]*m3[3] + m0[1]*m1[2]*m3[3]) /det, - ( m0[3]*m1[2]*m2[1] - m0[2]*m1[3]*m2[1] - m0[3]*m1[1]*m2[2] + m0[1]*m1[3]*m2[2] + m0[2]*m1[1]*m2[3] - m0[1]*m1[2]*m2[3]) /det], - [( m1[3]*m2[2]*m3[0] - m1[2]*m2[3]*m3[0] - m1[3]*m2[0]*m3[2] + m1[0]*m2[3]*m3[2] + m1[2]*m2[0]*m3[3] - m1[0]*m2[2]*m3[3]) /det, - ( m0[2]*m2[3]*m3[0] - m0[3]*m2[2]*m3[0] + m0[3]*m2[0]*m3[2] - m0[0]*m2[3]*m3[2] - m0[2]*m2[0]*m3[3] + m0[0]*m2[2]*m3[3]) /det, - ( m0[3]*m1[2]*m3[0] - m0[2]*m1[3]*m3[0] - m0[3]*m1[0]*m3[2] + m0[0]*m1[3]*m3[2] + m0[2]*m1[0]*m3[3] - m0[0]*m1[2]*m3[3]) /det, - ( m0[2]*m1[3]*m2[0] - m0[3]*m1[2]*m2[0] + m0[3]*m1[0]*m2[2] - m0[0]*m1[3]*m2[2] - m0[2]*m1[0]*m2[3] + m0[0]*m1[2]*m2[3]) /det], - [( m1[1]*m2[3]*m3[0] - m1[3]*m2[1]*m3[0] + m1[3]*m2[0]*m3[1] - m1[0]*m2[3]*m3[1] - m1[1]*m2[0]*m3[3] + m1[0]*m2[1]*m3[3]) /det, - ( m0[3]*m2[1]*m3[0] - m0[1]*m2[3]*m3[0] - m0[3]*m2[0]*m3[1] + m0[0]*m2[3]*m3[1] + m0[1]*m2[0]*m3[3] - m0[0]*m2[1]*m3[3]) /det, - ( m0[1]*m1[3]*m3[0] - m0[3]*m1[1]*m3[0] + m0[3]*m1[0]*m3[1] - m0[0]*m1[3]*m3[1] - m0[1]*m1[0]*m3[3] + m0[0]*m1[1]*m3[3]) /det, - ( m0[3]*m1[1]*m2[0] - m0[1]*m1[3]*m2[0] - m0[3]*m1[0]*m2[1] + m0[0]*m1[3]*m2[1] + m0[1]*m1[0]*m2[3] - m0[0]*m1[1]*m2[3]) /det], - [( m1[2]*m2[1]*m3[0] - m1[1]*m2[2]*m3[0] - m1[2]*m2[0]*m3[1] + m1[0]*m2[2]*m3[1] + m1[1]*m2[0]*m3[2] - m1[0]*m2[1]*m3[2]) /det, - ( m0[1]*m2[2]*m3[0] - m0[2]*m2[1]*m3[0] + m0[2]*m2[0]*m3[1] - m0[0]*m2[2]*m3[1] - m0[1]*m2[0]*m3[2] + m0[0]*m2[1]*m3[2]) /det, - ( m0[2]*m1[1]*m3[0] - m0[1]*m1[2]*m3[0] - m0[2]*m1[0]*m3[1] + m0[0]*m1[2]*m3[1] + m0[1]*m1[0]*m3[2] - m0[0]*m1[1]*m3[2]) /det, - ( m0[1]*m1[2]*m2[0] - m0[2]*m1[1]*m2[0] + m0[2]*m1[0]*m2[1] - m0[0]*m1[2]*m2[1] - m0[1]*m1[0]*m2[2] + m0[0]*m1[1]*m2[2]) /det]] - -def get_bounding_box(scene): - bb_min = [1e10, 1e10, 1e10] # x,y,z - bb_max = [-1e10, -1e10, -1e10] # x,y,z - inv = numpy.linalg.inv if numpy else _inv - return get_bounding_box_for_node(scene.rootnode, bb_min, bb_max, inv(scene.rootnode.transformation)) - -def get_bounding_box_for_node(node, bb_min, bb_max, transformation): - - if numpy: - transformation = numpy.dot(transformation, node.transformation) - else: - t0,t1,t2,t3 = transformation - T0,T1,T2,T3 = node.transformation - transformation = [ [ - t0[0]*T0[0] + t0[1]*T1[0] + t0[2]*T2[0] + t0[3]*T3[0], - t0[0]*T0[1] + t0[1]*T1[1] + t0[2]*T2[1] + t0[3]*T3[1], - t0[0]*T0[2] + t0[1]*T1[2] + t0[2]*T2[2] + t0[3]*T3[2], - t0[0]*T0[3] + t0[1]*T1[3] + t0[2]*T2[3] + t0[3]*T3[3] - ],[ - t1[0]*T0[0] + t1[1]*T1[0] + t1[2]*T2[0] + t1[3]*T3[0], - t1[0]*T0[1] + t1[1]*T1[1] + t1[2]*T2[1] + t1[3]*T3[1], - t1[0]*T0[2] + t1[1]*T1[2] + t1[2]*T2[2] + t1[3]*T3[2], - t1[0]*T0[3] + t1[1]*T1[3] + t1[2]*T2[3] + t1[3]*T3[3] - ],[ - t2[0]*T0[0] + t2[1]*T1[0] + t2[2]*T2[0] + t2[3]*T3[0], - t2[0]*T0[1] + t2[1]*T1[1] + t2[2]*T2[1] + t2[3]*T3[1], - t2[0]*T0[2] + t2[1]*T1[2] + t2[2]*T2[2] + t2[3]*T3[2], - t2[0]*T0[3] + t2[1]*T1[3] + t2[2]*T2[3] + t2[3]*T3[3] - ],[ - t3[0]*T0[0] + t3[1]*T1[0] + t3[2]*T2[0] + t3[3]*T3[0], - t3[0]*T0[1] + t3[1]*T1[1] + t3[2]*T2[1] + t3[3]*T3[1], - t3[0]*T0[2] + t3[1]*T1[2] + t3[2]*T2[2] + t3[3]*T3[2], - t3[0]*T0[3] + t3[1]*T1[3] + t3[2]*T2[3] + t3[3]*T3[3] - ] ] - - for mesh in node.meshes: - for v in mesh.vertices: - v = transform(v, transformation) - bb_min[0] = min(bb_min[0], v[0]) - bb_min[1] = min(bb_min[1], v[1]) - bb_min[2] = min(bb_min[2], v[2]) - bb_max[0] = max(bb_max[0], v[0]) - bb_max[1] = max(bb_max[1], v[1]) - bb_max[2] = max(bb_max[2], v[2]) - - - for child in node.children: - bb_min, bb_max = get_bounding_box_for_node(child, bb_min, bb_max, transformation) - - return bb_min, bb_max - -def try_load_functions(library_path, dll): - ''' - Try to bind to aiImportFile and aiReleaseImport - - Arguments - --------- - library_path: path to current lib - dll: ctypes handle to library - - Returns - --------- - If unsuccessful: - None - If successful: - Tuple containing (library_path, - load from filename function, - load from memory function, - export to filename function, - export to blob function, - release function, - ctypes handle to assimp library) - ''' - - try: - load = dll.aiImportFile - release = dll.aiReleaseImport - load_mem = dll.aiImportFileFromMemory - export = dll.aiExportScene - export2blob = dll.aiExportSceneToBlob - except AttributeError: - #OK, this is a library, but it doesn't have the functions we need - return None - - # library found! - from .structs import Scene, ExportDataBlob - load.restype = POINTER(Scene) - load_mem.restype = POINTER(Scene) - export2blob.restype = POINTER(ExportDataBlob) - return (library_path, load, load_mem, export, export2blob, release, dll) - -def search_library(): - ''' - Loads the assimp library. - Throws exception AssimpError if no library_path is found - - Returns: tuple, (load from filename function, - load from memory function, - export to filename function, - export to blob function, - release function, - dll) - ''' - #this path - folder = os.path.dirname(__file__) - - # silence 'DLL not found' message boxes on win - try: - ctypes.windll.kernel32.SetErrorMode(0x8007) - except AttributeError: - pass - - candidates = [] - # test every file - for curfolder in [folder]+additional_dirs: - if os.path.isdir(curfolder): - for filename in os.listdir(curfolder): - # our minimum requirement for candidates is that - # they should contain 'assimp' somewhere in - # their name - if filename.lower().find('assimp')==-1 : - continue - is_out=1 - for et in ext_whitelist: - if et in filename.lower(): - is_out=0 - break - if is_out: - continue - - library_path = os.path.join(curfolder, filename) - logger.debug('Try ' + library_path) - try: - dll = ctypes.cdll.LoadLibrary(library_path) - except Exception as e: - logger.warning(str(e)) - # OK, this except is evil. But different OSs will throw different - # errors. So just ignore any errors. - continue - # see if the functions we need are in the dll - loaded = try_load_functions(library_path, dll) - if loaded: candidates.append(loaded) - - if not candidates: - # no library found - raise AssimpError("assimp library not found") - else: - # get the newest library_path - candidates = map(lambda x: (os.lstat(x[0])[-2], x), candidates) - res = max(candidates, key=operator.itemgetter(0))[1] - logger.debug('Using assimp library located at ' + res[0]) - - # XXX: if there are 1000 dll/so files containing 'assimp' - # in their name, do we have all of them in our address - # space now until gc kicks in? - - # XXX: take version postfix of the .so on linux? - return res[1:] - -def hasattr_silent(object, name): - """ - Calls hasttr() with the given parameters and preserves the legacy (pre-Python 3.2) - functionality of silently catching exceptions. - - Returns the result of hasatter() or False if an exception was raised. - """ - - try: - return hasattr(object, name) - except: - return False +#-*- coding: UTF-8 -*- + +""" +Some fancy helper functions. +""" + +import os +import ctypes +from ctypes import POINTER +import operator + +from distutils.sysconfig import get_python_lib +import re +import sys + +try: import numpy +except ImportError: numpy = None + +import logging;logger = logging.getLogger("pyassimp") + +from .errors import AssimpError + +additional_dirs, ext_whitelist = [],[] + +# populate search directories and lists of allowed file extensions +# depending on the platform we're running on. +if os.name=='posix': + additional_dirs.append('./') + additional_dirs.append('/usr/lib/') + additional_dirs.append('/usr/lib/x86_64-linux-gnu/') + additional_dirs.append('/usr/local/lib/') + + if 'LD_LIBRARY_PATH' in os.environ: + additional_dirs.extend([item for item in os.environ['LD_LIBRARY_PATH'].split(':') if item]) + + # check if running from anaconda. + if "conda" or "continuum" in sys.version.lower(): + cur_path = get_python_lib() + pattern = re.compile('.*\/lib\/') + conda_lib = pattern.match(cur_path).group() + logger.info("Adding Anaconda lib path:"+ conda_lib) + additional_dirs.append(conda_lib) + + # note - this won't catch libassimp.so.N.n, but + # currently there's always a symlink called + # libassimp.so in /usr/local/lib. + ext_whitelist.append('.so') + # libassimp.dylib in /usr/local/lib + ext_whitelist.append('.dylib') + +elif os.name=='nt': + ext_whitelist.append('.dll') + path_dirs = os.environ['PATH'].split(';') + additional_dirs.extend(path_dirs) + +def vec2tuple(x): + """ Converts a VECTOR3D to a Tuple """ + return (x.x, x.y, x.z) + +def transform(vector3, matrix4x4): + """ Apply a transformation matrix on a 3D vector. + + :param vector3: array with 3 elements + :param matrix4x4: 4x4 matrix + """ + if numpy: + return numpy.dot(matrix4x4, numpy.append(vector3, 1.)) + else: + m0,m1,m2,m3 = matrix4x4; x,y,z = vector3 + return [ + m0[0]*x + m0[1]*y + m0[2]*z + m0[3], + m1[0]*x + m1[1]*y + m1[2]*z + m1[3], + m2[0]*x + m2[1]*y + m2[2]*z + m2[3], + m3[0]*x + m3[1]*y + m3[2]*z + m3[3] + ] + +def _inv(matrix4x4): + m0,m1,m2,m3 = matrix4x4 + + det = m0[3]*m1[2]*m2[1]*m3[0] - m0[2]*m1[3]*m2[1]*m3[0] - \ + m0[3]*m1[1]*m2[2]*m3[0] + m0[1]*m1[3]*m2[2]*m3[0] + \ + m0[2]*m1[1]*m2[3]*m3[0] - m0[1]*m1[2]*m2[3]*m3[0] - \ + m0[3]*m1[2]*m2[0]*m3[1] + m0[2]*m1[3]*m2[0]*m3[1] + \ + m0[3]*m1[0]*m2[2]*m3[1] - m0[0]*m1[3]*m2[2]*m3[1] - \ + m0[2]*m1[0]*m2[3]*m3[1] + m0[0]*m1[2]*m2[3]*m3[1] + \ + m0[3]*m1[1]*m2[0]*m3[2] - m0[1]*m1[3]*m2[0]*m3[2] - \ + m0[3]*m1[0]*m2[1]*m3[2] + m0[0]*m1[3]*m2[1]*m3[2] + \ + m0[1]*m1[0]*m2[3]*m3[2] - m0[0]*m1[1]*m2[3]*m3[2] - \ + m0[2]*m1[1]*m2[0]*m3[3] + m0[1]*m1[2]*m2[0]*m3[3] + \ + m0[2]*m1[0]*m2[1]*m3[3] - m0[0]*m1[2]*m2[1]*m3[3] - \ + m0[1]*m1[0]*m2[2]*m3[3] + m0[0]*m1[1]*m2[2]*m3[3] + + return[[( m1[2]*m2[3]*m3[1] - m1[3]*m2[2]*m3[1] + m1[3]*m2[1]*m3[2] - m1[1]*m2[3]*m3[2] - m1[2]*m2[1]*m3[3] + m1[1]*m2[2]*m3[3]) /det, + ( m0[3]*m2[2]*m3[1] - m0[2]*m2[3]*m3[1] - m0[3]*m2[1]*m3[2] + m0[1]*m2[3]*m3[2] + m0[2]*m2[1]*m3[3] - m0[1]*m2[2]*m3[3]) /det, + ( m0[2]*m1[3]*m3[1] - m0[3]*m1[2]*m3[1] + m0[3]*m1[1]*m3[2] - m0[1]*m1[3]*m3[2] - m0[2]*m1[1]*m3[3] + m0[1]*m1[2]*m3[3]) /det, + ( m0[3]*m1[2]*m2[1] - m0[2]*m1[3]*m2[1] - m0[3]*m1[1]*m2[2] + m0[1]*m1[3]*m2[2] + m0[2]*m1[1]*m2[3] - m0[1]*m1[2]*m2[3]) /det], + [( m1[3]*m2[2]*m3[0] - m1[2]*m2[3]*m3[0] - m1[3]*m2[0]*m3[2] + m1[0]*m2[3]*m3[2] + m1[2]*m2[0]*m3[3] - m1[0]*m2[2]*m3[3]) /det, + ( m0[2]*m2[3]*m3[0] - m0[3]*m2[2]*m3[0] + m0[3]*m2[0]*m3[2] - m0[0]*m2[3]*m3[2] - m0[2]*m2[0]*m3[3] + m0[0]*m2[2]*m3[3]) /det, + ( m0[3]*m1[2]*m3[0] - m0[2]*m1[3]*m3[0] - m0[3]*m1[0]*m3[2] + m0[0]*m1[3]*m3[2] + m0[2]*m1[0]*m3[3] - m0[0]*m1[2]*m3[3]) /det, + ( m0[2]*m1[3]*m2[0] - m0[3]*m1[2]*m2[0] + m0[3]*m1[0]*m2[2] - m0[0]*m1[3]*m2[2] - m0[2]*m1[0]*m2[3] + m0[0]*m1[2]*m2[3]) /det], + [( m1[1]*m2[3]*m3[0] - m1[3]*m2[1]*m3[0] + m1[3]*m2[0]*m3[1] - m1[0]*m2[3]*m3[1] - m1[1]*m2[0]*m3[3] + m1[0]*m2[1]*m3[3]) /det, + ( m0[3]*m2[1]*m3[0] - m0[1]*m2[3]*m3[0] - m0[3]*m2[0]*m3[1] + m0[0]*m2[3]*m3[1] + m0[1]*m2[0]*m3[3] - m0[0]*m2[1]*m3[3]) /det, + ( m0[1]*m1[3]*m3[0] - m0[3]*m1[1]*m3[0] + m0[3]*m1[0]*m3[1] - m0[0]*m1[3]*m3[1] - m0[1]*m1[0]*m3[3] + m0[0]*m1[1]*m3[3]) /det, + ( m0[3]*m1[1]*m2[0] - m0[1]*m1[3]*m2[0] - m0[3]*m1[0]*m2[1] + m0[0]*m1[3]*m2[1] + m0[1]*m1[0]*m2[3] - m0[0]*m1[1]*m2[3]) /det], + [( m1[2]*m2[1]*m3[0] - m1[1]*m2[2]*m3[0] - m1[2]*m2[0]*m3[1] + m1[0]*m2[2]*m3[1] + m1[1]*m2[0]*m3[2] - m1[0]*m2[1]*m3[2]) /det, + ( m0[1]*m2[2]*m3[0] - m0[2]*m2[1]*m3[0] + m0[2]*m2[0]*m3[1] - m0[0]*m2[2]*m3[1] - m0[1]*m2[0]*m3[2] + m0[0]*m2[1]*m3[2]) /det, + ( m0[2]*m1[1]*m3[0] - m0[1]*m1[2]*m3[0] - m0[2]*m1[0]*m3[1] + m0[0]*m1[2]*m3[1] + m0[1]*m1[0]*m3[2] - m0[0]*m1[1]*m3[2]) /det, + ( m0[1]*m1[2]*m2[0] - m0[2]*m1[1]*m2[0] + m0[2]*m1[0]*m2[1] - m0[0]*m1[2]*m2[1] - m0[1]*m1[0]*m2[2] + m0[0]*m1[1]*m2[2]) /det]] + +def get_bounding_box(scene): + bb_min = [1e10, 1e10, 1e10] # x,y,z + bb_max = [-1e10, -1e10, -1e10] # x,y,z + inv = numpy.linalg.inv if numpy else _inv + return get_bounding_box_for_node(scene.rootnode, bb_min, bb_max, inv(scene.rootnode.transformation)) + +def get_bounding_box_for_node(node, bb_min, bb_max, transformation): + + if numpy: + transformation = numpy.dot(transformation, node.transformation) + else: + t0,t1,t2,t3 = transformation + T0,T1,T2,T3 = node.transformation + transformation = [ [ + t0[0]*T0[0] + t0[1]*T1[0] + t0[2]*T2[0] + t0[3]*T3[0], + t0[0]*T0[1] + t0[1]*T1[1] + t0[2]*T2[1] + t0[3]*T3[1], + t0[0]*T0[2] + t0[1]*T1[2] + t0[2]*T2[2] + t0[3]*T3[2], + t0[0]*T0[3] + t0[1]*T1[3] + t0[2]*T2[3] + t0[3]*T3[3] + ],[ + t1[0]*T0[0] + t1[1]*T1[0] + t1[2]*T2[0] + t1[3]*T3[0], + t1[0]*T0[1] + t1[1]*T1[1] + t1[2]*T2[1] + t1[3]*T3[1], + t1[0]*T0[2] + t1[1]*T1[2] + t1[2]*T2[2] + t1[3]*T3[2], + t1[0]*T0[3] + t1[1]*T1[3] + t1[2]*T2[3] + t1[3]*T3[3] + ],[ + t2[0]*T0[0] + t2[1]*T1[0] + t2[2]*T2[0] + t2[3]*T3[0], + t2[0]*T0[1] + t2[1]*T1[1] + t2[2]*T2[1] + t2[3]*T3[1], + t2[0]*T0[2] + t2[1]*T1[2] + t2[2]*T2[2] + t2[3]*T3[2], + t2[0]*T0[3] + t2[1]*T1[3] + t2[2]*T2[3] + t2[3]*T3[3] + ],[ + t3[0]*T0[0] + t3[1]*T1[0] + t3[2]*T2[0] + t3[3]*T3[0], + t3[0]*T0[1] + t3[1]*T1[1] + t3[2]*T2[1] + t3[3]*T3[1], + t3[0]*T0[2] + t3[1]*T1[2] + t3[2]*T2[2] + t3[3]*T3[2], + t3[0]*T0[3] + t3[1]*T1[3] + t3[2]*T2[3] + t3[3]*T3[3] + ] ] + + for mesh in node.meshes: + for v in mesh.vertices: + v = transform(v, transformation) + bb_min[0] = min(bb_min[0], v[0]) + bb_min[1] = min(bb_min[1], v[1]) + bb_min[2] = min(bb_min[2], v[2]) + bb_max[0] = max(bb_max[0], v[0]) + bb_max[1] = max(bb_max[1], v[1]) + bb_max[2] = max(bb_max[2], v[2]) + + + for child in node.children: + bb_min, bb_max = get_bounding_box_for_node(child, bb_min, bb_max, transformation) + + return bb_min, bb_max + +def try_load_functions(library_path, dll): + ''' + Try to bind to aiImportFile and aiReleaseImport + + Arguments + --------- + library_path: path to current lib + dll: ctypes handle to library + + Returns + --------- + If unsuccessful: + None + If successful: + Tuple containing (library_path, + load from filename function, + load from memory function, + export to filename function, + export to blob function, + release function, + ctypes handle to assimp library) + ''' + + try: + load = dll.aiImportFile + release = dll.aiReleaseImport + load_mem = dll.aiImportFileFromMemory + export = dll.aiExportScene + export2blob = dll.aiExportSceneToBlob + except AttributeError: + #OK, this is a library, but it doesn't have the functions we need + return None + + # library found! + from .structs import Scene, ExportDataBlob + load.restype = POINTER(Scene) + load_mem.restype = POINTER(Scene) + export2blob.restype = POINTER(ExportDataBlob) + return (library_path, load, load_mem, export, export2blob, release, dll) + +def search_library(): + ''' + Loads the assimp library. + Throws exception AssimpError if no library_path is found + + Returns: tuple, (load from filename function, + load from memory function, + export to filename function, + export to blob function, + release function, + dll) + ''' + #this path + folder = os.path.dirname(__file__) + + # silence 'DLL not found' message boxes on win + try: + ctypes.windll.kernel32.SetErrorMode(0x8007) + except AttributeError: + pass + + candidates = [] + # test every file + for curfolder in [folder]+additional_dirs: + if os.path.isdir(curfolder): + for filename in os.listdir(curfolder): + # our minimum requirement for candidates is that + # they should contain 'assimp' somewhere in + # their name + if filename.lower().find('assimp')==-1 : + continue + is_out=1 + for et in ext_whitelist: + if et in filename.lower(): + is_out=0 + break + if is_out: + continue + + library_path = os.path.join(curfolder, filename) + logger.debug('Try ' + library_path) + try: + dll = ctypes.cdll.LoadLibrary(library_path) + except Exception as e: + logger.warning(str(e)) + # OK, this except is evil. But different OSs will throw different + # errors. So just ignore any errors. + continue + # see if the functions we need are in the dll + loaded = try_load_functions(library_path, dll) + if loaded: candidates.append(loaded) + + if not candidates: + # no library found + raise AssimpError("assimp library not found") + else: + # get the newest library_path + candidates = map(lambda x: (os.lstat(x[0])[-2], x), candidates) + res = max(candidates, key=operator.itemgetter(0))[1] + logger.debug('Using assimp library located at ' + res[0]) + + # XXX: if there are 1000 dll/so files containing 'assimp' + # in their name, do we have all of them in our address + # space now until gc kicks in? + + # XXX: take version postfix of the .so on linux? + return res[1:] + +def hasattr_silent(object, name): + """ + Calls hasttr() with the given parameters and preserves the legacy (pre-Python 3.2) + functionality of silently catching exceptions. + + Returns the result of hasatter() or False if an exception was raised. + """ + + try: + return hasattr(object, name) + except AttributeError: + return False From 7930de9f37e92f457065772067e9dc32a8f89e61 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:19:57 -0400 Subject: [PATCH 079/187] port/PyAssimp/pyassimp/helper.py: replace from ctypes import POINTER; POINTER(something) with ctypes.POINTER(something) to remove warning about importing ctype twice --- port/PyAssimp/pyassimp/helper.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index 0e9cfd3bf..9042b7f9f 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -6,7 +6,6 @@ Some fancy helper functions. import os import ctypes -from ctypes import POINTER import operator from distutils.sysconfig import get_python_lib @@ -193,9 +192,9 @@ def try_load_functions(library_path, dll): # library found! from .structs import Scene, ExportDataBlob - load.restype = POINTER(Scene) - load_mem.restype = POINTER(Scene) - export2blob.restype = POINTER(ExportDataBlob) + load.restype = ctype.POINTER(Scene) + load_mem.restype = ctype.POINTER(Scene) + export2blob.restype = ctype.POINTER(ExportDataBlob) return (library_path, load, load_mem, export, export2blob, release, dll) def search_library(): From ee79ac0f1724a1862a3f21fc7c3b5519428f4041 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:21:18 -0400 Subject: [PATCH 080/187] port/PyAssimp/pyassimp/sample.py: rename innerloop variable to clarify intent since it shadowed outer variable --- port/PyAssimp/scripts/sample.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/port/PyAssimp/scripts/sample.py b/port/PyAssimp/scripts/sample.py index 9012eb374..c119798ed 100755 --- a/port/PyAssimp/scripts/sample.py +++ b/port/PyAssimp/scripts/sample.py @@ -50,8 +50,8 @@ def main(filename=None): print(" colors:" + str(len(mesh.colors))) tcs = mesh.texturecoords if tcs.any(): - for index, tc in enumerate(tcs): - print(" texture-coords "+ str(index) + ":" + str(len(tcs[index])) + "first3:" + str(tcs[index][:3])) + for tc_index, tc in enumerate(tcs): + print(" texture-coords "+ str(tc_index) + ":" + str(len(tcs[tc_index])) + "first3:" + str(tcs[tc_index][:3])) else: print(" no texture coordinates") From 1614b7bea42ceeceaba212388560693726212355 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:25:07 -0400 Subject: [PATCH 081/187] port/PyAssimp/pyassimp/core.py: convert_assimp_string now switches on version instead of just catching the exception if unicode is not defined & _init_face uses is None instead of == None --- port/PyAssimp/pyassimp/core.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index 974a7d61a..c781f27c9 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -65,10 +65,10 @@ def make_tuple(ai_obj, type = None): # Returns unicode object for Python 2, and str object for Python 3. def _convert_assimp_string(assimp_string): - try: - return unicode(assimp_string.data, errors='ignore') - except UnicodeError: + if sys.version_info >= (3, 0): return str(assimp_string.data, errors='ignore') + else: + return unicode(assimp_string.data, errors='ignore') # It is faster and more correct to have an init function for each assimp class def _init_face(aiFace): @@ -303,7 +303,7 @@ def load(filename, # unsigned int pLength, # unsigned int pFlags, # const char* pHint) - if file_type == None: + if file_type is None: raise AssimpError('File type must be specified when passing file objects!') data = filename.read() model = _assimp_lib.load_mem(data, From 1b9157440f3dcd95313480b2aeaca931b25a5cf5 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:26:04 -0400 Subject: [PATCH 082/187] port/PyAssimp/pyassimp/structs.py: remove unused import of c_int --- port/PyAssimp/pyassimp/structs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/port/PyAssimp/pyassimp/structs.py b/port/PyAssimp/pyassimp/structs.py index ddfd87f8a..d478b861b 100644 --- a/port/PyAssimp/pyassimp/structs.py +++ b/port/PyAssimp/pyassimp/structs.py @@ -1,6 +1,6 @@ #-*- coding: UTF-8 -*- -from ctypes import POINTER, c_void_p, c_int, c_uint, c_char, c_float, Structure, c_char_p, c_double, c_ubyte, c_size_t, c_uint32 +from ctypes import POINTER, c_void_p, c_uint, c_char, c_float, Structure, c_char_p, c_double, c_ubyte, c_size_t, c_uint32 class Vector2D(Structure): @@ -70,7 +70,7 @@ class String(Structure): See 'types.h' for details. """ - MAXLEN = 1024 + MAXLEN = 1024 _fields_ = [ # Binary length of the string excluding the terminal 0. This is NOT the From efbb85721cb0940b974bc256b30848c63b135a1f Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:28:56 -0400 Subject: [PATCH 083/187] port/PyAssimp/pyassimp/: remove several unised imports --- port/PyAssimp/scripts/fixed_pipeline_3d_viewer.py | 5 +++-- port/PyAssimp/scripts/sample.py | 2 +- scripts/StepImporter/ExpressReader.py | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/port/PyAssimp/scripts/fixed_pipeline_3d_viewer.py b/port/PyAssimp/scripts/fixed_pipeline_3d_viewer.py index 7f98b9004..c2f6cebb7 100755 --- a/port/PyAssimp/scripts/fixed_pipeline_3d_viewer.py +++ b/port/PyAssimp/scripts/fixed_pipeline_3d_viewer.py @@ -24,12 +24,13 @@ This sample is based on several sources, including: - ASSIMP's C++ SimpleOpenGL viewer """ -import os, sys +import sys from OpenGL.GLUT import * from OpenGL.GLU import * from OpenGL.GL import * -import logging;logger = logging.getLogger("pyassimp_opengl") +import logging +logger = logging.getLogger("pyassimp_opengl") logging.basicConfig(level=logging.INFO) import math diff --git a/port/PyAssimp/scripts/sample.py b/port/PyAssimp/scripts/sample.py index c119798ed..3cd4b3ec4 100755 --- a/port/PyAssimp/scripts/sample.py +++ b/port/PyAssimp/scripts/sample.py @@ -5,7 +5,7 @@ This module demonstrates the functionality of PyAssimp. """ -import os, sys +import sys import logging logging.basicConfig(level=logging.INFO) diff --git a/scripts/StepImporter/ExpressReader.py b/scripts/StepImporter/ExpressReader.py index 84aaadbdc..c2a39e70b 100644 --- a/scripts/StepImporter/ExpressReader.py +++ b/scripts/StepImporter/ExpressReader.py @@ -43,7 +43,8 @@ """Parse an EXPRESS file and extract basic information on all entities and data types contained""" -import sys, os, re +import sys +import re from collections import OrderedDict re_match_entity = re.compile(r""" From 5a53fbd65faded37909ca2be9f71d3a6e821b1db Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 27 Mar 2019 13:54:21 -0400 Subject: [PATCH 084/187] port/PyAssimp/pyassimp/: Fix new warnings --- port/PyAssimp/pyassimp/core.py | 39 ++++++++++++++-------------- scripts/StepImporter/CppGenerator.py | 3 --- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index c781f27c9..ca6d8629a 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -366,16 +366,14 @@ def export_blob(scene, --------- Pointer to structs.ExportDataBlob ''' - from ctypes import pointer - exportBlobPtr = _assimp_lib.export_blob(pointer(scene), file_type.encode("ascii"), processing) + exportBlobPtr = _assimp_lib.export_blob(ctypes.pointer(scene), file_type.encode("ascii"), processing) if exportBlobPtr == 0: raise AssimpError('Could not export scene to blob!') return exportBlobPtr def release(scene): - from ctypes import pointer - _assimp_lib.release(pointer(scene)) + _assimp_lib.release(ctypes.pointer(scene)) def _finalize_texture(tex, target): setattr(target, "achformathint", tex.achFormatHint) @@ -439,24 +437,22 @@ def _finalize_mesh(mesh, target): setattr(target, 'faces', faces) def _init_metadata_entry(entry): - from ctypes import POINTER, c_bool, c_int32, c_uint64, c_float, c_double, cast - entry.type = entry.mType if entry.type == structs.MetadataEntry.AI_BOOL: - entry.data = cast(entry.mData, POINTER(c_bool)).contents.value + entry.data = ctypes.cast(entry.mData, ctypes.POINTER(ctypes.c_bool)).contents.value elif entry.type == structs.MetadataEntry.AI_INT32: - entry.data = cast(entry.mData, POINTER(c_int32)).contents.value + entry.data = ctypes.cast(entry.mData, ctypes.POINTER(ctypes.c_int32)).contents.value elif entry.type == structs.MetadataEntry.AI_UINT64: - entry.data = cast(entry.mData, POINTER(c_uint64)).contents.value + entry.data = ctypes.cast(entry.mData, ctypes.POINTER(ctypes.c_uint64)).contents.value elif entry.type == structs.MetadataEntry.AI_FLOAT: - entry.data = cast(entry.mData, POINTER(c_float)).contents.value + entry.data = ctypes.cast(entry.mData, ctypes.POINTER(ctypes.c_float)).contents.value elif entry.type == structs.MetadataEntry.AI_DOUBLE: - entry.data = cast(entry.mData, POINTER(c_double)).contents.value + entry.data = ctypes.cast(entry.mData, ctypes.POINTER(ctypes.c_double)).contents.value elif entry.type == structs.MetadataEntry.AI_AISTRING: - assimp_string = cast(entry.mData, POINTER(structs.String)).contents + assimp_string = ctypes.cast(entry.mData, ctypes.POINTER(structs.String)).contents entry.data = _convert_assimp_string(assimp_string) elif entry.type == structs.MetadataEntry.AI_AIVECTOR3D: - assimp_vector = cast(entry.mData, POINTER(structs.Vector3D)).contents + assimp_vector = ctypes.cast(entry.mData, ctypes.POINTER(structs.Vector3D)).contents entry.data = make_tuple(assimp_vector) return entry @@ -510,15 +506,18 @@ def _get_properties(properties, length): key = (key.split('.')[1], p.mSemantic) #the data - from ctypes import POINTER, cast, c_int, c_float, sizeof if p.mType == 1: - arr = cast(p.mData, POINTER(c_float * int(p.mDataLength/sizeof(c_float)) )).contents + arr = ctypes.cast(p.mData, + ctypes.POINTER(ctypes.c_float * int(p.mDataLength/ctypes.sizeof(ctypes.c_float))) + ).contents value = [x for x in arr] elif p.mType == 3: #string can't be an array - value = _convert_assimp_string(cast(p.mData, POINTER(structs.MaterialPropertyString)).contents) + value = _convert_assimp_string(ctypes.cast(p.mData, ctypes.POINTER(structs.MaterialPropertyString)).contents) elif p.mType == 4: - arr = cast(p.mData, POINTER(c_int * int(p.mDataLength/sizeof(c_int)) )).contents + arr = ctypes.cast(p.mData, + ctypes.POINTER(ctypes.c_int * int(p.mDataLength/ctypes.sizeof(ctypes.c_int))) + ).contents value = [x for x in arr] else: value = p.mData[:p.mDataLength] @@ -538,7 +537,9 @@ def decompose_matrix(matrix): rotation = structs.Quaternion() position = structs.Vector3D() - from ctypes import byref, pointer - _assimp_lib.dll.aiDecomposeMatrix(pointer(matrix), byref(scaling), byref(rotation), byref(position)) + _assimp_lib.dll.aiDecomposeMatrix(ctypes.pointer(matrix), + ctypes.byref(scaling), + ctypes.byref(rotation), + ctypes.byref(position)) return scaling._init(), rotation._init(), position._init() diff --git a/scripts/StepImporter/CppGenerator.py b/scripts/StepImporter/CppGenerator.py index f081d882a..b9dba9902 100644 --- a/scripts/StepImporter/CppGenerator.py +++ b/scripts/StepImporter/CppGenerator.py @@ -151,10 +151,7 @@ def handle_unset_args(field,entity,schema,argnum): return n+template_allow_optional.format() def get_single_conversion(field,schema,argnum=0,classname='?'): - typen = field.type name = field.name - if field.collection: - typen = 'LIST' return template_convert_single.format(name=name,argnum=argnum,classname=classname,full_type=field.fullspec) def count_args_up(entity,schema): From f001dfc840332e9ef70b0c3a3c84cd7451d3e4bc Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Fri, 29 Mar 2019 17:41:01 -0400 Subject: [PATCH 085/187] * Fix error in previous commit improving imports --- port/PyAssimp/pyassimp/helper.py | 6 +++--- port/PyAssimp/pyassimp/postprocess.py | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index 9042b7f9f..62384f54f 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -192,9 +192,9 @@ def try_load_functions(library_path, dll): # library found! from .structs import Scene, ExportDataBlob - load.restype = ctype.POINTER(Scene) - load_mem.restype = ctype.POINTER(Scene) - export2blob.restype = ctype.POINTER(ExportDataBlob) + load.restype = ctypes.POINTER(Scene) + load_mem.restype = ctypes.POINTER(Scene) + export2blob.restype = ctypes.POINTER(ExportDataBlob) return (library_path, load, load_mem, export, export2blob, release, dll) def search_library(): diff --git a/port/PyAssimp/pyassimp/postprocess.py b/port/PyAssimp/pyassimp/postprocess.py index 932c7c660..0c55d6798 100644 --- a/port/PyAssimp/pyassimp/postprocess.py +++ b/port/PyAssimp/pyassimp/postprocess.py @@ -435,6 +435,7 @@ aiProcess_Debone = 0x4000000 aiProcess_GenEntityMeshes = 0x100000 aiProcess_OptimizeAnimations = 0x200000 aiProcess_FixTexturePaths = 0x200000 +aiProcess_EmbedTextures = 0x10000000, ## @def aiProcess_ConvertToLeftHanded # @brief Shortcut flag for Direct3D-based applications. From e45d120f218206cd44e3c5aa31b23096183e6c65 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Fri, 29 Mar 2019 18:43:57 -0400 Subject: [PATCH 086/187] Remove experimental change unintentionally included in commit f001dfc8 --- port/PyAssimp/pyassimp/helper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index 62384f54f..9042b7f9f 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -192,9 +192,9 @@ def try_load_functions(library_path, dll): # library found! from .structs import Scene, ExportDataBlob - load.restype = ctypes.POINTER(Scene) - load_mem.restype = ctypes.POINTER(Scene) - export2blob.restype = ctypes.POINTER(ExportDataBlob) + load.restype = ctype.POINTER(Scene) + load_mem.restype = ctype.POINTER(Scene) + export2blob.restype = ctype.POINTER(ExportDataBlob) return (library_path, load, load_mem, export, export2blob, release, dll) def search_library(): From f15f37634d5942d46aeff11730f9372357515b4c Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Sat, 30 Mar 2019 14:12:13 -0400 Subject: [PATCH 087/187] BlenderDNA.h: * Fix rethrow that would crash the program. * QUESTION: am I throwing the right exception here. COBLoader: * catch exception by const ref * fix equality checks using strncmp taht weren't actually checking equality FBXMaterial: Catch exception by const ref (+ Debug log that it's done so) FBXConverter: Rename local variables to avoid shadowing parameter ImageExtractor: Remove duplicated/unreachable code FBXConverter: Another shadowed variable fix MD5Loader: 2 shadowed variables IRRLoader: shadowed parameter StepFileReader.cpp: Shadowed parameter IRRLoader: remove empty else statement STLExporter: Throw error instead of silently ignoring unimplemented option Misc empty blocks removed or debug logging added --- code/AssxmlExporter.cpp | 2 -- code/BlenderDNA.h | 2 +- code/COBLoader.cpp | 10 +++---- code/D3MFOpcPackage.cpp | 5 +++- code/FBXConverter.cpp | 30 ++++++++++----------- code/FBXMaterial.cpp | 5 +++- code/IRRLoader.cpp | 25 +++++++++-------- code/Importer/STEPParser/STEPFileReader.cpp | 6 ++--- code/MD5Loader.cpp | 18 ++++++------- code/STLExporter.cpp | 2 +- code/glTFExporter.cpp | 2 +- tools/assimp_cmd/ImageExtractor.cpp | 9 +++---- 12 files changed, 58 insertions(+), 58 deletions(-) diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp index fc9a6bae5..937eebe92 100644 --- a/code/AssxmlExporter.cpp +++ b/code/AssxmlExporter.cpp @@ -555,8 +555,6 @@ void WriteDump(const aiScene* scene, IOStream* io, bool shortened) { mesh->mNormals[n].z); } } - else { - } ioprintf(io,"\t\t\n"); } diff --git a/code/BlenderDNA.h b/code/BlenderDNA.h index 5d3a4f6ea..375d0c4bf 100644 --- a/code/BlenderDNA.h +++ b/code/BlenderDNA.h @@ -416,7 +416,7 @@ template <> struct Structure :: _defaultInitializer { void operator ()(T& /*out*/,const char* = "") { // obviously, it is crucial that _DefaultInitializer is used // only from within a catch clause. - throw; + throw DeadlyImportError("Constructing BlenderDNA Structure encountered an error"); } }; diff --git a/code/COBLoader.cpp b/code/COBLoader.cpp index efb22e08b..b7e0f9728 100644 --- a/code/COBLoader.cpp +++ b/code/COBLoader.cpp @@ -144,7 +144,7 @@ void COBImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOS // check header char head[32]; stream->CopyAndAdvance(head,32); - if (strncmp(head,"Caligari ",9)) { + if (strncmp(head,"Caligari ",9) != 0) { ThrowException("Could not found magic id: `Caligari`"); } @@ -656,14 +656,14 @@ void COBImporter::ReadLght_Ascii(Scene& out, LineSplitter& splitter, const Chunk ReadFloat3Tuple_Ascii(msh.color ,&rgb); SkipSpaces(&rgb); - if (strncmp(rgb,"cone angle",10)) { + if (strncmp(rgb,"cone angle",10) != 0) { ASSIMP_LOG_WARN_F( "Expected `cone angle` entity in `color` line in `Lght` chunk ", nfo.id ); } SkipSpaces(rgb+10,&rgb); msh.angle = fast_atof(&rgb); SkipSpaces(&rgb); - if (strncmp(rgb,"inner angle",11)) { + if (strncmp(rgb,"inner angle",11) != 0) { ASSIMP_LOG_WARN_F( "Expected `inner angle` entity in `color` line in `Lght` chunk ", nfo.id); } SkipSpaces(rgb+11,&rgb); @@ -903,7 +903,7 @@ public: if(nfo.size != static_cast(-1)) { try { reader.IncPtr( static_cast< int >( nfo.size ) - reader.GetCurrentPos() + cur ); - } catch ( DeadlyImportError e ) { + } catch (const DeadlyImportError& e ) { // out of limit so correct the value reader.IncPtr( reader.GetReadLimit() ); } @@ -1214,7 +1214,7 @@ void COBImporter::ReadGrou_Binary(COB::Scene& out, StreamReaderLE& reader, const const chunk_guard cn(nfo,reader); - out.nodes.push_back(std::shared_ptr(new Group())); + out.nodes.push_back(std::make_shared()); Group& msh = (Group&)(*out.nodes.back().get()); msh = nfo; diff --git a/code/D3MFOpcPackage.cpp b/code/D3MFOpcPackage.cpp index 2545a2750..aeadba5cc 100644 --- a/code/D3MFOpcPackage.cpp +++ b/code/D3MFOpcPackage.cpp @@ -476,8 +476,11 @@ D3MFOpcPackage::D3MFOpcPackage(IOSystem* pIOHandler, const std::string& rFile) mZipArchive->Close( fileStream ); } else if( file == D3MF::XmlTag::CONTENT_TYPES_ARCHIVE) { - + ASSIMP_LOG_WARN_F("Ignored file of unsupported type CONTENT_TYPES_ARCHIVES",file); + } else { + ASSIMP_LOG_WARN_F("Ignored file of unknown type: ",file); } + } } diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index a61ae4006..000c4ed53 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -1712,22 +1712,22 @@ namespace Assimp { if (!mesh) { for (const MeshMap::value_type& v : meshes_converted) { - const MeshGeometry* const mesh = dynamic_cast (v.first); - if (!mesh) { + const MeshGeometry* const meshGeom = dynamic_cast (v.first); + if (!meshGeom) { continue; } - const MatIndexArray& mats = mesh->GetMaterialIndices(); + const MatIndexArray& mats = meshGeom->GetMaterialIndices(); if (std::find(mats.begin(), mats.end(), matIndex) == mats.end()) { continue; } int index = -1; for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) { - if (mesh->GetTextureCoords(i).empty()) { + if (meshGeom->GetTextureCoords(i).empty()) { break; } - const std::string& name = mesh->GetTextureCoordChannelName(i); + const std::string& name = meshGeom->GetTextureCoordChannelName(i); if (name == uvSet) { index = static_cast(i); break; @@ -1835,22 +1835,22 @@ namespace Assimp { if (!mesh) { for (const MeshMap::value_type& v : meshes_converted) { - const MeshGeometry* const mesh = dynamic_cast (v.first); - if (!mesh) { + const MeshGeometry* const meshGeom = dynamic_cast (v.first); + if (!meshGeom) { continue; } - const MatIndexArray& mats = mesh->GetMaterialIndices(); + const MatIndexArray& mats = meshGeom->GetMaterialIndices(); if (std::find(mats.begin(), mats.end(), matIndex) == mats.end()) { continue; } int index = -1; for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) { - if (mesh->GetTextureCoords(i).empty()) { + if (meshGeom->GetTextureCoords(i).empty()) { break; } - const std::string& name = mesh->GetTextureCoordChannelName(i); + const std::string& name = meshGeom->GetTextureCoordChannelName(i); if (name == uvSet) { index = static_cast(i); break; @@ -2191,22 +2191,22 @@ void FBXConverter::SetShadingPropertiesRaw(aiMaterial* out_mat, const PropertyTa if (!mesh) { for (const MeshMap::value_type& v : meshes_converted) { - const MeshGeometry* const mesh = dynamic_cast(v.first); - if (!mesh) { + const MeshGeometry* const meshGeom = dynamic_cast(v.first); + if (!meshGeom) { continue; } - const MatIndexArray& mats = mesh->GetMaterialIndices(); + const MatIndexArray& mats = meshGeom->GetMaterialIndices(); if (std::find(mats.begin(), mats.end(), matIndex) == mats.end()) { continue; } int index = -1; for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) { - if (mesh->GetTextureCoords(i).empty()) { + if (meshGeom->GetTextureCoords(i).empty()) { break; } - const std::string& name = mesh->GetTextureCoordChannelName(i); + const std::string& name = meshGeom->GetTextureCoordChannelName(i); if (name == uvSet) { index = static_cast(i); break; diff --git a/code/FBXMaterial.cpp b/code/FBXMaterial.cpp index f5f6fda03..08347740f 100644 --- a/code/FBXMaterial.cpp +++ b/code/FBXMaterial.cpp @@ -326,8 +326,11 @@ Video::Video(uint64_t id, const Element& element, const Document& doc, const std content = new uint8_t[len]; ::memcpy(content, data + 5, len); } - } catch (runtime_error runtimeError) { + } catch (const runtime_error& runtimeError) + { //we don't need the content data for contents that has already been loaded + ASSIMP_LOG_DEBUG_F("Caught exception in FBXMaterial (likely because content was already loaded): ", + runtimeError.what()); } } diff --git a/code/IRRLoader.cpp b/code/IRRLoader.cpp index 6bc4b8ce4..796b73164 100644 --- a/code/IRRLoader.cpp +++ b/code/IRRLoader.cpp @@ -300,13 +300,10 @@ int ClampSpline(int idx, int size) { // ------------------------------------------------------------------------------------------------ inline void FindSuitableMultiple(int& angle) { - if (angle < 3)angle = 3; + if (angle < 3) angle = 3; else if (angle < 10) angle = 10; else if (angle < 20) angle = 20; else if (angle < 30) angle = 30; - else - { - } } // ------------------------------------------------------------------------------------------------ @@ -317,6 +314,8 @@ void IRRImporter::ComputeAnimations(Node* root, aiNode* real, std::vectoranimators.empty()) { return; @@ -674,38 +673,38 @@ void IRRImporter::GenerateGraph(Node* root,aiNode* rootOut ,aiScene* scene, // Get the loaded mesh from the scene and add it to // the list of all scenes to be attached to the // graph we're currently building - aiScene* scene = batch.GetImport(root->id); - if (!scene) { + aiScene* localScene = batch.GetImport(root->id); + if (!localScene) { ASSIMP_LOG_ERROR("IRR: Unable to load external file: " + root->meshPath); break; } - attach.push_back(AttachmentInfo(scene,rootOut)); + attach.push_back(AttachmentInfo(localScene,rootOut)); // Now combine the material we've loaded for this mesh // with the real materials we got from the file. As we // don't execute any pp-steps on the file, the numbers // should be equal. If they are not, we can impossibly // do this ... - if (root->materials.size() != (unsigned int)scene->mNumMaterials) { + if (root->materials.size() != (unsigned int)localScene->mNumMaterials) { ASSIMP_LOG_WARN("IRR: Failed to match imported materials " "with the materials found in the IRR scene file"); break; } - for (unsigned int i = 0; i < scene->mNumMaterials;++i) { + for (unsigned int i = 0; i < localScene->mNumMaterials;++i) { // Delete the old material, we don't need it anymore - delete scene->mMaterials[i]; + delete localScene->mMaterials[i]; std::pair& src = root->materials[i]; - scene->mMaterials[i] = src.first; + localScene->mMaterials[i] = src.first; } // NOTE: Each mesh should have exactly one material assigned, // but we do it in a separate loop if this behaviour changes // in future. - for (unsigned int i = 0; i < scene->mNumMeshes;++i) { + for (unsigned int i = 0; i < localScene->mNumMeshes;++i) { // Process material flags - aiMesh* mesh = scene->mMeshes[i]; + aiMesh* mesh = localScene->mMeshes[i]; // If "trans_vertex_alpha" mode is enabled, search all vertex colors diff --git a/code/Importer/STEPParser/STEPFileReader.cpp b/code/Importer/STEPParser/STEPFileReader.cpp index 1707899a1..f099d2be7 100644 --- a/code/Importer/STEPParser/STEPFileReader.cpp +++ b/code/Importer/STEPParser/STEPFileReader.cpp @@ -278,10 +278,10 @@ void STEP::ReadFile(DB& db,const EXPRESS::ConversionSchema& scheme, std::transform( type.begin(), type.end(), type.begin(), &Assimp::ToLower ); const char* sz = scheme.GetStaticStringForToken(type); if(sz) { - const std::string::size_type len = n2-n1+1; - char* const copysz = new char[len+1]; + const std::string::size_type szLen = n2-n1+1; + char* const copysz = new char[szLen+1]; std::copy(s.c_str()+n1,s.c_str()+n2+1,copysz); - copysz[len] = '\0'; + copysz[szLen] = '\0'; db.InternInsert(new LazyObject(db,id,line,sz,copysz)); } if(!has_next) { diff --git a/code/MD5Loader.cpp b/code/MD5Loader.cpp index 346b59504..38c44b515 100644 --- a/code/MD5Loader.cpp +++ b/code/MD5Loader.cpp @@ -443,10 +443,10 @@ void MD5Importer::LoadMD5MeshFile () for (MD5::VertexList::const_iterator iter = meshSrc.mVertices.begin();iter != meshSrc.mVertices.end();++iter,++pv) { for (unsigned int jub = (*iter).mFirstWeight, w = jub; w < jub + (*iter).mNumWeights;++w) { - MD5::WeightDesc& desc = meshSrc.mWeights[w]; + MD5::WeightDesc& weightDesc = meshSrc.mWeights[w]; /* FIX for some invalid exporters */ - if (!(desc.mWeight < AI_MD5_WEIGHT_EPSILON && desc.mWeight >= -AI_MD5_WEIGHT_EPSILON )) - ++piCount[desc.mBone]; + if (!(weightDesc.mWeight < AI_MD5_WEIGHT_EPSILON && weightDesc.mWeight >= -AI_MD5_WEIGHT_EPSILON )) + ++piCount[weightDesc.mBone]; } } @@ -493,20 +493,20 @@ void MD5Importer::LoadMD5MeshFile () if (w >= meshSrc.mWeights.size()) throw DeadlyImportError("MD5MESH: Invalid weight index"); - MD5::WeightDesc& desc = meshSrc.mWeights[w]; - if ( desc.mWeight < AI_MD5_WEIGHT_EPSILON && desc.mWeight >= -AI_MD5_WEIGHT_EPSILON) { + MD5::WeightDesc& weightDesc = meshSrc.mWeights[w]; + if ( weightDesc.mWeight < AI_MD5_WEIGHT_EPSILON && weightDesc.mWeight >= -AI_MD5_WEIGHT_EPSILON) { continue; } - const ai_real fNewWeight = desc.mWeight / fSum; + const ai_real fNewWeight = weightDesc.mWeight / fSum; // transform the local position into worldspace - MD5::BoneDesc& boneSrc = meshParser.mJoints[desc.mBone]; - const aiVector3D v = boneSrc.mRotationQuatConverted.Rotate (desc.vOffsetPosition); + MD5::BoneDesc& boneSrc = meshParser.mJoints[weightDesc.mBone]; + const aiVector3D v = boneSrc.mRotationQuatConverted.Rotate (weightDesc.vOffsetPosition); // use the original weight to compute the vertex position // (some MD5s seem to depend on the invalid weight values ...) - *pv += ((boneSrc.mPositionXYZ+v)* (ai_real)desc.mWeight); + *pv += ((boneSrc.mPositionXYZ+v)* (ai_real)weightDesc.mWeight); aiBone* bone = mesh->mBones[boneSrc.mMap]; *bone->mWeights++ = aiVertexWeight((unsigned int)(pv-mesh->mVertices),fNewWeight); diff --git a/code/STLExporter.cpp b/code/STLExporter.cpp index 00fced6ff..d56c42835 100644 --- a/code/STLExporter.cpp +++ b/code/STLExporter.cpp @@ -127,7 +127,7 @@ STLExporter::STLExporter(const char* _filename, const aiScene* pScene, bool expo mOutput.write((char *)&meshnum, 4); if (exportPointClouds) { - + throw DeadlyExportError("This functionality is not yet implemented for binary output."); } for(unsigned int i = 0; i < pScene->mNumMeshes; ++i) { diff --git a/code/glTFExporter.cpp b/code/glTFExporter.cpp index 9daf202cb..6bf7415d3 100644 --- a/code/glTFExporter.cpp +++ b/code/glTFExporter.cpp @@ -245,7 +245,7 @@ inline Ref ExportData(Asset& a, std::string& meshName, Ref& bu namespace { void GetMatScalar(const aiMaterial* mat, float& val, const char* propName, int type, int idx) { - if (mat->Get(propName, type, idx, val) == AI_SUCCESS) {} + ai_assert(mat->Get(propName, type, idx, val) == AI_SUCCESS); } } diff --git a/tools/assimp_cmd/ImageExtractor.cpp b/tools/assimp_cmd/ImageExtractor.cpp index f9d55b8e8..a587ab434 100644 --- a/tools/assimp_cmd/ImageExtractor.cpp +++ b/tools/assimp_cmd/ImageExtractor.cpp @@ -228,7 +228,8 @@ int DoExport(const aiTexture* tx, FILE* p, const std::string& extension, // Implementation of the assimp extract utility int Assimp_Extract (const char* const* params, unsigned int num) { - const char* const invalid = "assimp extract: Invalid number of arguments. See \'assimp extract --help\'\n"; + const char* const invalid = "assimp extract: Invalid number of arguments. See \'assimp extract --help\'\n"; + // assimp extract in out [options] if (num < 1) { printf(invalid); return 1; @@ -240,11 +241,7 @@ int Assimp_Extract (const char* const* params, unsigned int num) return 0; } - // asssimp extract in out [options] - if (num < 1) { - printf(invalid); - return 1; - } + std::string in = std::string(params[0]); std::string out = (num > 1 ? std::string(params[1]) : "-"); From 930af2da44e4983012158814dade1a6feff7cbfe Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 2 Apr 2019 20:43:03 +0200 Subject: [PATCH 088/187] closes https://github.com/assimp/assimp/issues/2398: fix the build. --- code/C4DImporter.cpp | 6 +++++- code/C4DImporter.h | 8 +------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/code/C4DImporter.cpp b/code/C4DImporter.cpp index 665d74633..bbddb3a86 100644 --- a/code/C4DImporter.cpp +++ b/code/C4DImporter.cpp @@ -78,7 +78,11 @@ using namespace Assimp; using namespace Assimp::Formatter; namespace Assimp { - template<> const std::string LogFunctions::log_prefix = "C4D: "; + template<> const char* LogFunctions::Prefix() + { + static auto prefix = "C4D: "; + return prefix; + } } static const aiImporterDesc desc = { diff --git a/code/C4DImporter.h b/code/C4DImporter.h index 2f67d90f3..95ac56b03 100644 --- a/code/C4DImporter.h +++ b/code/C4DImporter.h @@ -78,14 +78,8 @@ namespace Assimp { class C4DImporter : public BaseImporter, public LogFunctions { public: - C4DImporter(); ~C4DImporter(); - - -public: - - // -------------------- bool CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const; @@ -119,5 +113,5 @@ private: }; // !class C4DImporter } // end of namespace Assimp -#endif // INCLUDED_AI_CINEMA_4D_LOADER_H +#endif // INCLUDED_AI_CINEMA_4D_LOADER_H From 838d0c35b6f83f78e7b99a9a2095407d4a2dcd6b Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 2 Apr 2019 21:55:41 +0200 Subject: [PATCH 089/187] Remove deprecated definition for boost workaround. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8b00b4cc7..8fe39d59c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -70,6 +70,6 @@ addons: project: name: "assimp/assimp" notification_email: kim.kulling@googlemail.com - build_command_prepend: "cmake . -DASSIMP_ENABLE_BOOST_WORKAROUND=YES" + build_command_prepend: "cmake ./" build_command: "make -j4" branch_pattern: coverity_scan From 0505dd72661b28b53589ff1cf58074b862064399 Mon Sep 17 00:00:00 2001 From: Matias Date: Wed, 3 Apr 2019 12:19:23 +0200 Subject: [PATCH 090/187] issue 2390: FBXConverter::GetUniqueName now uses a map for keeping track of duplicate node name count and a set for registering names that have been taken.This is required because the model might contain a several nodes called "nodename" and another one called "nodename001". In that case we can't add "001" to the second node called "nodename". --- code/FBXConverter.cpp | 16 ++++++++++------ code/FBXConverter.h | 8 ++++++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 692f081da..a654bc870 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -412,18 +412,22 @@ namespace Assimp { { uniqueName = name; int i = 0; - auto it = mNodeNameInstances.find(uniqueName); + auto it = mNodeNameInstances.find(name); // duplicate node name instance count if (it != mNodeNameInstances.end()) { - i = it->second + 1; - std::stringstream ext; - ext << name << std::setfill('0') << std::setw(3) << i; - uniqueName = ext.str(); + i = it->second; + while (mNodeNames.find(uniqueName) != mNodeNames.end()) + { + i++; + std::stringstream ext; + ext << name << std::setfill('0') << std::setw(3) << i; + uniqueName = ext.str(); + } } mNodeNameInstances[name] = i; + mNodeNames.insert(uniqueName); } - const char* FBXConverter::NameTransformationComp(TransformationComp comp) { switch (comp) { case TransformationComp_Translation: diff --git a/code/FBXConverter.h b/code/FBXConverter.h index 8c31fba31..162cf6e94 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -59,6 +59,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include struct aiScene; struct aiNode; @@ -442,8 +443,11 @@ private: NodeAnimBitMap node_anim_chain_bits; // number of nodes with the same name - using NodeNameMap = std::unordered_map ; - NodeNameMap mNodeNameInstances; + typedef std::unordered_map NodeAnimNameMap; + NodeAnimNameMap mNodeNameInstances; + + typedef std::unordered_set NodeNameCache; + NodeNameCache mNodeNames; double anim_fps; From 4884cf21727607a4abea319e7c71ae69217736d6 Mon Sep 17 00:00:00 2001 From: Matias Date: Wed, 3 Apr 2019 12:35:09 +0200 Subject: [PATCH 091/187] issue_2393: Added TransparencyFactor material key --- code/FBXConverter.cpp | 6 ++++++ include/assimp/material.h | 1 + 2 files changed, 7 insertions(+) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index a61ae4006..71989b9f5 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -2041,6 +2041,12 @@ namespace Assimp { CalculatedOpacity = 1.0f - ((Transparent.r + Transparent.g + Transparent.b) / 3.0f); } + // try to get the transparency factor + const float TransparencyFactor = PropertyGet(props, "TransparencyFactor", ok); + if (ok) { + out_mat->AddProperty(&TransparencyFactor, 1, AI_MATKEY_TRANSPARENCYFACTOR); + } + // use of TransparencyFactor is inconsistent. // Maya always stores it as 1.0, // so we can't use it to set AI_MATKEY_OPACITY. diff --git a/include/assimp/material.h b/include/assimp/material.h index b882bbc72..4b5a1293d 100644 --- a/include/assimp/material.h +++ b/include/assimp/material.h @@ -900,6 +900,7 @@ extern "C" { #define AI_MATKEY_ENABLE_WIREFRAME "$mat.wireframe",0,0 #define AI_MATKEY_BLEND_FUNC "$mat.blend",0,0 #define AI_MATKEY_OPACITY "$mat.opacity",0,0 +#define AI_MATKEY_TRANSPARENCYFACTOR "$mat.transparencyfactor",0,0 #define AI_MATKEY_BUMPSCALING "$mat.bumpscaling",0,0 #define AI_MATKEY_SHININESS "$mat.shininess",0,0 #define AI_MATKEY_REFLECTIVITY "$mat.reflectivity",0,0 From 42608c02601e1b23fb33639eaf0f389805526d0c Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 3 Apr 2019 20:15:55 +0200 Subject: [PATCH 092/187] Fix small review findings. --- code/C4DImporter.cpp | 153 +++++++++++++++++-------------------------- code/C4DImporter.h | 10 +-- 2 files changed, 65 insertions(+), 98 deletions(-) diff --git a/code/C4DImporter.cpp b/code/C4DImporter.cpp index bbddb3a86..6e5b7d39b 100644 --- a/code/C4DImporter.cpp +++ b/code/C4DImporter.cpp @@ -2,7 +2,7 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2012, assimp team +Copyright (c) 2006-2019, assimp team All rights reserved. Redistribution and use of this software in source and binary forms, @@ -68,8 +68,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace melange; // overload this function and fill in your own unique data -void GetWriterInfo(int &id, String &appname) -{ +void GetWriterInfo(int &id, String &appname) { id = 2424226; appname = "Open Asset Import Library"; } @@ -78,8 +77,7 @@ using namespace Assimp; using namespace Assimp::Formatter; namespace Assimp { - template<> const char* LogFunctions::Prefix() - { + template<> const char* LogFunctions::Prefix() { static auto prefix = "C4D: "; return prefix; } @@ -101,47 +99,44 @@ static const aiImporterDesc desc = { // ------------------------------------------------------------------------------------------------ C4DImporter::C4DImporter() -{} +: BaseImporter() { + // empty +} // ------------------------------------------------------------------------------------------------ -C4DImporter::~C4DImporter() -{} +C4DImporter::~C4DImporter() { + // empty +} // ------------------------------------------------------------------------------------------------ -bool C4DImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const -{ +bool C4DImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const { const std::string& extension = GetExtension(pFile); if (extension == "c4d") { return true; - } - - else if ((!extension.length() || checkSig) && pIOHandler) { + } else if ((!extension.length() || checkSig) && pIOHandler) { // TODO } + return false; } // ------------------------------------------------------------------------------------------------ -const aiImporterDesc* C4DImporter::GetInfo () const -{ +const aiImporterDesc* C4DImporter::GetInfo () const { return &desc; } // ------------------------------------------------------------------------------------------------ -void C4DImporter::SetupProperties(const Importer* /*pImp*/) -{ +void C4DImporter::SetupProperties(const Importer* /*pImp*/) { // nothing to be done for the moment } // ------------------------------------------------------------------------------------------------ // Imports the given file into the given scene structure. -void C4DImporter::InternReadFile( const std::string& pFile, - aiScene* pScene, IOSystem* pIOHandler) -{ +void C4DImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) { std::unique_ptr file( pIOHandler->Open( pFile)); - if( file.get() == NULL) { + if( file.get() == nullptr ) { ThrowException("failed to open file " + pFile); } @@ -155,7 +150,7 @@ void C4DImporter::InternReadFile( const std::string& pFile, // open document first BaseDocument* doc = LoadDocument(f, SCENEFILTER_OBJECTS | SCENEFILTER_MATERIALS); - if(doc == NULL) { + if(doc == nullptr ) { ThrowException("failed to read document " + pFile); } @@ -164,11 +159,10 @@ void C4DImporter::InternReadFile( const std::string& pFile, // first convert all materials ReadMaterials(doc->GetFirstMaterial()); - // process C4D scenegraph recursively + // process C4D scene-graph recursively try { RecurseHierarchy(doc->GetFirstObject(), pScene->mRootNode); - } - catch(...) { + } catch(...) { for(aiMesh* mesh : meshes) { delete mesh; } @@ -205,8 +199,7 @@ void C4DImporter::InternReadFile( const std::string& pFile, // ------------------------------------------------------------------------------------------------ -bool C4DImporter::ReadShader(aiMaterial* out, melange::BaseShader* shader) -{ +bool C4DImporter::ReadShader(aiMaterial* out, melange::BaseShader* shader) { // based on Melange sample code (C4DImportExport.cpp) while(shader) { if(shader->GetType() == Xlayer) { @@ -224,15 +217,12 @@ bool C4DImporter::ReadShader(aiMaterial* out, melange::BaseShader* shader) // Ignore the actual layer blending - models for real-time rendering should not // use them in a non-trivial way. Just try to find textures that we can apply // to the model. - while (lsl) - { - if (lsl->GetType() == TypeFolder) - { + while (lsl) { + if (lsl->GetType() == TypeFolder) { BlendFolder* const folder = dynamic_cast(lsl); LayerShaderLayer *subLsl = dynamic_cast(folder->m_Children.GetObject(0)); - while (subLsl) - { + while (subLsl) { if (subLsl->GetType() == TypeShader) { BlendShader* const shader = dynamic_cast(subLsl); if(ReadShader(out, static_cast(shader->m_pLink->GetLink()))) { @@ -242,8 +232,7 @@ bool C4DImporter::ReadShader(aiMaterial* out, melange::BaseShader* shader) subLsl = subLsl->GetNext(); } - } - else if (lsl->GetType() == TypeShader) { + } else if (lsl->GetType() == TypeShader) { BlendShader* const shader = dynamic_cast(lsl); if(ReadShader(out, static_cast(shader->m_pLink->GetLink()))) { return true; @@ -252,33 +241,27 @@ bool C4DImporter::ReadShader(aiMaterial* out, melange::BaseShader* shader) lsl = lsl->GetNext(); } - } - else if ( shader->GetType() == Xbitmap ) - { + } else if ( shader->GetType() == Xbitmap ) { aiString path; shader->GetFileName().GetString().GetCString(path.data, MAXLEN-1); path.length = ::strlen(path.data); out->AddProperty(&path, AI_MATKEY_TEXTURE_DIFFUSE(0)); return true; - } - else { + } else { LogWarn("ignoring shader type: " + std::string(GetObjectTypeName(shader->GetType()))); } shader = shader->GetNext(); } + return false; } - // ------------------------------------------------------------------------------------------------ -void C4DImporter::ReadMaterials(melange::BaseMaterial* mat) -{ +void C4DImporter::ReadMaterials(melange::BaseMaterial* mat) { // based on Melange sample code - while (mat) - { + while (mat) { const String& name = mat->GetName(); - if (mat->GetType() == Mmaterial) - { + if (mat->GetType() == Mmaterial) { aiMaterial* out = new aiMaterial(); material_mapping[mat] = static_cast(materials.size()); materials.push_back(out); @@ -290,8 +273,7 @@ void C4DImporter::ReadMaterials(melange::BaseMaterial* mat) Material& m = dynamic_cast(*mat); - if (m.GetChannelState(CHANNEL_COLOR)) - { + if (m.GetChannelState(CHANNEL_COLOR)) { GeData data; mat->GetParameter(MATERIAL_COLOR_COLOR, data); Vector color = data.GetVector(); @@ -311,9 +293,7 @@ void C4DImporter::ReadMaterials(melange::BaseMaterial* mat) if(shader) { ReadShader(out, shader); } - } - else - { + } else { LogWarn("ignoring plugin material: " + std::string(GetObjectTypeName(mat->GetType()))); } mat = mat->GetNext(); @@ -321,14 +301,12 @@ void C4DImporter::ReadMaterials(melange::BaseMaterial* mat) } // ------------------------------------------------------------------------------------------------ -void C4DImporter::RecurseHierarchy(BaseObject* object, aiNode* parent) -{ - ai_assert(parent != NULL); +void C4DImporter::RecurseHierarchy(BaseObject* object, aiNode* parent) { + ai_assert(parent != nullptr ); std::vector nodes; // based on Melange sample code - while (object) - { + while (object) { const String& name = object->GetName(); const LONG type = object->GetType(); const Matrix& ml = object->GetMl(); @@ -360,26 +338,20 @@ void C4DImporter::RecurseHierarchy(BaseObject* object, aiNode* parent) nodes.push_back(nd); GeData data; - if (type == Ocamera) - { + if (type == Ocamera) { object->GetParameter(CAMERAOBJECT_FOV, data); // TODO: read camera - } - else if (type == Olight) - { + } else if (type == Olight) { // TODO: read light - } - else if (type == Opolygon) - { + } else if (type == Opolygon) { aiMesh* const mesh = ReadMesh(object); - if(mesh != NULL) { + if(mesh != nullptr) { nd->mNumMeshes = 1; nd->mMeshes = new unsigned int[1]; nd->mMeshes[0] = static_cast(meshes.size()); meshes.push_back(mesh); } - } - else { + } else { LogWarn("ignoring object: " + std::string(GetObjectTypeName(type))); } @@ -393,28 +365,27 @@ void C4DImporter::RecurseHierarchy(BaseObject* object, aiNode* parent) std::copy(nodes.begin(), nodes.end(), parent->mChildren); } - // ------------------------------------------------------------------------------------------------ -aiMesh* C4DImporter::ReadMesh(BaseObject* object) -{ - ai_assert(object != NULL && object->GetType() == Opolygon); +aiMesh* C4DImporter::ReadMesh(BaseObject* object) { + ai_assert(object != nullptr); + ai_assert( object->GetType() == Opolygon ); // based on Melange sample code PolygonObject* const polyObject = dynamic_cast(object); - ai_assert(polyObject != NULL); + ai_assert(polyObject != nullptr); const LONG pointCount = polyObject->GetPointCount(); const LONG polyCount = polyObject->GetPolygonCount(); if(!polyObject || !pointCount) { LogWarn("ignoring mesh with zero vertices or faces"); - return NULL; + return nullptr; } const Vector* points = polyObject->GetPointR(); - ai_assert(points != NULL); + ai_assert(points != nullptr); const CPolygon* polys = polyObject->GetPolygonR(); - ai_assert(polys != NULL); + ai_assert(polys != nullptr); std::unique_ptr mesh(new aiMesh()); mesh->mNumFaces = static_cast(polyCount); @@ -447,14 +418,14 @@ aiMesh* C4DImporter::ReadMesh(BaseObject* object) // check if there are normals, tangents or UVW coordinates BaseTag* tag = object->GetTag(Tnormal); - NormalTag* normals_src = NULL; + NormalTag* normals_src = nullptr; if(tag) { normals_src = dynamic_cast(tag); normals = mesh->mNormals = new aiVector3D[mesh->mNumVertices](); } tag = object->GetTag(Ttangent); - TangentTag* tangents_src = NULL; + TangentTag* tangents_src = nullptr; if(tag) { tangents_src = dynamic_cast(tag); tangents = mesh->mTangents = new aiVector3D[mesh->mNumVertices](); @@ -462,15 +433,14 @@ aiMesh* C4DImporter::ReadMesh(BaseObject* object) } tag = object->GetTag(Tuvw); - UVWTag* uvs_src = NULL; + UVWTag* uvs_src = nullptr; if(tag) { uvs_src = dynamic_cast(tag); uvs = mesh->mTextureCoords[0] = new aiVector3D[mesh->mNumVertices](); } // copy vertices and extra channels over and populate faces - for (LONG i = 0; i < polyCount; ++i, ++face) - { + for (LONG i = 0; i < polyCount; ++i, ++face) { ai_assert(polys[i].a < pointCount && polys[i].a >= 0); const Vector& pointA = points[polys[i].a]; verts->x = pointA.x; @@ -493,8 +463,7 @@ aiMesh* C4DImporter::ReadMesh(BaseObject* object) ++verts; // TODO: do we also need to handle lines or points with similar checks? - if (polys[i].c != polys[i].d) - { + if (polys[i].c != polys[i].d) { ai_assert(polys[i].d < pointCount && polys[i].d >= 0); face->mNumIndices = 4; @@ -504,8 +473,7 @@ aiMesh* C4DImporter::ReadMesh(BaseObject* object) verts->y = pointD.y; verts->z = pointD.z; ++verts; - } - else { + } else { face->mNumIndices = 3; } face->mIndices = new unsigned int[face->mNumIndices]; @@ -517,8 +485,7 @@ aiMesh* C4DImporter::ReadMesh(BaseObject* object) if (normals_src) { if(i >= normals_src->GetDataCount()) { LogError("unexpected number of normals, ignoring"); - } - else { + } else { ConstNormalHandle normal_handle = normals_src->GetDataAddressR(); NormalStruct nor; NormalTag::Get(normal_handle, i, nor); @@ -620,26 +587,25 @@ aiMesh* C4DImporter::ReadMesh(BaseObject* object) } mesh->mMaterialIndex = ResolveMaterial(polyObject); + return mesh.release(); } - // ------------------------------------------------------------------------------------------------ -unsigned int C4DImporter::ResolveMaterial(PolygonObject* obj) -{ - ai_assert(obj != NULL); +unsigned int C4DImporter::ResolveMaterial(PolygonObject* obj) { + ai_assert(obj != nullptr); const unsigned int mat_count = static_cast(materials.size()); BaseTag* tag = obj->GetTag(Ttexture); - if(tag == NULL) { + if(tag == nullptr) { return mat_count; } TextureTag& ttag = dynamic_cast(*tag); BaseMaterial* const mat = ttag.GetMaterial(); - ai_assert(mat != NULL); + ai_assert(mat != nullptr); const MaterialMap::const_iterator it = material_mapping.find(mat); if(it == material_mapping.end()) { @@ -647,6 +613,7 @@ unsigned int C4DImporter::ResolveMaterial(PolygonObject* obj) } ai_assert((*it).second < mat_count); + return (*it).second; } diff --git a/code/C4DImporter.h b/code/C4DImporter.h index 95ac56b03..f3b1351f6 100644 --- a/code/C4DImporter.h +++ b/code/C4DImporter.h @@ -2,7 +2,7 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2012, assimp team +Copyright (c) 2006-2019, assimp team All rights reserved. Redistribution and use of this software in source and binary forms, @@ -48,6 +48,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include + +// Forward declarations struct aiNode; struct aiMesh; struct aiMaterial; @@ -61,8 +63,7 @@ namespace melange { class BaseShader; } -namespace Assimp { - +namespace Assimp { // TinyFormatter.h namespace Formatter { template class basic_formatter; @@ -75,8 +76,7 @@ namespace Assimp { * * Note that Melange is not free software. */ // ------------------------------------------------------------------------------------------- -class C4DImporter : public BaseImporter, public LogFunctions -{ +class C4DImporter : public BaseImporter, public LogFunctions { public: C4DImporter(); ~C4DImporter(); From 6d1514dd1005fcb7176ae2241e4afd945e975c2d Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Wed, 3 Apr 2019 20:19:44 +0200 Subject: [PATCH 093/187] replaced "typedef" with "using" (I didn't notice Kim Kulling's previous commit until now) --- code/FBXConverter.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/FBXConverter.h b/code/FBXConverter.h index 162cf6e94..50637468b 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -443,10 +443,10 @@ private: NodeAnimBitMap node_anim_chain_bits; // number of nodes with the same name - typedef std::unordered_map NodeAnimNameMap; + using NodeAnimNameMap = std::unordered_map; NodeAnimNameMap mNodeNameInstances; - typedef std::unordered_set NodeNameCache; + using NodeNameCache = std::unordered_set; NodeNameCache mNodeNames; double anim_fps; From 20acce1c5ef55cd94cd078388ee2d9bdfcb375d4 Mon Sep 17 00:00:00 2001 From: Matias Date: Thu, 4 Apr 2019 16:31:34 +0200 Subject: [PATCH 094/187] Suggested fix for issue : If available, use "Scaling" and "Translation" instead of "ModelUVScaling" and "ModelUVTranslation". This seems to be what 3DS Max and FBX SDK use. --- code/FBXMaterial.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/FBXMaterial.cpp b/code/FBXMaterial.cpp index f5f6fda03..fa3778d67 100644 --- a/code/FBXMaterial.cpp +++ b/code/FBXMaterial.cpp @@ -206,6 +206,20 @@ Texture::Texture(uint64_t id, const Element& element, const Document& doc, const props = GetPropertyTable(doc,"Texture.FbxFileTexture",element,sc); + // 3DS Max and FBX SDK use "Scaling" and "Translation" instead of "ModelUVScaling" and "ModelUVTranslation". Use these properties if available. + bool ok; + const aiVector3D& scaling = PropertyGet(*props, "Scaling", ok); + if (ok) { + uvScaling.x = scaling.x; + uvScaling.y = scaling.y; + } + + const aiVector3D& trans = PropertyGet(*props, "Translation", ok); + if (ok) { + uvTrans.x = trans.x; + uvTrans.y = trans.y; + } + // resolve video links if(doc.Settings().readTextures) { const std::vector& conns = doc.GetConnectionsByDestinationSequenced(ID()); From c321fb6a4445efc8e92da6272e857bc219ddab9b Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 6 Apr 2019 08:59:30 +0200 Subject: [PATCH 095/187] Update FBXConverter.cpp FBX: Add missind initializers. --- code/FBXConverter.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 7eaba02c0..09ae06a64 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -78,6 +78,16 @@ namespace Assimp { FBXConverter::FBXConverter(aiScene* out, const Document& doc) : defaultMaterialIndex() + , lights() + , cameras() + , textures() + , materials_converted() + , textures_converted() + , meshes_converted() + , node_anim_chain_bits() + , mNodeNameInstances() + , mNodeNames() + , anim_fps() , out(out) , doc(doc) { // animations need to be converted first since this will From b3177a2a9a8c3f1455d3894490f7afc7b933db72 Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Sat, 6 Apr 2019 19:31:56 +0200 Subject: [PATCH 096/187] issue 1957: Added support for reading embedded content (textures) in ASCII FBX. In ASCII FBX embedded content is encoded in Base64 and is surrounded by double quotation marks. The decoding functions are based on those used in the glTF importer. --- code/FBXMaterial.cpp | 18 +++++++++++++++++- code/FBXUtil.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ code/FBXUtil.h | 14 ++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) diff --git a/code/FBXMaterial.cpp b/code/FBXMaterial.cpp index f5f6fda03..1b05673f4 100644 --- a/code/FBXMaterial.cpp +++ b/code/FBXMaterial.cpp @@ -55,6 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include // std::transform +#include "FBXUtil.h" namespace Assimp { namespace FBX { @@ -307,7 +308,22 @@ Video::Video(uint64_t id, const Element& element, const Document& doc, const std const Token& token = GetRequiredToken(*Content, 0); const char* data = token.begin(); if (!token.IsBinary()) { - DOMWarning("video content is not binary data, ignoring", &element); + if (*data != '"') { + DOMError("embedded content is not surrounded by quotation marks", &element); + } + else { + const char* encodedData = data + 1; + size_t encodedDataLen = static_cast(token.end() - token.begin()); + // search for last quotation mark + while (encodedDataLen > 1 && encodedData[encodedDataLen] != '"') + encodedDataLen--; + if (encodedDataLen % 4 != 0) { + DOMError("embedded content is invalid, needs to be in base64", &element); + } + else { + contentLength = Util::DecodeBase64(encodedData, encodedDataLen, content); + } + } } else if (static_cast(token.end() - data) < 5) { DOMError("binary data array is too short, need five (5) bytes for type signature and element count", &element); diff --git a/code/FBXUtil.cpp b/code/FBXUtil.cpp index c184c4a00..1a9bea914 100644 --- a/code/FBXUtil.cpp +++ b/code/FBXUtil.cpp @@ -113,6 +113,49 @@ std::string AddTokenText(const std::string& prefix, const std::string& text, con text) ); } +static const uint8_t base64DecodeTable[128] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 64, 0, 0, + 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, + 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0 +}; + +uint8_t DecodeBase64(char ch) +{ + return base64DecodeTable[ch]; +} + +size_t DecodeBase64(const char* in, size_t inLength, uint8_t*& out) +{ + if (inLength < 4) { + out = 0; + return 0; + } + + const size_t outLength = (inLength * 3) / 4; + out = new uint8_t[outLength]; + memset(out, 0, outLength); + + size_t i = 0; + size_t j = 0; + for (i = 0; i < inLength - 4; i += 4) + { + uint8_t b0 = Util::DecodeBase64(in[i]); + uint8_t b1 = Util::DecodeBase64(in[i + 1]); + uint8_t b2 = Util::DecodeBase64(in[i + 2]); + uint8_t b3 = Util::DecodeBase64(in[i + 3]); + + out[j++] = (uint8_t)((b0 << 2) | (b1 >> 4)); + out[j++] = (uint8_t)((b1 << 4) | (b2 >> 2)); + out[j++] = (uint8_t)((b2 << 6) | b3); + } + return outLength; +} + } // !Util } // !FBX } // !Assimp diff --git a/code/FBXUtil.h b/code/FBXUtil.h index 1a37d346b..2b19b9e4f 100644 --- a/code/FBXUtil.h +++ b/code/FBXUtil.h @@ -98,6 +98,20 @@ std::string AddLineAndColumn(const std::string& prefix, const std::string& text, * @return A string of the following format: {prefix} ({token-type}, line {line}, col {column}) {text}*/ std::string AddTokenText(const std::string& prefix, const std::string& text, const Token* tok); +/** Decode a single Base64-encoded character. +* +* @param ch Character to decode (from base64 to binary). +* @return decoded byte value*/ +uint8_t DecodeBase64(char ch); + +/** Decode a Base64-encoded string +* +* @param in Characters to decode. +* @param inLength Number of characters to decode. +* @param out Reference to pointer where we will store the decoded data. +* @return size of the decoded data (number of bytes)*/ +size_t DecodeBase64(const char* in, size_t inLength, uint8_t*& out); + } } } From fac392d6cbb1e53a73c3906ca95460d7e42a8fe3 Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Sat, 6 Apr 2019 23:44:14 +0200 Subject: [PATCH 097/187] Added missing include and fixed a mistake --- code/FBXUtil.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/FBXUtil.cpp b/code/FBXUtil.cpp index 1a9bea914..fb483161b 100644 --- a/code/FBXUtil.cpp +++ b/code/FBXUtil.cpp @@ -49,6 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -126,7 +127,7 @@ static const uint8_t base64DecodeTable[128] = { uint8_t DecodeBase64(char ch) { - return base64DecodeTable[ch]; + return base64DecodeTable[size_t(ch)]; } size_t DecodeBase64(const char* in, size_t inLength, uint8_t*& out) From ddfc140fc3e0b31dfcac5e4df5397ce48ff538eb Mon Sep 17 00:00:00 2001 From: Matias Lavik Date: Sun, 7 Apr 2019 00:02:22 +0200 Subject: [PATCH 098/187] Added -include --- code/FBXUtil.h | 1 + 1 file changed, 1 insertion(+) diff --git a/code/FBXUtil.h b/code/FBXUtil.h index 2b19b9e4f..6890e015b 100644 --- a/code/FBXUtil.h +++ b/code/FBXUtil.h @@ -48,6 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXCompileConfig.h" #include "FBXTokenizer.h" +#include namespace Assimp { namespace FBX { From 37357515fafef0aa4d6711690ceaaceb826d5c15 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 8 Apr 2019 12:49:07 +0200 Subject: [PATCH 099/187] Update irrXML.h FIx export directive for linux. --- contrib/irrXML/irrXML.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/irrXML/irrXML.h b/contrib/irrXML/irrXML.h index 5aa19e4a7..d596ec062 100644 --- a/contrib/irrXML/irrXML.h +++ b/contrib/irrXML/irrXML.h @@ -8,9 +8,9 @@ #include #ifdef _WIN32 -# define IRRXML_API __declspec(dllexport) +# define IRRXML_API __declspec(dllexport) #else -# define IRRXML_API +# define IRRXML_API __attribute__ ((visibility("default"))) #endif // _WIN32 /** \mainpage irrXML 1.2 API documentation From 79f62b017499132235305a32953e91a2d167ce73 Mon Sep 17 00:00:00 2001 From: kimkulling Date: Mon, 8 Apr 2019 14:24:33 +0200 Subject: [PATCH 100/187] closes https://github.com/assimp/assimp/issues/2336: use new cmp_048 policy even for zlib in the assimp build. --- contrib/zlib/CMakeLists.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/contrib/zlib/CMakeLists.txt b/contrib/zlib/CMakeLists.txt index 5f1368adb..9d1fcc943 100644 --- a/contrib/zlib/CMakeLists.txt +++ b/contrib/zlib/CMakeLists.txt @@ -5,12 +5,17 @@ set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) # See http://www.cmake.org/cmake/help/v3.0/policy/CMP0048.html cmake_policy(PUSH) if(CMAKE_MAJOR_VERSION GREATER 2) - cmake_policy(SET CMP0048 OLD) + cmake_policy(SET CMP0048 NEW) endif() project(zlib C) +SET (ZLIB_VERSION_MAJOR 1) +SET (ZLIB_VERSION_MINOR 2) +SET (ZLIB_VERSION_PATCH 11) +SET (ZLIB_VERSION ${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}) +SET (ZLIB_SOVERSION 1) +SET (PROJECT_VERSION "${ZLIB_VERSION}") cmake_policy(POP) -set(VERSION "1.2.11.1") option(ASM686 "Enable building i686 assembly implementation") option(AMD64 "Enable building amd64 assembly implementation") From cbd8b032e79e9f42a553a292f8111d6f732c987a Mon Sep 17 00:00:00 2001 From: kimkulling Date: Mon, 8 Apr 2019 17:37:40 +0200 Subject: [PATCH 101/187] FBX: add test case --- code/FBXConverter.cpp | 26 +- test/models/FBX/embedded_ascii/box.FBX | 490 +++++++++++++++++++++++++ test/models/PLY/cube_test.ply | 2 +- test/unit/utColladaExportCamera.cpp | 22 +- test/unit/utFBXImporterExporter.cpp | 15 + 5 files changed, 528 insertions(+), 27 deletions(-) create mode 100644 test/models/FBX/embedded_ascii/box.FBX diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 09ae06a64..0abfdafdc 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -77,19 +77,19 @@ namespace Assimp { #define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000L FBXConverter::FBXConverter(aiScene* out, const Document& doc) - : defaultMaterialIndex() - , lights() - , cameras() - , textures() - , materials_converted() - , textures_converted() - , meshes_converted() - , node_anim_chain_bits() - , mNodeNameInstances() - , mNodeNames() - , anim_fps() - , out(out) - , doc(doc) { + : defaultMaterialIndex() + , lights() + , cameras() + , textures() + , materials_converted() + , textures_converted() + , meshes_converted() + , node_anim_chain_bits() + , mNodeNameInstances() + , mNodeNames() + , anim_fps() + , out(out) + , doc(doc) { // animations need to be converted first since this will // populate the node_anim_chain_bits map, which is needed // to determine which nodes need to be generated. diff --git a/test/models/FBX/embedded_ascii/box.FBX b/test/models/FBX/embedded_ascii/box.FBX new file mode 100644 index 000000000..424dd736a --- /dev/null +++ b/test/models/FBX/embedded_ascii/box.FBX @@ -0,0 +1,490 @@ +; FBX 7.4.0 project file +; ---------------------------------------------------- + +FBXHeaderExtension: { + FBXHeaderVersion: 1003 + FBXVersion: 7400 + CreationTimeStamp: { + Version: 1000 + Year: 2019 + Month: 3 + Day: 29 + Hour: 16 + Minute: 20 + Second: 29 + Millisecond: 0 + } + Creator: "FBX SDK/FBX Plugins version 2018.1" + SceneInfo: "SceneInfo::GlobalInfo", "UserData" { + Type: "UserData" + Version: 100 + MetaData: { + Version: 100 + Title: "" + Subject: "" + Author: "" + Keywords: "" + Revision: "" + Comment: "" + } + Properties70: { + P: "DocumentUrl", "KString", "Url", "", "C:\Users\HTC Vive 1\Documents\3dsMax\export\box_with_embeded_texture_for_matias.FBX" + P: "SrcDocumentUrl", "KString", "Url", "", "C:\Users\HTC Vive 1\Documents\3dsMax\export\box_with_embeded_texture_for_matias.FBX" + P: "Original", "Compound", "", "" + P: "Original|ApplicationVendor", "KString", "", "", "Autodesk" + P: "Original|ApplicationName", "KString", "", "", "3ds Max" + P: "Original|ApplicationVersion", "KString", "", "", "2018" + P: "Original|DateTime_GMT", "DateTime", "", "", "29/03/2019 15:20:28.999" + P: "Original|FileName", "KString", "", "", "C:\Users\HTC Vive 1\Documents\3dsMax\export\box_with_embeded_texture_for_matias.FBX" + P: "LastSaved", "Compound", "", "" + P: "LastSaved|ApplicationVendor", "KString", "", "", "Autodesk" + P: "LastSaved|ApplicationName", "KString", "", "", "3ds Max" + P: "LastSaved|ApplicationVersion", "KString", "", "", "2018" + P: "LastSaved|DateTime_GMT", "DateTime", "", "", "29/03/2019 15:20:28.999" + P: "Original|ApplicationActiveProject", "KString", "", "", "C:\Users\HTC Vive 1\Documents\3dsMax" + } + } +} +GlobalSettings: { + Version: 1000 + Properties70: { + P: "UpAxis", "int", "Integer", "",2 + P: "UpAxisSign", "int", "Integer", "",1 + P: "FrontAxis", "int", "Integer", "",1 + P: "FrontAxisSign", "int", "Integer", "",-1 + P: "CoordAxis", "int", "Integer", "",0 + P: "CoordAxisSign", "int", "Integer", "",1 + P: "OriginalUpAxis", "int", "Integer", "",2 + P: "OriginalUpAxisSign", "int", "Integer", "",1 + P: "UnitScaleFactor", "double", "Number", "",100 + P: "OriginalUnitScaleFactor", "double", "Number", "",2.54 + P: "AmbientColor", "ColorRGB", "Color", "",0,0,0 + P: "DefaultCamera", "KString", "", "", "Producer Perspective" + P: "TimeMode", "enum", "", "",6 + P: "TimeProtocol", "enum", "", "",2 + P: "SnapOnFrameMode", "enum", "", "",0 + P: "TimeSpanStart", "KTime", "Time", "",0 + P: "TimeSpanStop", "KTime", "Time", "",153953860000 + P: "CustomFrameRate", "double", "Number", "",-1 + P: "TimeMarker", "Compound", "", "" + P: "CurrentTimeMarker", "int", "Integer", "",-1 + } +} + +; Documents Description +;------------------------------------------------------------------ + +Documents: { + Count: 1 + Document: 2671589736064, "", "Scene" { + Properties70: { + P: "SourceObject", "object", "", "" + P: "ActiveAnimStackName", "KString", "", "", "" + } + RootNode: 0 + } +} + +; Document References +;------------------------------------------------------------------ + +References: { +} + +; Object definitions +;------------------------------------------------------------------ + +Definitions: { + Version: 100 + Count: 7 + ObjectType: "GlobalSettings" { + Count: 1 + } + ObjectType: "AnimationStack" { + Count: 1 + PropertyTemplate: "FbxAnimStack" { + Properties70: { + P: "Description", "KString", "", "", "" + P: "LocalStart", "KTime", "Time", "",0 + P: "LocalStop", "KTime", "Time", "",0 + P: "ReferenceStart", "KTime", "Time", "",0 + P: "ReferenceStop", "KTime", "Time", "",0 + } + } + } + ObjectType: "Model" { + Count: 1 + PropertyTemplate: "FbxNode" { + Properties70: { + P: "QuaternionInterpolate", "enum", "", "",0 + P: "RotationOffset", "Vector3D", "Vector", "",0,0,0 + P: "RotationPivot", "Vector3D", "Vector", "",0,0,0 + P: "ScalingOffset", "Vector3D", "Vector", "",0,0,0 + P: "ScalingPivot", "Vector3D", "Vector", "",0,0,0 + P: "TranslationActive", "bool", "", "",0 + P: "TranslationMin", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMax", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMinX", "bool", "", "",0 + P: "TranslationMinY", "bool", "", "",0 + P: "TranslationMinZ", "bool", "", "",0 + P: "TranslationMaxX", "bool", "", "",0 + P: "TranslationMaxY", "bool", "", "",0 + P: "TranslationMaxZ", "bool", "", "",0 + P: "RotationOrder", "enum", "", "",0 + P: "RotationSpaceForLimitOnly", "bool", "", "",0 + P: "RotationStiffnessX", "double", "Number", "",0 + P: "RotationStiffnessY", "double", "Number", "",0 + P: "RotationStiffnessZ", "double", "Number", "",0 + P: "AxisLen", "double", "Number", "",10 + P: "PreRotation", "Vector3D", "Vector", "",0,0,0 + P: "PostRotation", "Vector3D", "Vector", "",0,0,0 + P: "RotationActive", "bool", "", "",0 + P: "RotationMin", "Vector3D", "Vector", "",0,0,0 + P: "RotationMax", "Vector3D", "Vector", "",0,0,0 + P: "RotationMinX", "bool", "", "",0 + P: "RotationMinY", "bool", "", "",0 + P: "RotationMinZ", "bool", "", "",0 + P: "RotationMaxX", "bool", "", "",0 + P: "RotationMaxY", "bool", "", "",0 + P: "RotationMaxZ", "bool", "", "",0 + P: "InheritType", "enum", "", "",0 + P: "ScalingActive", "bool", "", "",0 + P: "ScalingMin", "Vector3D", "Vector", "",0,0,0 + P: "ScalingMax", "Vector3D", "Vector", "",1,1,1 + P: "ScalingMinX", "bool", "", "",0 + P: "ScalingMinY", "bool", "", "",0 + P: "ScalingMinZ", "bool", "", "",0 + P: "ScalingMaxX", "bool", "", "",0 + P: "ScalingMaxY", "bool", "", "",0 + P: "ScalingMaxZ", "bool", "", "",0 + P: "GeometricTranslation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricRotation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricScaling", "Vector3D", "Vector", "",1,1,1 + P: "MinDampRangeX", "double", "Number", "",0 + P: "MinDampRangeY", "double", "Number", "",0 + P: "MinDampRangeZ", "double", "Number", "",0 + P: "MaxDampRangeX", "double", "Number", "",0 + P: "MaxDampRangeY", "double", "Number", "",0 + P: "MaxDampRangeZ", "double", "Number", "",0 + P: "MinDampStrengthX", "double", "Number", "",0 + P: "MinDampStrengthY", "double", "Number", "",0 + P: "MinDampStrengthZ", "double", "Number", "",0 + P: "MaxDampStrengthX", "double", "Number", "",0 + P: "MaxDampStrengthY", "double", "Number", "",0 + P: "MaxDampStrengthZ", "double", "Number", "",0 + P: "PreferedAngleX", "double", "Number", "",0 + P: "PreferedAngleY", "double", "Number", "",0 + P: "PreferedAngleZ", "double", "Number", "",0 + P: "LookAtProperty", "object", "", "" + P: "UpVectorProperty", "object", "", "" + P: "Show", "bool", "", "",1 + P: "NegativePercentShapeSupport", "bool", "", "",1 + P: "DefaultAttributeIndex", "int", "Integer", "",-1 + P: "Freeze", "bool", "", "",0 + P: "LODBox", "bool", "", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",0,0,0 + P: "Lcl Rotation", "Lcl Rotation", "", "A",0,0,0 + P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1 + P: "Visibility", "Visibility", "", "A",1 + P: "Visibility Inheritance", "Visibility Inheritance", "", "",1 + } + } + } + ObjectType: "Geometry" { + Count: 1 + PropertyTemplate: "FbxMesh" { + Properties70: { + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BBoxMin", "Vector3D", "Vector", "",0,0,0 + P: "BBoxMax", "Vector3D", "Vector", "",0,0,0 + P: "Primary Visibility", "bool", "", "",1 + P: "Casts Shadows", "bool", "", "",1 + P: "Receive Shadows", "bool", "", "",1 + } + } + } + ObjectType: "Material" { + Count: 1 + PropertyTemplate: "FbxSurfacePhong" { + Properties70: { + P: "ShadingModel", "KString", "", "", "Phong" + P: "MultiLayer", "bool", "", "",0 + P: "EmissiveColor", "Color", "", "A",0,0,0 + P: "EmissiveFactor", "Number", "", "A",1 + P: "AmbientColor", "Color", "", "A",0.2,0.2,0.2 + P: "AmbientFactor", "Number", "", "A",1 + P: "DiffuseColor", "Color", "", "A",0.8,0.8,0.8 + P: "DiffuseFactor", "Number", "", "A",1 + P: "Bump", "Vector3D", "Vector", "",0,0,0 + P: "NormalMap", "Vector3D", "Vector", "",0,0,0 + P: "BumpFactor", "double", "Number", "",1 + P: "TransparentColor", "Color", "", "A",0,0,0 + P: "TransparencyFactor", "Number", "", "A",0 + P: "DisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "DisplacementFactor", "double", "Number", "",1 + P: "VectorDisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "VectorDisplacementFactor", "double", "Number", "",1 + P: "SpecularColor", "Color", "", "A",0.2,0.2,0.2 + P: "SpecularFactor", "Number", "", "A",1 + P: "ShininessExponent", "Number", "", "A",20 + P: "ReflectionColor", "Color", "", "A",0,0,0 + P: "ReflectionFactor", "Number", "", "A",1 + } + } + } + ObjectType: "Texture" { + Count: 1 + PropertyTemplate: "FbxFileTexture" { + Properties70: { + P: "TextureTypeUse", "enum", "", "",0 + P: "Texture alpha", "Number", "", "A",1 + P: "CurrentMappingType", "enum", "", "",0 + P: "WrapModeU", "enum", "", "",0 + P: "WrapModeV", "enum", "", "",0 + P: "UVSwap", "bool", "", "",0 + P: "PremultiplyAlpha", "bool", "", "",1 + P: "Translation", "Vector", "", "A",0,0,0 + P: "Rotation", "Vector", "", "A",0,0,0 + P: "Scaling", "Vector", "", "A",1,1,1 + P: "TextureRotationPivot", "Vector3D", "Vector", "",0,0,0 + P: "TextureScalingPivot", "Vector3D", "Vector", "",0,0,0 + P: "CurrentTextureBlendMode", "enum", "", "",1 + P: "UVSet", "KString", "", "", "default" + P: "UseMaterial", "bool", "", "",0 + P: "UseMipMap", "bool", "", "",0 + } + } + } + ObjectType: "Video" { + Count: 1 + PropertyTemplate: "FbxVideo" { + Properties70: { + P: "Path", "KString", "XRefUrl", "", "" + P: "RelPath", "KString", "XRefUrl", "", "" + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "ClipIn", "KTime", "Time", "",0 + P: "ClipOut", "KTime", "Time", "",0 + P: "Offset", "KTime", "Time", "",0 + P: "PlaySpeed", "double", "Number", "",0 + P: "FreeRunning", "bool", "", "",0 + P: "Loop", "bool", "", "",0 + P: "Mute", "bool", "", "",0 + P: "AccessMode", "enum", "", "",0 + P: "ImageSequence", "bool", "", "",0 + P: "ImageSequenceOffset", "int", "Integer", "",0 + P: "FrameRate", "double", "Number", "",0 + P: "LastFrame", "int", "Integer", "",0 + P: "Width", "int", "Integer", "",0 + P: "Height", "int", "Integer", "",0 + P: "StartFrame", "int", "Integer", "",0 + P: "StopFrame", "int", "Integer", "",0 + P: "InterlaceMode", "enum", "", "",0 + } + } + } +} + +; Object properties +;------------------------------------------------------------------ + +Objects: { + Geometry: 2671579482576, "Geometry::", "Mesh" { + Properties70: { + P: "Color", "ColorRGB", "Color", "",0.603921568627451,0.603921568627451,0.898039215686275 + } + Vertices: *24 { + a: -23.6220474243164,-23.6220474243164,0,23.6220474243164,-23.6220474243164,0,-23.6220474243164,23.6220474243164,0,23.6220474243164,23.6220474243164,0,-23.6220474243164,-23.6220474243164,47.2440948486328,23.6220474243164,-23.6220474243164,47.2440948486328,-23.6220474243164,23.6220474243164,47.2440948486328,23.6220474243164,23.6220474243164,47.2440948486328 + } + PolygonVertexIndex: *24 { + a: 0,2,3,-2,4,5,7,-7,0,1,5,-5,1,3,7,-6,3,2,6,-8,2,0,4,-7 + } + Edges: *12 { + a: 0,1,2,3,4,5,6,7,9,11,13,17 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "UVChannel_1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "UVChannel_1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: -1,-0,0,-1,-0,0,-1,-0,0,-1,-0,0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "UVChannel_1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *48 { + a: 1,0,0,0,1,1,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1 + } + UVIndex: *24 { + a: 0,2,3,1,4,5,7,6,8,9,11,10,12,13,15,14,16,17,19,18,20,21,23,22 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygon" + ReferenceInformationType: "Direct" + Smoothing: *6 { + a: 2,4,8,16,32,64 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Model: 2672936127584, "Model::Box001", "Mesh" { + Version: 232 + Properties70: { + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",0.000114116096496582,0,0 + P: "Lcl Scaling", "Lcl Scaling", "", "A",0.0254,0.0254,0.0254 + P: "MaxHandle", "int", "Integer", "UH",1 + } + Shading: T + Culling: "CullingOff" + } + Material: 2669981279872, "Material::03 - Default", "" { + Version: 102 + ShadingModel: "phong" + MultiLayer: 0 + Properties70: { + P: "ShadingModel", "KString", "", "", "phong" + P: "EmissiveFactor", "Number", "", "A",0 + P: "AmbientColor", "Color", "", "A",0.588235318660736,0.588235318660736,0.588235318660736 + P: "DiffuseColor", "Color", "", "A",0.588235318660736,0.588235318660736,0.588235318660736 + P: "TransparentColor", "Color", "", "A",1,1,1 + P: "SpecularColor", "Color", "", "A",0.899999976158142,0.899999976158142,0.899999976158142 + P: "SpecularFactor", "Number", "", "A",0 + P: "ShininessExponent", "Number", "", "A",1.99999988079071 + P: "Emissive", "Vector3D", "Vector", "",0,0,0 + P: "Ambient", "Vector3D", "Vector", "",0.588235318660736,0.588235318660736,0.588235318660736 + P: "Diffuse", "Vector3D", "Vector", "",0.588235318660736,0.588235318660736,0.588235318660736 + P: "Specular", "Vector3D", "Vector", "",0,0,0 + P: "Shininess", "double", "Number", "",1.99999988079071 + P: "Opacity", "double", "Number", "",1 + P: "Reflectivity", "double", "Number", "",0 + } + } + Video: 2669981292352, "Video::Map #7", "Clip" { + Type: "Clip" + Properties70: { + P: "Path", "KString", "XRefUrl", "", "C:\Users\HTC Vive 1\Desktop\uv_test.png" + P: "RelPath", "KString", "XRefUrl", "", "..\..\..\Desktop\uv_test.png" + } + UseMipMap: 0 + Filename: "C:\Users\HTC Vive 1\Desktop\uv_test.png" + RelativeFilename: "..\..\..\Desktop\uv_test.png" + Content: , + "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" + } + Texture: 2669981291872, "Texture::Map #7", "" { + Type: "TextureVideoClip" + Version: 202 + TextureName: "Texture::Map #7" + Properties70: { + P: "UVSet", "KString", "", "", "UVChannel_1" + P: "UseMaterial", "bool", "", "",1 + } + Media: "Video::Map #7" + FileName: "C:\Users\HTC Vive 1\Desktop\uv_test.png" + RelativeFilename: "..\..\..\Desktop\uv_test.png" + ModelUVTranslation: 0,0 + ModelUVScaling: 1,1 + Texture_Alpha_Source: "None" + Cropping: 0,0,0,0 + } + AnimationStack: 2669472506272, "AnimStack::Take 001", "" { + Properties70: { + P: "LocalStop", "KTime", "Time", "",153953860000 + P: "ReferenceStop", "KTime", "Time", "",153953860000 + } + } +} + +; Object connections +;------------------------------------------------------------------ + +Connections: { + + ;Model::Box001, Model::RootNode + C: "OO",2672936127584,0 + + ;Geometry::, Model::Box001 + C: "OO",2671579482576,2672936127584 + + ;Material::03 - Default, Model::Box001 + C: "OO",2669981279872,2672936127584 + + ;Texture::Map #7, Material::03 - Default + C: "OP",2669981291872,2669981279872, "DiffuseColor" + + ;Video::Map #7, Texture::Map #7 + C: "OO",2669981292352,2669981291872 +} diff --git a/test/models/PLY/cube_test.ply b/test/models/PLY/cube_test.ply index 0266df0ee..6ec6d3991 100644 --- a/test/models/PLY/cube_test.ply +++ b/test/models/PLY/cube_test.ply @@ -1,6 +1,6 @@ ply format ascii 1.0 -comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.4208963464) +comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.412856994) element vertex 8 property float x property float y diff --git a/test/unit/utColladaExportCamera.cpp b/test/unit/utColladaExportCamera.cpp index 3c7412e0b..ea61a5b34 100644 --- a/test/unit/utColladaExportCamera.cpp +++ b/test/unit/utColladaExportCamera.cpp @@ -52,18 +52,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. class ColladaExportCamera : public ::testing::Test { public: - - virtual void SetUp() - { + void SetUp() override{ ex = new Assimp::Exporter(); im = new Assimp::Importer(); } - virtual void TearDown() - { + void TearDown() { delete ex; + ex = nullptr; delete im; + im = nullptr; } protected: @@ -71,16 +70,15 @@ protected: Assimp::Importer* im; }; -TEST_F(ColladaExportCamera, testExportCamera) -{ +TEST_F(ColladaExportCamera, testExportCamera) { const char* file = "cameraExp.dae"; const aiScene* pTest = im->ReadFile(ASSIMP_TEST_MODELS_DIR "/Collada/cameras.dae", aiProcess_ValidateDataStructure); - ASSERT_TRUE(pTest!=NULL); + ASSERT_NE( nullptr, pTest ); ASSERT_TRUE(pTest->HasCameras()); - EXPECT_EQ(AI_SUCCESS,ex->Export(pTest,"collada",file)); + EXPECT_EQ( AI_SUCCESS, ex->Export(pTest,"collada",file)); const unsigned int origNumCams( pTest->mNumCameras ); std::unique_ptr origFOV( new float[ origNumCams ] ); std::unique_ptr orifClipPlaneNear( new float[ origNumCams ] ); @@ -89,7 +87,7 @@ TEST_F(ColladaExportCamera, testExportCamera) std::unique_ptr pos( new aiVector3D[ origNumCams ] ); for (size_t i = 0; i < origNumCams; i++) { const aiCamera *orig = pTest->mCameras[ i ]; - ASSERT_TRUE( orig != nullptr ); + ASSERT_NE(nullptr, orig ); origFOV[ i ] = orig->mHorizontalFOV; orifClipPlaneNear[ i ] = orig->mClipPlaneNear; @@ -99,7 +97,7 @@ TEST_F(ColladaExportCamera, testExportCamera) } const aiScene* imported = im->ReadFile(file, aiProcess_ValidateDataStructure); - ASSERT_TRUE(imported!=NULL); + ASSERT_NE(nullptr, imported ); EXPECT_TRUE( imported->HasCameras() ); EXPECT_EQ( origNumCams, imported->mNumCameras ); @@ -119,5 +117,3 @@ TEST_F(ColladaExportCamera, testExportCamera) } #endif // ASSIMP_BUILD_NO_EXPORT - - diff --git a/test/unit/utFBXImporterExporter.cpp b/test/unit/utFBXImporterExporter.cpp index 5aca810a0..f0de0c741 100644 --- a/test/unit/utFBXImporterExporter.cpp +++ b/test/unit/utFBXImporterExporter.cpp @@ -114,3 +114,18 @@ TEST_F(utFBXImporterExporter, importUnitScaleFactor) { scene->mMetaData->Get("UnitScaleFactor", factor); EXPECT_DOUBLE_EQ(500.0, factor); } + +TEST_F(utFBXImporterExporter, importEmbeddedAsciiTest) { + // see https://github.com/assimp/assimp/issues/1957 + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/FBX/embedded_ascii/box.FBX", aiProcess_ValidateDataStructure); + EXPECT_NE(nullptr, scene); + + EXPECT_EQ(1, scene->mNumMaterials); + aiMaterial *mat = scene->mMaterials[0]; + ASSERT_NE(nullptr, mat); + + aiString path; + aiTextureMapMode modes[2]; + EXPECT_EQ(aiReturn_SUCCESS, mat->GetTexture(aiTextureType_DIFFUSE, 0, &path, nullptr, nullptr, nullptr, nullptr, modes)); +} From d66166675a5845d8be78f7b8c42c00bb519df9d5 Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Mon, 8 Apr 2019 17:11:50 +0100 Subject: [PATCH 102/187] first pass at collada metadata --- code/ColladaLoader.cpp | 6 ++++++ code/ColladaParser.cpp | 17 +++++++++++++++-- code/ColladaParser.h | 3 +++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 6837dca4a..47a40f5d9 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -207,6 +207,12 @@ void ColladaLoader::InternReadFile( const std::string& pFile, aiScene* pScene, I 0, 0, 0, 1); } + // Store scene metadata + for (auto it = parser.mAssetMetaData.cbegin(); it != parser.mAssetMetaData.cend(); ++it) + { + pScene->mMetaData->Add((*it).first, (*it).second); + } + // store all meshes StoreSceneMeshes( pScene); diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index 0fa59362b..c38d18283 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -264,9 +264,22 @@ void ColladaParser::ReadAssetInfo() // check element end TestClosing( "up_axis"); - } else + } + else if(IsElement("contributor")) { - SkipElement(); + // This has no data of its own, will get children next time through + } + else + { + const char* metadata_key = mReader->getNodeName(); + const char* metadata_value = TestTextContent(); + if (metadata_key != nullptr && metadata_value != nullptr) + { + aiString aistr; + aistr.Set(metadata_value); + mAssetMetaData.emplace(metadata_key, aistr); + } + //SkipElement(); } } else if( mReader->getNodeType() == irr::io::EXN_ELEMENT_END) diff --git a/code/ColladaParser.h b/code/ColladaParser.h index 232d85654..9fdca86c8 100644 --- a/code/ColladaParser.h +++ b/code/ColladaParser.h @@ -343,6 +343,9 @@ namespace Assimp /** Which is the up vector */ enum { UP_X, UP_Y, UP_Z } mUpDirection; + typedef std::map AssetMetaData; + AssetMetaData mAssetMetaData; + /** Collada file format version */ Collada::FormatVersion mFormat; }; From ef209c6eed697f4dd31cdfd26231574fdd4e5003 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 8 Apr 2019 20:10:11 +0200 Subject: [PATCH 103/187] Update utColladaExportCamera.cpp Add mising override statement. --- test/unit/utColladaExportCamera.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/utColladaExportCamera.cpp b/test/unit/utColladaExportCamera.cpp index ea61a5b34..ff84422e5 100644 --- a/test/unit/utColladaExportCamera.cpp +++ b/test/unit/utColladaExportCamera.cpp @@ -58,7 +58,7 @@ public: } - void TearDown() { + void TearDown() override { delete ex; ex = nullptr; delete im; From dbd0f06d32a3156d42ef7590728adfefa2943623 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 8 Apr 2019 20:21:20 +0200 Subject: [PATCH 104/187] Update CMakeLists.txt Make IrrXml dynamic only on BSD --- contrib/irrXML/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/contrib/irrXML/CMakeLists.txt b/contrib/irrXML/CMakeLists.txt index 56a7c7e6d..7f58af3d8 100644 --- a/contrib/irrXML/CMakeLists.txt +++ b/contrib/irrXML/CMakeLists.txt @@ -13,7 +13,11 @@ if ( MSVC ) ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS ) endif ( MSVC ) -add_library(IrrXML ${IrrXML_SRCS}) +IF(CMAKE_SYSTEM_NAME MATCHES "(Darwin|FreeBSD)") + add_library(IrrXML ${IrrXML_SRCS}) +ELSE() + add_library(IrrXML STATIC ${IrrXML_SRCS}) +ENDIF() set(IRRXML_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "IrrXML_Include" ) set(IRRXML_LIBRARY "IrrXML" CACHE INTERNAL "IrrXML" ) From 1f55bdd9a7ac5e512599bc775793dc4e41adfaa9 Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Tue, 9 Apr 2019 16:28:15 +0100 Subject: [PATCH 105/187] Save/Load Collada 1.4 Root Asset Metadata Add Collada 1.4 metadata to export and import. Can store in the Scene or the Root Node for export, will be loaded into the Scene during Import --- code/ColladaExporter.cpp | 38 ++++++++++++++++-- code/ColladaLoader.cpp | 11 ++++-- code/ColladaParser.cpp | 83 ++++++++++++++++++++++++++++++++++------ code/ColladaParser.h | 16 +++++++- 4 files changed, 128 insertions(+), 20 deletions(-) diff --git a/code/ColladaExporter.cpp b/code/ColladaExporter.cpp index 37a6ba4e0..e7cc6907d 100644 --- a/code/ColladaExporter.cpp +++ b/code/ColladaExporter.cpp @@ -238,7 +238,11 @@ void ColladaExporter::WriteHeader() mOutput << startstr << "" << endstr; PushTag(); - aiMetadata* meta = mScene->mRootNode->mMetaData; + // If no Scene metadata, use root node metadata + aiMetadata* meta = mScene->mMetaData; + if (!meta) + meta = mScene->mRootNode->mMetaData; + aiString value; if (!meta || !meta->Get("Author", value)) mOutput << startstr << "" << "Assimp" << "" << endstr; @@ -250,13 +254,39 @@ void ColladaExporter::WriteHeader() else mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; - //mOutput << startstr << "" << mScene->author.C_Str() << "" << endstr; - //mOutput << startstr << "" << mScene->authoringTool.C_Str() << "" << endstr; + if (meta) + { + if (meta->Get("Comments", value)) + mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + if (meta->Get("Copyright", value)) + mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + if (meta->Get("SourceData", value)) + mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + } PopTag(); mOutput << startstr << "" << endstr; - mOutput << startstr << "" << date_str << "" << endstr; + + if (!meta || !meta->Get("Created", value)) + mOutput << startstr << "" << date_str << "" << endstr; + else + mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + + // Modified date is always the date saved mOutput << startstr << "" << date_str << "" << endstr; + + if (meta) + { + if (meta->Get("Keywords", value)) + mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + if (meta->Get("Revision", value)) + mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + if (meta->Get("Subject", value)) + mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + if (meta->Get("Title", value)) + mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + } + mOutput << startstr << "" << endstr; mOutput << startstr << "" << up_axis << "" << endstr; PopTag(); diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 47a40f5d9..cf548e890 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -208,9 +208,14 @@ void ColladaLoader::InternReadFile( const std::string& pFile, aiScene* pScene, I } // Store scene metadata - for (auto it = parser.mAssetMetaData.cbegin(); it != parser.mAssetMetaData.cend(); ++it) - { - pScene->mMetaData->Add((*it).first, (*it).second); + if (!parser.mAssetMetaData.empty()) { + const size_t numMeta(parser.mAssetMetaData.size()); + pScene->mMetaData = aiMetadata::Alloc(static_cast(numMeta)); + size_t i = 0; + for (auto it = parser.mAssetMetaData.cbegin(); it != parser.mAssetMetaData.cend(); ++it, ++i) + { + pScene->mMetaData->Set(static_cast(i), (*it).first, (*it).second); + } } // store all meshes diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index c38d18283..2106bf01c 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -267,24 +267,16 @@ void ColladaParser::ReadAssetInfo() } else if(IsElement("contributor")) { - // This has no data of its own, will get children next time through + ReadContributorInfo(); } else { - const char* metadata_key = mReader->getNodeName(); - const char* metadata_value = TestTextContent(); - if (metadata_key != nullptr && metadata_value != nullptr) - { - aiString aistr; - aistr.Set(metadata_value); - mAssetMetaData.emplace(metadata_key, aistr); - } - //SkipElement(); + ReadMetaDataItem(mAssetMetaData); } } else if( mReader->getNodeType() == irr::io::EXN_ELEMENT_END) { - if( strcmp( mReader->getNodeName(), "asset") != 0) + if (strcmp( mReader->getNodeName(), "asset") != 0) ThrowException( "Expected end of element."); break; @@ -292,6 +284,75 @@ void ColladaParser::ReadAssetInfo() } } +// ------------------------------------------------------------------------------------------------ +// Reads the contributor info +void ColladaParser::ReadContributorInfo() +{ + if (mReader->isEmptyElement()) + return; + + while (mReader->read()) + { + if (mReader->getNodeType() == irr::io::EXN_ELEMENT) + { + ReadMetaDataItem(mAssetMetaData); + } + else if (mReader->getNodeType() == irr::io::EXN_ELEMENT_END) + { + if (strcmp(mReader->getNodeName(), "contributor") != 0) + ThrowException("Expected end of element."); + break; + } + } +} + +// ------------------------------------------------------------------------------------------------ +// Reads a single string metadata item +void ColladaParser::ReadMetaDataItem(StringMetaData &metadata) +{ + // Metadata such as created, keywords, subject etc + const char* key_char = mReader->getNodeName(); + if (key_char != nullptr) + { + const std::string key_str(key_char); + const char* value_char = TestTextContent(); + if (value_char != nullptr) + { + std::string camel_key_str = key_str; + ToCamelCase(camel_key_str); + aiString aistr; + aistr.Set(value_char); + metadata.emplace(camel_key_str, aistr); + TestClosing(key_str.c_str()); + } + else + SkipElement(); + } + else + SkipElement(); +} + +// ------------------------------------------------------------------------------------------------ +// Convert underscore_seperated to CamelCase: "authoring_tool" becomes "AuthoringTool" +void ColladaParser::ToCamelCase(std::string &text) +{ + if (text.empty()) + return; + // Capitalise first character + text[0] = ToUpper(text[0]); + for (auto it = text.begin(); it != text.end(); /*iterated below*/) + { + if ((*it) == '_') + { + it = text.erase(it); + if (it != text.end()) + (*it) = ToUpper(*it); + } + else + ++it; + } +} + // ------------------------------------------------------------------------------------------------ // Reads the animation clips void ColladaParser::ReadAnimationClipLibrary() diff --git a/code/ColladaParser.h b/code/ColladaParser.h index 9fdca86c8..22b96c5e0 100644 --- a/code/ColladaParser.h +++ b/code/ColladaParser.h @@ -66,6 +66,9 @@ namespace Assimp friend class ColladaLoader; protected: + /** Map for generic metadata as aiString */ + typedef std::map StringMetaData; + /** Constructor from XML file */ ColladaParser( IOSystem* pIOHandler, const std::string& pFile); @@ -81,6 +84,15 @@ namespace Assimp /** Reads asset information such as coordinate system information and legal blah */ void ReadAssetInfo(); + /** Reads contributor information such as author and legal blah */ + void ReadContributorInfo(); + + /** Reads generic metadata into provided map */ + void ReadMetaDataItem(StringMetaData &metadata); + + /** Convert underscore_seperated to CamelCase "authoring_tool" becomes "AuthoringTool" */ + static void ToCamelCase(std::string &text); + /** Reads the animation library */ void ReadAnimationLibrary(); @@ -343,8 +355,8 @@ namespace Assimp /** Which is the up vector */ enum { UP_X, UP_Y, UP_Z } mUpDirection; - typedef std::map AssetMetaData; - AssetMetaData mAssetMetaData; + /** Asset metadata (global for scene) */ + StringMetaData mAssetMetaData; /** Collada file format version */ Collada::FormatVersion mFormat; From 9aae110161a0100e9a8a00a65bf681d7b2d1832c Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 10 Apr 2019 09:29:21 -0400 Subject: [PATCH 106/187] * Remove old non-maintained mingw makefile to prevent confusion * Add notes on building with MinGW to Build.md --- Build.md | 13 +++++- code/makefile.mingw | 105 -------------------------------------------- 2 files changed, 12 insertions(+), 106 deletions(-) delete mode 100644 code/makefile.mingw diff --git a/Build.md b/Build.md index d5b443a79..04bec04f0 100644 --- a/Build.md +++ b/Build.md @@ -23,7 +23,7 @@ This will generate the project files for the visual studio. All dependencies use See https://stackoverflow.com/questions/40803170/cmake-uwp-using-cmake-to-build-universal-windows-app -# Build instrcutions for Linux / Unix +# Build instructions for Linux / Unix Open a terminal and got to your repository. You can generate the makefiles and build the library via: ``` @@ -34,6 +34,17 @@ The option -j descripes the number of parallel processes for the build. In this If you want to use a IDE for linux you can try QTCreator for instance. +# Build instructions for MinGW + +Please see [CMake Cross Compiling](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling) for general information on CMake Toolchains. + +Some users have had success building assimp using MinGW on Linux using the following toolchain, which is not maintained by assimp. [linux-mingw-w64-gnuxx11.cmake](https://github.com/ruslo/polly/blob/master/linux-mingw-w64-gnuxx11.cmake) + +The following toolchain may or may not be helpful for building assimp using MinGW on Windows (untested): + [mingw-cxx17.cmake](https://github.com/ruslo/polly/blob/master/mingw-cxx17.cmake) + +Besides the toolchain, compilation should be the same as for Linux / Unix + # CMake build options The cmake-build-environment provides options to configure the build. The following options can be used: - **BUILD_SHARED_LIBS ( default ON )**: Generation of shared libs ( dll for windows, so for Linux ). Set this to OFF to get a static lib. diff --git a/code/makefile.mingw b/code/makefile.mingw deleted file mode 100644 index 711d57f57..000000000 --- a/code/makefile.mingw +++ /dev/null @@ -1,105 +0,0 @@ -### USE OF THIS MAKEFILE IS NOT RECOMMENDED. -### It is no longer maintained. Use CMAKE instead. - -# --------------------------------------------------------------------------- -# Makefile for Open Asset Import Library (MinGW32-make) -# aramis_acg@users.sourceforge.net -# - just a quick'n'dirty one, could be buggy ... -# -# Usage: mingw32-make -f makefile.mingw - -# TARGETS: -# all Build a shared so from the whole library -# clean Cleanup object files, prepare for rebuild -# static Build a static library (*.a) - -# MACROS: (make clean before you change one) -# NOBOOST=1 Build against boost workaround -# SINGLETHREADED=1 Build single-threaded library -# DEBUG=1 Build debug build of library -# -# --------------------------------------------------------------------------- - -# C++ object files -OBJECTS := $(patsubst %.cpp,%.o, $(wildcard *.cpp)) -OBJECTS += $(patsubst %.cpp,%.o, $(wildcard extra/*.cpp)) -OBJECTS += $(patsubst %.cpp,%.o, $(wildcard ./../contrib/irrXML/*.cpp)) - -# C object files -OBJECTSC := $(patsubst %.c,%.oc, $(wildcard ./../contrib/zlib/*.c)) -OBJECTSC += $(patsubst %.c,%.oc, $(wildcard ./../contrib/ConvertUTF/*.c)) -OBJECTSC += $(patsubst %.c,%.oc, $(wildcard ./../contrib/unzip/*.c)) - -# Include flags for gcc -INCLUDEFLAGS = - -# Preprocessor defines for gcc -DEFINEFLAGS = - -# Suffix for the output binary, represents build type -NAMESUFFIX = - -# Output path for binaries -BINPATH = ../bin/mingw/ - -# GCC compiler flags -CPPFLAGS=-Wall - -# Setup environment for noboost build -ifeq ($(NOBOOST),1) - SINGLETHREADED = 1 - INCLUDEFLAGS += -I./BoostWorkaround/ - DEFINEFLAGS += -DASSIMP_BUILD_BOOST_WORKAROUND -# NAMESUFFIX += -noboost -else - # adjust this manually if your boost is stored elsewhere - INCLUDEFLAGS += -I"C:/Program Files/boost/boost_1_38" - #INCLUDEFLAGS += -I"$(BOOST_DIR)" - -endif - -# Setup environment for st build -ifeq ($(SINGLETHREADED),1) - DEFINEFLAGS += -DASSIMP_BUILD_SINGLETHREADED -# NAMESUFFIX += -st -endif - -# Setup environment for debug build -ifeq ($(DEBUG),1) - DEFINEFLAGS += -D_DEBUG -DDEBUG - CPPFLAGS += -g -# NAMESUFFIX += -debug -else - CPPFLAGS += -O2 -s - DEFINEFLAGS += -DNDEBUG -D_NDEBUG -endif - -# Output name of shared library -SHARED_TARGET = $(BINPATH)/libassimp$(NAMESUFFIX).so - -# Output name of static library -STATIC = $(BINPATH)/libassimp$(NAMESUFFIX).a - -# target: all -# usage : build a shared library (*.so) -all: $(SHARED_TARGET) - -$(SHARED_TARGET): $(OBJECTS) $(OBJECTSC) - gcc -o $@ $(OBJECTS) $(OBJECTSC) -shared -lstdc++ -%.o:%.cpp - $(CXX) -c $(CPPFLAGS) $? -o $@ $(INCLUDEFLAGS) $(DEFINEFLAGS) -%.oc:%.c - $(CXX) -x c -c -ansi $(CPPFLAGS) $? -o $@ - -# target: clean -# usage : cleanup all object files, prepare for a rebuild -.PHONY: clean -clean: - -del *.o .\..\contrib\irrXML\*.o .\..\contrib\zlib\*.oc .\..\contrib\unzip\*.oc .\..\contrib\ConvertUTF\*.oc - -# target: static -# usage : build a static library (*.a) -static: $(STATIC) -$(STATIC): $(OBJECTS) $(OBJECTSC) - ar rcs $@ $(OBJECTS) $(OBJECTSC) - From f7384dec95832c6e91f5b7896749a195c8daab52 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 10 Apr 2019 09:45:31 -0400 Subject: [PATCH 107/187] Possible fix for #2406. Shouldn't affect other compiled files, but have not verified this. Also, if anyone tries to debug StepFileGen1.cpp on MinGW, the debug info may not be there, but I think this is the best we can do. --- code/CMakeLists.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index a265a01dc..be70ba88c 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -800,6 +800,18 @@ ADD_ASSIMP_IMPORTER( MMD MMDVmdParser.h ) +# Workaround for issue #2406 - force problematic large file to be optimized to prevent string table overflow error +# Used -Os instead of -O2 as previous issues had mentioned, since -Os is roughly speaking -O2, excluding any +# optimizations that take up extra space. Given that the issue is a string table overflowing, -Os seemed appropriate +# Also, I'm not positive if both link & compile flags are needed, but this hopefully ensures that the issue should not +# recur for edge cases such as static builds. +if ((CMAKE_COMPILER_IS_MINGW) AND (CMAKE_BUILD_TYPE MATCHES Debug)) + message("-- Applying MinGW StepFileGen1.cpp Debug Workaround") + SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES COMPILE_FLAGS -Os ) + SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES LINK_FLAGS -Os ) + SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES STATIC_LIBRARY_FLAGS -Os ) +endif() + ADD_ASSIMP_IMPORTER( STEP STEPFile.h Importer/StepFile/StepFileImporter.h From 6a373d55c7c78cf8aabc2c829abc62d9b9a5d47f Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 10 Apr 2019 10:07:24 -0400 Subject: [PATCH 108/187] * Add notes on MinGW compiler version requirements * Add check on MinGW compiler version to force compliance. * Closes #2315 ? --- Build.md | 5 ++++- CMakeLists.txt | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Build.md b/Build.md index 04bec04f0..2e47c8cab 100644 --- a/Build.md +++ b/Build.md @@ -35,6 +35,9 @@ The option -j descripes the number of parallel processes for the build. In this If you want to use a IDE for linux you can try QTCreator for instance. # Build instructions for MinGW + Older versions of MinGW's compiler (e.g. 5.1.0) do not support the -mbig_obj flag +required to compile some of assimp's files, especially for debug builds. +Version 7.3.0 of g++-mingw-w64 & gcc-mingw-w64 appears to work. Please see [CMake Cross Compiling](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling) for general information on CMake Toolchains. @@ -43,7 +46,7 @@ Some users have had success building assimp using MinGW on Linux using the follo The following toolchain may or may not be helpful for building assimp using MinGW on Windows (untested): [mingw-cxx17.cmake](https://github.com/ruslo/polly/blob/master/mingw-cxx17.cmake) -Besides the toolchain, compilation should be the same as for Linux / Unix +Besides the toolchain, compilation should be the same as for Linux / Unix. # CMake build options The cmake-build-environment provides options to configure the build. The following options can be used: diff --git a/CMakeLists.txt b/CMakeLists.txt index 13a054de2..755bef89a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -234,7 +234,12 @@ ELSEIF ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" ) SET(CMAKE_CXX_FLAGS "-g -fvisibility=hidden -fPIC -fno-strict-aliasing -Wall -Wno-long-long -std=c++11 ${CMAKE_CXX_FLAGS}" ) SET(CMAKE_C_FLAGS "-fPIC -fno-strict-aliasing ${CMAKE_C_FLAGS}") ELSEIF( CMAKE_COMPILER_IS_MINGW ) - SET( CMAKE_CXX_FLAGS "-fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long -std=c++11 -Wa,-mbig-obj ${CMAKE_CXX_FLAGS}" ) + IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0) + message(FATAL_ERROR "MinGW is too old") + ELSEIF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3) + message(WARNING "MinGW is old, if you experience errors, update MinGW") + ENDIF() + SET( CMAKE_CXX_FLAGS "-fvisibility=hidden -fPIC -fno-strict-aliasing -Wall -Wno-long-long -std=c++11 -Wa,-mbig-obj ${CMAKE_CXX_FLAGS}" ) SET(CMAKE_C_FLAGS "-fPIC -fno-strict-aliasing ${CMAKE_C_FLAGS} ") ADD_DEFINITIONS( -U__STRICT_ANSI__ ) ENDIF() From 567a645c4fa3fdad65c1004ac92e62384ff7bff5 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 10 Apr 2019 10:31:57 -0400 Subject: [PATCH 109/187] * Improve error message for new check on MinGW compiler version --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 755bef89a..2250e8006 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,11 +235,11 @@ ELSEIF ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" ) SET(CMAKE_C_FLAGS "-fPIC -fno-strict-aliasing ${CMAKE_C_FLAGS}") ELSEIF( CMAKE_COMPILER_IS_MINGW ) IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0) - message(FATAL_ERROR "MinGW is too old") + message(FATAL_ERROR "MinGW is too old to be supported. Please update MinGW and try again.") ELSEIF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3) - message(WARNING "MinGW is old, if you experience errors, update MinGW") + message(WARNING "MinGW is old, if you experience errors, update MinGW.") ENDIF() - SET( CMAKE_CXX_FLAGS "-fvisibility=hidden -fPIC -fno-strict-aliasing -Wall -Wno-long-long -std=c++11 -Wa,-mbig-obj ${CMAKE_CXX_FLAGS}" ) + SET( CMAKE_CXX_FLAGS "-fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long -std=c++11 -Wa,-mbig-obj ${CMAKE_CXX_FLAGS}" ) SET(CMAKE_C_FLAGS "-fPIC -fno-strict-aliasing ${CMAKE_C_FLAGS} ") ADD_DEFINITIONS( -U__STRICT_ANSI__ ) ENDIF() From 24a0aaeb779d0b30e4e1640afebab8159e596d6c Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 10 Apr 2019 11:02:36 -0400 Subject: [PATCH 110/187] Fix Codacy Warning --- Build.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Build.md b/Build.md index 2e47c8cab..afee8caf7 100644 --- a/Build.md +++ b/Build.md @@ -1,16 +1,17 @@ -# Install CMake +# Build Instructions +## Install CMake Asset-Importer-Lib can be build for a lot of different platforms. We are using cmake to generate the build environment for these via cmake. So you have to make sure that you have a working cmake-installation on your system. You can download it at https://cmake.org/ or for linux install it via ``` sudo apt-get install cmake ``` -# Get the source +## Get the source Make sure you have a working git-installation. Open a command prompt and clone the Asset-Importer-Lib via: ``` git clone https://github.com/assimp/assimp.git ``` -# Build instructions for Windows with Visual-Studio +## Build instructions for Windows with Visual-Studio First you have to install Visual-Studio on your windows-system. You can get the Community-Version for free here: https://visualstudio.microsoft.com/de/downloads/ To generate the build environment for your IDE open a command prompt, navigate to your repo and type: @@ -19,11 +20,11 @@ To generate the build environment for your IDE open a command prompt, navigate t ``` This will generate the project files for the visual studio. All dependencies used to build Asset-IMporter-Lib shall be part of the repo. If you want to use you own zlib.installation this is possible as well. Check the options for it. -# Build instructions for Windows with UWP +## Build instructions for Windows with UWP See https://stackoverflow.com/questions/40803170/cmake-uwp-using-cmake-to-build-universal-windows-app -# Build instructions for Linux / Unix +## Build instructions for Linux / Unix Open a terminal and got to your repository. You can generate the makefiles and build the library via: ``` @@ -34,7 +35,7 @@ The option -j descripes the number of parallel processes for the build. In this If you want to use a IDE for linux you can try QTCreator for instance. -# Build instructions for MinGW +## Build instructions for MinGW Older versions of MinGW's compiler (e.g. 5.1.0) do not support the -mbig_obj flag required to compile some of assimp's files, especially for debug builds. Version 7.3.0 of g++-mingw-w64 & gcc-mingw-w64 appears to work. @@ -48,7 +49,7 @@ The following toolchain may or may not be helpful for building assimp using MinG Besides the toolchain, compilation should be the same as for Linux / Unix. -# CMake build options +## CMake build options The cmake-build-environment provides options to configure the build. The following options can be used: - **BUILD_SHARED_LIBS ( default ON )**: Generation of shared libs ( dll for windows, so for Linux ). Set this to OFF to get a static lib. - **BUILD_FRAMEWORK ( default OFF, MacOnly)**: Build package as Mac OS X Framework bundle From c1f3624f5b18f7207a6dff5674bbf1c3e7c70c13 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 10 Apr 2019 11:06:00 -0400 Subject: [PATCH 111/187] Fix more codacy warnings --- Build.md | 49 ++++++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/Build.md b/Build.md index afee8caf7..dc81fe0d7 100644 --- a/Build.md +++ b/Build.md @@ -1,13 +1,13 @@ # Build Instructions ## Install CMake Asset-Importer-Lib can be build for a lot of different platforms. We are using cmake to generate the build environment for these via cmake. So you have to make sure that you have a working cmake-installation on your system. You can download it at https://cmake.org/ or for linux install it via -``` +```bash sudo apt-get install cmake ``` ## Get the source Make sure you have a working git-installation. Open a command prompt and clone the Asset-Importer-Lib via: -``` +```bash git clone https://github.com/assimp/assimp.git ``` @@ -15,19 +15,18 @@ git clone https://github.com/assimp/assimp.git First you have to install Visual-Studio on your windows-system. You can get the Community-Version for free here: https://visualstudio.microsoft.com/de/downloads/ To generate the build environment for your IDE open a command prompt, navigate to your repo and type: -``` -> cmake CMakeLists.txt +```bash +cmake CMakeLists.txt ``` This will generate the project files for the visual studio. All dependencies used to build Asset-IMporter-Lib shall be part of the repo. If you want to use you own zlib.installation this is possible as well. Check the options for it. ## Build instructions for Windows with UWP See https://stackoverflow.com/questions/40803170/cmake-uwp-using-cmake-to-build-universal-windows-app - ## Build instructions for Linux / Unix Open a terminal and got to your repository. You can generate the makefiles and build the library via: -``` +```bash cmake CMakeLists.txt make -j4 ``` @@ -51,23 +50,23 @@ Besides the toolchain, compilation should be the same as for Linux / Unix. ## CMake build options The cmake-build-environment provides options to configure the build. The following options can be used: -- **BUILD_SHARED_LIBS ( default ON )**: Generation of shared libs ( dll for windows, so for Linux ). Set this to OFF to get a static lib. -- **BUILD_FRAMEWORK ( default OFF, MacOnly)**: Build package as Mac OS X Framework bundle -- **ASSIMP_DOUBLE_PRECISION( default OFF )**: All data will be stored as double values. -- **ASSIMP_OPT_BUILD_PACKAGES ( default OFF)**: Set to ON to generate CPack configuration files and packaging targets -- **ASSIMP_ANDROID_JNIIOSYSTEM ( default OFF )**: Android JNI IOSystem support is active -- **ASSIMP_NO_EXPORT ( default OFF )**: Disable Assimp's export functionality -- **ASSIMP_BUILD_ZLIB ( default OFF )**: Build your own zlib -- **ASSIMP_BUILD_ASSIMP_TOOLS ( default ON )**: If the supplementary tools for Assimp are built in addition to the library. -- **ASSIMP_BUILD_SAMPLES ( default OFF )**: If the official samples are built as well (needs Glut). -- **ASSIMP_BUILD_TESTS ( default ON )**: If the test suite for Assimp is built in addition to the library. -- **ASSIMP_COVERALLS ( default OFF )**: Enable this to measure test coverage. -- **ASSIMP_WERROR( default OFF )**: Treat warnings as errors. -- **ASSIMP_ASAN ( default OFF )**: Enable AddressSanitizer. -- **ASSIMP_UBSAN ( default OFF )**: Enable Undefined Behavior sanitizer. -- **SYSTEM_IRRXML ( default OFF )**: Use system installed Irrlicht/IrrXML library. -- **BUILD_DOCS ( default OFF )**: Build documentation using Doxygen. -- **INJECT_DEBUG_POSTFIX( default ON )**: Inject debug postfix in .a/.so lib names -- **IGNORE_GIT_HASH ( default OFF )**: Don't call git to get the hash. -- **ASSIMP_INSTALL_PDB ( default ON )**: Install MSVC debug files. + - **BUILD_SHARED_LIBS ( default ON )**: Generation of shared libs ( dll for windows, so for Linux ). Set this to OFF to get a static lib. + - **BUILD_FRAMEWORK ( default OFF, MacOnly)**: Build package as Mac OS X Framework bundle + - **ASSIMP_DOUBLE_PRECISION( default OFF )**: All data will be stored as double values. + - **ASSIMP_OPT_BUILD_PACKAGES ( default OFF)**: Set to ON to generate CPack configuration files and packaging targets + - **ASSIMP_ANDROID_JNIIOSYSTEM ( default OFF )**: Android JNI IOSystem support is active + - **ASSIMP_NO_EXPORT ( default OFF )**: Disable Assimp's export functionality + - **ASSIMP_BUILD_ZLIB ( default OFF )**: Build your own zlib + - **ASSIMP_BUILD_ASSIMP_TOOLS ( default ON )**: If the supplementary tools for Assimp are built in addition to the library. + - **ASSIMP_BUILD_SAMPLES ( default OFF )**: If the official samples are built as well (needs Glut). + - **ASSIMP_BUILD_TESTS ( default ON )**: If the test suite for Assimp is built in addition to the library. + - **ASSIMP_COVERALLS ( default OFF )**: Enable this to measure test coverage. + - **ASSIMP_WERROR( default OFF )**: Treat warnings as errors. + - **ASSIMP_ASAN ( default OFF )**: Enable AddressSanitizer. + - **ASSIMP_UBSAN ( default OFF )**: Enable Undefined Behavior sanitizer. + - **SYSTEM_IRRXML ( default OFF )**: Use system installed Irrlicht/IrrXML library. + - **BUILD_DOCS ( default OFF )**: Build documentation using Doxygen. + - **INJECT_DEBUG_POSTFIX( default ON )**: Inject debug postfix in .a/.so lib names + - **IGNORE_GIT_HASH ( default OFF )**: Don't call git to get the hash. + - **ASSIMP_INSTALL_PDB ( default ON )**: Install MSVC debug files. From 1b0c1139ebe306beaa55f3f5911d707b0d578a6f Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 10 Apr 2019 11:45:30 -0400 Subject: [PATCH 112/187] Fix more codacy warnings! --- Build.md | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/Build.md b/Build.md index dc81fe0d7..1e28c648f 100644 --- a/Build.md +++ b/Build.md @@ -21,7 +21,7 @@ cmake CMakeLists.txt This will generate the project files for the visual studio. All dependencies used to build Asset-IMporter-Lib shall be part of the repo. If you want to use you own zlib.installation this is possible as well. Check the options for it. ## Build instructions for Windows with UWP -See https://stackoverflow.com/questions/40803170/cmake-uwp-using-cmake-to-build-universal-windows-app +See ## Build instructions for Linux / Unix Open a terminal and got to your repository. You can generate the makefiles and build the library via: @@ -50,23 +50,22 @@ Besides the toolchain, compilation should be the same as for Linux / Unix. ## CMake build options The cmake-build-environment provides options to configure the build. The following options can be used: - - **BUILD_SHARED_LIBS ( default ON )**: Generation of shared libs ( dll for windows, so for Linux ). Set this to OFF to get a static lib. - - **BUILD_FRAMEWORK ( default OFF, MacOnly)**: Build package as Mac OS X Framework bundle - - **ASSIMP_DOUBLE_PRECISION( default OFF )**: All data will be stored as double values. - - **ASSIMP_OPT_BUILD_PACKAGES ( default OFF)**: Set to ON to generate CPack configuration files and packaging targets - - **ASSIMP_ANDROID_JNIIOSYSTEM ( default OFF )**: Android JNI IOSystem support is active - - **ASSIMP_NO_EXPORT ( default OFF )**: Disable Assimp's export functionality - - **ASSIMP_BUILD_ZLIB ( default OFF )**: Build your own zlib - - **ASSIMP_BUILD_ASSIMP_TOOLS ( default ON )**: If the supplementary tools for Assimp are built in addition to the library. - - **ASSIMP_BUILD_SAMPLES ( default OFF )**: If the official samples are built as well (needs Glut). - - **ASSIMP_BUILD_TESTS ( default ON )**: If the test suite for Assimp is built in addition to the library. - - **ASSIMP_COVERALLS ( default OFF )**: Enable this to measure test coverage. - - **ASSIMP_WERROR( default OFF )**: Treat warnings as errors. - - **ASSIMP_ASAN ( default OFF )**: Enable AddressSanitizer. - - **ASSIMP_UBSAN ( default OFF )**: Enable Undefined Behavior sanitizer. - - **SYSTEM_IRRXML ( default OFF )**: Use system installed Irrlicht/IrrXML library. - - **BUILD_DOCS ( default OFF )**: Build documentation using Doxygen. - - **INJECT_DEBUG_POSTFIX( default ON )**: Inject debug postfix in .a/.so lib names - - **IGNORE_GIT_HASH ( default OFF )**: Don't call git to get the hash. - - **ASSIMP_INSTALL_PDB ( default ON )**: Install MSVC debug files. - +- **BUILD_SHARED_LIBS ( default ON )**: Generation of shared libs ( dll for windows, so for Linux ). Set this to OFF to get a static lib. +- **BUILD_FRAMEWORK ( default OFF, MacOnly)**: Build package as Mac OS X Framework bundle +- **ASSIMP_DOUBLE_PRECISION( default OFF )**: All data will be stored as double values. +- **ASSIMP_OPT_BUILD_PACKAGES ( default OFF)**: Set to ON to generate CPack configuration files and packaging targets +- **ASSIMP_ANDROID_JNIIOSYSTEM ( default OFF )**: Android JNI IOSystem support is active +- **ASSIMP_NO_EXPORT ( default OFF )**: Disable Assimp's export functionality +- **ASSIMP_BUILD_ZLIB ( default OFF )**: Build your own zlib +- **ASSIMP_BUILD_ASSIMP_TOOLS ( default ON )**: If the supplementary tools for Assimp are built in addition to the library. +- **ASSIMP_BUILD_SAMPLES ( default OFF )**: If the official samples are built as well (needs Glut). +- **ASSIMP_BUILD_TESTS ( default ON )**: If the test suite for Assimp is built in addition to the library. +- **ASSIMP_COVERALLS ( default OFF )**: Enable this to measure test coverage. +- **ASSIMP_WERROR( default OFF )**: Treat warnings as errors. +- **ASSIMP_ASAN ( default OFF )**: Enable AddressSanitizer. +- **ASSIMP_UBSAN ( default OFF )**: Enable Undefined Behavior sanitizer. +- **SYSTEM_IRRXML ( default OFF )**: Use system installed Irrlicht/IrrXML library. +- **BUILD_DOCS ( default OFF )**: Build documentation using Doxygen. +- **INJECT_DEBUG_POSTFIX( default ON )**: Inject debug postfix in .a/.so lib names +- **IGNORE_GIT_HASH ( default OFF )**: Don't call git to get the hash. +- **ASSIMP_INSTALL_PDB ( default ON )**: Install MSVC debug files. From 2f6f71651226874ac57538ff8e772d0821dead28 Mon Sep 17 00:00:00 2001 From: Charlie Gettys Date: Wed, 10 Apr 2019 12:42:19 -0400 Subject: [PATCH 113/187] Clarify build instructions --- Build.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Build.md b/Build.md index 1e28c648f..7c908606d 100644 --- a/Build.md +++ b/Build.md @@ -41,7 +41,9 @@ Version 7.3.0 of g++-mingw-w64 & gcc-mingw-w64 appears to work. Please see [CMake Cross Compiling](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling) for general information on CMake Toolchains. -Some users have had success building assimp using MinGW on Linux using the following toolchain, which is not maintained by assimp. [linux-mingw-w64-gnuxx11.cmake](https://github.com/ruslo/polly/blob/master/linux-mingw-w64-gnuxx11.cmake) +Some users have had success building assimp using MinGW on Linux using [polly](https://github.com/ruslo/polly/). + +The following toolchain, which is not maintained by assimp, seems to work on Linux: [linux-mingw-w64-gnuxx11.cmake](https://github.com/ruslo/polly/blob/master/linux-mingw-w64-gnuxx11.cmake) The following toolchain may or may not be helpful for building assimp using MinGW on Windows (untested): [mingw-cxx17.cmake](https://github.com/ruslo/polly/blob/master/mingw-cxx17.cmake) From c92ae50e4f7f9e576f6074d91953727ccc45ea1d Mon Sep 17 00:00:00 2001 From: Merwan Achibet Date: Wed, 10 Apr 2019 19:16:42 +0200 Subject: [PATCH 114/187] Fix FBX face materials not being properly loaded if the face count mismatches the material count --- code/FBXMeshGeometry.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/FBXMeshGeometry.cpp b/code/FBXMeshGeometry.cpp index d75476b82..2debfa651 100644 --- a/code/FBXMeshGeometry.cpp +++ b/code/FBXMeshGeometry.cpp @@ -630,10 +630,11 @@ void MeshGeometry::ReadVertexDataMaterials(std::vector& materials_out, cons materials_out.clear(); } - m_materials.assign(m_vertices.size(),materials_out[0]); + materials_out.resize(m_vertices.size()); + std::fill(materials_out.begin(), materials_out.end(), materials_out.at(0)); } else if (MappingInformationType == "ByPolygon" && ReferenceInformationType == "IndexToDirect") { - m_materials.resize(face_count); + materials_out.resize(face_count); if(materials_out.size() != face_count) { FBXImporter::LogError(Formatter::format("length of input data unexpected for ByPolygon mapping: ") From e2025c3dec2eb49fefc18d9df225c5909c92cbbc Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 10 Apr 2019 20:31:23 +0200 Subject: [PATCH 115/187] Update Readme.md Add info about C4D-importer. --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index b9babf1bd..8cd3c7cb3 100644 --- a/Readme.md +++ b/Readme.md @@ -99,7 +99,7 @@ __Importers__: Additionally, some formats are supported by dependency on non-free code or external SDKs (not built by default): -- [C4D](https://en.wikipedia.org/wiki/Cinema_4D) (https://github.com/assimp/assimp/wiki/Cinema4D-&-Melange) +- [C4D](https://en.wikipedia.org/wiki/Cinema_4D) (https://github.com/assimp/assimp/wiki/Cinema4D-&-Melange) IMporting geometry + node hierarchy are currently supported __Exporters__: From 9b9b2c83393624e6a152556e6d35cd3169e12934 Mon Sep 17 00:00:00 2001 From: Simon Puente Date: Sun, 14 Apr 2019 10:13:32 -0700 Subject: [PATCH 116/187] Fix typo on README.md changing "fascade" to "facade" --- port/AndroidJNI/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/AndroidJNI/README.md b/port/AndroidJNI/README.md index 7998fa3ef..0b95efd04 100644 --- a/port/AndroidJNI/README.md +++ b/port/AndroidJNI/README.md @@ -1,6 +1,6 @@ Build Asset Importer Lib for Android ==================================== -This module provides a fascade for the io-stream-access to files behind the android-asset-management within +This module provides a facade for the io-stream-access to files behind the android-asset-management within an Android-native application. - It is built as a static library - It requires Android NDK with android API > 9 support. From b6d3cbcb61f4cc4c42678d5f183351f95c97c8d4 Mon Sep 17 00:00:00 2001 From: Huarong Chen Date: Wed, 17 Apr 2019 14:19:00 +0800 Subject: [PATCH 117/187] Fix "bytes aketrans" issues in Python>=3.1 Issue https://github.com/assimp/assimp/issues/2339 --- port/PyAssimp/pyassimp/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index ca6d8629a..44163a434 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -93,7 +93,7 @@ def _is_init_type(obj): return False tname = obj.__class__.__name__ return not (tname[:2] == 'c_' or tname == 'Structure' \ - or tname == 'POINTER') and not isinstance(obj,int) + or tname == 'POINTER') and not isinstance(obj, (int, str, bytes)) def _init(self, target = None, parent = None): """ From 836801d37e6ce91bea8cb436c41e55b7b47a817b Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Wed, 17 Apr 2019 09:32:24 +0100 Subject: [PATCH 118/187] CMake updates for VS2015/cmake 3.12 onwards cmake 3.12 adds MSVC_TOOLSET_VERSION to define the version of MSVC toolchain in use Use that if present instead of if-elseif chain --- CMakeLists.txt | 29 +++++++++++++++++------------ code/CMakeLists.txt | 7 +++++++ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb7a3d967..56b6e3c4f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -106,7 +106,7 @@ OPTION ( BUILD_DOCS OFF ) OPTION( INJECT_DEBUG_POSTFIX - "Inject debug postfix in .a/.so lib names" + "Inject debug postfix in .a/.so/.dll lib names" ON ) @@ -127,14 +127,15 @@ if (WIN32) ADD_DEFINITIONS( -DWIN32_LEAN_AND_MEAN ) endif() - IF(MSVC) OPTION( ASSIMP_INSTALL_PDB "Install MSVC debug files." ON ) - # Multibyte character set is deprecated, but default - ADD_DEFINITIONS( -DUNICODE -D_UNICODE ) + IF(NOT (MSVC_VERSION LESS 1900)) + # Multibyte character set is deprecated since at least MSVC2015 (possibly earlier) + ADD_DEFINITIONS( -DUNICODE -D_UNICODE ) + ENDIF() ENDIF(MSVC) IF (BUILD_FRAMEWORK) @@ -545,18 +546,22 @@ if(WIN32) if (CMAKE_SIZEOF_VOID_P EQUAL 8) SET(BIN_DIR "${PROJECT_SOURCE_DIR}/bin64/") SET(LIB_DIR "${PROJECT_SOURCE_DIR}/lib64/") - elseif() + else() SET(BIN_DIR "${PROJECT_SOURCE_DIR}/bin32/") SET(LIB_DIR "${PROJECT_SOURCE_DIR}/lib32/") ENDIF() - IF(MSVC12) - SET(ASSIMP_MSVC_VERSION "vc120") - ELSEIF(MSVC14) - SET(ASSIMP_MSVC_VERSION "vc140") - ELSEIF(MSVC15) - SET(ASSIMP_MSVC_VERSION "vc141") - ENDIF(MSVC12) + IF(MSVC_TOOLSET_VERSION) + set(MSVC_PREFIX "vc${MSVC_TOOLSET_VERSION}") + ELSE() + IF(MSVC12) + SET(ASSIMP_MSVC_VERSION "vc120") + ELSEIF(MSVC14) + SET(ASSIMP_MSVC_VERSION "vc140") + ELSEIF(MSVC15) + SET(ASSIMP_MSVC_VERSION "vc141") + ENDIF(MSVC12) + ENDIF() IF(MSVC12 OR MSVC14 OR MSVC15 ) ADD_CUSTOM_TARGET(UpdateAssimpLibsDebugSymbolsAndDLLs COMMENT "Copying Assimp Libraries ..." VERBATIM) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index e310e6423..05f916abd 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -1037,6 +1037,10 @@ ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) if( MSVC ) # in order to prevent DLL hell, each of the DLLs have to be suffixed with the major version and msvc prefix + # CMake 3.12 added a variable for this + if(MSVC_TOOLSET_VERSION) + set(MSVC_PREFIX "vc${MSVC_TOOLSET_VERSION}") + else() if( MSVC70 OR MSVC71 ) set(MSVC_PREFIX "vc70") elseif( MSVC80 ) @@ -1051,9 +1055,12 @@ if( MSVC ) set(MSVC_PREFIX "vc120") elseif( MSVC14 ) set(MSVC_PREFIX "vc140") + elseif( MSVC15 ) + set(MSVC_PREFIX "vc141") else() set(MSVC_PREFIX "vc150") endif() + endif() set(LIBRARY_SUFFIX "${ASSIMP_LIBRARY_SUFFIX}-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library") endif() From 9242a12bf5e69974b00fee257ed3f219b8c6df06 Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Wed, 17 Apr 2019 09:32:59 +0100 Subject: [PATCH 119/187] Qt5 requires cmake 3.1 Earlier versions are not supported --- tools/assimp_qt_viewer/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/assimp_qt_viewer/CMakeLists.txt b/tools/assimp_qt_viewer/CMakeLists.txt index cd15372b5..d8d8e27a9 100644 --- a/tools/assimp_qt_viewer/CMakeLists.txt +++ b/tools/assimp_qt_viewer/CMakeLists.txt @@ -1,7 +1,8 @@ set(PROJECT_VERSION "") project(assimp_qt_viewer) -cmake_minimum_required(VERSION 3.0) +# Qt5 requires cmake 3.1 or newer +cmake_minimum_required(VERSION 3.1) FIND_PACKAGE(OpenGL QUIET) From 692927a8a1bd123402ee04ab1ec917d160b3be2d Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Wed, 17 Apr 2019 10:03:18 +0100 Subject: [PATCH 120/187] Default CMAKE_DEBUG_POSTFIX to 'd' on multiconfig When the generator is multi config (eg MSVC, xcode) always set the debug postfix to 'd' --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 56b6e3c4f..c5d5b15b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -304,7 +304,9 @@ SET( ASSIMP_INCLUDE_INSTALL_DIR "include" CACHE STRING SET( ASSIMP_BIN_INSTALL_DIR "bin" CACHE STRING "Path the tool executables are installed to." ) -IF (CMAKE_BUILD_TYPE STREQUAL "Debug") +get_cmake_property(is_multi_config GENERATOR_IS_MULTI_CONFIG) + +IF (is_multi_config OR (CMAKE_BUILD_TYPE STREQUAL "Debug")) SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Debug Postfix for lib, samples and tools") ELSE() SET(CMAKE_DEBUG_POSTFIX "" CACHE STRING "Debug Postfix for lib, samples and tools") From b515f04ce6e19394121b5d01ca06f824157d4437 Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Wed, 17 Apr 2019 10:48:14 +0100 Subject: [PATCH 121/187] assimp_view is ANSI (MBCS) only It should really be ported to UNICODE at some point, however I do not have the DirectX9 SDK so cannot confirm whether such a port is working. --- tools/assimp_view/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/assimp_view/CMakeLists.txt b/tools/assimp_view/CMakeLists.txt index f5365e11a..8112c19e8 100644 --- a/tools/assimp_view/CMakeLists.txt +++ b/tools/assimp_view/CMakeLists.txt @@ -88,6 +88,8 @@ SET_PROPERTY(TARGET assimp_viewer PROPERTY DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}) IF ( MSVC ) ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS ) ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS ) + # assimp_viewer is ANSI (MBCS) throughout + REMOVE_DEFINITIONS( -DUNICODE -D_UNICODE ) ENDIF ( MSVC ) From e8bcf162ddc5daeffbe2dfd408b33c3cde153e46 Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Wed, 17 Apr 2019 13:55:08 +0100 Subject: [PATCH 122/187] OBJ coerce invalid nan or inf texture coords to 0 Some exporters (eg Vectorworks 2019) may export texture coordinate components as "nan". While this is invalid, it's better to coerce these values to 0 rather than reject the entire file. --- code/ObjFileParser.cpp | 28 +++++++++++++++++++++++++--- code/ObjFileParser.h | 2 +- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index a8509b583..f9dd17bed 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -151,7 +151,7 @@ void ObjFileParser::parseFile( IOStreamBuffer &streamBuffer ) { } else if (*m_DataIt == 't') { // read in texture coordinate ( 2D or 3D ) ++m_DataIt; - size_t dim = getVector(m_pModel->m_TextureCoord); + size_t dim = getTexCoordVector(m_pModel->m_TextureCoord); m_pModel->m_TextureCoordDim = std::max(m_pModel->m_TextureCoordDim, (unsigned int)dim); } else if (*m_DataIt == 'n') { // Read in normal vector definition @@ -272,6 +272,17 @@ static bool isDataDefinitionEnd( const char *tmp ) { return false; } +static bool isNanOrInf(const char * in) { + // Look for "nan" or "inf", case insensitive + if ((in[0] == 'N' || in[0] == 'n') && ASSIMP_strincmp(in, "nan", 3) == 0) { + return true; + } + else if ((in[0] == 'I' || in[0] == 'i') && ASSIMP_strincmp(in, "inf", 3) == 0) { + return true; + } + return false; +} + size_t ObjFileParser::getNumComponentsInDataDefinition() { size_t numComponents( 0 ); const char* tmp( &m_DataIt[0] ); @@ -285,7 +296,7 @@ size_t ObjFileParser::getNumComponentsInDataDefinition() { if ( !SkipSpaces( &tmp ) ) { break; } - const bool isNum( IsNumeric( *tmp ) ); + const bool isNum( IsNumeric( *tmp ) || isNanOrInf(tmp)); SkipToken( tmp ); if ( isNum ) { ++numComponents; @@ -297,7 +308,7 @@ size_t ObjFileParser::getNumComponentsInDataDefinition() { return numComponents; } -size_t ObjFileParser::getVector( std::vector &point3d_array ) { +size_t ObjFileParser::getTexCoordVector( std::vector &point3d_array ) { size_t numComponents = getNumComponentsInDataDefinition(); ai_real x, y, z; if( 2 == numComponents ) { @@ -319,6 +330,17 @@ size_t ObjFileParser::getVector( std::vector &point3d_array ) { } else { throw DeadlyImportError( "OBJ: Invalid number of components" ); } + + // Coerce nan and inf to 0 as is the OBJ default value + if (!isfinite(x)) + x = 0; + + if (!isfinite(y)) + y = 0; + + if (!isfinite(z)) + z = 0; + point3d_array.push_back( aiVector3D( x, y, z ) ); m_DataIt = skipLine( m_DataIt, m_DataItEnd, m_uiLine ); return numComponents; diff --git a/code/ObjFileParser.h b/code/ObjFileParser.h index a8961452d..7d1b806ce 100644 --- a/code/ObjFileParser.h +++ b/code/ObjFileParser.h @@ -96,7 +96,7 @@ protected: /// Get the number of components in a line. size_t getNumComponentsInDataDefinition(); /// Stores the vector - size_t getVector( std::vector &point3d_array ); + size_t getTexCoordVector( std::vector &point3d_array ); /// Stores the following 3d vector. void getVector3( std::vector &point3d_array ); /// Stores the following homogeneous vector as a 3D vector From c34327b35575b1dd9ca123fa0c4b440241b25d85 Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Wed, 17 Apr 2019 14:30:40 +0100 Subject: [PATCH 123/187] use std::isfinite() GCC is more standards compliant than MSVC --- code/ObjFileParser.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index f9dd17bed..2265e0c35 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -332,13 +332,13 @@ size_t ObjFileParser::getTexCoordVector( std::vector &point3d_array } // Coerce nan and inf to 0 as is the OBJ default value - if (!isfinite(x)) + if (!std::isfinite(x)) x = 0; - if (!isfinite(y)) + if (!std::isfinite(y)) y = 0; - if (!isfinite(z)) + if (!std::isfinite(z)) z = 0; point3d_array.push_back( aiVector3D( x, y, z ) ); From 5713be615c6939535d8e467b0449f3de19aab500 Mon Sep 17 00:00:00 2001 From: Hugo Pereira Date: Thu, 18 Apr 2019 16:52:47 +0100 Subject: [PATCH 124/187] [FBX export] fixed ordering of skin indices and weights, to be consistent between systems --- code/FBXExporter.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/code/FBXExporter.cpp b/code/FBXExporter.cpp index acb122714..6b1ac0e5e 100644 --- a/code/FBXExporter.cpp +++ b/code/FBXExporter.cpp @@ -1575,11 +1575,22 @@ void FBXExporter::WriteObjects () // one sticky point is that the number of vertices may not match, // because assimp splits vertices by normal, uv, etc. + // functor for aiNode sorting + struct SortNodeByName + { + bool operator()(const aiNode *lhs, const aiNode *rhs) const + { + return strcmp(lhs->mName.C_Str(), rhs->mName.C_Str()) < 0; + } + }; + // first we should mark the skeleton for each mesh. // the skeleton must include not only the aiBones, // but also all their parent nodes. // anything that affects the position of any bone node must be included. - std::vector> skeleton_by_mesh(mScene->mNumMeshes); + // Use SorNodeByName to make sure the exported result will be the same across all systems + // Otherwise the aiNodes of the skeleton would be sorted based on the pointer address, which isn't consistent + std::vector> skeleton_by_mesh(mScene->mNumMeshes); // at the same time we can build a list of all the skeleton nodes, // which will be used later to mark them as type "limbNode". std::unordered_set limbnodes; @@ -1587,7 +1598,7 @@ void FBXExporter::WriteObjects () std::map node_by_bone; for (size_t mi = 0; mi < mScene->mNumMeshes; ++mi) { const aiMesh* m = mScene->mMeshes[mi]; - std::set skeleton; + std::set skeleton; for (size_t bi =0; bi < m->mNumBones; ++bi) { const aiBone* b = m->mBones[bi]; const std::string name(b->mName.C_Str()); @@ -1728,7 +1739,7 @@ void FBXExporter::WriteObjects () aiMatrix4x4 mesh_xform = get_world_transform(mesh_node, mScene); // now make a subdeformer for each bone in the skeleton - const std::set &skeleton = skeleton_by_mesh[mi]; + const std::set skeleton= skeleton_by_mesh[mi]; for (const aiNode* bone_node : skeleton) { // if there's a bone for this node, find it const aiBone* b = nullptr; From 48e5b948e3d1c408f22fb0fa853dfd29c277084a Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 24 Apr 2019 09:03:59 +0200 Subject: [PATCH 125/187] Update ColladaExporter.cpp Some reformattings --- code/ColladaExporter.cpp | 102 ++++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 49 deletions(-) diff --git a/code/ColladaExporter.cpp b/code/ColladaExporter.cpp index e7cc6907d..7c21dde43 100644 --- a/code/ColladaExporter.cpp +++ b/code/ColladaExporter.cpp @@ -64,13 +64,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace Assimp; -namespace Assimp -{ +namespace Assimp { // ------------------------------------------------------------------------------------------------ // Worker function for exporting a scene to Collada. Prototyped and registered in Exporter.cpp -void ExportSceneCollada(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/) -{ +void ExportSceneCollada(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/) { std::string path = DefaultIOSystem::absolutePath(std::string(pFile)); std::string file = DefaultIOSystem::completeBaseName(std::string(pFile)); @@ -93,12 +91,12 @@ void ExportSceneCollada(const char* pFile, IOSystem* pIOSystem, const aiScene* p } // end of namespace Assimp - - // ------------------------------------------------------------------------------------------------ // Constructor for a specific scene to export -ColladaExporter::ColladaExporter( const aiScene* pScene, IOSystem* pIOSystem, const std::string& path, const std::string& file) : mIOSystem(pIOSystem), mPath(path), mFile(file) -{ +ColladaExporter::ColladaExporter( const aiScene* pScene, IOSystem* pIOSystem, const std::string& path, const std::string& file) +: mIOSystem(pIOSystem) +, mPath(path) +, mFile(file) { // make sure that all formatting happens using the standard, C locale and not the user's current locale mOutput.imbue( std::locale("C") ); mOutput.precision(16); @@ -115,17 +113,15 @@ ColladaExporter::ColladaExporter( const aiScene* pScene, IOSystem* pIOSystem, co // ------------------------------------------------------------------------------------------------ // Destructor -ColladaExporter::~ColladaExporter() -{ - if(mSceneOwned) { +ColladaExporter::~ColladaExporter() { + if ( mSceneOwned ) { delete mScene; } } // ------------------------------------------------------------------------------------------------ // Starts writing the contents -void ColladaExporter::WriteFile() -{ +void ColladaExporter::WriteFile() { // write the DTD mOutput << "" << endstr; // COLLADA element start @@ -158,8 +154,7 @@ void ColladaExporter::WriteFile() // ------------------------------------------------------------------------------------------------ // Writes the asset header -void ColladaExporter::WriteHeader() -{ +void ColladaExporter::WriteHeader() { static const ai_real epsilon = ai_real( 0.00001 ); static const aiQuaternion x_rot(aiMatrix3x3( 0, -1, 0, @@ -240,51 +235,60 @@ void ColladaExporter::WriteHeader() // If no Scene metadata, use root node metadata aiMetadata* meta = mScene->mMetaData; - if (!meta) + if (nullptr == meta) { meta = mScene->mRootNode->mMetaData; + } aiString value; - if (!meta || !meta->Get("Author", value)) + if (!meta || !meta->Get("Author", value)) { mOutput << startstr << "" << "Assimp" << "" << endstr; - else + } else { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + } - if (!meta || !meta->Get("AuthoringTool", value)) + if (nullptr == meta || !meta->Get("AuthoringTool", value)) { mOutput << startstr << "" << "Assimp Exporter" << "" << endstr; - else + } else { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + } - if (meta) - { - if (meta->Get("Comments", value)) + if (meta) { + if (meta->Get("Comments", value)) { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; - if (meta->Get("Copyright", value)) + } + if (meta->Get("Copyright", value)) { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; - if (meta->Get("SourceData", value)) + } + if (meta->Get("SourceData", value)) { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + } } PopTag(); mOutput << startstr << "" << endstr; - if (!meta || !meta->Get("Created", value)) + if (nullptr == meta || !meta->Get("Created", value)) { mOutput << startstr << "" << date_str << "" << endstr; - else + } else { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + } // Modified date is always the date saved mOutput << startstr << "" << date_str << "" << endstr; - if (meta) - { - if (meta->Get("Keywords", value)) + if (meta) { + if (meta->Get("Keywords", value)) { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; - if (meta->Get("Revision", value)) + } + if (meta->Get("Revision", value)) { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; - if (meta->Get("Subject", value)) + } + if (meta->Get("Subject", value)) { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; - if (meta->Get("Title", value)) + } + if (meta->Get("Title", value)) { mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr; + } } mOutput << startstr << "" << endstr; @@ -299,12 +303,15 @@ void ColladaExporter::WriteTextures() { static const unsigned int buffer_size = 1024; char str[buffer_size]; - if(mScene->HasTextures()) { + if (mScene->HasTextures()) { for(unsigned int i = 0; i < mScene->mNumTextures; i++) { // It would be great to be able to create a directory in portable standard C++, but it's not the case, // so we just write the textures in the current directory. aiTexture* texture = mScene->mTextures[i]; + if ( nullptr == texture ) { + continue; + } ASSIMP_itoa10(str, buffer_size, i + 1); @@ -458,6 +465,7 @@ void ColladaExporter::WritePointLight(const aiLight *const light){ mOutput << startstr << "" << endstr; } + void ColladaExporter::WriteDirectionalLight(const aiLight *const light){ const aiColor3D &color= light->mColorDiffuse; mOutput << startstr << "" << endstr; @@ -470,6 +478,7 @@ void ColladaExporter::WriteDirectionalLight(const aiLight *const light){ mOutput << startstr << "" << endstr; } + void ColladaExporter::WriteSpotLight(const aiLight *const light){ const aiColor3D &color= light->mColorDiffuse; @@ -526,18 +535,16 @@ void ColladaExporter::WriteAmbienttLight(const aiLight *const light){ // ------------------------------------------------------------------------------------------------ // Reads a single surface entry from the given material keys -void ColladaExporter::ReadMaterialSurface( Surface& poSurface, const aiMaterial* pSrcMat, aiTextureType pTexture, const char* pKey, size_t pType, size_t pIndex) -{ - if( pSrcMat->GetTextureCount( pTexture) > 0 ) - { +void ColladaExporter::ReadMaterialSurface( Surface& poSurface, const aiMaterial* pSrcMat, + aiTextureType pTexture, const char* pKey, size_t pType, size_t pIndex) { + if( pSrcMat->GetTextureCount( pTexture) > 0 ) { aiString texfile; unsigned int uvChannel = 0; pSrcMat->GetTexture( pTexture, 0, &texfile, NULL, &uvChannel); std::string index_str(texfile.C_Str()); - if(index_str.size() != 0 && index_str[0] == '*') - { + if(index_str.size() != 0 && index_str[0] == '*') { unsigned int index; index_str = index_str.substr(1, std::string::npos); @@ -555,15 +562,13 @@ void ColladaExporter::ReadMaterialSurface( Surface& poSurface, const aiMaterial* } else { throw DeadlyExportError("could not find embedded texture at index " + index_str); } - } else - { + } else { poSurface.texture = texfile.C_Str(); } poSurface.channel = uvChannel; poSurface.exist = true; - } else - { + } else { if( pKey ) poSurface.exist = pSrcMat->Get( pKey, static_cast(pType), static_cast(pIndex), poSurface.color) == aiReturn_SUCCESS; } @@ -571,15 +576,13 @@ void ColladaExporter::ReadMaterialSurface( Surface& poSurface, const aiMaterial* // ------------------------------------------------------------------------------------------------ // Reimplementation of isalnum(,C locale), because AppVeyor does not see standard version. -static bool isalnum_C(char c) -{ +static bool isalnum_C(char c) { return ( nullptr != strchr("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",c) ); } // ------------------------------------------------------------------------------------------------ // Writes an image entry for the given surface -void ColladaExporter::WriteImageEntry( const Surface& pSurface, const std::string& pNameAdd) -{ +void ColladaExporter::WriteImageEntry( const Surface& pSurface, const std::string& pNameAdd) { if( !pSurface.texture.empty() ) { mOutput << startstr << "" << endstr; @@ -833,8 +836,9 @@ void ColladaExporter::WriteControllerLibrary() mOutput << startstr << "" << endstr; PushTag(); - for( size_t a = 0; a < mScene->mNumMeshes; ++a) + for( size_t a = 0; a < mScene->mNumMeshes; ++a) { WriteController( a); + } PopTag(); mOutput << startstr << "" << endstr; From 0b42d55f737369ff9cc80686bbc5b1cecd97d7b9 Mon Sep 17 00:00:00 2001 From: Heorhii Shakula Date: Wed, 24 Apr 2019 16:58:35 +0300 Subject: [PATCH 126/187] Fix inconsistency between animation and node name in glTF2 Importer --- code/glTF2Importer.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/code/glTF2Importer.cpp b/code/glTF2Importer.cpp index 4228db23f..bb0f7ad8d 100755 --- a/code/glTF2Importer.cpp +++ b/code/glTF2Importer.cpp @@ -789,13 +789,16 @@ static void BuildVertexWeightMapping(Mesh::Primitive& primitive, std::vector& meshOffsets, glTF2::Ref& ptr) { Node& node = *ptr; - std::string nameOrId = node.name.empty() ? node.id : node.name; - - aiNode* ainode = new aiNode(nameOrId); + aiNode* ainode = new aiNode(GetNodeName(node)); if (!node.children.empty()) { ainode->mNumChildren = unsigned(node.children.size()); @@ -921,7 +924,7 @@ struct AnimationSamplers { aiNodeAnim* CreateNodeAnim(glTF2::Asset& r, Node& node, AnimationSamplers& samplers) { aiNodeAnim* anim = new aiNodeAnim(); - anim->mNodeName = node.name; + anim->mNodeName = GetNodeName(node); static const float kMillisecondsFromSeconds = 1000.f; From e83671f494247501793c9631fe2816e6c0357464 Mon Sep 17 00:00:00 2001 From: Martin Vorbrodt Date: Wed, 24 Apr 2019 18:35:14 -0400 Subject: [PATCH 127/187] Generate attenuation constants if non are privded in the Blender file. Using: https://imdoingitwrong.wordpress.com/2011/01/31/light-attenuation/ --- code/BlenderLoader.cpp | 27 +++++++++++++++++++++++++++ code/BlenderScene.cpp | 5 ++++- code/BlenderScene.h | 4 ++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/code/BlenderLoader.cpp b/code/BlenderLoader.cpp index 90065ceee..d39cb9699 100644 --- a/code/BlenderLoader.cpp +++ b/code/BlenderLoader.cpp @@ -1225,6 +1225,16 @@ aiLight* BlenderImporter::ConvertLight(const Scene& /*in*/, const Object* obj, c case Lamp::Type_Local: out->mType = aiLightSource_POINT; break; + case Lamp::Type_Spot: + out->mType = aiLightSource_SPOT; + + // blender orients directional lights as facing toward -z + out->mDirection = aiVector3D(0.f, 0.f, -1.f); + out->mUp = aiVector3D(0.f, 1.f, 0.f); + + out->mAngleInnerCone = lamp->spotsize * (1.0f - lamp->spotblend); + out->mAngleOuterCone = lamp->spotsize; + break; case Lamp::Type_Sun: out->mType = aiLightSource_DIRECTIONAL; @@ -1255,6 +1265,23 @@ aiLight* BlenderImporter::ConvertLight(const Scene& /*in*/, const Object* obj, c out->mColorAmbient = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy; out->mColorSpecular = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy; out->mColorDiffuse = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy; + + // If default values are supplied, compute the coefficients from light's max distance + // Read this: https://imdoingitwrong.wordpress.com/2011/01/31/light-attenuation/ + // + if (lamp->constant_coefficient == 1.0f && lamp->linear_coefficient == 0.0f && lamp->quadratic_coefficient == 0.0f && lamp->dist > 0.0f) + { + out->mAttenuationConstant = 1.0f; + out->mAttenuationLinear = 2.0f / lamp->dist; + out->mAttenuationQuadratic = 1.0f / (lamp->dist * lamp->dist); + } + else + { + out->mAttenuationConstant = lamp->constant_coefficient; + out->mAttenuationLinear = lamp->linear_coefficient; + out->mAttenuationQuadratic = lamp->quadratic_coefficient; + } + return out.release(); } diff --git a/code/BlenderScene.cpp b/code/BlenderScene.cpp index 4fc353b15..39c2793d5 100644 --- a/code/BlenderScene.cpp +++ b/code/BlenderScene.cpp @@ -211,9 +211,12 @@ template <> void Structure :: Convert ( ReadField(dest.b,"b",db); ReadField(dest.k,"k",db); ReadField(dest.energy,"energy",db); - ReadField(dest.dist,"dist",db); + ReadField(dest.dist,"dist",db); ReadField(dest.spotsize,"spotsize",db); ReadField(dest.spotblend,"spotblend",db); + ReadField(dest.constant_coefficient, "coeff_const", db); + ReadField(dest.linear_coefficient, "coeff_lin", db); + ReadField(dest.quadratic_coefficient, "coeff_quad", db); ReadField(dest.att1,"att1",db); ReadField(dest.att2,"att2",db); ReadField(temp,"falloff_type",db); diff --git a/code/BlenderScene.h b/code/BlenderScene.h index 8e4223eb1..dd3f1444c 100644 --- a/code/BlenderScene.h +++ b/code/BlenderScene.h @@ -538,6 +538,10 @@ struct Lamp : ElemBase { float energy, dist, spotsize, spotblend; //float haint; + float constant_coefficient; + float linear_coefficient; + float quadratic_coefficient; + float att1, att2; //struct CurveMapping *curfalloff; FalloffType falloff_type; From 42202c22043923946b87481ff01669d4bf633fc4 Mon Sep 17 00:00:00 2001 From: Vitaly Ovchinnikov Date: Fri, 26 Apr 2019 22:13:29 +1200 Subject: [PATCH 128/187] a test for bad OBJ file format and code fix that handles it --- code/ObjFileParser.cpp | 10 +++------- test/unit/utObjImportExport.cpp | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index a8509b583..17c83ee8f 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -429,13 +429,6 @@ void ObjFileParser::getFace( aiPrimitiveType type ) { if (type == aiPrimitiveType_POINT) { ASSIMP_LOG_ERROR("Obj: Separator unexpected in point statement"); } - if (iPos == 0) { - //if there are no texture coordinates in the file, but normals - if (!vt && vn) { - iPos = 1; - iStep++; - } - } iPos++; } else if( IsSpaceOrNewLine( *m_DataIt ) ) { iPos = 0; @@ -452,6 +445,9 @@ void ObjFileParser::getFace( aiPrimitiveType type ) { ++iStep; } + if (iPos == 1 && !vt && vn) + iPos = 2; // skip texture coords for normals if there are no tex coords + if ( iVal > 0 ) { // Store parsed index if ( 0 == iPos ) { diff --git a/test/unit/utObjImportExport.cpp b/test/unit/utObjImportExport.cpp index 2d1933094..bb0d36b13 100644 --- a/test/unit/utObjImportExport.cpp +++ b/test/unit/utObjImportExport.cpp @@ -391,6 +391,39 @@ TEST_F(utObjImportExport, invalid_normals_uvs) { EXPECT_NE(nullptr, scene); } +TEST_F(utObjImportExport, no_vt_just_vns) { + static const char *ObjModel = + "v 0 0 0\n" + "v 0 0 0\n" + "v 0 0 0\n" + "v 0 0 0\n" + "v 0 0 0\n" + "v 0 0 0\n" + "v 0 0 0\n" + "v 0 0 0\n" + "v 0 0 0\n" + "v 0 0 0\n" + "v 10 0 0\n" + "v 0 10 0\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "vn 0 0 1\n" + "f 10/10 11/11 12/12\n"; + + Assimp::Importer myImporter; + const aiScene *scene = myImporter.ReadFileFromMemory(ObjModel, strlen(ObjModel), 0); + EXPECT_NE(nullptr, scene); +} + TEST_F( utObjImportExport, mtllib_after_g ) { ::Assimp::Importer importer; const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/OBJ/cube_mtllib_after_g.obj", aiProcess_ValidateDataStructure ); From 58b1440fc810a207bf86fa435a88d3300f75d5db Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 26 Apr 2019 13:01:22 +0200 Subject: [PATCH 129/187] Update appveyor.yml Remove cache to fix access to not cached data. --- appveyor.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 78ef4da75..e189a71f8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -36,14 +36,14 @@ install: - ps: Invoke-WebRequest -Uri https://download.microsoft.com/download/5/7/b/57b2947c-7221-4f33-b35e-2fc78cb10df4/vc_redist.x64.exe -OutFile .\packaging\windows-innosetup\vc_redist.x64.exe - ps: Invoke-WebRequest -Uri https://download.microsoft.com/download/1/d/8/1d8137db-b5bb-4925-8c5d-927424a2e4de/vc_redist.x86.exe -OutFile .\packaging\windows-innosetup\vc_redist.x86.exe -cache: - - code\assimp.dir\%CONFIGURATION% - - contrib\zlib\zlibstatic.dir\%CONFIGURATION% - - contrib\zlib\zlib.dir\%CONFIGURATION% - - tools\assimp_cmd\assimp_cmd.dir\%CONFIGURATION% - - tools\assimp_view\assimp_viewer.dir\%CONFIGURATION% - - test\unit.dir\%CONFIGURATION% - - bin\.mtime_cache +#cache: +# - code\assimp.dir\%CONFIGURATION% +# - contrib\zlib\zlibstatic.dir\%CONFIGURATION% +# - contrib\zlib\zlib.dir\%CONFIGURATION% +# - tools\assimp_cmd\assimp_cmd.dir\%CONFIGURATION% +# - tools\assimp_view\assimp_viewer.dir\%CONFIGURATION% +# - test\unit.dir\%CONFIGURATION% +# - bin\.mtime_cache before_build: - ruby scripts\AppVeyor\mtime_cache -g scripts\AppVeyor\cacheglobs.txt -c bin\.mtime_cache\cache.json From 09905c2de39a17d8a06547779a3ff851f3d6fc60 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 26 Apr 2019 19:11:22 +0200 Subject: [PATCH 130/187] Update appveyor.yml disable vs2015 --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index e189a71f8..4b38c9cc6 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ matrix: image: - Visual Studio 2013 - - Previous Visual Studio 2015 + #- Previous Visual Studio 2015 - Previous Visual Studio 2017 platform: From 4c3e34ba6c685b956ae2d94d288dc699b58be9ac Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 26 Apr 2019 19:28:19 +0200 Subject: [PATCH 131/187] Update Readme.md Add link to read the docs. --- Readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Readme.md b/Readme.md index 8cd3c7cb3..19e43a3cb 100644 --- a/Readme.md +++ b/Readme.md @@ -17,6 +17,8 @@ A library to import and export various 3d-model-formats including scene-post-pro APIs are provided for C and C++. There are various bindings to other languages (C#, Java, Python, Delphi, D). Assimp also runs on Android and iOS. +[Check the latest doc](https://assimp-docs.readthedocs.io/en/latest/). + Additionally, assimp features various __mesh post processing tools__: normals and tangent space generation, triangulation, vertex cache locality optimization, removal of degenerate primitives and duplicate vertices, sorting by primitive type, merging of redundant materials and many more. This is the development repo containing the latest features and bugfixes. For productive use though, we recommend one of the stable releases available from [Github Assimp Releases](https://github.com/assimp/assimp/releases). From 6d241cc2f05345a66c59a73e7d678f857a008bfa Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 26 Apr 2019 21:11:23 +0200 Subject: [PATCH 132/187] Update appveyor.yml Go back to normal --- appveyor.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 4b38c9cc6..2b5f212f9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,8 +15,8 @@ matrix: image: - Visual Studio 2013 - #- Previous Visual Studio 2015 - - Previous Visual Studio 2017 + - Visual Studio 2015 + - Visual Studio 2017 platform: - Win32 @@ -28,22 +28,22 @@ install: - set PATH=C:\Ruby24-x64\bin;%PATH% - set CMAKE_DEFINES -DASSIMP_WERROR=ON - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2013" set CMAKE_GENERATOR_NAME=Visual Studio 12 2013 - - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Previous Visual Studio 2015" set CMAKE_GENERATOR_NAME=Visual Studio 14 2015 - - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Previous Visual Studio 2017" set CMAKE_GENERATOR_NAME=Visual Studio 15 2017 + - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" set CMAKE_GENERATOR_NAME=Visual Studio 14 2015 + - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" set CMAKE_GENERATOR_NAME=Visual Studio 15 2017 - if "%platform%"=="x64" set CMAKE_GENERATOR_NAME=%CMAKE_GENERATOR_NAME% Win64 - cmake %CMAKE_DEFINES% -G "%CMAKE_GENERATOR_NAME%" - set PATH=%PATH%;"C:\\Program Files (x86)\\Inno Setup 5" - ps: Invoke-WebRequest -Uri https://download.microsoft.com/download/5/7/b/57b2947c-7221-4f33-b35e-2fc78cb10df4/vc_redist.x64.exe -OutFile .\packaging\windows-innosetup\vc_redist.x64.exe - ps: Invoke-WebRequest -Uri https://download.microsoft.com/download/1/d/8/1d8137db-b5bb-4925-8c5d-927424a2e4de/vc_redist.x86.exe -OutFile .\packaging\windows-innosetup\vc_redist.x86.exe -#cache: -# - code\assimp.dir\%CONFIGURATION% -# - contrib\zlib\zlibstatic.dir\%CONFIGURATION% -# - contrib\zlib\zlib.dir\%CONFIGURATION% -# - tools\assimp_cmd\assimp_cmd.dir\%CONFIGURATION% -# - tools\assimp_view\assimp_viewer.dir\%CONFIGURATION% -# - test\unit.dir\%CONFIGURATION% -# - bin\.mtime_cache +cache: + - code\assimp.dir\%CONFIGURATION% + - contrib\zlib\zlibstatic.dir\%CONFIGURATION% + - contrib\zlib\zlib.dir\%CONFIGURATION% + - tools\assimp_cmd\assimp_cmd.dir\%CONFIGURATION% + - tools\assimp_view\assimp_viewer.dir\%CONFIGURATION% + - test\unit.dir\%CONFIGURATION% + - bin\.mtime_cache before_build: - ruby scripts\AppVeyor\mtime_cache -g scripts\AppVeyor\cacheglobs.txt -c bin\.mtime_cache\cache.json From 085362392418e7643a96a69efcbed103fa841c3d Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 27 Apr 2019 08:38:01 +0200 Subject: [PATCH 133/187] Update appveyor.yml Try this solution https://gitlab.kitware.com/cmake/cmake/commit/27eb7c5bdb5bb8deefe1772675dc4819592bf036 --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 2b5f212f9..39ef36179 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -31,7 +31,7 @@ install: - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" set CMAKE_GENERATOR_NAME=Visual Studio 14 2015 - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" set CMAKE_GENERATOR_NAME=Visual Studio 15 2017 - if "%platform%"=="x64" set CMAKE_GENERATOR_NAME=%CMAKE_GENERATOR_NAME% Win64 - - cmake %CMAKE_DEFINES% -G "%CMAKE_GENERATOR_NAME%" + - cmake %CMAKE_DEFINES% -G "%CMAKE_GENERATOR_NAME%" . - set PATH=%PATH%;"C:\\Program Files (x86)\\Inno Setup 5" - ps: Invoke-WebRequest -Uri https://download.microsoft.com/download/5/7/b/57b2947c-7221-4f33-b35e-2fc78cb10df4/vc_redist.x64.exe -OutFile .\packaging\windows-innosetup\vc_redist.x64.exe - ps: Invoke-WebRequest -Uri https://download.microsoft.com/download/1/d/8/1d8137db-b5bb-4925-8c5d-927424a2e4de/vc_redist.x86.exe -OutFile .\packaging\windows-innosetup\vc_redist.x86.exe From bc4e4112848c007122b7ad4d523705a35051c18e Mon Sep 17 00:00:00 2001 From: b1skit Date: Sat, 27 Apr 2019 17:20:27 -0700 Subject: [PATCH 134/187] Updated the FBXConverter to correctly set the material shading mode when a Phong shader is detected --- code/FBXConverter.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 0abfdafdc..c76d3ccad 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -67,6 +67,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include + + + + // MY DEBUG STUFF: + +#include +using std::cout; + +// END MY DEBUG STUF + + + + namespace Assimp { namespace FBX { @@ -1596,6 +1609,13 @@ namespace Assimp { out_mat->AddProperty(&str, AI_MATKEY_NAME); } + // Set the shading mode as best we can: The FBX specification only mentions Lambert and Phong, and only Phong is mentioned in Assimp's aiShadingMode enum. + if (material.GetShadingModel() == "phong") + { + aiShadingMode shadingMode = aiShadingMode_Phong; + out_mat->AddProperty(&shadingMode, 1, AI_MATKEY_SHADING_MODEL); + } + // shading stuff and colors SetShadingPropertiesCommon(out_mat, props); SetShadingPropertiesRaw( out_mat, props, material.Textures(), mesh ); From 243b2618a9209eb5a2c10d2fcec13dc2aa29af43 Mon Sep 17 00:00:00 2001 From: b1skit Date: Sat, 27 Apr 2019 17:37:23 -0700 Subject: [PATCH 135/187] Updated the FBXConverter to correctly set the material shading mode when a Phong shader is detected --- code/FBXConverter.cpp | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index c76d3ccad..4780188ac 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -68,18 +68,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include - - - // MY DEBUG STUFF: - -#include -using std::cout; - -// END MY DEBUG STUF - - - - namespace Assimp { namespace FBX { From bcd17481e5970dba3cd68e64a32e1f8fafabf355 Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Sun, 28 Apr 2019 22:16:20 -0700 Subject: [PATCH 136/187] Fix element access operator of aiColor4D --- include/assimp/color4.inl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/assimp/color4.inl b/include/assimp/color4.inl index 3192d55f3..afa53dcb5 100644 --- a/include/assimp/color4.inl +++ b/include/assimp/color4.inl @@ -85,6 +85,8 @@ AI_FORCE_INLINE TReal aiColor4t::operator[](unsigned int i) const { return g; case 2: return b; + case 3: + return a; default: break; } @@ -100,6 +102,8 @@ AI_FORCE_INLINE TReal& aiColor4t::operator[](unsigned int i) { return g; case 2: return b; + case 3: + return a; default: break; } From c821c6f30161783da1fd0a8827c118c36dcdcd33 Mon Sep 17 00:00:00 2001 From: kimkulling Date: Tue, 30 Apr 2019 15:33:31 +0200 Subject: [PATCH 137/187] Fix names of dlls. --- appveyor.yml | 9 ++- .../{script.iss => script_x64.iss} | 36 +--------- packaging/windows-innosetup/script_x86.iss | 72 +++++++++++++++++++ 3 files changed, 82 insertions(+), 35 deletions(-) rename packaging/windows-innosetup/{script.iss => script_x64.iss} (56%) create mode 100644 packaging/windows-innosetup/script_x86.iss diff --git a/appveyor.yml b/appveyor.yml index 39ef36179..c8a5a27b9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -53,7 +53,14 @@ build: project: Assimp.sln after_build: - - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" iscc packaging\windows-innosetup\script.iss + - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" ( + if "%platform%"=="x64" ( + iscc packaging\windows-innosetup\script_x64.iss + ) + if "%platform%"!="x64" ( + iscc packaging\windows-innosetup\script_x86.iss + ) + ) - 7z a assimp.7z bin\%CONFIGURATION%\* lib\%CONFIGURATION%\* test_script: diff --git a/packaging/windows-innosetup/script.iss b/packaging/windows-innosetup/script_x64.iss similarity index 56% rename from packaging/windows-innosetup/script.iss rename to packaging/windows-innosetup/script_x64.iss index 695740679..1738fd4b1 100644 --- a/packaging/windows-innosetup/script.iss +++ b/packaging/windows-innosetup/script_x64.iss @@ -24,25 +24,20 @@ Name: "compact"; Description: "Compact installation, no test models or language Name: "custom"; Description: "Custom installation"; Flags: iscustom [Components] -Name: "main"; Description: "Main Files (32 and 64 Bit)"; Types: full compact custom; Flags: fixed +Name: "main"; Description: "Main Files ( 64 Bit )"; Types: full compact custom; Flags: fixed Name: "tools"; Description: "Asset Viewer & Command Line Tools (32 and 64 Bit)"; Types: full compact Name: "help"; Description: "Help Files"; Types: full compact Name: "samples"; Description: "Samples"; Types: full Name: "test"; Description: "Test Models (BSD-licensed)"; Types: full Name: "test_nonbsd"; Description: "Test Models (other (free) licenses)"; Types: full -;Name: "pyassimp"; Description: "Python Bindings"; Types: full -;Name: "dassimp"; Description: "D Bindings"; Types: full -;Name: "assimp_net"; Description: "C#/.NET Bindings"; Types: full [Run] -;Filename: "{app}\stub\vc_redist.x86.exe"; Parameters: "/qb"; StatusMsg: "Installing VS2017 redistributable package (32 Bit)"; Check: not IsWin64 Filename: "{app}\stub\vc_redist.x64.exe"; Parameters: "/qb"; StatusMsg: "Installing VS2017 redistributable package (64 Bit)"; Check: IsWin64 [Files] Source: "readme_installer.txt"; DestDir: "{app}"; Flags: isreadme ; Installer stub -;Source: "vc_redist.x86.exe"; DestDir: "{app}\stub\"; Check: not IsWin64 Source: "vc_redist.x64.exe"; DestDir: "{app}\stub\"; Check: IsWin64 ; Common stuff @@ -53,27 +48,14 @@ Source: "WEB"; DestDir: "{app}" Source: "..\..\scripts\*"; DestDir: "{app}\scripts"; Flags: recursesubdirs -; x86 binaries -;Source: "..\..\bin\release\x86\assimp-vc140-mt.dll"; DestDir: "{app}\bin\x86" -;Source: "..\..\bin\release\x86\assimp_viewer.exe"; DestDir: "{app}\bin\x86"; Components: tools -;Source: "C:\Windows\SysWOW64\D3DCompiler_42.dll"; DestDir: "{app}\bin\x86"; Components: tools -;Source: "C:\Windows\SysWOW64\D3DX9_42.dll"; DestDir: "{app}\bin\x86"; Components: tools -;Source: "..\..\bin\release\x86\assimp.exe"; DestDir: "{app}\bin\x86"; Components: tools - ; x64 binaries -Source: "..\..\bin\release\assimp-vc140-mt.dll"; DestDir: "{app}\bin\x64" +Source: "..\..\bin\release\assimp-vc141-mt.dll"; DestDir: "{app}\bin\x64" Source: "..\..\bin\release\assimp_viewer.exe"; DestDir: "{app}\bin\x64"; Components: tools Source: "C:\Windows\SysWOW64\D3DCompiler_42.dll"; DestDir: "{app}\bin\x64"; DestName: "D3DCompiler_42.dll"; Components: tools Source: "C:\Windows\SysWOW64\D3DX9_42.dll"; DestDir: "{app}\bin\x64"; DestName: "D3DX9_42.dll"; Components: tools Source: "..\..\bin\release\assimp.exe"; DestDir: "{app}\bin\x64"; Components: tools -; Documentation -;Source: "..\..\doc\AssimpDoc_Html\AssimpDoc.chm"; DestDir: "{app}\doc"; Components: help -;Source: "..\..\doc\AssimpCmdDoc_Html\AssimpCmdDoc.chm"; DestDir: "{app}\doc"; Components: help -;Source: "..\..\doc\datastructure.xml"; DestDir: "{app}\doc"; Components: help - ; Import libraries -;Source: "..\..\lib\release\x86\assimp.lib"; DestDir: "{app}\lib\x86" Source: "..\..\lib\release\assimp-vc140-mt.lib"; DestDir: "{app}\lib\x64" ; Samples @@ -82,20 +64,6 @@ Source: "..\..\samples\*"; DestDir: "{app}\samples"; Flags: recursesubdirs; Comp ; Include files Source: "..\..\include\*"; DestDir: "{app}\include"; Flags: recursesubdirs -; dAssimp -;Source: "..\..\port\dAssimp\*"; DestDir: "{app}\port\D"; Flags: recursesubdirs; Components: dassimp - -; Assimp.NET -;Source: "..\..\port\Assimp.NET\*"; DestDir: "{app}\port\C#"; Flags: recursesubdirs; Components: assimp_net - -; PyAssimp -;Source: "..\..\port\PyAssimp\*"; DestDir: "{app}\port\Python"; Excludes: "*.pyc,*.dll"; Flags: recursesubdirs; Components: pyassimp - -; Test repository -;Source: "..\..\test\models\*"; DestDir: "{app}\test\models"; Flags: recursesubdirs; Components: test -;Source: "..\..\test\regression\*"; DestDir: "{app}\test\regression"; Flags: recursesubdirs; Components: test -;Source: "..\..\test\models-nonbsd\*"; DestDir: "{app}\test\models-nonbsd"; Flags: recursesubdirs; Components: test_nonbsd - [Icons] Name: "{group}\Assimp Manual"; Filename: "{app}\doc\AssimpDoc.chm" ; Components: help Name: "{group}\Assimp Command Line Manual"; Filename: "{app}\doc\AssimpCmdDoc.chm"; Components: help diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss new file mode 100644 index 000000000..cf2660235 --- /dev/null +++ b/packaging/windows-innosetup/script_x86.iss @@ -0,0 +1,72 @@ +; Setup script for use with Inno Setup. + +[Setup] +AppName=Open Asset Import Library - SDK +AppVerName=Open Asset Import Library - SDK (v4.1.0) +DefaultDirName={pf}\Assimp +DefaultGroupName=Assimp +UninstallDisplayIcon={app}\bin\x86\assimp.exe +OutputDir=out +AppCopyright=Assimp Development Team +SetupIconFile=..\..\tools\shared\assimp_tools_icon.ico +WizardImageFile=compiler:WizModernImage-IS.BMP +WizardSmallImageFile=compiler:WizModernSmallImage-IS.BMP +LicenseFile=License.rtf +OutputBaseFileName=assimp-sdk-4.1.0-setup +VersionInfoVersion=4.1.0.0 +VersionInfoTextVersion=4.1.0 +VersionInfoCompany=Assimp Development Team +ArchitecturesInstallIn64BitMode=x64 + +[Types] +Name: "full"; Description: "Full installation" +Name: "compact"; Description: "Compact installation, no test models or language bindings" +Name: "custom"; Description: "Custom installation"; Flags: iscustom + +[Components] +Name: "main"; Description: "Main Files (32 and 64 Bit)"; Types: full compact custom; Flags: fixed +Name: "tools"; Description: "Asset Viewer & Command Line Tools (32 and 64 Bit)"; Types: full compact +Name: "help"; Description: "Help Files"; Types: full compact +Name: "samples"; Description: "Samples"; Types: full +Name: "test"; Description: "Test Models (BSD-licensed)"; Types: full +Name: "test_nonbsd"; Description: "Test Models (other (free) licenses)"; Types: full + +[Run] +Filename: "{app}\stub\vc_redist.x86.exe"; Parameters: "/qb"; StatusMsg: "Installing VS2017 redistributable package (32 Bit)"; Check: not IsWin64 + +[Files] +Source: "readme_installer.txt"; DestDir: "{app}"; Flags: isreadme + +; Installer stub +Source: "vc_redist.x86.exe"; DestDir: "{app}\stub\"; Check: not IsWin64 + +; Common stuff +Source: "..\..\CREDITS"; DestDir: "{app}" +Source: "..\..\LICENSE"; DestDir: "{app}" +Source: "..\..\README"; DestDir: "{app}" +Source: "WEB"; DestDir: "{app}" + +Source: "..\..\scripts\*"; DestDir: "{app}\scripts"; Flags: recursesubdirs + +; x86 binaries +Source: "..\..\bin\release\x86\assimp-vc141-mt.dll"; DestDir: "{app}\bin\x86" +Source: "..\..\bin\release\x86\assimp_viewer.exe"; DestDir: "{app}\bin\x86"; Components: tools +Source: "C:\Windows\SysWOW64\D3DCompiler_42.dll"; DestDir: "{app}\bin\x86"; Components: tools +Source: "C:\Windows\SysWOW64\D3DX9_42.dll"; DestDir: "{app}\bin\x86"; Components: tools +Source: "..\..\bin\release\x86\assimp.exe"; DestDir: "{app}\bin\x86"; Components: tools + + +; Import libraries +Source: "..\..\lib\release\x86\assimp.lib"; DestDir: "{app}\lib\x86" + +; Samples +Source: "..\..\samples\*"; DestDir: "{app}\samples"; Flags: recursesubdirs; Components: samples + +; Include files +Source: "..\..\include\*"; DestDir: "{app}\include"; Flags: recursesubdirs + +[Icons] +Name: "{group}\Assimp Manual"; Filename: "{app}\doc\AssimpDoc.chm" ; Components: help +Name: "{group}\Assimp Command Line Manual"; Filename: "{app}\doc\AssimpCmdDoc.chm"; Components: help +Name: "{group}\AssimpView"; Filename: "{app}\bin\x64\assimp_view.exe"; Components: tools; Check: IsWin64 +Name: "{group}\AssimpView"; Filename: "{app}\bin\x86\assimp_view.exe"; Components: tools; Check: not IsWin64 From 800616e83a7898f38ab851b4ac3144d4ad0e49d7 Mon Sep 17 00:00:00 2001 From: kimkulling Date: Tue, 30 Apr 2019 15:51:32 +0200 Subject: [PATCH 138/187] Fix if block --- appveyor.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index c8a5a27b9..851d9c096 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -56,8 +56,7 @@ after_build: - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" ( if "%platform%"=="x64" ( iscc packaging\windows-innosetup\script_x64.iss - ) - if "%platform%"!="x64" ( + ) else ( iscc packaging\windows-innosetup\script_x86.iss ) ) From a2ca6910726414c7e2eba18477e7b7e0db99b367 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 1 May 2019 11:09:20 +0200 Subject: [PATCH 139/187] Update script_x86.iss Fix invalid folder names. --- packaging/windows-innosetup/script_x86.iss | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss index cf2660235..6dfba80b2 100644 --- a/packaging/windows-innosetup/script_x86.iss +++ b/packaging/windows-innosetup/script_x86.iss @@ -49,8 +49,8 @@ Source: "WEB"; DestDir: "{app}" Source: "..\..\scripts\*"; DestDir: "{app}\scripts"; Flags: recursesubdirs ; x86 binaries -Source: "..\..\bin\release\x86\assimp-vc141-mt.dll"; DestDir: "{app}\bin\x86" -Source: "..\..\bin\release\x86\assimp_viewer.exe"; DestDir: "{app}\bin\x86"; Components: tools +Source: "..\..\bin\release\assimp-vc140-mt.dll"; DestDir: "{app}\bin\x86" +Source: "..\..\bin\release\assimp_viewer.exe"; DestDir: "{app}\bin\x86"; Components: tools Source: "C:\Windows\SysWOW64\D3DCompiler_42.dll"; DestDir: "{app}\bin\x86"; Components: tools Source: "C:\Windows\SysWOW64\D3DX9_42.dll"; DestDir: "{app}\bin\x86"; Components: tools Source: "..\..\bin\release\x86\assimp.exe"; DestDir: "{app}\bin\x86"; Components: tools @@ -66,7 +66,7 @@ Source: "..\..\samples\*"; DestDir: "{app}\samples"; Flags: recursesubdirs; Comp Source: "..\..\include\*"; DestDir: "{app}\include"; Flags: recursesubdirs [Icons] -Name: "{group}\Assimp Manual"; Filename: "{app}\doc\AssimpDoc.chm" ; Components: help -Name: "{group}\Assimp Command Line Manual"; Filename: "{app}\doc\AssimpCmdDoc.chm"; Components: help -Name: "{group}\AssimpView"; Filename: "{app}\bin\x64\assimp_view.exe"; Components: tools; Check: IsWin64 -Name: "{group}\AssimpView"; Filename: "{app}\bin\x86\assimp_view.exe"; Components: tools; Check: not IsWin64 +; Name: "{group}\Assimp Manual"; Filename: "{app}\doc\AssimpDoc.chm" ; Components: help +; Name: "{group}\Assimp Command Line Manual"; Filename: "{app}\doc\AssimpCmdDoc.chm"; Components: help +; Name: "{group}\AssimpView"; Filename: "{app}\bin\x64\assimp_view.exe"; Components: tools; Check: IsWin64 +; Name: "{group}\AssimpView"; Filename: "{app}\bin\x86\assimp_view.exe"; Components: tools; Check: not IsWin64 From 6ff7635338e35ce54ced3950ade4f5271976d982 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 1 May 2019 11:10:16 +0200 Subject: [PATCH 140/187] Update script_x64.iss put icons into comments. --- packaging/windows-innosetup/script_x64.iss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packaging/windows-innosetup/script_x64.iss b/packaging/windows-innosetup/script_x64.iss index 1738fd4b1..57182fcf5 100644 --- a/packaging/windows-innosetup/script_x64.iss +++ b/packaging/windows-innosetup/script_x64.iss @@ -65,7 +65,7 @@ Source: "..\..\samples\*"; DestDir: "{app}\samples"; Flags: recursesubdirs; Comp Source: "..\..\include\*"; DestDir: "{app}\include"; Flags: recursesubdirs [Icons] -Name: "{group}\Assimp Manual"; Filename: "{app}\doc\AssimpDoc.chm" ; Components: help -Name: "{group}\Assimp Command Line Manual"; Filename: "{app}\doc\AssimpCmdDoc.chm"; Components: help -Name: "{group}\AssimpView"; Filename: "{app}\bin\x64\assimp_view.exe"; Components: tools; Check: IsWin64 -Name: "{group}\AssimpView"; Filename: "{app}\bin\x86\assimp_view.exe"; Components: tools; Check: not IsWin64 +; Name: "{group}\Assimp Manual"; Filename: "{app}\doc\AssimpDoc.chm" ; Components: help +; Name: "{group}\Assimp Command Line Manual"; Filename: "{app}\doc\AssimpCmdDoc.chm"; Components: help +; Name: "{group}\AssimpView"; Filename: "{app}\bin\x64\assimp_view.exe"; Components: tools; Check: IsWin64 +; Name: "{group}\AssimpView"; Filename: "{app}\bin\x86\assimp_view.exe"; Components: tools; Check: not IsWin64 From 84e7f542fba2d788490584e3af37e3f4f762f24e Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 1 May 2019 12:10:52 +0200 Subject: [PATCH 141/187] Update script_x86.iss Fix version of dll. --- packaging/windows-innosetup/script_x86.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss index 6dfba80b2..8b8278c58 100644 --- a/packaging/windows-innosetup/script_x86.iss +++ b/packaging/windows-innosetup/script_x86.iss @@ -49,7 +49,7 @@ Source: "WEB"; DestDir: "{app}" Source: "..\..\scripts\*"; DestDir: "{app}\scripts"; Flags: recursesubdirs ; x86 binaries -Source: "..\..\bin\release\assimp-vc140-mt.dll"; DestDir: "{app}\bin\x86" +Source: "..\..\bin\release\assimp-vc141-mt.dll"; DestDir: "{app}\bin\x86" Source: "..\..\bin\release\assimp_viewer.exe"; DestDir: "{app}\bin\x86"; Components: tools Source: "C:\Windows\SysWOW64\D3DCompiler_42.dll"; DestDir: "{app}\bin\x86"; Components: tools Source: "C:\Windows\SysWOW64\D3DX9_42.dll"; DestDir: "{app}\bin\x86"; Components: tools From 615a78e38f80f8baddebb78e408b6370dc137dff Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 1 May 2019 14:41:51 +0200 Subject: [PATCH 142/187] Update script_x86.iss Fix wrong folder for assimp.exe --- packaging/windows-innosetup/script_x86.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss index 8b8278c58..1ecd13c7f 100644 --- a/packaging/windows-innosetup/script_x86.iss +++ b/packaging/windows-innosetup/script_x86.iss @@ -53,7 +53,7 @@ Source: "..\..\bin\release\assimp-vc141-mt.dll"; DestDir: "{app}\bin\x86" Source: "..\..\bin\release\assimp_viewer.exe"; DestDir: "{app}\bin\x86"; Components: tools Source: "C:\Windows\SysWOW64\D3DCompiler_42.dll"; DestDir: "{app}\bin\x86"; Components: tools Source: "C:\Windows\SysWOW64\D3DX9_42.dll"; DestDir: "{app}\bin\x86"; Components: tools -Source: "..\..\bin\release\x86\assimp.exe"; DestDir: "{app}\bin\x86"; Components: tools +Source: "..\..\bin\release\assimp.exe"; DestDir: "{app}\bin\x86"; Components: tools ; Import libraries From 3ee85a8cc8d117afd3987d5d9dbb24340808eeb1 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 1 May 2019 15:13:56 +0200 Subject: [PATCH 143/187] Update script_x86.iss Fix another wrong folder. --- packaging/windows-innosetup/script_x86.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss index 1ecd13c7f..f1999860e 100644 --- a/packaging/windows-innosetup/script_x86.iss +++ b/packaging/windows-innosetup/script_x86.iss @@ -57,7 +57,7 @@ Source: "..\..\bin\release\assimp.exe"; DestDir: "{app}\bin\x86"; Comp ; Import libraries -Source: "..\..\lib\release\x86\assimp.lib"; DestDir: "{app}\lib\x86" +Source: "..\..\lib\release\assimp.lib"; DestDir: "{app}\lib\x86" ; Samples Source: "..\..\samples\*"; DestDir: "{app}\samples"; Flags: recursesubdirs; Components: samples From c93886e87bcc315837b312d858854d422aad5a81 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 1 May 2019 15:52:27 +0200 Subject: [PATCH 144/187] Update script_x64.iss Fix eport lib name. --- packaging/windows-innosetup/script_x64.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/windows-innosetup/script_x64.iss b/packaging/windows-innosetup/script_x64.iss index 57182fcf5..cd4837f0a 100644 --- a/packaging/windows-innosetup/script_x64.iss +++ b/packaging/windows-innosetup/script_x64.iss @@ -56,7 +56,7 @@ Source: "C:\Windows\SysWOW64\D3DX9_42.dll"; DestDir: "{app}\bin\x64"; Dest Source: "..\..\bin\release\assimp.exe"; DestDir: "{app}\bin\x64"; Components: tools ; Import libraries -Source: "..\..\lib\release\assimp-vc140-mt.lib"; DestDir: "{app}\lib\x64" +Source: "..\..\lib\release\assimp-vc141-mt.lib"; DestDir: "{app}\lib\x64" ; Samples Source: "..\..\samples\*"; DestDir: "{app}\samples"; Flags: recursesubdirs; Components: samples From d9cfc48a665adaba251dcdf1d0fa145388812ec7 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 1 May 2019 15:53:04 +0200 Subject: [PATCH 145/187] Update script_x86.iss fix export lib name --- packaging/windows-innosetup/script_x86.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss index f1999860e..9aca78550 100644 --- a/packaging/windows-innosetup/script_x86.iss +++ b/packaging/windows-innosetup/script_x86.iss @@ -57,7 +57,7 @@ Source: "..\..\bin\release\assimp.exe"; DestDir: "{app}\bin\x86"; Comp ; Import libraries -Source: "..\..\lib\release\assimp.lib"; DestDir: "{app}\lib\x86" +Source: "..\..\lib\release\assimp-vc141-mt.lib"; DestDir: "{app}\lib\x86" ; Samples Source: "..\..\samples\*"; DestDir: "{app}\samples"; Flags: recursesubdirs; Components: samples From fcff12b219963af6012f948edee9f6200afa84f2 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 5 May 2019 13:39:10 +0200 Subject: [PATCH 146/187] closes https://github.com/assimp/assimp/issues/2054: make empty bone validation optional. --- code/ASELoader.cpp | 2 +- code/ASEParser.cpp | 2 +- code/ASEParser.h | 10 +++++----- code/FBXConverter.cpp | 21 ++++++++++----------- code/FBXConverter.h | 4 +++- code/FBXImportSettings.h | 34 ++++++++++++++++++++-------------- code/FBXImporter.cpp | 3 ++- code/ValidateDataStructure.cpp | 26 ++++++++++---------------- 8 files changed, 52 insertions(+), 50 deletions(-) diff --git a/code/ASELoader.cpp b/code/ASELoader.cpp index 321e8548a..556e8ce66 100644 --- a/code/ASELoader.cpp +++ b/code/ASELoader.cpp @@ -1299,7 +1299,7 @@ void ASEImporter::BuildMaterialIndices() } } - // Dekete our temporary array + // Delete our temporary array delete[] pcIntMaterials; } diff --git a/code/ASEParser.cpp b/code/ASEParser.cpp index e8d6febc2..f21f49eeb 100644 --- a/code/ASEParser.cpp +++ b/code/ASEParser.cpp @@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the ASE parser class */ - +#pragma once #ifndef ASSIMP_BUILD_NO_ASE_IMPORTER #ifndef ASSIMP_BUILD_NO_3DS_IMPORTER diff --git a/code/ASEParser.h b/code/ASEParser.h index b8c820632..0cfd5313c 100644 --- a/code/ASEParser.h +++ b/code/ASEParser.h @@ -188,10 +188,11 @@ struct Animation { } mRotationType, mScalingType, mPositionType; Animation() AI_NO_EXCEPT - : mRotationType (TRACK) - , mScalingType (TRACK) - , mPositionType (TRACK) - {} + : mRotationType (TRACK) + , mScalingType (TRACK) + , mPositionType (TRACK) { + // empty + } //! List of track rotation keyframes std::vector< aiQuatKey > akeyRotations; @@ -243,7 +244,6 @@ struct BaseNode { mTargetPosition.x = qnan; } - //! Name of the mesh std::string mName; diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 0abfdafdc..8d7c087ca 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -76,7 +76,7 @@ namespace Assimp { #define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000L - FBXConverter::FBXConverter(aiScene* out, const Document& doc) + FBXConverter::FBXConverter(aiScene* out, const Document& doc, bool removeEmptyBones) : defaultMaterialIndex() , lights() , cameras() @@ -89,7 +89,8 @@ namespace Assimp { , mNodeNames() , anim_fps() , out(out) - , doc(doc) { + , doc(doc) + , mRemoveEmptyBones( removeEmptyBones ) { // animations need to be converted first since this will // populate the node_anim_chain_bits map, which is needed // to determine which nodes need to be generated. @@ -1407,9 +1408,9 @@ namespace Assimp { const WeightIndexArray& indices = cluster->GetIndices(); - if (indices.empty()) { + /*if (indices.empty()) { continue; - } + }*/ const MatIndexArray& mats = geo.GetMaterialIndices(); @@ -1439,13 +1440,11 @@ namespace Assimp { if (index_out_indices.back() == no_index_sentinel) { index_out_indices.back() = out_indices.size(); - } if (no_mat_check) { out_indices.push_back(out_idx[i]); - } - else { + } else { // this extra lookup is in O(logn), so the entire algorithm becomes O(nlogn) const std::vector::iterator it = std::lower_bound( outputVertStartIndices->begin(), @@ -1465,10 +1464,10 @@ namespace Assimp { // if we found at least one, generate the output bones // XXX this could be heavily simplified by collecting the bone // data in a single step. - if (ok) { + //if (ok) { ConvertCluster(bones, model, *cluster, out_indices, index_out_indices, count_out_indices, node_global_transform); - } + //} } } catch (std::exception&) { @@ -3525,9 +3524,9 @@ void FBXConverter::SetShadingPropertiesRaw(aiMaterial* out_mat, const PropertyTa } // ------------------------------------------------------------------------------------------------ - void ConvertToAssimpScene(aiScene* out, const Document& doc) + void ConvertToAssimpScene(aiScene* out, const Document& doc, bool removeEmptyBones) { - FBXConverter converter(out, doc); + FBXConverter converter(out, doc, removeEmptyBones); } } // !FBX diff --git a/code/FBXConverter.h b/code/FBXConverter.h index 50637468b..fe4e916be 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -112,7 +112,7 @@ public: }; public: - FBXConverter(aiScene* out, const Document& doc); + FBXConverter(aiScene* out, const Document& doc, bool removeEmptyBones ); ~FBXConverter(); private: @@ -453,6 +453,8 @@ private: aiScene* const out; const FBX::Document& doc; + + bool mRemoveEmptyBones; }; } diff --git a/code/FBXImportSettings.h b/code/FBXImportSettings.h index d5e1c2060..eaf127382 100644 --- a/code/FBXImportSettings.h +++ b/code/FBXImportSettings.h @@ -53,19 +53,21 @@ namespace FBX { struct ImportSettings { ImportSettings() - : strictMode(true) - , readAllLayers(true) - , readAllMaterials(false) - , readMaterials(true) - , readTextures(true) - , readCameras(true) - , readLights(true) - , readAnimations(true) - , readWeights(true) - , preservePivots(true) - , optimizeEmptyAnimationCurves(true) - , useLegacyEmbeddedTextureNaming(false) - {} + : strictMode(true) + , readAllLayers(true) + , readAllMaterials(false) + , readMaterials(true) + , readTextures(true) + , readCameras(true) + , readLights(true) + , readAnimations(true) + , readWeights(true) + , preservePivots(true) + , optimizeEmptyAnimationCurves(true) + , useLegacyEmbeddedTextureNaming(false) + , removeEmptyBones( true ) { + // empty + } /** enable strict mode: @@ -141,8 +143,12 @@ struct ImportSettings bool optimizeEmptyAnimationCurves; /** use legacy naming for embedded textures eg: (*0, *1, *2) - **/ + */ bool useLegacyEmbeddedTextureNaming; + + /** Empty bones shall be removed + */ + bool removeEmptyBones; }; diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index 2cc8bffc2..60a19223c 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -140,6 +140,7 @@ void FBXImporter::SetupProperties(const Importer* pImp) settings.preservePivots = pImp->GetPropertyBool(AI_CONFIG_IMPORT_FBX_PRESERVE_PIVOTS, true); settings.optimizeEmptyAnimationCurves = pImp->GetPropertyBool(AI_CONFIG_IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES, true); settings.useLegacyEmbeddedTextureNaming = pImp->GetPropertyBool(AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING, false); + settings.removeEmptyBones = pImp->GetPropertyBool(AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES, true); } // ------------------------------------------------------------------------------------------------ @@ -184,7 +185,7 @@ void FBXImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOS Document doc(parser,settings); // convert the FBX DOM to aiScene - ConvertToAssimpScene(pScene,doc); + ConvertToAssimpScene(pScene,doc, settings.removeEmptyBones); std::for_each(tokens.begin(),tokens.end(),Util::delete_fun()); } diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index 657b0361b..58f700b0e 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -46,8 +46,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * the data structure returned by Assimp. */ - - // internal headers #include "ValidateDataStructure.h" #include @@ -110,8 +108,8 @@ void ValidateDSProcess::ReportWarning(const char* msg,...) } // ------------------------------------------------------------------------------------------------ -inline int HasNameMatch(const aiString& in, aiNode* node) -{ +inline +int HasNameMatch(const aiString& in, aiNode* node) { int result = (node->mName == in ? 1 : 0 ); for (unsigned int i = 0; i < node->mNumChildren;++i) { result += HasNameMatch(in,node->mChildren[i]); @@ -121,9 +119,8 @@ inline int HasNameMatch(const aiString& in, aiNode* node) // ------------------------------------------------------------------------------------------------ template -inline void ValidateDSProcess::DoValidation(T** parray, unsigned int size, - const char* firstName, const char* secondName) -{ +inline +void ValidateDSProcess::DoValidation(T** parray, unsigned int size, const char* firstName, const char* secondName) { // validate all entries if (size) { @@ -516,13 +513,12 @@ void ValidateDSProcess::Validate( const aiMesh* pMesh) } // ------------------------------------------------------------------------------------------------ -void ValidateDSProcess::Validate( const aiMesh* pMesh, - const aiBone* pBone,float* afSum) -{ +void ValidateDSProcess::Validate( const aiMesh* pMesh, const aiBone* pBone,float* afSum) { this->Validate(&pBone->mName); if (!pBone->mNumWeights) { - ReportError("aiBone::mNumWeights is zero"); + // ReportError("aiBone::mNumWeights is zero"); + } // check whether all vertices affected by this bone are valid @@ -563,9 +559,6 @@ void ValidateDSProcess::Validate( const aiAnimation* pAnimation) else { ReportError("aiAnimation::mNumChannels is 0. At least one node animation channel must be there."); } - - // Animation duration is allowed to be zero in cases where the anim contains only a single key frame. - // if (!pAnimation->mDuration)this->ReportError("aiAnimation::mDuration is zero"); } // ------------------------------------------------------------------------------------------------ @@ -746,8 +739,9 @@ void ValidateDSProcess::Validate( const aiMaterial* pMaterial) "AI_MATKEY_SHININESS_STRENGTH key is 0.0"); } break; - default: ; - }; + default: + break; + } } if (AI_SUCCESS == aiGetMaterialFloat( pMaterial,AI_MATKEY_OPACITY,&fTemp) && (!fTemp || fTemp > 1.01)) { From 69ece762d13cb38be2147399d5d56d74aa0488f1 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 5 May 2019 16:00:57 +0200 Subject: [PATCH 147/187] fix the build: remove errorenous pragma statement. --- code/ASEParser.cpp | 1 - code/FBXConverter.cpp | 15 +++++++++------ code/ValidateDataStructure.cpp | 11 +++++------ 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/code/ASEParser.cpp b/code/ASEParser.cpp index f21f49eeb..14b962320 100644 --- a/code/ASEParser.cpp +++ b/code/ASEParser.cpp @@ -45,7 +45,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the ASE parser class */ -#pragma once #ifndef ASSIMP_BUILD_NO_ASE_IMPORTER #ifndef ASSIMP_BUILD_NO_3DS_IMPORTER diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 8d7c087ca..76b6c6b4e 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -388,6 +388,7 @@ namespace Assimp { break; default: ai_assert(false); + break; } } @@ -978,7 +979,9 @@ namespace Assimp { unsigned int epcount = 0; for (unsigned i = 0; i < indices.size(); i++) { - if (indices[i] < 0) epcount++; + if (indices[i] < 0) { + epcount++; + } } unsigned int pcount = static_cast( indices.size() ); unsigned int scount = out_mesh->mNumFaces = pcount - epcount; @@ -1408,9 +1411,9 @@ namespace Assimp { const WeightIndexArray& indices = cluster->GetIndices(); - /*if (indices.empty()) { + if (indices.empty() && mRemoveEmptyBones ) { continue; - }*/ + } const MatIndexArray& mats = geo.GetMaterialIndices(); @@ -1460,14 +1463,14 @@ namespace Assimp { } } } - + // if we found at least one, generate the output bones // XXX this could be heavily simplified by collecting the bone // data in a single step. - //if (ok) { + if (ok && mRemoveEmptyBones) { ConvertCluster(bones, model, *cluster, out_indices, index_out_indices, count_out_indices, node_global_transform); - //} + } } } catch (std::exception&) { diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index 58f700b0e..712fd6943 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -178,7 +178,8 @@ inline void ValidateDSProcess::DoValidationEx(T** parray, unsigned int size, // ------------------------------------------------------------------------------------------------ template inline -void ValidateDSProcess::DoValidationWithNameCheck(T** array, unsigned int size, const char* firstName, const char* secondName) { +void ValidateDSProcess::DoValidationWithNameCheck(T** array, unsigned int size, const char* firstName, + const char* secondName) { // validate all entries DoValidationEx(array,size,firstName,secondName); @@ -198,9 +199,8 @@ void ValidateDSProcess::DoValidationWithNameCheck(T** array, unsigned int size, // ------------------------------------------------------------------------------------------------ // Executes the post processing step on the given imported data. -void ValidateDSProcess::Execute( aiScene* pScene) -{ - this->mScene = pScene; +void ValidateDSProcess::Execute( aiScene* pScene) { + mScene = pScene; ASSIMP_LOG_DEBUG("ValidateDataStructureProcess begin"); // validate the node graph of the scene @@ -517,8 +517,7 @@ void ValidateDSProcess::Validate( const aiMesh* pMesh, const aiBone* pBone,float this->Validate(&pBone->mName); if (!pBone->mNumWeights) { - // ReportError("aiBone::mNumWeights is zero"); - + //ReportError("aiBone::mNumWeights is zero"); } // check whether all vertices affected by this bone are valid From 1324409c7b50ba8afa686facdb2b9468bd606bb5 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 5 May 2019 16:23:42 +0200 Subject: [PATCH 148/187] fix build: fix wrong function prototype. --- code/FBXConverter.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/FBXConverter.h b/code/FBXConverter.h index fe4e916be..a77cb4310 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -79,9 +79,10 @@ class Document; /** * Convert a FBX #Document to #aiScene * @param out Empty scene to be populated - * @param doc Parsed FBX document + * @param doc Parsed FBX document + * @param removeEmptyBones Will remove bones, which do not have any references to vertices. */ -void ConvertToAssimpScene(aiScene* out, const Document& doc); +void ConvertToAssimpScene(aiScene* out, const Document& doc, bool removeEmptyBones ); /** Dummy class to encapsulate the conversion process */ class FBXConverter { From eb1a2586c3e4ee5097b207b07feb5cfb61cd05bf Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 5 May 2019 17:44:15 +0200 Subject: [PATCH 149/187] add missing define in config.h.in --- include/assimp/config.h.in | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/assimp/config.h.in b/include/assimp/config.h.in index a37ff0b8c..50a5512e2 100644 --- a/include/assimp/config.h.in +++ b/include/assimp/config.h.in @@ -657,7 +657,11 @@ enum aiComponent */ #define AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING \ "AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING" - + +// --------------------------------------------------------------------------- +#define AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES \ + "AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES" + // --------------------------------------------------------------------------- /** @brief Set the vertex animation keyframe to be imported * From 1203d4658c157a188b1ba78547f6d503069a6798 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 6 May 2019 18:44:30 +0200 Subject: [PATCH 150/187] Add missing doc. --- include/assimp/config.h.in | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/include/assimp/config.h.in b/include/assimp/config.h.in index 50a5512e2..ba027cf40 100644 --- a/include/assimp/config.h.in +++ b/include/assimp/config.h.in @@ -651,14 +651,18 @@ enum aiComponent // --------------------------------------------------------------------------- /** @brief Set whether the fbx importer will use the legacy embedded texture naming. -* -* The default value is false (0) -* Property type: bool -*/ + * + * The default value is false (0) + * Property type: bool + */ #define AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING \ "AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING" // --------------------------------------------------------------------------- +/** @brief Set wether the FBX importer shall not remove empty bones. + * + * Empty bone are often used to define connections for other models. + * #define AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES \ "AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES" From 02324123e54bd967c20070f99fcff58a80574003 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 6 May 2019 19:15:28 +0200 Subject: [PATCH 151/187] Fix typo in comment. --- include/assimp/config.h.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/assimp/config.h.in b/include/assimp/config.h.in index ba027cf40..07be7cdad 100644 --- a/include/assimp/config.h.in +++ b/include/assimp/config.h.in @@ -662,7 +662,7 @@ enum aiComponent /** @brief Set wether the FBX importer shall not remove empty bones. * * Empty bone are often used to define connections for other models. - * + */ #define AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES \ "AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES" From 4a9cd0845171070fb971eb90c03f7ca6b8234039 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 6 May 2019 20:51:04 +0200 Subject: [PATCH 152/187] Prepaation for conversion. --- code/FBXConverter.cpp | 7 ++++++- code/FBXConverter.h | 17 +++++++++++++++++ code/FBXMeshGeometry.cpp | 4 ++-- code/FBXParser.cpp | 2 +- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 76b6c6b4e..ab600e53d 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -90,7 +90,8 @@ namespace Assimp { , anim_fps() , out(out) , doc(doc) - , mRemoveEmptyBones( removeEmptyBones ) { + , mRemoveEmptyBones( removeEmptyBones ) + , mCurrentUnit( FbxUnit::Undefined ) { // animations need to be converted first since this will // populate the node_anim_chain_bits map, which is needed // to determine which nodes need to be generated. @@ -3474,6 +3475,10 @@ void FBXConverter::SetShadingPropertiesRaw(aiMaterial* out_mat, const PropertyTa out->mMetaData->Set(14, "CustomFrameRate", doc.GlobalSettings().CustomFrameRate()); } + void FBXConverter::ConvertToUnitScale(FbxUnit unit) { + + } + void FBXConverter::TransferDataToScene() { ai_assert(!out->mMeshes); diff --git a/code/FBXConverter.h b/code/FBXConverter.h index a77cb4310..75f24713e 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -415,6 +415,21 @@ private: void ConvertGlobalSettings(); + enum class FbxUnit { + cm = 0, + m, + km, + inch, + foot, + mile, + yard, + NumUnits, + + Undefined + }; + + void ConvertToUnitScale(FbxUnit unit); + // ------------------------------------------------------------------------------------------------ // copy generated meshes, animations, lights, cameras and textures to the output scene void TransferDataToScene(); @@ -456,6 +471,8 @@ private: const FBX::Document& doc; bool mRemoveEmptyBones; + + FbxUnit mCurrentUnit; }; } diff --git a/code/FBXMeshGeometry.cpp b/code/FBXMeshGeometry.cpp index 2debfa651..468ba1c2e 100644 --- a/code/FBXMeshGeometry.cpp +++ b/code/FBXMeshGeometry.cpp @@ -568,8 +568,8 @@ void MeshGeometry::ReadVertexDataColors(std::vector& colors_out, cons } // ------------------------------------------------------------------------------------------------ -static const std::string TangentIndexToken = "TangentIndex"; -static const std::string TangentsIndexToken = "TangentsIndex"; +static const char *TangentIndexToken = "TangentIndex"; +static const char *TangentsIndexToken = "TangentsIndex"; void MeshGeometry::ReadVertexDataTangents(std::vector& tangents_out, const Scope& source, const std::string& MappingInformationType, diff --git a/code/FBXParser.cpp b/code/FBXParser.cpp index b255c4734..fe63866a0 100644 --- a/code/FBXParser.cpp +++ b/code/FBXParser.cpp @@ -117,7 +117,7 @@ namespace FBX { Element::Element(const Token& key_token, Parser& parser) : key_token(key_token) { - TokenPtr n = NULL; + TokenPtr n = nullptr; do { n = parser.AdvanceToNextToken(); if(!n) { From 4155f005bee4a06c4bb724d748e9a3c69166d1c8 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 6 May 2019 21:21:58 +0200 Subject: [PATCH 153/187] Add implementation to convert from cm to m. --- code/FBXConverter.cpp | 44 +++++++++++++++++++++++++++++++++++--- code/FBXConverter.h | 6 ++---- code/FBXImportSettings.h | 7 +++++- code/FBXImporter.cpp | 1 + code/FBXMeshGeometry.cpp | 2 +- include/assimp/config.h.in | 9 +++++++- 6 files changed, 59 insertions(+), 10 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index ab600e53d..bd8347408 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -91,7 +91,7 @@ namespace Assimp { , out(out) , doc(doc) , mRemoveEmptyBones( removeEmptyBones ) - , mCurrentUnit( FbxUnit::Undefined ) { + , mCurrentUnit(FbxUnit::cm) { // animations need to be converted first since this will // populate the node_anim_chain_bits map, which is needed // to determine which nodes need to be generated. @@ -119,6 +119,7 @@ namespace Assimp { ConvertGlobalSettings(); TransferDataToScene(); + ConvertToUnitScale(doc.GlobalSettings().UnitScaleFactor()); // if we didn't read any meshes set the AI_SCENE_FLAGS_INCOMPLETE // to make sure the scene passes assimp's validation. FBX files @@ -3410,8 +3411,9 @@ void FBXConverter::SetShadingPropertiesRaw(aiMaterial* out_mat, const PropertyTa na->mNumScalingKeys = static_cast(keys.size()); na->mScalingKeys = new aiVectorKey[keys.size()]; - if (keys.size() > 0) + if (keys.size() > 0) { InterpolateKeys(na->mScalingKeys, keys, inputs, aiVector3D(1.0f, 1.0f, 1.0f), maxTime, minTime); + } } void FBXConverter::ConvertTranslationKeys(aiNodeAnim* na, const std::vector& nodes, @@ -3475,8 +3477,44 @@ void FBXConverter::SetShadingPropertiesRaw(aiMaterial* out_mat, const PropertyTa out->mMetaData->Set(14, "CustomFrameRate", doc.GlobalSettings().CustomFrameRate()); } - void FBXConverter::ConvertToUnitScale(FbxUnit unit) { + void FBXConverter::ConvertToUnitScale( FbxUnit unit ) { + if (mCurrentUnit == unit) { + return; + } + ai_real scale = 1.0; + if (mCurrentUnit == FbxUnit::cm) { + if (unit == FbxUnit::m) { + scale = (ai_real)0.01; + } else if (unit == FbxUnit::km) { + scale = (ai_real)0.00001; + } + } else if (mCurrentUnit == FbxUnit::m) { + if (unit == FbxUnit::cm) { + scale = (ai_real)100.0; + } else if (unit == FbxUnit::km) { + scale = (ai_real)0.001; + } + } else if (mCurrentUnit == FbxUnit::km) { + if (unit == FbxUnit::cm) { + scale = (ai_real)100000.0; + } else if (unit == FbxUnit::m) { + scale = (ai_real)1000.0; + } + } + + for (auto mesh : meshes) { + if (nullptr == mesh) { + continue; + } + + if (mesh->HasPositions()) { + for (unsigned int i = 0; i < mesh->mNumVertices; ++i) { + aiVector3D &pos = mesh->mVertices[i]; + pos *= scale; + } + } + } } void FBXConverter::TransferDataToScene() diff --git a/code/FBXConverter.h b/code/FBXConverter.h index 75f24713e..dbbeee158 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -419,15 +419,13 @@ private: cm = 0, m, km, - inch, - foot, - mile, - yard, NumUnits, Undefined }; + // ------------------------------------------------------------------------------------------------ + // Will perform the conversion from a given unit to the requested unit. void ConvertToUnitScale(FbxUnit unit); // ------------------------------------------------------------------------------------------------ diff --git a/code/FBXImportSettings.h b/code/FBXImportSettings.h index eaf127382..1a4c80f8b 100644 --- a/code/FBXImportSettings.h +++ b/code/FBXImportSettings.h @@ -65,7 +65,8 @@ struct ImportSettings , preservePivots(true) , optimizeEmptyAnimationCurves(true) , useLegacyEmbeddedTextureNaming(false) - , removeEmptyBones( true ) { + , removeEmptyBones( true ) + , convertToMeters( false ) { // empty } @@ -149,6 +150,10 @@ struct ImportSettings /** Empty bones shall be removed */ bool removeEmptyBones; + + /** Set to true to perform a conversion from cm to meter after the import + */ + bool convertToMeters; }; diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index 60a19223c..4f75b9c2e 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -141,6 +141,7 @@ void FBXImporter::SetupProperties(const Importer* pImp) settings.optimizeEmptyAnimationCurves = pImp->GetPropertyBool(AI_CONFIG_IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES, true); settings.useLegacyEmbeddedTextureNaming = pImp->GetPropertyBool(AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING, false); settings.removeEmptyBones = pImp->GetPropertyBool(AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES, true); + settings.convertToMeters = pImpl->GetPropertyBool(AI_CONFIG_FBX_CONVERT_TO_M, false); } // ------------------------------------------------------------------------------------------------ diff --git a/code/FBXMeshGeometry.cpp b/code/FBXMeshGeometry.cpp index 468ba1c2e..44a0264ca 100644 --- a/code/FBXMeshGeometry.cpp +++ b/code/FBXMeshGeometry.cpp @@ -576,7 +576,7 @@ void MeshGeometry::ReadVertexDataTangents(std::vector& tangents_out, const std::string& ReferenceInformationType) { const char * str = source.Elements().count( "Tangents" ) > 0 ? "Tangents" : "Tangent"; - const char * strIdx = source.Elements().count( "Tangents" ) > 0 ? TangentsIndexToken.c_str() : TangentIndexToken.c_str(); + const char * strIdx = source.Elements().count( "Tangents" ) > 0 ? TangentsIndexToken : TangentIndexToken; ResolveVertexDataArray(tangents_out,source,MappingInformationType,ReferenceInformationType, str, strIdx, diff --git a/include/assimp/config.h.in b/include/assimp/config.h.in index 07be7cdad..c42aa63da 100644 --- a/include/assimp/config.h.in +++ b/include/assimp/config.h.in @@ -659,13 +659,20 @@ enum aiComponent "AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING" // --------------------------------------------------------------------------- -/** @brief Set wether the FBX importer shall not remove empty bones. +/** @brief Set wether the importer shall not remove empty bones. * * Empty bone are often used to define connections for other models. */ #define AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES \ "AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES" + +// --------------------------------------------------------------------------- +/** @brief Set wether the FBX importer shall convert the unit from cm to m. + */ +#define AI_CONFIG_FBX_CONVERT_TO_M \ + "AI_CONFIG_FBX_CONVERT_TO_M" + // --------------------------------------------------------------------------- /** @brief Set the vertex animation keyframe to be imported * From e917b288a160e466288982cb0e148d5ac7ce6945 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 6 May 2019 21:38:45 +0200 Subject: [PATCH 154/187] fix a typo. --- code/FBXImporter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index 4f75b9c2e..339a9421a 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -141,7 +141,7 @@ void FBXImporter::SetupProperties(const Importer* pImp) settings.optimizeEmptyAnimationCurves = pImp->GetPropertyBool(AI_CONFIG_IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES, true); settings.useLegacyEmbeddedTextureNaming = pImp->GetPropertyBool(AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING, false); settings.removeEmptyBones = pImp->GetPropertyBool(AI_CONFIG_IMPORT_REMOVE_EMPTY_BONES, true); - settings.convertToMeters = pImpl->GetPropertyBool(AI_CONFIG_FBX_CONVERT_TO_M, false); + settings.convertToMeters = pImp->GetPropertyBool(AI_CONFIG_FBX_CONVERT_TO_M, false); } // ------------------------------------------------------------------------------------------------ From 390452bd06f510c3c2933ab5915ef2add1b35fec Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 7 May 2019 20:32:45 +0200 Subject: [PATCH 155/187] Fix the build. --- code/FBXConverter.cpp | 8 ++++---- code/FBXConverter.h | 22 +++++++++++----------- code/FBXImporter.cpp | 6 +++++- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index bd8347408..f45129cae 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -76,7 +76,7 @@ namespace Assimp { #define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000L - FBXConverter::FBXConverter(aiScene* out, const Document& doc, bool removeEmptyBones) + FBXConverter::FBXConverter(aiScene* out, const Document& doc, bool removeEmptyBones, FbxUnit unit ) : defaultMaterialIndex() , lights() , cameras() @@ -119,7 +119,7 @@ namespace Assimp { ConvertGlobalSettings(); TransferDataToScene(); - ConvertToUnitScale(doc.GlobalSettings().UnitScaleFactor()); + ConvertToUnitScale(unit); // if we didn't read any meshes set the AI_SCENE_FLAGS_INCOMPLETE // to make sure the scene passes assimp's validation. FBX files @@ -3570,9 +3570,9 @@ void FBXConverter::SetShadingPropertiesRaw(aiMaterial* out_mat, const PropertyTa } // ------------------------------------------------------------------------------------------------ - void ConvertToAssimpScene(aiScene* out, const Document& doc, bool removeEmptyBones) + void ConvertToAssimpScene(aiScene* out, const Document& doc, bool removeEmptyBones, FbxUnit unit) { - FBXConverter converter(out, doc, removeEmptyBones); + FBXConverter converter(out, doc, removeEmptyBones, unit); } } // !FBX diff --git a/code/FBXConverter.h b/code/FBXConverter.h index dbbeee158..f75222d5b 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -76,13 +76,22 @@ namespace FBX { class Document; +enum class FbxUnit { + cm = 0, + m, + km, + NumUnits, + + Undefined +}; + /** * Convert a FBX #Document to #aiScene * @param out Empty scene to be populated * @param doc Parsed FBX document * @param removeEmptyBones Will remove bones, which do not have any references to vertices. */ -void ConvertToAssimpScene(aiScene* out, const Document& doc, bool removeEmptyBones ); +void ConvertToAssimpScene(aiScene* out, const Document& doc, bool removeEmptyBones, FbxUnit unit); /** Dummy class to encapsulate the conversion process */ class FBXConverter { @@ -113,7 +122,7 @@ public: }; public: - FBXConverter(aiScene* out, const Document& doc, bool removeEmptyBones ); + FBXConverter(aiScene* out, const Document& doc, bool removeEmptyBones, FbxUnit unit); ~FBXConverter(); private: @@ -415,15 +424,6 @@ private: void ConvertGlobalSettings(); - enum class FbxUnit { - cm = 0, - m, - km, - NumUnits, - - Undefined - }; - // ------------------------------------------------------------------------------------------------ // Will perform the conversion from a given unit to the requested unit. void ConvertToUnitScale(FbxUnit unit); diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index 339a9421a..988735a77 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -185,8 +185,12 @@ void FBXImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOS // take the raw parse-tree and convert it to a FBX DOM Document doc(parser,settings); + FbxUnit unit(FbxUnit::cm); + if (settings.convertToMeters) { + unit = FbxUnit::m; + } // convert the FBX DOM to aiScene - ConvertToAssimpScene(pScene,doc, settings.removeEmptyBones); + ConvertToAssimpScene(pScene,doc, settings.removeEmptyBones, unit); std::for_each(tokens.begin(),tokens.end(),Util::delete_fun()); } From 6736f3d24b6c83389326207b704211696b0e8e2c Mon Sep 17 00:00:00 2001 From: Matias Date: Thu, 9 May 2019 11:19:05 +0200 Subject: [PATCH 156/187] Don't call PutString with an empty string. Both DumpChildrenAscii and EndAscii can return without modifyting the string, so we need to check the string before calling PutString. This used to cause a crash. --- code/FBXExportNode.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/FBXExportNode.cpp b/code/FBXExportNode.cpp index e5215466a..e90a50e67 100644 --- a/code/FBXExportNode.cpp +++ b/code/FBXExportNode.cpp @@ -252,7 +252,8 @@ void FBX::Node::DumpChildren( } else { std::ostringstream ss; DumpChildrenAscii(ss, indent); - s.PutString(ss.str()); + if (ss.tellp() > 0) + s.PutString(ss.str()); } } @@ -266,7 +267,8 @@ void FBX::Node::End( } else { std::ostringstream ss; EndAscii(ss, indent, has_children); - s.PutString(ss.str()); + if (ss.tellp() > 0) + s.PutString(ss.str()); } } From 575ef4d9276c4755ce168e116e8248d123b93d2a Mon Sep 17 00:00:00 2001 From: Matias Date: Thu, 9 May 2019 14:50:22 +0200 Subject: [PATCH 157/187] Added support for embedded textures to the FBXExporter (both binary and ASCII). Also made the FBX-namespaces more consistent (we had both Assimp::FBX:: and FBX::). Since we seem to support two types of embedded texture references (both asterisk+texture_id and filepath) I made the exporter use aiScene::GetEmbeddedTexture for looking up texture reference and integrated @loebl 's modification of the function to support the old ("*1") type of references (https://github.com/loebl/assimp/commit/e217358) --- code/FBXCommon.h | 4 +-- code/FBXExportNode.cpp | 11 ++++--- code/FBXExportNode.h | 3 +- code/FBXExportProperty.cpp | 4 +-- code/FBXExportProperty.h | 3 +- code/FBXExporter.cpp | 48 +++++++++++++++++++++++------- code/FBXUtil.cpp | 60 ++++++++++++++++++++++++++++++++++++++ code/FBXUtil.h | 9 ++++++ include/assimp/scene.h | 8 +++++ 9 files changed, 130 insertions(+), 20 deletions(-) diff --git a/code/FBXCommon.h b/code/FBXCommon.h index fcb20a5ca..e51644913 100644 --- a/code/FBXCommon.h +++ b/code/FBXCommon.h @@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_FBX_EXPORTER - +namespace Assimp { namespace FBX { const std::string NULL_RECORD = { // 13 null bytes @@ -80,7 +80,7 @@ namespace FBX TransformInheritance_MAX // end-of-enum sentinel }; } - +} #endif // ASSIMP_BUILD_NO_FBX_EXPORTER #endif // AI_FBXCOMMON_H_INC diff --git a/code/FBXExportNode.cpp b/code/FBXExportNode.cpp index e5215466a..06c89cee4 100644 --- a/code/FBXExportNode.cpp +++ b/code/FBXExportNode.cpp @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include // ostringstream #include // shared_ptr +namespace Assimp { // AddP70 helpers... there's no usable pattern here, // so all are defined as separate functions. // Even "animatable" properties are often completely different @@ -252,7 +253,8 @@ void FBX::Node::DumpChildren( } else { std::ostringstream ss; DumpChildrenAscii(ss, indent); - s.PutString(ss.str()); + if (ss.tellp() > 0) + s.PutString(ss.str()); } } @@ -266,7 +268,8 @@ void FBX::Node::End( } else { std::ostringstream ss; EndAscii(ss, indent, has_children); - s.PutString(ss.str()); + if (ss.tellp() > 0) + s.PutString(ss.str()); } } @@ -367,7 +370,7 @@ void FBX::Node::EndBinary( bool has_children ) { // if there were children, add a null record - if (has_children) { s.PutString(FBX::NULL_RECORD); } + if (has_children) { s.PutString(Assimp::FBX::NULL_RECORD); } // now go back and write initial pos this->end_pos = s.Tell(); @@ -563,6 +566,6 @@ void FBX::Node::WritePropertyNode( FBX::Node::WritePropertyNodeAscii(name, v, s, indent); } } - +} #endif // ASSIMP_BUILD_NO_FBX_EXPORTER #endif // ASSIMP_BUILD_NO_EXPORT diff --git a/code/FBXExportNode.h b/code/FBXExportNode.h index e1ebc3696..b388a4f86 100644 --- a/code/FBXExportNode.h +++ b/code/FBXExportNode.h @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +namespace Assimp { namespace FBX { class Node; } @@ -264,7 +265,7 @@ private: // static helper functions ); }; - +} #endif // ASSIMP_BUILD_NO_FBX_EXPORTER diff --git a/code/FBXExportProperty.cpp b/code/FBXExportProperty.cpp index 9981d6b1c..ac464c806 100644 --- a/code/FBXExportProperty.cpp +++ b/code/FBXExportProperty.cpp @@ -52,7 +52,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include // ostringstream - +namespace Assimp { // constructors for single element properties FBX::Property::Property(bool v) @@ -359,6 +359,6 @@ void FBX::Property::DumpAscii(std::ostream& s, int indent) throw runtime_error(err.str()); } } - +} #endif // ASSIMP_BUILD_NO_FBX_EXPORTER #endif // ASSIMP_BUILD_NO_EXPORT diff --git a/code/FBXExportProperty.h b/code/FBXExportProperty.h index 9c9d37c36..424bf8b32 100644 --- a/code/FBXExportProperty.h +++ b/code/FBXExportProperty.h @@ -56,6 +56,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include // is_void +namespace Assimp { namespace FBX { class Property; } @@ -123,7 +124,7 @@ private: char type; std::vector data; }; - +} #endif // ASSIMP_BUILD_NO_FBX_EXPORTER #endif // AI_FBXEXPORTPROPERTY_H_INC diff --git a/code/FBXExporter.cpp b/code/FBXExporter.cpp index 6b1ac0e5e..24ae88e6b 100644 --- a/code/FBXExporter.cpp +++ b/code/FBXExporter.cpp @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXExportNode.h" #include "FBXExportProperty.h" #include "FBXCommon.h" +#include "FBXUtil.h" #include // aiGetVersion #include @@ -73,7 +74,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. const ai_real DEG = ai_real( 57.29577951308232087679815481 ); // degrees per radian +using namespace Assimp; +using namespace Assimp::FBX; + // some constants that we'll use for writing metadata +namespace Assimp { namespace FBX { const std::string EXPORT_VERSION_STR = "7.4.0"; const uint32_t EXPORT_VERSION_INT = 7400; // 7.4 == 2014/2015 @@ -92,11 +97,6 @@ namespace FBX { ";------------------------------------------------------------------"; } -using namespace Assimp; -using namespace FBX; - -namespace Assimp { - // --------------------------------------------------------------------- // Worker function for exporting a scene to binary FBX. // Prototyped and registered in Exporter.cpp @@ -121,6 +121,7 @@ namespace Assimp { IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* pProperties + ){ // initialize the exporter FBXExporter exporter(pScene, pProperties); @@ -1393,10 +1394,6 @@ void FBXExporter::WriteObjects () // FbxVideo - stores images used by textures. for (const auto &it : uid_by_image) { - if (it.first.compare(0, 1, "*") == 0) { - // TODO: embedded textures - continue; - } FBX::Node n("Video"); const int64_t& uid = it.second; const std::string name = ""; // TODO: ... name??? @@ -1406,7 +1403,38 @@ void FBXExporter::WriteObjects () // TODO: get full path... relative path... etc... ugh... // for now just use the same path for everything, // and hopefully one of them will work out. - const std::string& path = it.first; + std::string path = it.first; + // try get embedded texture + const aiTexture* embedded_texture = mScene->GetEmbeddedTexture(it.first.c_str()); + if (embedded_texture != nullptr) + { + // change the path (use original filename, if available. If name is ampty, concatenate texture index with file extension) + std::stringstream newPath; + if (embedded_texture->mFilename.length > 0) + newPath << embedded_texture->mFilename.C_Str(); + else if (embedded_texture->achFormatHint[0]) + { + int texture_index = std::stoi(path.substr(1, path.size() - 1)); + newPath << texture_index << "." << embedded_texture->achFormatHint; + } + path = newPath.str(); + // embed the texture + size_t texture_size = static_cast(embedded_texture->mWidth * std::max(embedded_texture->mHeight, 1u)); + if (binary) + { + // embed texture as binary data + std::vector tex_data; + tex_data.resize(texture_size); + memcpy(&tex_data[0], (char*)embedded_texture->pcData, texture_size); + n.AddChild("Content", tex_data); + } + else + { + // embed texture in base64 encoding + std::string encoded_texture = FBX::Util::EncodeBase64((char*)embedded_texture->pcData, texture_size); + n.AddChild("Content", encoded_texture); + } + } p.AddP70("Path", "KString", "XRefUrl", "", path); n.AddChild(p); n.AddChild("UseMipMap", int32_t(0)); diff --git a/code/FBXUtil.cpp b/code/FBXUtil.cpp index fb483161b..068683f7d 100644 --- a/code/FBXUtil.cpp +++ b/code/FBXUtil.cpp @@ -157,6 +157,66 @@ size_t DecodeBase64(const char* in, size_t inLength, uint8_t*& out) return outLength; } +static const char to_base64_string[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +char EncodeBase64(char byte) +{ + return to_base64_string[(size_t)byte]; +} + +/** Encodes a block of 4 bytes to base64 encoding +* +* @param bytes Bytes to encode. +* @param out_string String to write encoded values to. +* @param string_pos Position in out_string.*/ +void EncodeByteBlock(const char* bytes, std::string& out_string, size_t string_pos) +{ + char b0 = (bytes[0] & 0b11111100) >> 2; + char b1 = (bytes[0] & 0b00000011) << 4 | ((bytes[1] & 0b11110000) >> 4); + char b2 = (bytes[1] & 0b00001111) << 2 | ((bytes[2] & 0b11000000) >> 6); + char b3 = (bytes[2] & 0b00111111); + + out_string[string_pos + 0] = EncodeBase64(b0); + out_string[string_pos + 1] = EncodeBase64(b1); + out_string[string_pos + 2] = EncodeBase64(b2); + out_string[string_pos + 3] = EncodeBase64(b3); +} + +std::string EncodeBase64(const char* data, size_t length) +{ + // calculate extra bytes needed to get a multiple of 3 + size_t extraBytes = 3 - length % 3; + + // number of base64 bytes + size_t encodedBytes = 4 * (length + extraBytes) / 3; + + std::string encoded_string(encodedBytes, '='); + + // read blocks of 3 bytes + for (size_t ib3 = 0; ib3 < length / 3; ib3++) + { + const size_t iByte = ib3 * 3; + const size_t iEncodedByte = ib3 * 4; + const char* currData = &data[iByte]; + + EncodeByteBlock(currData, encoded_string, iEncodedByte); + } + + // if size of data is not a multiple of 3, also encode the final bytes (and add zeros where needed) + if (extraBytes > 0) + { + char finalBytes[4] = { 0,0,0,0 }; + memcpy(&finalBytes[0], &data[length - length % 3], length % 3); + + const size_t iEncodedByte = encodedBytes - 4; + EncodeByteBlock(&finalBytes[0], encoded_string, iEncodedByte); + + // add '=' at the end + for (size_t i = 0; i < 4 * extraBytes / 3; i++) + encoded_string[encodedBytes - i - 1] = '='; + } + return encoded_string; +} + } // !Util } // !FBX } // !Assimp diff --git a/code/FBXUtil.h b/code/FBXUtil.h index 6890e015b..b26eba5d5 100644 --- a/code/FBXUtil.h +++ b/code/FBXUtil.h @@ -113,6 +113,15 @@ uint8_t DecodeBase64(char ch); * @return size of the decoded data (number of bytes)*/ size_t DecodeBase64(const char* in, size_t inLength, uint8_t*& out); +char EncodeBase64(char byte); + +/** Encode bytes in base64-encoding +* +* @param data Binary data to encode. +* @param inLength Number of bytes to encode. +* @return base64-encoded string*/ +std::string EncodeBase64(const char* data, size_t length); + } } } diff --git a/include/assimp/scene.h b/include/assimp/scene.h index de0239702..e973f6c5b 100644 --- a/include/assimp/scene.h +++ b/include/assimp/scene.h @@ -389,6 +389,14 @@ struct aiScene //! Returns an embedded texture const aiTexture* GetEmbeddedTexture(const char* filename) const { + // lookup using texture ID (if referenced like: "*1", "*2", etc.) + if ('*' == *filename) { + int index = std::atoi(filename + 1); + if (0 > index || mNumTextures <= static_cast(index)) + return nullptr; + return mTextures[index]; + } + // lookup using filename const char* shortFilename = GetShortFilename(filename); for (unsigned int i = 0; i < mNumTextures; i++) { const char* shortTextureFilename = GetShortFilename(mTextures[i]->mFilename.C_Str()); From 9903504c42f62c8caf1a7ed8a852e1ff8d7ca97f Mon Sep 17 00:00:00 2001 From: Matias Date: Thu, 9 May 2019 14:57:18 +0200 Subject: [PATCH 158/187] Removed some code that I didn't mean to fix (I already submitted this in another PR: https://github.com/assimp/assimp/pull/2450). --- code/FBXExportNode.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/FBXExportNode.cpp b/code/FBXExportNode.cpp index 06c89cee4..8cb12d619 100644 --- a/code/FBXExportNode.cpp +++ b/code/FBXExportNode.cpp @@ -253,8 +253,7 @@ void FBX::Node::DumpChildren( } else { std::ostringstream ss; DumpChildrenAscii(ss, indent); - if (ss.tellp() > 0) - s.PutString(ss.str()); + s.PutString(ss.str()); } } @@ -268,8 +267,7 @@ void FBX::Node::End( } else { std::ostringstream ss; EndAscii(ss, indent, has_children); - if (ss.tellp() > 0) - s.PutString(ss.str()); + s.PutString(ss.str()); } } From a44354498690f41d3174b48e0cab75499c70ed19 Mon Sep 17 00:00:00 2001 From: Matias Date: Thu, 9 May 2019 15:28:00 +0200 Subject: [PATCH 159/187] Replaced binary literals with hex literals (since binary literals was introduced in C++14) --- code/FBXUtil.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/FBXUtil.cpp b/code/FBXUtil.cpp index 068683f7d..557d0d843 100644 --- a/code/FBXUtil.cpp +++ b/code/FBXUtil.cpp @@ -170,10 +170,10 @@ char EncodeBase64(char byte) * @param string_pos Position in out_string.*/ void EncodeByteBlock(const char* bytes, std::string& out_string, size_t string_pos) { - char b0 = (bytes[0] & 0b11111100) >> 2; - char b1 = (bytes[0] & 0b00000011) << 4 | ((bytes[1] & 0b11110000) >> 4); - char b2 = (bytes[1] & 0b00001111) << 2 | ((bytes[2] & 0b11000000) >> 6); - char b3 = (bytes[2] & 0b00111111); + char b0 = (bytes[0] & 0xFC) >> 2; + char b1 = (bytes[0] & 0x03) << 4 | ((bytes[1] & 0xF0) >> 4); + char b2 = (bytes[1] & 0x0F) << 2 | ((bytes[2] & 0xC0) >> 6); + char b3 = (bytes[2] & 0x3F); out_string[string_pos + 0] = EncodeBase64(b0); out_string[string_pos + 1] = EncodeBase64(b1); From 700954c11542035a479052ad036ea5ff000e9143 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 10 May 2019 09:09:47 +0200 Subject: [PATCH 160/187] Update FBXExporter.cpp Just fixed some typos. --- code/FBXExporter.cpp | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/code/FBXExporter.cpp b/code/FBXExporter.cpp index 24ae88e6b..ddfac6d34 100644 --- a/code/FBXExporter.cpp +++ b/code/FBXExporter.cpp @@ -1406,30 +1406,25 @@ void FBXExporter::WriteObjects () std::string path = it.first; // try get embedded texture const aiTexture* embedded_texture = mScene->GetEmbeddedTexture(it.first.c_str()); - if (embedded_texture != nullptr) - { - // change the path (use original filename, if available. If name is ampty, concatenate texture index with file extension) + if (embedded_texture != nullptr) { + // change the path (use original filename, if available. If name is empty, concatenate texture index with file extension) std::stringstream newPath; - if (embedded_texture->mFilename.length > 0) + if (embedded_texture->mFilename.length > 0) { newPath << embedded_texture->mFilename.C_Str(); - else if (embedded_texture->achFormatHint[0]) - { + } else if (embedded_texture->achFormatHint[0]) { int texture_index = std::stoi(path.substr(1, path.size() - 1)); newPath << texture_index << "." << embedded_texture->achFormatHint; } path = newPath.str(); // embed the texture size_t texture_size = static_cast(embedded_texture->mWidth * std::max(embedded_texture->mHeight, 1u)); - if (binary) - { + if (binary) { // embed texture as binary data std::vector tex_data; tex_data.resize(texture_size); memcpy(&tex_data[0], (char*)embedded_texture->pcData, texture_size); n.AddChild("Content", tex_data); - } - else - { + } else { // embed texture in base64 encoding std::string encoded_texture = FBX::Util::EncodeBase64((char*)embedded_texture->pcData, texture_size); n.AddChild("Content", encoded_texture); @@ -1447,17 +1442,17 @@ void FBXExporter::WriteObjects () // referenced by material_index/texture_type pairs. std::map,int64_t> texture_uids; const std::map prop_name_by_tt = { - {aiTextureType_DIFFUSE, "DiffuseColor"}, - {aiTextureType_SPECULAR, "SpecularColor"}, - {aiTextureType_AMBIENT, "AmbientColor"}, - {aiTextureType_EMISSIVE, "EmissiveColor"}, - {aiTextureType_HEIGHT, "Bump"}, - {aiTextureType_NORMALS, "NormalMap"}, - {aiTextureType_SHININESS, "ShininessExponent"}, - {aiTextureType_OPACITY, "TransparentColor"}, + {aiTextureType_DIFFUSE, "DiffuseColor"}, + {aiTextureType_SPECULAR, "SpecularColor"}, + {aiTextureType_AMBIENT, "AmbientColor"}, + {aiTextureType_EMISSIVE, "EmissiveColor"}, + {aiTextureType_HEIGHT, "Bump"}, + {aiTextureType_NORMALS, "NormalMap"}, + {aiTextureType_SHININESS, "ShininessExponent"}, + {aiTextureType_OPACITY, "TransparentColor"}, {aiTextureType_DISPLACEMENT, "DisplacementColor"}, //{aiTextureType_LIGHTMAP, "???"}, - {aiTextureType_REFLECTION, "ReflectionColor"} + {aiTextureType_REFLECTION, "ReflectionColor"} //{aiTextureType_UNKNOWN, ""} }; for (size_t i = 0; i < mScene->mNumMaterials; ++i) { From 64ff3616100fa6abeff91346a14af890dfaace17 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 11 May 2019 09:19:43 +0200 Subject: [PATCH 161/187] closes https://github.com/assimp/assimp/issues/2335: add cmake-modules to the installer. --- packaging/windows-innosetup/script_x64.iss | 3 +++ packaging/windows-innosetup/script_x86.iss | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packaging/windows-innosetup/script_x64.iss b/packaging/windows-innosetup/script_x64.iss index cd4837f0a..963e4fc96 100644 --- a/packaging/windows-innosetup/script_x64.iss +++ b/packaging/windows-innosetup/script_x64.iss @@ -64,6 +64,9 @@ Source: "..\..\samples\*"; DestDir: "{app}\samples"; Flags: recursesubdirs; Comp ; Include files Source: "..\..\include\*"; DestDir: "{app}\include"; Flags: recursesubdirs +; CMake files +Source: "..\..\cmake-modules\*"; DestDir: "{app}\cmake-modules"; Flags: recursesubdirs + [Icons] ; Name: "{group}\Assimp Manual"; Filename: "{app}\doc\AssimpDoc.chm" ; Components: help ; Name: "{group}\Assimp Command Line Manual"; Filename: "{app}\doc\AssimpCmdDoc.chm"; Components: help diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss index 9aca78550..b48be4d56 100644 --- a/packaging/windows-innosetup/script_x86.iss +++ b/packaging/windows-innosetup/script_x86.iss @@ -65,6 +65,9 @@ Source: "..\..\samples\*"; DestDir: "{app}\samples"; Flags: recursesubdirs; Comp ; Include files Source: "..\..\include\*"; DestDir: "{app}\include"; Flags: recursesubdirs +; CMake files +Source: "..\..\cmake-modules\*"; DestDir: "{app}\cmake-modules"; Flags: recursesubdirs + [Icons] ; Name: "{group}\Assimp Manual"; Filename: "{app}\doc\AssimpDoc.chm" ; Components: help ; Name: "{group}\Assimp Command Line Manual"; Filename: "{app}\doc\AssimpCmdDoc.chm"; Components: help From 6aecfd0183d7ba4b1056d7e033a2c1f820dfcbc5 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 11 May 2019 09:39:23 +0200 Subject: [PATCH 162/187] closes https://github.com/assimp/assimp/issues/2334: run vc_redist in passive + quiet mode. --- packaging/windows-innosetup/script_x64.iss | 2 +- packaging/windows-innosetup/script_x86.iss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/windows-innosetup/script_x64.iss b/packaging/windows-innosetup/script_x64.iss index 963e4fc96..e08a76b55 100644 --- a/packaging/windows-innosetup/script_x64.iss +++ b/packaging/windows-innosetup/script_x64.iss @@ -32,7 +32,7 @@ Name: "test"; Description: "Test Models (BSD-licensed)"; Types: full Name: "test_nonbsd"; Description: "Test Models (other (free) licenses)"; Types: full [Run] -Filename: "{app}\stub\vc_redist.x64.exe"; Parameters: "/qb"; StatusMsg: "Installing VS2017 redistributable package (64 Bit)"; Check: IsWin64 +Filename: "{app}\stub\vc_redist.x64.exe"; Parameters: "/qb /passive /quiet"; StatusMsg: "Installing VS2017 redistributable package (64 Bit)"; Check: IsWin64 [Files] Source: "readme_installer.txt"; DestDir: "{app}"; Flags: isreadme diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss index b48be4d56..e2d214019 100644 --- a/packaging/windows-innosetup/script_x86.iss +++ b/packaging/windows-innosetup/script_x86.iss @@ -32,7 +32,7 @@ Name: "test"; Description: "Test Models (BSD-licensed)"; Types: full Name: "test_nonbsd"; Description: "Test Models (other (free) licenses)"; Types: full [Run] -Filename: "{app}\stub\vc_redist.x86.exe"; Parameters: "/qb"; StatusMsg: "Installing VS2017 redistributable package (32 Bit)"; Check: not IsWin64 +Filename: "{app}\stub\vc_redist.x86.exe"; Parameters: "/qb /passive /quiet"; StatusMsg: "Installing VS2017 redistributable package (32 Bit)"; Check: not IsWin64 [Files] Source: "readme_installer.txt"; DestDir: "{app}"; Flags: isreadme From 0898484d45307db0cdd8c3805b69a063a172942f Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 11 May 2019 11:02:28 +0200 Subject: [PATCH 163/187] Inno: fix folder names + versions. --- CMakeLists.txt | 5 +++-- assimpTargets-release.cmake.in | 1 + packaging/windows-innosetup/script_x64.iss | 10 +++++----- packaging/windows-innosetup/script_x86.iss | 6 +++--- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa5842560..cda2d4e84 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,8 +151,8 @@ ELSE() ENDIF(NOT BUILD_SHARED_LIBS) # Define here the needed parameters -SET (ASSIMP_VERSION_MAJOR 4) -SET (ASSIMP_VERSION_MINOR 1) +SET (ASSIMP_VERSION_MAJOR 5) +SET (ASSIMP_VERSION_MINOR 0) SET (ASSIMP_VERSION_PATCH 0) SET (ASSIMP_VERSION ${ASSIMP_VERSION_MAJOR}.${ASSIMP_VERSION_MINOR}.${ASSIMP_VERSION_PATCH}) SET (ASSIMP_SOVERSION 4) @@ -255,6 +255,7 @@ IF (CMAKE_BUILD_TYPE STREQUAL "Debug") ELSE() SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fembed-bitcode -O3") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fembed-bitcode -O3") + # Experimental for pdb generation ENDIF() ENDIF( IOS ) diff --git a/assimpTargets-release.cmake.in b/assimpTargets-release.cmake.in index 0b38e4e92..2efae448a 100644 --- a/assimpTargets-release.cmake.in +++ b/assimpTargets-release.cmake.in @@ -53,6 +53,7 @@ endif() set(CMAKE_IMPORT_FILE_VERSION) get_filename_component(ASSIMP_ROOT_DIR "@CMAKE_INSTALL_PREFIX@" REALPATH) + set( ASSIMP_CXX_FLAGS ) # dynamically linked library set( ASSIMP_LINK_FLAGS "" ) set( ASSIMP_LIBRARY_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_LIB_INSTALL_DIR@") diff --git a/packaging/windows-innosetup/script_x64.iss b/packaging/windows-innosetup/script_x64.iss index e08a76b55..4d1b67cd0 100644 --- a/packaging/windows-innosetup/script_x64.iss +++ b/packaging/windows-innosetup/script_x64.iss @@ -2,19 +2,19 @@ [Setup] AppName=Open Asset Import Library - SDK -AppVerName=Open Asset Import Library - SDK (v4.1.0) +AppVerName=Open Asset Import Library - SDK (v5.0.0) DefaultDirName={pf}\Assimp DefaultGroupName=Assimp -UninstallDisplayIcon={app}\bin\x86\assimp.exe +UninstallDisplayIcon={app}\bin\x64\assimp.exe OutputDir=out AppCopyright=Assimp Development Team SetupIconFile=..\..\tools\shared\assimp_tools_icon.ico WizardImageFile=compiler:WizModernImage-IS.BMP WizardSmallImageFile=compiler:WizModernSmallImage-IS.BMP LicenseFile=License.rtf -OutputBaseFileName=assimp-sdk-4.1.0-setup -VersionInfoVersion=4.1.0.0 -VersionInfoTextVersion=4.1.0 +OutputBaseFileName=assimp-sdk-5.0.0-setup +VersionInfoVersion=5.0.0.0 +VersionInfoTextVersion=5.0.0 VersionInfoCompany=Assimp Development Team ArchitecturesInstallIn64BitMode=x64 diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss index e2d214019..29ab5c011 100644 --- a/packaging/windows-innosetup/script_x86.iss +++ b/packaging/windows-innosetup/script_x86.iss @@ -2,7 +2,7 @@ [Setup] AppName=Open Asset Import Library - SDK -AppVerName=Open Asset Import Library - SDK (v4.1.0) +AppVerName=Open Asset Import Library - SDK (v5.0.0) DefaultDirName={pf}\Assimp DefaultGroupName=Assimp UninstallDisplayIcon={app}\bin\x86\assimp.exe @@ -12,11 +12,11 @@ SetupIconFile=..\..\tools\shared\assimp_tools_icon.ico WizardImageFile=compiler:WizModernImage-IS.BMP WizardSmallImageFile=compiler:WizModernSmallImage-IS.BMP LicenseFile=License.rtf -OutputBaseFileName=assimp-sdk-4.1.0-setup +OutputBaseFileName=assimp-sdk-5.0.0-setup VersionInfoVersion=4.1.0.0 VersionInfoTextVersion=4.1.0 VersionInfoCompany=Assimp Development Team -ArchitecturesInstallIn64BitMode=x64 +ArchitecturesInstallIn64BitMode=x86 [Types] Name: "full"; Description: "Full installation" From fd0e0d05e657ec56fab61282f5f50bd2c9049092 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 11 May 2019 13:02:07 +0200 Subject: [PATCH 164/187] Inno: fix ArchitecturesInstallIn64BitMode for x86 platforms. --- packaging/windows-innosetup/script_x86.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/windows-innosetup/script_x86.iss b/packaging/windows-innosetup/script_x86.iss index 29ab5c011..d22d23b64 100644 --- a/packaging/windows-innosetup/script_x86.iss +++ b/packaging/windows-innosetup/script_x86.iss @@ -16,7 +16,7 @@ OutputBaseFileName=assimp-sdk-5.0.0-setup VersionInfoVersion=4.1.0.0 VersionInfoTextVersion=4.1.0 VersionInfoCompany=Assimp Development Team -ArchitecturesInstallIn64BitMode=x86 +;ArchitecturesInstallIn64BitMode=x64 [Types] Name: "full"; Description: "Full installation" From cb0c47764ab1360b06f7db9e8610b741c59d0afd Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Sat, 11 May 2019 11:56:28 -1000 Subject: [PATCH 165/187] Set directory and name properties for installing static lib PDB --- code/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 5a7838515..df12695d2 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -1138,6 +1138,16 @@ if (ASSIMP_ANDROID_JNIIOSYSTEM) ENDIF(ASSIMP_ANDROID_JNIIOSYSTEM) if(MSVC AND ASSIMP_INSTALL_PDB) + # When only the static library is built, these properties must + # be set to ensure the static lib .pdb is staged for installation. + IF(NOT BUILD_SHARED_LIBS) + SET_TARGET_PROPERTIES( assimp PROPERTIES + COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMPILE_PDB_NAME assimp${LIBRARY_SUFFIX} + COMPILE_PDB_NAME_DEBUG assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX} + ) + ENDIF() + IF(CMAKE_GENERATOR MATCHES "^Visual Studio") install(FILES ${Assimp_BINARY_DIR}/code/Debug/assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}.pdb DESTINATION ${ASSIMP_LIB_INSTALL_DIR} From 461e21f66dd331f5d6d47b4abbf9f15525ddfaec Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Sun, 12 May 2019 10:56:59 -1000 Subject: [PATCH 166/187] Fix Windows build with external zlib assimp.rc contains an include with a double-parent header search. In a default build configuration, this is resolved via the configuration header path generated for in-tree zlib. When external zlib is used, this header search path is not provided to the RC compiler, therefore fails to find revision.h. This is solved by simply including "revision.h" since the root of the binary directory is already used as a search path. --- code/res/assimp.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/res/assimp.rc b/code/res/assimp.rc index ae0c87b8a..14ffdf4f5 100644 --- a/code/res/assimp.rc +++ b/code/res/assimp.rc @@ -1,7 +1,7 @@ // Microsoft Visual C++ generated resource script. // #include "resource.h" -#include "..\..\revision.h" +#include "revision.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// From adbdbf2be6b1ecf25cbc92f1c6fc61a7d818bf2f Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 13 May 2019 21:41:37 +0200 Subject: [PATCH 167/187] closes https://github.com/assimp/assimp/issues/2459: fix duplicated fbx-type propertry. --- code/FBXExportNode.h | 9 +- code/FBXExportProperty.cpp | 259 +++++++++++++++++++--------------- code/FBXExportProperty.h | 49 ++++--- code/FBXExporter.cpp | 6 +- test/models/PLY/cube_test.ply | 2 +- 5 files changed, 174 insertions(+), 151 deletions(-) diff --git a/code/FBXExportNode.h b/code/FBXExportNode.h index b388a4f86..ef3bc781a 100644 --- a/code/FBXExportNode.h +++ b/code/FBXExportNode.h @@ -59,12 +59,11 @@ namespace FBX { class Node; } -class FBX::Node -{ -public: // public data members +class FBX::Node { +public: // TODO: accessors std::string name; // node name - std::vector properties; // node properties + std::vector properties; // node properties std::vector children; // child nodes // some nodes always pretend they have children... @@ -215,7 +214,7 @@ public: // static member functions Assimp::StreamWriterLE& s, bool binary, int indent ) { - FBX::Property p(value); + FBX::FBXExportProperty p(value); FBX::Node node(name, p); node.Dump(s, binary, indent); } diff --git a/code/FBXExportProperty.cpp b/code/FBXExportProperty.cpp index ac464c806..f8593e629 100644 --- a/code/FBXExportProperty.cpp +++ b/code/FBXExportProperty.cpp @@ -53,186 +53,209 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include // ostringstream namespace Assimp { +namespace FBX { + // constructors for single element properties -FBX::Property::Property(bool v) - : type('C'), data(1) -{ - data = {uint8_t(v)}; +FBXExportProperty::FBXExportProperty(bool v) +: type('C') +, data(1) { + data = { + uint8_t(v) + }; } -FBX::Property::Property(int16_t v) : type('Y'), data(2) -{ +FBXExportProperty::FBXExportProperty(int16_t v) +: type('Y') +, data(2) { uint8_t* d = data.data(); (reinterpret_cast(d))[0] = v; } -FBX::Property::Property(int32_t v) : type('I'), data(4) -{ +FBXExportProperty::FBXExportProperty(int32_t v) +: type('I') +, data(4) { uint8_t* d = data.data(); (reinterpret_cast(d))[0] = v; } -FBX::Property::Property(float v) : type('F'), data(4) -{ +FBXExportProperty::FBXExportProperty(float v) +: type('F') +, data(4) { uint8_t* d = data.data(); (reinterpret_cast(d))[0] = v; } -FBX::Property::Property(double v) : type('D'), data(8) -{ +FBXExportProperty::FBXExportProperty(double v) +: type('D') +, data(8) { uint8_t* d = data.data(); (reinterpret_cast(d))[0] = v; } -FBX::Property::Property(int64_t v) : type('L'), data(8) -{ +FBXExportProperty::FBXExportProperty(int64_t v) +: type('L') +, data(8) { uint8_t* d = data.data(); (reinterpret_cast(d))[0] = v; } - // constructors for array-type properties -FBX::Property::Property(const char* c, bool raw) - : Property(std::string(c), raw) -{} +FBXExportProperty::FBXExportProperty(const char* c, bool raw) +: FBXExportProperty(std::string(c), raw) { + // empty +} // strings can either be saved as "raw" (R) data, or "string" (S) data -FBX::Property::Property(const std::string& s, bool raw) - : type(raw ? 'R' : 'S'), data(s.size()) -{ +FBXExportProperty::FBXExportProperty(const std::string& s, bool raw) +: type(raw ? 'R' : 'S') +, data(s.size()) { for (size_t i = 0; i < s.size(); ++i) { data[i] = uint8_t(s[i]); } } -FBX::Property::Property(const std::vector& r) - : type('R'), data(r) -{} +FBXExportProperty::FBXExportProperty(const std::vector& r) +: type('R') +, data(r) { + // empty +} -FBX::Property::Property(const std::vector& va) - : type('i'), data(4*va.size()) -{ +FBXExportProperty::FBXExportProperty(const std::vector& va) +: type('i') +, data(4 * va.size() ) { int32_t* d = reinterpret_cast(data.data()); - for (size_t i = 0; i < va.size(); ++i) { d[i] = va[i]; } + for (size_t i = 0; i < va.size(); ++i) { + d[i] = va[i]; + } } -FBX::Property::Property(const std::vector& va) - : type('l'), data(8*va.size()) -{ +FBXExportProperty::FBXExportProperty(const std::vector& va) +: type('l') +, data(8 * va.size()) { int64_t* d = reinterpret_cast(data.data()); - for (size_t i = 0; i < va.size(); ++i) { d[i] = va[i]; } + for (size_t i = 0; i < va.size(); ++i) { + d[i] = va[i]; + } } -FBX::Property::Property(const std::vector& va) - : type('f'), data(4*va.size()) -{ +FBXExportProperty::FBXExportProperty(const std::vector& va) +: type('f') +, data(4 * va.size()) { float* d = reinterpret_cast(data.data()); - for (size_t i = 0; i < va.size(); ++i) { d[i] = va[i]; } + for (size_t i = 0; i < va.size(); ++i) { + d[i] = va[i]; + } } -FBX::Property::Property(const std::vector& va) - : type('d'), data(8*va.size()) -{ +FBXExportProperty::FBXExportProperty(const std::vector& va) +: type('d') +, data(8 * va.size()) { double* d = reinterpret_cast(data.data()); - for (size_t i = 0; i < va.size(); ++i) { d[i] = va[i]; } + for (size_t i = 0; i < va.size(); ++i) { + d[i] = va[i]; + } } -FBX::Property::Property(const aiMatrix4x4& vm) - : type('d'), data(8*16) -{ +FBXExportProperty::FBXExportProperty(const aiMatrix4x4& vm) +: type('d') +, data(8 * 16) { double* d = reinterpret_cast(data.data()); for (unsigned int c = 0; c < 4; ++c) { for (unsigned int r = 0; r < 4; ++r) { - d[4*c+r] = vm[r][c]; + d[4 * c + r] = vm[r][c]; } } } // public member functions -size_t FBX::Property::size() -{ +size_t FBXExportProperty::size() { switch (type) { - case 'C': case 'Y': case 'I': case 'F': case 'D': case 'L': - return data.size() + 1; - case 'S': case 'R': - return data.size() + 5; - case 'i': case 'd': - return data.size() + 13; - default: - throw DeadlyExportError("Requested size on property of unknown type"); + case 'C': + case 'Y': + case 'I': + case 'F': + case 'D': + case 'L': + return data.size() + 1; + case 'S': + case 'R': + return data.size() + 5; + case 'i': + case 'd': + return data.size() + 13; + default: + throw DeadlyExportError("Requested size on property of unknown type"); } } -void FBX::Property::DumpBinary(Assimp::StreamWriterLE &s) -{ +void FBXExportProperty::DumpBinary(Assimp::StreamWriterLE& s) { s.PutU1(type); uint8_t* d = data.data(); size_t N; switch (type) { - case 'C': s.PutU1(*(reinterpret_cast(d))); return; - case 'Y': s.PutI2(*(reinterpret_cast(d))); return; - case 'I': s.PutI4(*(reinterpret_cast(d))); return; - case 'F': s.PutF4(*(reinterpret_cast(d))); return; - case 'D': s.PutF8(*(reinterpret_cast(d))); return; - case 'L': s.PutI8(*(reinterpret_cast(d))); return; - case 'S': - case 'R': - s.PutU4(uint32_t(data.size())); - for (size_t i = 0; i < data.size(); ++i) { s.PutU1(data[i]); } - return; - case 'i': - N = data.size() / 4; - s.PutU4(uint32_t(N)); // number of elements - s.PutU4(0); // no encoding (1 would be zip-compressed) - // TODO: compress if large? - s.PutU4(uint32_t(data.size())); // data size - for (size_t i = 0; i < N; ++i) { - s.PutI4((reinterpret_cast(d))[i]); - } - return; - case 'l': - N = data.size() / 8; - s.PutU4(uint32_t(N)); // number of elements - s.PutU4(0); // no encoding (1 would be zip-compressed) - // TODO: compress if large? - s.PutU4(uint32_t(data.size())); // data size - for (size_t i = 0; i < N; ++i) { - s.PutI8((reinterpret_cast(d))[i]); - } - return; - case 'f': - N = data.size() / 4; - s.PutU4(uint32_t(N)); // number of elements - s.PutU4(0); // no encoding (1 would be zip-compressed) - // TODO: compress if large? - s.PutU4(uint32_t(data.size())); // data size - for (size_t i = 0; i < N; ++i) { - s.PutF4((reinterpret_cast(d))[i]); - } - return; - case 'd': - N = data.size() / 8; - s.PutU4(uint32_t(N)); // number of elements - s.PutU4(0); // no encoding (1 would be zip-compressed) - // TODO: compress if large? - s.PutU4(uint32_t(data.size())); // data size - for (size_t i = 0; i < N; ++i) { - s.PutF8((reinterpret_cast(d))[i]); - } - return; - default: - std::ostringstream err; - err << "Tried to dump property with invalid type '"; - err << type << "'!"; - throw DeadlyExportError(err.str()); + case 'C': s.PutU1(*(reinterpret_cast(d))); return; + case 'Y': s.PutI2(*(reinterpret_cast(d))); return; + case 'I': s.PutI4(*(reinterpret_cast(d))); return; + case 'F': s.PutF4(*(reinterpret_cast(d))); return; + case 'D': s.PutF8(*(reinterpret_cast(d))); return; + case 'L': s.PutI8(*(reinterpret_cast(d))); return; + case 'S': + case 'R': + s.PutU4(uint32_t(data.size())); + for (size_t i = 0; i < data.size(); ++i) { s.PutU1(data[i]); } + return; + case 'i': + N = data.size() / 4; + s.PutU4(uint32_t(N)); // number of elements + s.PutU4(0); // no encoding (1 would be zip-compressed) + // TODO: compress if large? + s.PutU4(uint32_t(data.size())); // data size + for (size_t i = 0; i < N; ++i) { + s.PutI4((reinterpret_cast(d))[i]); + } + return; + case 'l': + N = data.size() / 8; + s.PutU4(uint32_t(N)); // number of elements + s.PutU4(0); // no encoding (1 would be zip-compressed) + // TODO: compress if large? + s.PutU4(uint32_t(data.size())); // data size + for (size_t i = 0; i < N; ++i) { + s.PutI8((reinterpret_cast(d))[i]); + } + return; + case 'f': + N = data.size() / 4; + s.PutU4(uint32_t(N)); // number of elements + s.PutU4(0); // no encoding (1 would be zip-compressed) + // TODO: compress if large? + s.PutU4(uint32_t(data.size())); // data size + for (size_t i = 0; i < N; ++i) { + s.PutF4((reinterpret_cast(d))[i]); + } + return; + case 'd': + N = data.size() / 8; + s.PutU4(uint32_t(N)); // number of elements + s.PutU4(0); // no encoding (1 would be zip-compressed) + // TODO: compress if large? + s.PutU4(uint32_t(data.size())); // data size + for (size_t i = 0; i < N; ++i) { + s.PutF8((reinterpret_cast(d))[i]); + } + return; + default: + std::ostringstream err; + err << "Tried to dump property with invalid type '"; + err << type << "'!"; + throw DeadlyExportError(err.str()); } } -void FBX::Property::DumpAscii(Assimp::StreamWriterLE &outstream, int indent) -{ +void FBXExportProperty::DumpAscii(Assimp::StreamWriterLE& outstream, int indent) { std::ostringstream ss; ss.imbue(std::locale::classic()); ss.precision(15); // this seems to match official FBX SDK exports @@ -240,8 +263,7 @@ void FBX::Property::DumpAscii(Assimp::StreamWriterLE &outstream, int indent) outstream.PutString(ss.str()); } -void FBX::Property::DumpAscii(std::ostream& s, int indent) -{ +void FBXExportProperty::DumpAscii(std::ostream& s, int indent) { // no writing type... or anything. just shove it into the stream. uint8_t* d = data.data(); size_t N; @@ -359,6 +381,9 @@ void FBX::Property::DumpAscii(std::ostream& s, int indent) throw runtime_error(err.str()); } } -} + +} // Namespace FBX +} // Namespace Assimp + #endif // ASSIMP_BUILD_NO_FBX_EXPORTER #endif // ASSIMP_BUILD_NO_EXPORT diff --git a/code/FBXExportProperty.h b/code/FBXExportProperty.h index 424bf8b32..d692fe6ee 100644 --- a/code/FBXExportProperty.h +++ b/code/FBXExportProperty.h @@ -47,7 +47,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_FBX_EXPORTER - #include // aiMatrix4x4 #include // StreamWriterLE @@ -58,10 +57,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { namespace FBX { - class Property; -} -/** FBX::Property +/** @brief FBX::Property * * Holds a value of any of FBX's recognized types, * each represented by a particular one-character code. @@ -79,35 +76,34 @@ namespace FBX { * S : string (array of 1-byte char) * R : raw data (array of bytes) */ -class FBX::Property -{ +class FBXExportProperty { public: // constructors for basic types. // all explicit to avoid accidental typecasting - explicit Property(bool v); + explicit FBXExportProperty(bool v); // TODO: determine if there is actually a byte type, // or if this always means . 'C' seems to imply , // so possibly the above was intended to represent both. - explicit Property(int16_t v); - explicit Property(int32_t v); - explicit Property(float v); - explicit Property(double v); - explicit Property(int64_t v); + explicit FBXExportProperty(int16_t v); + explicit FBXExportProperty(int32_t v); + explicit FBXExportProperty(float v); + explicit FBXExportProperty(double v); + explicit FBXExportProperty(int64_t v); // strings can either be stored as 'R' (raw) or 'S' (string) type - explicit Property(const char* c, bool raw=false); - explicit Property(const std::string& s, bool raw=false); - explicit Property(const std::vector& r); - explicit Property(const std::vector& va); - explicit Property(const std::vector& va); - explicit Property(const std::vector& va); - explicit Property(const std::vector& va); - explicit Property(const aiMatrix4x4& vm); + explicit FBXExportProperty(const char* c, bool raw = false); + explicit FBXExportProperty(const std::string& s, bool raw = false); + explicit FBXExportProperty(const std::vector& r); + explicit FBXExportProperty(const std::vector& va); + explicit FBXExportProperty(const std::vector& va); + explicit FBXExportProperty(const std::vector& va); + explicit FBXExportProperty(const std::vector& va); + explicit FBXExportProperty(const aiMatrix4x4& vm); // this will catch any type not defined above, // so that we don't accidentally convert something we don't want. // for example (const char*) --> (bool)... seriously wtf C++ template - explicit Property(T v) : type('X') { + explicit FBXExportProperty(T v) : type('X') { static_assert(std::is_void::value, "TRIED TO CREATE FBX PROPERTY WITH UNSUPPORTED TYPE, CHECK YOUR PROPERTY INSTANTIATION"); } // note: no line wrap so it appears verbatim on the compiler error @@ -115,16 +111,19 @@ public: size_t size(); // write this property node as binary data to the given stream - void DumpBinary(Assimp::StreamWriterLE &s); - void DumpAscii(Assimp::StreamWriterLE &s, int indent=0); - void DumpAscii(std::ostream &s, int indent=0); + void DumpBinary(Assimp::StreamWriterLE& s); + void DumpAscii(Assimp::StreamWriterLE& s, int indent = 0); + void DumpAscii(std::ostream& s, int indent = 0); // note: make sure the ostream is in classic "C" locale private: char type; std::vector data; }; -} + +} // Namespace FBX +} // Namespace Assimp + #endif // ASSIMP_BUILD_NO_FBX_EXPORTER #endif // AI_FBXEXPORTPROPERTY_H_INC diff --git a/code/FBXExporter.cpp b/code/FBXExporter.cpp index ddfac6d34..dd34e135f 100644 --- a/code/FBXExporter.cpp +++ b/code/FBXExporter.cpp @@ -2271,8 +2271,8 @@ void FBXExporter::WriteModelNode( // not sure what these are for, // but they seem to be omnipresent - m.AddChild("Shading", Property(true)); - m.AddChild("Culling", Property("CullingOff")); + m.AddChild("Shading", FBXExportProperty(true)); + m.AddChild("Culling", FBXExportProperty("CullingOff")); m.Dump(outstream, binary, 1); } @@ -2385,7 +2385,7 @@ void FBXExporter::WriteModelNodes( na.AddProperties( node_attribute_uid, FBX::SEPARATOR + "NodeAttribute", "LimbNode" ); - na.AddChild("TypeFlags", Property("Skeleton")); + na.AddChild("TypeFlags", FBXExportProperty("Skeleton")); na.Dump(outstream, binary, 1); // and connect them connections.emplace_back("C", "OO", node_attribute_uid, node_uid); diff --git a/test/models/PLY/cube_test.ply b/test/models/PLY/cube_test.ply index 6ec6d3991..a86d022a5 100644 --- a/test/models/PLY/cube_test.ply +++ b/test/models/PLY/cube_test.ply @@ -1,6 +1,6 @@ ply format ascii 1.0 -comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.412856994) +comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.3297435427) element vertex 8 property float x property float y From 815730c92d432a9535afa526929435b6901649db Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 13 May 2019 21:49:50 +0200 Subject: [PATCH 168/187] Update CMakeLists.txt closes https://github.com/assimp/assimp/issues/2449: fix uwp handling --- code/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 5a7838515..455549c6a 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -1077,7 +1077,9 @@ if( MSVC ) endif() if (${CMAKE_SYSTEM_NAME} MATCHES "WindowsStore") - set(WindowsStore TRUE) + target_compile_definitions(assimp PUBLIC WindowsStore) + TARGET_LINK_LIBRARIES(assimp advapi32) + #set(WindowsStore TRUE) endif() SET_TARGET_PROPERTIES( assimp PROPERTIES VERSION ${ASSIMP_VERSION} From 5bca43be743e9ae52b8c507a587cd20bc0bfb250 Mon Sep 17 00:00:00 2001 From: Mike Samsonov Date: Tue, 14 May 2019 11:33:42 +0100 Subject: [PATCH 169/187] Degenerate triangles with small area removing fix --- code/FindDegenerates.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/code/FindDegenerates.cpp b/code/FindDegenerates.cpp index 365f5d744..50fac46db 100644 --- a/code/FindDegenerates.cpp +++ b/code/FindDegenerates.cpp @@ -228,6 +228,7 @@ bool FindDegeneratesProcess::ExecuteOnMesh( aiMesh* mesh) { if ( area < 1e-6 ) { if ( mConfigRemoveDegenerates ) { remove_me[ a ] = true; + ++deg; goto evil_jump_outside; } From 4e03a2c00dca149e4363eedc864ccd23b045487e Mon Sep 17 00:00:00 2001 From: Mike Samsonov Date: Tue, 14 May 2019 11:55:46 +0100 Subject: [PATCH 170/187] Exception spam fix for FBXMaterial --- code/FBXMaterial.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/FBXMaterial.cpp b/code/FBXMaterial.cpp index f16f13440..3778adff6 100644 --- a/code/FBXMaterial.cpp +++ b/code/FBXMaterial.cpp @@ -316,7 +316,7 @@ Video::Video(uint64_t id, const Element& element, const Document& doc, const std relativeFileName = ParseTokenAsString(GetRequiredToken(*RelativeFilename,0)); } - if(Content) { + if(Content && !Content->Tokens().empty()) { //this field is omitted when the embedded texture is already loaded, let's ignore if it's not found try { const Token& token = GetRequiredToken(*Content, 0); From c58ed8da22c17ff1e180b28b39f2c8370eb8b6c3 Mon Sep 17 00:00:00 2001 From: Mike Samsonov Date: Tue, 14 May 2019 15:24:23 +0100 Subject: [PATCH 171/187] Support for FBX file sizes more than 4GB --- code/FBXBinaryTokenizer.cpp | 12 ++++++------ code/FBXImporter.cpp | 2 +- code/FBXTokenizer.h | 12 ++++++------ code/FBXUtil.cpp | 2 +- code/FBXUtil.h | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/code/FBXBinaryTokenizer.cpp b/code/FBXBinaryTokenizer.cpp index 7138df431..a4a2bc8e7 100644 --- a/code/FBXBinaryTokenizer.cpp +++ b/code/FBXBinaryTokenizer.cpp @@ -98,7 +98,7 @@ namespace FBX { // return (flags & to_check) != 0; //} // ------------------------------------------------------------------------------------------------ -Token::Token(const char* sbegin, const char* send, TokenType type, unsigned int offset) +Token::Token(const char* sbegin, const char* send, TokenType type, size_t offset) : #ifdef DEBUG contents(sbegin, static_cast(send-sbegin)), @@ -122,18 +122,18 @@ namespace { // ------------------------------------------------------------------------------------------------ // signal tokenization error, this is always unrecoverable. Throws DeadlyImportError. -AI_WONT_RETURN void TokenizeError(const std::string& message, unsigned int offset) AI_WONT_RETURN_SUFFIX; -AI_WONT_RETURN void TokenizeError(const std::string& message, unsigned int offset) +AI_WONT_RETURN void TokenizeError(const std::string& message, size_t offset) AI_WONT_RETURN_SUFFIX; +AI_WONT_RETURN void TokenizeError(const std::string& message, size_t offset) { throw DeadlyImportError(Util::AddOffset("FBX-Tokenize",message,offset)); } // ------------------------------------------------------------------------------------------------ -uint32_t Offset(const char* begin, const char* cursor) { +size_t Offset(const char* begin, const char* cursor) { ai_assert(begin <= cursor); - return static_cast(cursor - begin); + return cursor - begin; } // ------------------------------------------------------------------------------------------------ @@ -424,7 +424,7 @@ bool ReadScope(TokenList& output_tokens, const char* input, const char*& cursor, // ------------------------------------------------------------------------------------------------ // TODO: Test FBX Binary files newer than the 7500 version to check if the 64 bits address behaviour is consistent -void TokenizeBinary(TokenList& output_tokens, const char* input, unsigned int length) +void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length) { ai_assert(input); diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index 988735a77..ec8bbd2b4 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -172,7 +172,7 @@ void FBXImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOS bool is_binary = false; if (!strncmp(begin,"Kaydara FBX Binary",18)) { is_binary = true; - TokenizeBinary(tokens,begin,static_cast(contents.size())); + TokenizeBinary(tokens,begin,contents.size()); } else { Tokenize(tokens,begin); diff --git a/code/FBXTokenizer.h b/code/FBXTokenizer.h index 2af29743f..afa588a47 100644 --- a/code/FBXTokenizer.h +++ b/code/FBXTokenizer.h @@ -93,7 +93,7 @@ public: Token(const char* sbegin, const char* send, TokenType type, unsigned int line, unsigned int column); /** construct a binary token */ - Token(const char* sbegin, const char* send, TokenType type, unsigned int offset); + Token(const char* sbegin, const char* send, TokenType type, size_t offset); ~Token(); @@ -118,14 +118,14 @@ public: return type; } - unsigned int Offset() const { + size_t Offset() const { ai_assert(IsBinary()); return offset; } unsigned int Line() const { ai_assert(!IsBinary()); - return line; + return static_cast(line); } unsigned int Column() const { @@ -147,8 +147,8 @@ private: const TokenType type; union { - const unsigned int line; - unsigned int offset; + size_t line; + size_t offset; }; const unsigned int column; }; @@ -178,7 +178,7 @@ void Tokenize(TokenList& output_tokens, const char* input); * @param input_buffer Binary input buffer to be processed. * @param length Length of input buffer, in bytes. There is no 0-terminal. * @throw DeadlyImportError if something goes wrong */ -void TokenizeBinary(TokenList& output_tokens, const char* input, unsigned int length); +void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length); } // ! FBX diff --git a/code/FBXUtil.cpp b/code/FBXUtil.cpp index 557d0d843..1616d1531 100644 --- a/code/FBXUtil.cpp +++ b/code/FBXUtil.cpp @@ -86,7 +86,7 @@ const char* TokenTypeString(TokenType t) // ------------------------------------------------------------------------------------------------ -std::string AddOffset(const std::string& prefix, const std::string& text, unsigned int offset) +std::string AddOffset(const std::string& prefix, const std::string& text, size_t offset) { return static_cast( (Formatter::format() << prefix << " (offset 0x" << std::hex << offset << ") " << text) ); } diff --git a/code/FBXUtil.h b/code/FBXUtil.h index b26eba5d5..9233b7482 100644 --- a/code/FBXUtil.h +++ b/code/FBXUtil.h @@ -78,7 +78,7 @@ const char* TokenTypeString(TokenType t); * @param line Line index, 1-based * @param column Column index, 1-based * @return A string of the following format: {prefix} (offset 0x{offset}) {text}*/ -std::string AddOffset(const std::string& prefix, const std::string& text, unsigned int offset); +std::string AddOffset(const std::string& prefix, const std::string& text, size_t offset); /** Format log/error messages using a given line location in the source file. From b957d44943a65927c03e952225980c46b2399dc1 Mon Sep 17 00:00:00 2001 From: Mike Samsonov Date: Tue, 14 May 2019 17:58:06 +0100 Subject: [PATCH 172/187] Node names optimization and fixing non-unique name --- code/FBXConverter.cpp | 96 +- code/FBXConverter.h | 11 +- test/models/FBX/cubes_nonames.fbx | 852 +++++++++++++++++ .../FBX/cubes_with_mirroring_and_pivot.fbx | 855 ++++++++++++++++++ test/models/FBX/cubes_with_names.fbx | 852 +++++++++++++++++ test/unit/utFBXImporterExporter.cpp | 113 +++ 6 files changed, 2730 insertions(+), 49 deletions(-) create mode 100644 test/models/FBX/cubes_nonames.fbx create mode 100644 test/models/FBX/cubes_with_mirroring_and_pivot.fbx create mode 100644 test/models/FBX/cubes_with_names.fbx diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 1701b2966..f509289b3 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -86,7 +86,6 @@ namespace Assimp { , textures_converted() , meshes_converted() , node_anim_chain_bits() - , mNodeNameInstances() , mNodeNames() , anim_fps() , out(out) @@ -142,12 +141,46 @@ namespace Assimp { void FBXConverter::ConvertRootNode() { out->mRootNode = new aiNode(); - out->mRootNode->mName.Set("RootNode"); + std::string unique_name; + GetUniqueName("RootNode", unique_name); + out->mRootNode->mName.Set(unique_name); // root has ID 0 ConvertNodes(0L, *out->mRootNode); } + static std::string getAncestorBaseName(const aiNode* node) + { + const char* nodeName = nullptr; + size_t length = 0; + while (node && (!nodeName || length == 0)) + { + nodeName = node->mName.C_Str(); + length = node->mName.length; + node = node->mParent; + } + + if (!nodeName || length == 0) + { + return {}; + } + // could be std::string_view if c++17 available + return std::string(nodeName, length); + } + + // Make unique name + std::string FBXConverter::MakeUniqueNodeName(const Model* const model, const aiNode& parent) + { + std::string original_name = FixNodeName(model->Name()); + if (original_name.empty()) + { + original_name = getAncestorBaseName(&parent); + } + std::string unique_name; + GetUniqueName(original_name, unique_name); + return unique_name; + } + void FBXConverter::ConvertNodes(uint64_t id, aiNode& parent, const aiMatrix4x4& parent_transform) { const std::vector& conns = doc.GetConnectionsByDestinationSequenced(id, "Model"); @@ -179,35 +212,18 @@ namespace Assimp { aiMatrix4x4 new_abs_transform = parent_transform; + std::string unique_name = MakeUniqueNodeName(model, parent); + // even though there is only a single input node, the design of // assimp (or rather: the complicated transformation chain that // is employed by fbx) means that we may need multiple aiNode's // to represent a fbx node's transformation. - GenerateTransformationNodeChain(*model, nodes_chain, post_nodes_chain); + const bool need_additional_node = GenerateTransformationNodeChain(*model, unique_name, nodes_chain, post_nodes_chain); ai_assert(nodes_chain.size()); - std::string original_name = FixNodeName(model->Name()); - - // check if any of the nodes in the chain has the name the fbx node - // is supposed to have. If there is none, add another node to - // preserve the name - people might have scripts etc. that rely - // on specific node names. - aiNode* name_carrier = NULL; - for (aiNode* prenode : nodes_chain) { - if (!strcmp(prenode->mName.C_Str(), original_name.c_str())) { - name_carrier = prenode; - break; - } - } - - if (!name_carrier) { - std::string old_original_name = original_name; - GetUniqueName(old_original_name, original_name); - nodes_chain.push_back(new aiNode(original_name)); - } - else { - original_name = nodes_chain.back()->mName.C_Str(); + if (need_additional_node) { + nodes_chain.push_back(new aiNode(unique_name)); } //setup metadata on newest node @@ -269,11 +285,11 @@ namespace Assimp { ConvertNodes(model->ID(), *last_parent, new_abs_transform); if (doc.Settings().readLights) { - ConvertLights(*model, original_name); + ConvertLights(*model, unique_name); } if (doc.Settings().readCameras) { - ConvertCameras(*model, original_name); + ConvertCameras(*model, unique_name); } nodes.push_back(nodes_chain.front()); @@ -427,19 +443,13 @@ namespace Assimp { { uniqueName = name; int i = 0; - auto it = mNodeNameInstances.find(name); // duplicate node name instance count - if (it != mNodeNameInstances.end()) + while (mNodeNames.find(uniqueName) != mNodeNames.end()) { - i = it->second; - while (mNodeNames.find(uniqueName) != mNodeNames.end()) - { - i++; - std::stringstream ext; - ext << name << std::setfill('0') << std::setw(3) << i; - uniqueName = ext.str(); - } + i++; + std::stringstream ext; + ext << name << std::setfill('0') << std::setw(3) << i; + uniqueName = ext.str(); } - mNodeNameInstances[name] = i; mNodeNames.insert(uniqueName); } @@ -672,7 +682,7 @@ namespace Assimp { return name + std::string(MAGIC_NODE_TAG) + "_" + NameTransformationComp(comp); } - void FBXConverter::GenerateTransformationNodeChain(const Model& model, std::vector& output_nodes, + bool FBXConverter::GenerateTransformationNodeChain(const Model& model, const std::string& name, std::vector& output_nodes, std::vector& post_output_nodes) { const PropertyTable& props = model.Props(); const Model::RotOrder rot = model.RotationOrder(); @@ -787,8 +797,6 @@ namespace Assimp { // not be guaranteed. ai_assert(NeedsComplexTransformationChain(model) == is_complex); - std::string name = FixNodeName(model.Name()); - // now, if we have more than just Translation, Scaling and Rotation, // we need to generate a full node chain to accommodate for assimp's // lack to express pivots and offsets. @@ -830,20 +838,20 @@ namespace Assimp { } ai_assert(output_nodes.size()); - return; + return true; } // else, we can just multiply the matrices together aiNode* nd = new aiNode(); output_nodes.push_back(nd); - std::string uniqueName; - GetUniqueName(name, uniqueName); - nd->mName.Set(uniqueName); + // name passed to the method is already unique + nd->mName.Set(name); for (const auto &transform : chain) { nd->mTransformation = nd->mTransformation * transform; } + return false; } void FBXConverter::SetupNodeMetadata(const Model& model, aiNode& nd) diff --git a/code/FBXConverter.h b/code/FBXConverter.h index f75222d5b..1bdf9ac9f 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -154,6 +154,11 @@ private: // while these would be allowed, they are a potential trouble spot so better not use them). const char* NameTransformationComp(TransformationComp comp); + // ------------------------------------------------------------------------------------------------ + // Returns an unique name for a node or traverses up a hierarchy until a non-empty name is found and + // then makes this name unique + std::string MakeUniqueNodeName(const Model* const model, const aiNode& parent); + // ------------------------------------------------------------------------------------------------ // note: this returns the REAL fbx property names const char* NameTransformationCompProperty(TransformationComp comp); @@ -177,7 +182,7 @@ private: /** * note: memory for output_nodes will be managed by the caller */ - void GenerateTransformationNodeChain(const Model& model, std::vector& output_nodes, std::vector& post_output_nodes); + bool GenerateTransformationNodeChain(const Model& model, const std::string& name, std::vector& output_nodes, std::vector& post_output_nodes); // ------------------------------------------------------------------------------------------------ void SetupNodeMetadata(const Model& model, aiNode& nd); @@ -456,10 +461,6 @@ private: using NodeAnimBitMap = std::map ; NodeAnimBitMap node_anim_chain_bits; - // number of nodes with the same name - using NodeAnimNameMap = std::unordered_map; - NodeAnimNameMap mNodeNameInstances; - using NodeNameCache = std::unordered_set; NodeNameCache mNodeNames; diff --git a/test/models/FBX/cubes_nonames.fbx b/test/models/FBX/cubes_nonames.fbx new file mode 100644 index 000000000..810657aff --- /dev/null +++ b/test/models/FBX/cubes_nonames.fbx @@ -0,0 +1,852 @@ +; FBX 7.5.0 project file +; ---------------------------------------------------- + +FBXHeaderExtension: { + FBXHeaderVersion: 1003 + FBXVersion: 7500 + CreationTimeStamp: { + Version: 1000 + Year: 2019 + Month: 1 + Day: 7 + Hour: 16 + Minute: 17 + Second: 31 + Millisecond: 730 + } + Creator: "FBX SDK/FBX Plugins version 2018.1.1" + SceneInfo: "SceneInfo::GlobalInfo", "UserData" { + Type: "UserData" + Version: 100 + MetaData: { + Version: 100 + Title: "" + Subject: "" + Author: "" + Keywords: "" + Revision: "" + Comment: "" + } + Properties70: { + P: "DocumentUrl", "KString", "Url", "", "U:\Some\Absolute\Path\cubes_noname.fbx" + P: "SrcDocumentUrl", "KString", "Url", "", "U:\Some\Absolute\Path\cubes_noname.fbx" + P: "Original", "Compound", "", "" + P: "Original|ApplicationVendor", "KString", "", "", "Autodesk" + P: "Original|ApplicationName", "KString", "", "", "Maya" + P: "Original|ApplicationVersion", "KString", "", "", "201800" + P: "Original|DateTime_GMT", "DateTime", "", "", "07/01/2019 16:17:31.730" + P: "Original|FileName", "KString", "", "", "U:\Some\Absolute\Path\cubes_noname.fbx" + P: "LastSaved", "Compound", "", "" + P: "LastSaved|ApplicationVendor", "KString", "", "", "Autodesk" + P: "LastSaved|ApplicationName", "KString", "", "", "Maya" + P: "LastSaved|ApplicationVersion", "KString", "", "", "201800" + P: "LastSaved|DateTime_GMT", "DateTime", "", "", "07/01/2019 16:17:31.730" + P: "Original|ApplicationActiveProject", "KString", "", "", "U:\Some\Absolute\Path" + } + } +} +GlobalSettings: { + Version: 1000 + Properties70: { + P: "UpAxis", "int", "Integer", "",1 + P: "UpAxisSign", "int", "Integer", "",1 + P: "FrontAxis", "int", "Integer", "",2 + P: "FrontAxisSign", "int", "Integer", "",1 + P: "CoordAxis", "int", "Integer", "",0 + P: "CoordAxisSign", "int", "Integer", "",1 + P: "OriginalUpAxis", "int", "Integer", "",1 + P: "OriginalUpAxisSign", "int", "Integer", "",1 + P: "UnitScaleFactor", "double", "Number", "",1 + P: "OriginalUnitScaleFactor", "double", "Number", "",1 + P: "AmbientColor", "ColorRGB", "Color", "",0,0,0 + P: "DefaultCamera", "KString", "", "", "Producer Perspective" + P: "TimeMode", "enum", "", "",11 + P: "TimeProtocol", "enum", "", "",2 + P: "SnapOnFrameMode", "enum", "", "",0 + P: "TimeSpanStart", "KTime", "Time", "",1924423250 + P: "TimeSpanStop", "KTime", "Time", "",384884650000 + P: "CustomFrameRate", "double", "Number", "",-1 + P: "TimeMarker", "Compound", "", "" + P: "CurrentTimeMarker", "int", "Integer", "",-1 + } +} + +; Documents Description +;------------------------------------------------------------------ + +Documents: { + Count: 1 + Document: 2359325563280, "", "Scene" { + Properties70: { + P: "SourceObject", "object", "", "" + P: "ActiveAnimStackName", "KString", "", "", "Take 001" + } + RootNode: 0 + } +} + +; Document References +;------------------------------------------------------------------ + +References: { +} + +; Object definitions +;------------------------------------------------------------------ + +Definitions: { + Version: 100 + Count: 13 + ObjectType: "GlobalSettings" { + Count: 1 + } + ObjectType: "AnimationStack" { + Count: 1 + PropertyTemplate: "FbxAnimStack" { + Properties70: { + P: "Description", "KString", "", "", "" + P: "LocalStart", "KTime", "Time", "",0 + P: "LocalStop", "KTime", "Time", "",0 + P: "ReferenceStart", "KTime", "Time", "",0 + P: "ReferenceStop", "KTime", "Time", "",0 + } + } + } + ObjectType: "AnimationLayer" { + Count: 1 + PropertyTemplate: "FbxAnimLayer" { + Properties70: { + P: "Weight", "Number", "", "A",100 + P: "Mute", "bool", "", "",0 + P: "Solo", "bool", "", "",0 + P: "Lock", "bool", "", "",0 + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BlendMode", "enum", "", "",0 + P: "RotationAccumulationMode", "enum", "", "",0 + P: "ScaleAccumulationMode", "enum", "", "",0 + P: "BlendModeBypass", "ULongLong", "", "",0 + } + } + } + ObjectType: "Geometry" { + Count: 4 + PropertyTemplate: "FbxMesh" { + Properties70: { + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BBoxMin", "Vector3D", "Vector", "",0,0,0 + P: "BBoxMax", "Vector3D", "Vector", "",0,0,0 + P: "Primary Visibility", "bool", "", "",1 + P: "Casts Shadows", "bool", "", "",1 + P: "Receive Shadows", "bool", "", "",1 + } + } + } + ObjectType: "Material" { + Count: 2 + PropertyTemplate: "FbxSurfaceLambert" { + Properties70: { + P: "ShadingModel", "KString", "", "", "Lambert" + P: "MultiLayer", "bool", "", "",0 + P: "EmissiveColor", "Color", "", "A",0,0,0 + P: "EmissiveFactor", "Number", "", "A",1 + P: "AmbientColor", "Color", "", "A",0.2,0.2,0.2 + P: "AmbientFactor", "Number", "", "A",1 + P: "DiffuseColor", "Color", "", "A",0.8,0.8,0.8 + P: "DiffuseFactor", "Number", "", "A",1 + P: "Bump", "Vector3D", "Vector", "",0,0,0 + P: "NormalMap", "Vector3D", "Vector", "",0,0,0 + P: "BumpFactor", "double", "Number", "",1 + P: "TransparentColor", "Color", "", "A",0,0,0 + P: "TransparencyFactor", "Number", "", "A",0 + P: "DisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "DisplacementFactor", "double", "Number", "",1 + P: "VectorDisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "VectorDisplacementFactor", "double", "Number", "",1 + } + } + } + ObjectType: "Model" { + Count: 4 + PropertyTemplate: "FbxNode" { + Properties70: { + P: "QuaternionInterpolate", "enum", "", "",0 + P: "RotationOffset", "Vector3D", "Vector", "",0,0,0 + P: "RotationPivot", "Vector3D", "Vector", "",0,0,0 + P: "ScalingOffset", "Vector3D", "Vector", "",0,0,0 + P: "ScalingPivot", "Vector3D", "Vector", "",0,0,0 + P: "TranslationActive", "bool", "", "",0 + P: "TranslationMin", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMax", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMinX", "bool", "", "",0 + P: "TranslationMinY", "bool", "", "",0 + P: "TranslationMinZ", "bool", "", "",0 + P: "TranslationMaxX", "bool", "", "",0 + P: "TranslationMaxY", "bool", "", "",0 + P: "TranslationMaxZ", "bool", "", "",0 + P: "RotationOrder", "enum", "", "",0 + P: "RotationSpaceForLimitOnly", "bool", "", "",0 + P: "RotationStiffnessX", "double", "Number", "",0 + P: "RotationStiffnessY", "double", "Number", "",0 + P: "RotationStiffnessZ", "double", "Number", "",0 + P: "AxisLen", "double", "Number", "",10 + P: "PreRotation", "Vector3D", "Vector", "",0,0,0 + P: "PostRotation", "Vector3D", "Vector", "",0,0,0 + P: "RotationActive", "bool", "", "",0 + P: "RotationMin", "Vector3D", "Vector", "",0,0,0 + P: "RotationMax", "Vector3D", "Vector", "",0,0,0 + P: "RotationMinX", "bool", "", "",0 + P: "RotationMinY", "bool", "", "",0 + P: "RotationMinZ", "bool", "", "",0 + P: "RotationMaxX", "bool", "", "",0 + P: "RotationMaxY", "bool", "", "",0 + P: "RotationMaxZ", "bool", "", "",0 + P: "InheritType", "enum", "", "",0 + P: "ScalingActive", "bool", "", "",0 + P: "ScalingMin", "Vector3D", "Vector", "",0,0,0 + P: "ScalingMax", "Vector3D", "Vector", "",1,1,1 + P: "ScalingMinX", "bool", "", "",0 + P: "ScalingMinY", "bool", "", "",0 + P: "ScalingMinZ", "bool", "", "",0 + P: "ScalingMaxX", "bool", "", "",0 + P: "ScalingMaxY", "bool", "", "",0 + P: "ScalingMaxZ", "bool", "", "",0 + P: "GeometricTranslation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricRotation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricScaling", "Vector3D", "Vector", "",1,1,1 + P: "MinDampRangeX", "double", "Number", "",0 + P: "MinDampRangeY", "double", "Number", "",0 + P: "MinDampRangeZ", "double", "Number", "",0 + P: "MaxDampRangeX", "double", "Number", "",0 + P: "MaxDampRangeY", "double", "Number", "",0 + P: "MaxDampRangeZ", "double", "Number", "",0 + P: "MinDampStrengthX", "double", "Number", "",0 + P: "MinDampStrengthY", "double", "Number", "",0 + P: "MinDampStrengthZ", "double", "Number", "",0 + P: "MaxDampStrengthX", "double", "Number", "",0 + P: "MaxDampStrengthY", "double", "Number", "",0 + P: "MaxDampStrengthZ", "double", "Number", "",0 + P: "PreferedAngleX", "double", "Number", "",0 + P: "PreferedAngleY", "double", "Number", "",0 + P: "PreferedAngleZ", "double", "Number", "",0 + P: "LookAtProperty", "object", "", "" + P: "UpVectorProperty", "object", "", "" + P: "Show", "bool", "", "",1 + P: "NegativePercentShapeSupport", "bool", "", "",1 + P: "DefaultAttributeIndex", "int", "Integer", "",-1 + P: "Freeze", "bool", "", "",0 + P: "LODBox", "bool", "", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",0,0,0 + P: "Lcl Rotation", "Lcl Rotation", "", "A",0,0,0 + P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1 + P: "Visibility", "Visibility", "", "A",1 + P: "Visibility Inheritance", "Visibility Inheritance", "", "",1 + } + } + } +} + +; Object properties +;------------------------------------------------------------------ + +Objects: { + Geometry: 2358377979296, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,1,2,3,5,6,7,9,10,11,13,15 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 2358377961872, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,1,2,3,5,6,7,9,10,11,13,15 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 2358377982464, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,1,2,3,5,6,7,9,10,11,13,15 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 2358377979824, "Geometry::", "Mesh" { + Vertices: *588 { + a: -0.499999970197678,-0.5,0.5,0.500000059604645,-0.5,0.5,-0.499999970197678,0.5,0.5,0.500000059604645,0.5,0.5,-0.499999970197678,0.5,-0.49999988079071,0.500000059604645,0.5,-0.49999988079071,-0.499999970197678,-0.5,-0.49999988079071,0.500000059604645,-0.5,-0.49999988079071,0,0,0.5,0,-0.5,0.5,0.500000059604645,0,0.5,0,0.5,0.5,-0.499999970197678,0,0.5,0,0.5,1.19209289550781e-07,0.500000059604645,0.5,1.19209289550781e-07,0,0.5,-0.49999988079071,-0.499999970197678,0.5,1.19209289550781e-07,0,0,-0.49999988079071,0.500000059604645,0,-0.49999988079071,0,-0.5,-0.49999988079071,-0.499999970197678,0,-0.49999988079071,0,-0.5,1.19209289550781e-07,0.500000059604645,-0.5,1.19209289550781e-07,-0.499999970197678,-0.5,1.19209289550781e-07,0.500000059604645,0,1.19209289550781e-07,-0.499999970197678,0,1.19209289550781e-07,-0.25,-0.25,0.5,-0.499999970197678,-0.25,0.5,-0.25,-0.5,0.5,0,-0.25,0.5,-0.25,0,0.5,-0.25,0.5,0.25,-0.499999970197678,0.5,0.25,-0.25,0.5,0.5,0,0.5,0.25,-0.25,0.5,1.19209289550781e-07,-0.25,0.25,-0.49999988079071,-0.499999970197678,0.25,-0.49999988079071,-0.25,0.5,-0.49999988079071,0,0.25,-0.49999988079071,-0.25,0,-0.49999988079071,-0.25,-0.5,-0.24999988079071,-0.499999970197678,-0.5,-0.24999988079071,-0.25,-0.5,-0.49999988079071,0,-0.5,-0.24999988079071,-0.25,-0.5,1.19209289550781e-07,0.500000059604645,-0.25,0.25,0.500000059604645,-0.25,0.5,0.500000059604645,-0.5,0.25,0.500000059604645,-0.25,1.19209289550781e-07,0.500000059604645,0,0.25,-0.499999970197678,-0.25,-0.24999988079071,-0.499999970197678,-0.25,-0.49999988079071,-0.499999970197678,-0.25,1.19209289550781e-07,-0.499999970197678,0,-0.24999988079071,0.250000059604645,-0.25,0.5,0.250000059604645,-0.5,0.5,0.250000059604645,0,0.5,0.250000059604645,0.25,0.5,0.500000059604645,0.25,0.5,0.250000059604645,0.5,0.5,0,0.25,0.5,-0.25,0.25,0.5,-0.499999970197678,0.25,0.5,0.250000059604645,0.5,0.25,0.500000059604645,0.5,0.25,0.250000059604645,0.5,1.19209289550781e-07,0.250000059604645,0.5,-0.24999988079071,0.500000059604645,0.5,-0.24999988079071,0.250000059604645,0.5,-0.49999988079071, +0,0.5,-0.24999988079071,-0.25,0.5,-0.24999988079071,-0.499999970197678,0.5,-0.24999988079071,0.250000059604645,0.25,-0.49999988079071,0.500000059604645,0.25,-0.49999988079071,0.250000059604645,0,-0.49999988079071,0.250000059604645,-0.25,-0.49999988079071,0.500000059604645,-0.25,-0.49999988079071,0.250000059604645,-0.5,-0.49999988079071,0,-0.25,-0.49999988079071,-0.25,-0.25,-0.49999988079071,0.250000059604645,-0.5,-0.24999988079071,0.500000059604645,-0.5,-0.24999988079071,0.250000059604645,-0.5,1.19209289550781e-07,0.250000059604645,-0.5,0.25,0,-0.5,0.25,-0.25,-0.5,0.25,-0.499999970197678,-0.5,0.25,0.500000059604645,-0.25,-0.24999988079071,0.500000059604645,0,-0.24999988079071,0.500000059604645,0.25,-0.24999988079071,0.500000059604645,0.25,1.19209289550781e-07,0.500000059604645,0.25,0.25,-0.499999970197678,-0.25,0.25,-0.499999970197678,0,0.25,-0.499999970197678,0.25,0.25,-0.499999970197678,0.25,1.19209289550781e-07,-0.499999970197678,0.25,-0.24999988079071,-0.594913899898529,0,0.594913899898529,-0.152911216020584,0,0.714658200740814,-0.594913899898529,-0.152911216020584,0.594913899898529,-0.152911216020584,-0.152911216020584,0.714658200740814,-0.594913899898529,0.594913899898529,7.29137497046395e-08,-0.152911216020584,0.714658200740814,7.29137497046395e-08,-0.594913899898529,0.594913899898529,0.152911216020584,-0.152911216020584,0.714658200740814,0.152911216020584,-0.594913899898529,0,-0.594913899898529,-0.152911216020584,0,-0.714658200740814,-0.594913899898529,0.152911216020584,-0.594913899898529,-0.152911216020584,0.152911216020584,-0.714658200740814,-0.594913899898529,-0.594913899898529,7.29137497046395e-08,-0.152911216020584,-0.714658200740814,7.29137497046395e-08,-0.594913899898529,-0.594913899898529,-0.152911216020584,-0.152911216020584,-0.714658200740814,-0.152911216020584,0.594913899898529,0,0.594913899898529,0.714658200740814,0,0.152911216020584,0.594913899898529,-0.152911216020584,0.594913899898529,0.714658200740814,-0.152911216020584,0.152911216020584,-0.714658200740814,0,-0.152911216020584,-0.594913899898529,-0.152911216020584,-0.594913899898529, +-0.714658200740814,-0.152911216020584,-0.152911216020584,8.62321627254444e-17,-0.594913899898529,0.594913899898529,8.62321627254444e-17,-0.152911216020584,0.714658200740814,0.152911230921745,-0.594913899898529,0.594913899898529,0.152911230921745,-0.152911216020584,0.714658200740814,0.152911230921745,0,0.714658200740814,0.594913899898529,0.152911216020584,0.594913899898529,0.152911230921745,0.152911216020584,0.714658200740814,8.62321627254444e-17,0.594913899898529,0.594913899898529,8.62321627254444e-17,0.152911216020584,0.714658200740814,-0.152911216020584,0.594913899898529,0.594913899898529,-0.152911216020584,0.152911216020584,0.714658200740814,8.62321627254444e-17,0.714658200740814,0.152911216020584,0.152911230921745,0.594913899898529,0.594913899898529,0.152911230921745,0.714658200740814,0.152911216020584,0.594913899898529,0.594913899898529,7.29137497046395e-08,0.152911230921745,0.714658200740814,7.29137497046395e-08,0.594913899898529,0.594913899898529,-0.152911216020584,0.152911230921745,0.714658200740814,-0.152911216020584,8.62321627254444e-17,0.594913899898529,-0.594913899898529,8.62321627254444e-17,0.714658200740814,-0.152911216020584,-0.152911216020584,0.594913899898529,-0.594913899898529,-0.152911216020584,0.714658200740814,-0.152911216020584,8.62321627254444e-17,0.152911216020584,-0.714658200740814,0.152911230921745,0.594913899898529,-0.594913899898529,0.152911230921745,0.152911216020584,-0.714658200740814,0.594913899898529,0,-0.594913899898529,0.152911230921745,0,-0.714658200740814,0.594913899898529,-0.152911216020584,-0.594913899898529,0.152911230921745,-0.152911216020584,-0.714658200740814,8.62321627254444e-17,-0.594913899898529,-0.594913899898529,8.62321627254444e-17,-0.152911216020584,-0.714658200740814,-0.152911216020584,-0.594913899898529,-0.594913899898529,-0.152911216020584,-0.152911216020584,-0.714658200740814,8.62321627254444e-17,-0.714658200740814,-0.152911216020584,0.152911230921745,-0.594913899898529,-0.594913899898529,0.152911230921745,-0.714658200740814,-0.152911216020584,0.594913899898529,-0.594913899898529,7.29137497046395e-08, +0.152911230921745,-0.714658200740814,7.29137497046395e-08,0.594913899898529,-0.594913899898529,0.152911216020584,0.152911230921745,-0.714658200740814,0.152911216020584,8.62321627254444e-17,-0.714658200740814,0.152911216020584,-0.152911216020584,-0.594913899898529,0.594913899898529,-0.152911216020584,-0.714658200740814,0.152911216020584,0.714658200740814,-0.152911216020584,7.29137497046395e-08,0.594913899898529,-0.594913899898529,-0.152911216020584,0.714658200740814,-0.152911216020584,-0.152911216020584,0.714658200740814,0,-0.152911216020584,0.594913899898529,0.152911216020584,-0.594913899898529,0.714658200740814,0.152911216020584,-0.152911216020584,0.714658200740814,0.152911216020584,7.29137497046395e-08,0.594913899898529,0.594913899898529,0.152911216020584,0.714658200740814,0.152911216020584,0.152911216020584,-0.714658200740814,-0.152911216020584,7.29137497046395e-08,-0.594913899898529,-0.594913899898529,0.152911216020584,-0.714658200740814,-0.152911216020584,0.152911216020584,-0.714658200740814,0,0.152911216020584,-0.594913899898529,0.152911216020584,0.594913899898529,-0.714658200740814,0.152911216020584,0.152911216020584,-0.714658200740814,0.152911216020584,7.29137497046395e-08,-0.594913899898529,0.594913899898529,-0.152911216020584,-0.714658200740814,0.152911216020584,-0.152911216020584,-0.541863918304443,-0.541864037513733,0.541863918304443,8.62321627254444e-17,0,0.714658200740814,-0.541863918304443,0.541863918304443,0.541863918304443,8.62321627254444e-17,0.714658200740814,7.29137497046395e-08,-0.541863918304443,0.541863918304443,-0.541863799095154,8.62321627254444e-17,0,-0.714658200740814,-0.541863918304443,-0.541864037513733,-0.541863799095154,8.62321627254444e-17,-0.714658200740814,7.29137497046395e-08,0.541863977909088,-0.541864037513733,0.541863918304443,0.714658200740814,0,7.29137497046395e-08,-0.714658200740814,0,7.29137497046395e-08,0.541863977909088,0.541863918304443,0.541863918304443,0.541863977909088,0.541863918304443,-0.541863799095154,0.541863977909088,-0.541864037513733,-0.541863799095154 + } + PolygonVertexIndex: *768 { + a: 99,98,100,-102,103,102,104,-106,107,106,108,-110,111,110,112,-114,115,114,116,-118,118,106,119,-121,122,121,123,-125,125,114,126,-128,129,128,130,-132,132,128,133,-135,136,135,137,-139,140,139,141,-143,143,139,144,-146,147,146,148,-150,151,150,152,-154,154,150,155,-157,158,157,159,-161,161,121,162,-164,164,157,165,-167,167,146,168,-170,170,135,171,-173,173,110,174,-176,176,98,177,-179,179,102,180,-182,100,182,162,-102,162,121,122,-102,122,183,99,-102,104,184,130,-106,130,128,132,-106,132,185,103,-106,108,186,141,-110,141,139,143,-110,143,187,107,-110,112,188,152,-114,152,150,154,-114,154,189,111,-114,116,190,159,-118,159,157,164,-118,164,191,115,-118,119,188,112,-121,112,110,173,-121,173,192,118,-121,123,190,116,-125,116,114,125,-125,125,183,122,-125,126,193,133,-128,133,128,129,-128,129,183,125,-128,130,184,177,-132,177,98,99,-132,99,183,129,-132,133,193,171,-135,171,135,136,-135,136,185,132,-135,137,194,144,-139,144,139,140,-139,140,185,136,-139,141,186,180,-143,180,102,103,-143,103,185,140,-143,144,194,168,-146,168,146,147,-146,147,187,143,-146,148,195,155,-150,155,150,151,-150,151,187,147,-150,152,188,119,-154,119,106,107,-154,107,187,151,-154,155,195,165,-157,165,157,158,-157,158,189,154,-157,159,190,123,-161,123,121,161,-161,161,189,158,-161,162,182,174,-164,174,110,111,-164,111,189,161,-164,165,195,148,-167,148,146,167,-167,167,191,164,-167,168,194,137,-170,137,135,170,-170,170,191,167,-170,171,193,126,-173,126,114,115,-173,115,191,170,-173,174,182,100,-176,100,98,176,-176,176,192,173,-176,177,184,104,-179,104,102,179,-179,179,192,176,-179,180,186,108,-182,108,106,118,-182,118,192,179,-182,30,26,27,-13,35,31,32,-17,40,36,37,-21,45,41,42,-24,50,46,47,-11,54,51,52,-21,29,55,56,-10,57,58,59,-11,61,62,33,-12,34,64,60,-12,66,67,68,-15,70,71,38,-16,39,73,69,-16,75,76,77,-19,79,80,43,-20,44,81,78,-20,83,84,48,-23,85,86,28,-10,49,88,82,-23,89,90,74,-19,91,92,65,-15,53,93,87,-24,94,95,63,-13,96,97,72,-17,27,26,28,-1,28,26,29,-10,29,26,30,-9,32,31,33,-3,33,31,34,-12,34,31,35,-14,37,36,38,-5,38,36,39, +-16,39,36,40,-18,42,41,43,-7,43,41,44,-20,44,41,45,-22,47,46,48,-2,48,46,49,-23,49,46,50,-25,52,51,42,-7,42,51,53,-24,53,51,54,-26,56,55,47,-2,47,55,57,-11,57,55,29,-9,59,58,60,-4,60,58,61,-12,61,58,57,-9,33,62,63,-3,63,62,30,-13,30,62,61,-9,60,64,65,-4,65,64,66,-15,66,64,34,-14,68,67,69,-6,69,67,70,-16,70,67,66,-14,38,71,72,-5,72,71,35,-17,35,71,70,-14,69,73,74,-6,74,73,75,-19,75,73,39,-18,77,76,78,-8,78,76,79,-20,79,76,75,-18,43,80,52,-7,52,80,40,-21,40,80,79,-18,78,81,82,-8,82,81,83,-23,83,81,44,-22,48,84,56,-2,56,84,85,-10,85,84,83,-22,28,86,87,-1,87,86,45,-24,45,86,85,-22,82,88,77,-8,77,88,89,-19,89,88,49,-25,74,90,68,-6,68,90,91,-15,91,90,89,-25,65,92,59,-4,59,92,50,-11,50,92,91,-25,87,93,27,-1,27,93,94,-13,94,93,53,-26,63,95,32,-3,32,95,96,-17,96,95,94,-26,72,97,37,-5,37,97,54,-21,54,97,96,-26 + } + Edges: *384 { + a: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,102,104,105,108,109,110,114,116,117,120,121,122,126,128,129,132,133,134,138,140,141,144,145,146,150,152,153,156,158,162,164,165,168,170,174,176,180,181,182,186,188,193,194,198,205,206,210,212,216,217,218,222,224,229,230,234,241,242,246,248,252,253,254,258,260,266,270,277,278,282,284,290,294,296,301,302,306,314,318,320,326,330,332,338,342,350,354,356,362,366,368,374,378,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,481,482,483,485,490,491,493,494,495,497,502,503,505,506,507,509,514,515,517,518,519,521,526,527,529,530,531,533,538,539,541,543,545,550,551,553,555,557,563,565,566,567,569,575,577,578,581,589,590,593,599,601,602,603,605,611,613,614,617,625,626,629,635,637,638,639,641,647,649,653,661,662,665,671,673,677,683,685,686,689,697,701,707,709,713,719,721,725,733,737,743,745,749,755,757,761 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *2304 { + a: -0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.26148721575737,0.965207040309906,0,-0.26148721575737,0.965207040309906,0,-0.26148721575737,0.965207040309906,0,-0.26148721575737,0.965207040309906,0,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.965207040309906,0.261487185955048,0,0.965207040309906,0.261487185955048,0,0.965207040309906,0.261487185955048,0,0.965207040309906,0.261487185955048,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0.261487126350403,0,-0.965206980705261, +0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.965207040309906,-0.261487185955048,0,-0.965207040309906,-0.261487185955048,0,-0.965207040309906,-0.261487185955048,0,-0.965207040309906,-0.261487185955048,0.26148721575737,-0.965207040309906,0,0.26148721575737,-0.965207040309906,0,0.26148721575737,-0.965207040309906,0,0.26148721575737,-0.965207040309906,0,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0.965206980705261,-0.261487066745758,0,0.965206980705261,-0.261487066745758,0,0.965206980705261,-0.261487066745758,0,0.965206980705261,-0.261487066745758,0,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0.261487066745758,0,-0.965206980705261,0.261487066745758,0,-0.965206980705261,0.261487066745758,0,-0.965206980705261,0.261487066745758,0,-0.211917281150818,-0.211917445063591,0.954034626483917,0,0,1,-0.211917281150818,-0.21191743016243,0.954034626483917,-0.211917266249657,-0.211917445063591,0.954034626483917,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,-0.211917445063591,0.954034626483917,0.211917281150818, +0,1,0,-0.211917445063591,0.954034626483917,0.211917281150818,-0.211917445063591,0.954034626483917,0.211917266249657,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,1,0,0,1,0,0,1,0,0,1,0,-0.211917623877525,0.211917608976364,-0.954034626483917,0,0,-1,-0.211917623877525,0.211917608976364,-0.954034626483917,-0.211917623877525,0.211917594075203,-0.954034626483917,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.211917355656624,-0.954034745693207,-0.211917355656624,0,-1,0,-0.211917325854301,-0.954034686088562,-0.211917325854301,-0.211917355656624,-0.954034686088562,-0.211917355656624,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0.954034745693207,-0.211917281150818,0.211917340755463,1,0,0,0.954034745693207,-0.211917281150818,0.211917370557785,0.954034626483917,-0.211917236447334,0.211917296051979,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,1,0,0,1,0,0,1,0,0,1,0,0,-0.954034686088562,-0.211917355656624,-0.211917459964752,-1,0,0,-0.954034626483917,-0.211917325854301,-0.211917445063591,-0.954034686088562,-0.211917355656624,-0.211917474865913,-0.965206980705261,-0.261487066745758,0,-0.965206980705261,-0.261487066745758,0,-0.965206980705261,-0.261487066745758,0,-0.965206980705261,-0.261487066745758,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0.211917281150818,-0.211917400360107,0.954034626483917,0,0,1,0.211917266249657,-0.211917415261269,0.954034626483917,0.211917266249657,-0.211917415261269,0.954034626483917,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261, +0,0,1,0,0,1,0,0,1,0,0,1,0.211917296051979,0.211917415261269,0.954034626483917,0,0,1,0.211917296051979,0.211917415261269,0.954034626483917,0.211917281150818,0.211917415261269,0.954034626483917,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0,1,0,0,1,0,0,1,0,0,1,-0.211917281150818,0.211917445063591,0.954034626483917,0,0,1,-0.211917281150818,0.211917445063591,0.954034626483917,-0.211917266249657,0.211917445063591,0.954034626483917,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0.211917445063591,0.954034626483917,0.211917445063591,0,1,0,0.211917445063591,0.954034686088562,0.211917445063591,0.211917445063591,0.954034626483917,0.211917445063591,0.26148721575737,0.965207040309906,0,0.26148721575737,0.965207040309906,0,0.26148721575737,0.965207040309906,0,0.26148721575737,0.965207040309906,0,0,1,0,0,1,0,0,1,0,0,1,0,0.211917445063591,0.954034626483917,-0.211917489767075,0,1,0,0.211917459964752,0.954034686088562,-0.211917519569397,0.211917474865913,0.954034686088562,-0.211917504668236,0,0.965207040309906,-0.261487185955048,0,0.965207040309906,-0.261487185955048,0,0.965207040309906,-0.261487185955048,0,0.965207040309906,-0.261487185955048,0,1,0,0,1,0,0,1,0,0,1,0,-0.211917459964752,0.954034686088562,-0.211917340755463,0,1,0,-0.211917445063591,0.954034626483917,-0.21191731095314,-0.211917489767075,0.954034686088562,-0.211917355656624,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,0,1,0,0,1,0,0,1,0,0,1,0,0.211917638778687,0.211917608976364,-0.954034626483917,0,0,-1,0.211917608976364,0.211917564272881,-0.954034566879272,0.211917623877525,0.211917608976364,-0.954034626483917,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261, +0.261487126350403,0,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0.211917608976364,-0.211917564272881,-0.954034626483917,0,0,-1,0.211917623877525,-0.211917579174042,-0.954034626483917,0.211917623877525,-0.211917549371719,-0.954034626483917,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.211917623877525,-0.211917579174042,-0.954034626483917,0,0,-1,-0.211917579174042,-0.211917534470558,-0.954034566879272,-0.211917623877525,-0.211917549371719,-0.954034626483917,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0.211917340755463,-0.954034686088562,-0.211917519569397,0,-1,0,0.211917325854301,-0.954034626483917,-0.211917489767075,0.211917325854301,-0.954034686088562,-0.211917489767075,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0.211917281150818,-0.954034626483917,0.211917445063591,0,-1,0,0.211917296051979,-0.954034626483917,0.211917445063591,0.211917266249657,-0.954034626483917,0.211917445063591,0,-0.965207040309906,0.261487185955048,0,-0.965207040309906,0.261487185955048,0,-0.965207040309906,0.261487185955048,0,-0.965207040309906,0.261487185955048,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.211917325854301,-0.954034745693207,0.211917325854301,0,-1,0,-0.211917325854301,-0.954034745693207,0.211917325854301,-0.211917281150818,-0.954034686088562,0.211917281150818,-0.26148721575737,-0.965207040309906,0,-0.26148721575737,-0.965207040309906,0,-0.26148721575737,-0.965207040309906,0,-0.26148721575737,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0.954034626483917,-0.211917325854301,-0.211917400360107,1,0,0,0.954034686088562,-0.211917340755463,-0.211917400360107,0.954034686088562,-0.211917355656624,-0.21191743016243,0.965206980705261,0,-0.261487185955048, +0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,1,0,0,1,0,0,1,0,0,1,0,0,0.954034686088562,0.211917370557785,-0.211917489767075,1,0,0,0.954034686088562,0.211917355656624,-0.211917445063591,0.954034626483917,0.211917355656624,-0.211917445063591,0.965206980705261,0.261487066745758,0,0.965206980705261,0.261487066745758,0,0.965206980705261,0.261487066745758,0,0.965206980705261,0.261487066745758,0,1,0,0,1,0,0,1,0,0,1,0,0,0.954034626483917,0.211917296051979,0.211917385458946,1,0,0,0.954034626483917,0.211917296051979,0.211917385458946,0.954034745693207,0.211917296051979,0.211917385458946,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,1,0,0,1,0,0,1,0,0,1,0,0,-0.954034626483917,-0.211917251348495,0.211917400360107,-1,0,0,-0.954034626483917,-0.211917266249657,0.211917400360107,-0.954034626483917,-0.211917251348495,0.211917400360107,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0.954034626483917,0.211917281150818,0.211917445063591,-1,0,0,-0.954034626483917,0.211917281150818,0.211917445063591,-0.954034626483917,0.211917266249657,0.211917445063591,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0.954034686088562,0.211917385458946,-0.211917549371719,-1,0,0,-0.954034686088562,0.211917370557785,-0.211917534470558,-0.954034626483917,0.211917355656624,-0.211917504668236,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0, +1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0, +-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0 + } + NormalsW: *768 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *2304 { + a: 0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0.965206921100616,0.261487156152725,0,0.965206921100616,0.261487156152725,0,0.965206921100616,0.261487156152725,0,0.965206921100616,0.261487156152725,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,0.965206980705261,-0.261487185955048,0,0.965206980705261,-0.261487185955048,0,0.965206980705261,-0.261487185955048,0,0.965206980705261,-0.261487185955048,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.261487126350403,-0.965206980705261,0,-0.261487126350403,-0.965206980705261,0,-0.261487126350403,-0.965206980705261,0,-0.261487126350403,-0.965206980705261,0,-0.965206921100616,-0.261487156152725,0,-0.965206921100616,-0.261487156152725,0,-0.965206921100616,-0.261487156152725,0,-0.965206921100616,-0.261487156152725,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0.965206980705261,0.261487185955048,0,-0.965206980705261,0.261487185955048,0,-0.965206980705261,0.261487185955048,0,-0.965206980705261,0.261487185955048,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,0,1,0,0,1,0,0,1,0,0,1,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,0,1,0,0,1,0,0,1,0, +0,1,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,-0.0554696954786777,0.977241098880768,0.204750895500183,0.0677256807684898,0.997704029083252,-0,0.0995207726955414,0.966452240943909,0.236782029271126,0.022095151245594,0.974918127059937,0.221464186906815,0,0.965206980705261,0.261487185955048,0,0.965206980705261,0.261487185955048,0,0.965206980705261,0.261487185955048,0,0.965206980705261,0.261487185955048,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0554696545004845,0.204750746488571,-0.977241158485413,0.0677258297801018,0,-0.997703969478607,0.0995210781693459,0.23678195476532,-0.966452240943909,0.0220953319221735,0.221464082598686,-0.974918246269226,0,0.261487126350403,-0.965206980705261,0,0.261487126350403,-0.965206980705261,0,0.261487126350403,-0.965206980705261,0,0.261487126350403,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0554697290062904,-0.977241039276123,-0.204751029610634,0.0677258297801018,-0.997703969478607,0,0.0995209515094757,-0.966452121734619,-0.236782252788544,0.0220952276140451,-0.974918127059937,-0.221464350819588,0,-0.965206980705261,-0.261487185955048,0,-0.965206980705261,-0.261487185955048,0,-0.965206980705261,-0.261487185955048,0,-0.965206980705261,-0.261487185955048,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0,-0.0554696619510651,-0.204750776290894,0.977241098880768,0.0677259787917137,0,0.997703969478607,0.0995214134454727,-0.236782014369965,0.966452121734619,0.0220954976975918,-0.221464157104492,0.974918186664581,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0.20475073158741,0.977241218090057,0.0554696507751942,0,0.997704029083252,-0.0677256807684898,0.236781880259514,0.966452300548553,-0.0995208472013474,0.221463993191719,0.974918186664581,-0.0220952145755291,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0, +-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0.204750791192055,0.977241098880768,-0.0554696619510651,0,0.997704029083252,0.0677257031202316,-0.236781939864159,0.966452240943909,0.099520817399025,-0.221464112401009,0.974918246269226,0.022095188498497,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0,-0.099520780146122,0.966452240943909,0.236781999468803,-0.0677256733179092,0.997704029083252,0,0.0554696880280972,0.977241098880768,0.204750865697861,-0.022095151245594,0.974918127059937,0.221464157104492,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0554696880280972,0.977241098880768,-0.204750865697861,0.0677258223295212,0.997703969478607,-0,0.0995210558176041,0.966452181339264,-0.236782059073448,0.0220952890813351,0.974918246269226,-0.221464201807976,0,0.965206921100616,-0.261487156152725,0,0.965206921100616,-0.261487156152725,0,0.965206921100616,-0.261487156152725,0,0.965206921100616,-0.261487156152725,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0995210707187653,0.966452240943909,-0.236782118678093,-0.0677258297801018,0.997703969478607,0,0.0554696954786777,0.977241098880768,-0.204750895500183,-0.0220952928066254,0.974918186664581,-0.221464231610298,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0995210558176041,0.236782118678093,-0.966452240943909,-0.0677258223295212,0,-0.997703969478607,0.0554696880280972,0.204750880599022,-0.977241098880768,-0.0220952853560448,0.221464216709137,-0.974918127059937,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0554697066545486,-0.204750955104828,-0.977241158485413,0.0677259713411331,0,-0.997703969478607,0.0995213389396667,-0.236782237887383,-0.966452181339264,0.0220954176038504,-0.221464291214943,-0.974918127059937,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0995213687419891,-0.236782059073448,-0.966452181339264, +-0.0677259787917137,0,-0.997703969478607,0.0554696545004845,-0.204750776290894,-0.977241158485413,-0.0220954604446888,-0.221464172005653,-0.974918246269226,0,0,-1,0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0995209366083145,-0.966452121734619,-0.236782252788544,-0.0677258223295212,-0.997703969478607,-0,0.0554697290062904,-0.977241098880768,-0.204751014709473,-0.0220952201634645,-0.974918127059937,-0.221464365720749,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0,-0.0554697252810001,-0.977241158485413,0.204751014709473,0.0677256733179092,-0.997704029083252,0,0.099520668387413,-0.966452181339264,0.236782178282738,0.0220950860530138,-0.974918127059937,0.221464276313782,0,-0.965206921100616,0.261487156152725,0,-0.965206921100616,0.261487156152725,0,-0.965206921100616,0.261487156152725,0,-0.965206921100616,0.261487156152725,0,-1,0,0,-1,0,0,-1,-0,0,-1,0,-0.0995206832885742,-0.966452181339264,0.236782178282738,-0.0677256807684898,-0.997704029083252,-0,0.0554697178304195,-0.977241098880768,0.20475098490715,-0.0220950935035944,-0.974918127059937,0.221464276313782,0,-1,-0,0,-1,-0,-0,-1,0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.0995213836431503,-0.23678220808506,0.966452121734619,-0.0677259713411331,0,0.997703969478607,0.0554697066545486,-0.204750940203667,0.977241098880768,-0.0220954623073339,-0.221464291214943,0.974918186664581,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0.0554696954786777,0.204750895500183,0.977241098880768,0.0677258223295212,0,0.997703969478607,0.0995211154222488,0.236782103776932,0.966452181339264,0.0220953226089478,0.221464246511459,0.974918186664581,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0,1,0,0,1,0,0,1,0,0,1,-0.0995211452245712,0.23678195476532,0.966452181339264,-0.0677258297801018,0,0.997703969478607,0.0554696656763554,0.204750776290894,0.977241218090057,-0.022095363587141,0.221464082598686,0.974918246269226,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0.236781939864159,0.966452240943909,0.0995208621025085, +-0,0.997704029083252,0.0677257031202316,0.204750806093216,0.977241158485413,-0.0554696656763554,0.221464112401009,0.974918186664581,0.0220951996743679,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0.204750806093216,0.977241098880768,0.0554696694016457,0,0.997703969478607,-0.0677258521318436,-0.236782044172287,0.966452240943909,-0.0995211452245712,-0.221464172005653,0.974918246269226,-0.0220953542739153,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,0,1,-0,-0,1,0,-0,1,0,-0,1,0,-0.236781984567642,0.966452300548553,0.09952113032341,-0,0.997703969478607,0.0677258297801018,-0.204750761389732,0.977241158485413,-0.0554696582257748,-0.221464067697525,0.974918246269226,0.0220953486859798,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,-0,-0,1,0,-0.236781880259514,0.966452360153198,-0.0995208248496056,0,0.997704029083252,-0.0677256807684898,-0.20475073158741,0.977241158485413,0.0554696470499039,-0.221464022994041,0.974918246269226,-0.0220951903611422,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0.204750746488571,0.977241158485413,-0.0554696545004845,0,0.997703969478607,0.0677258297801018,0.23678195476532,0.966452240943909,0.0995210781693459,0.221464082598686,0.974918246269226,0.0220953319221735,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0,0.236782073974609,0.966452240943909,-0.0995211005210876,0,0.997703969478607,-0.0677258521318436,0.204750806093216,0.977241098880768,0.0554696656763554,0.221464142203331,0.974918186664581,-0.0220953188836575,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,-0,-1,0,-0,-1, +0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1, +-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0 + } + BinormalsW: *768 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *2304 { + a: 0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965207040309906,0.26148721575737,0,0.965207040309906,0.26148721575737,0,0.965207040309906,0.26148721575737,0,0.965207040309906,0.26148721575737,0,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0.261487156152725,-0,0.965206980705261,-0.261487156152725,-0,0.965206980705261,-0.261487156152725,-0,0.965206980705261,-0.261487156152725,-0,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,0.965206980705261,-0.261487156152725,0,0.965206980705261,-0.261487156152725,0,0.965206980705261,-0.261487156152725,0,0.965206980705261,-0.261487156152725,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,-0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0.26148721575737,-0,0.965207040309906, +0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0.97571212053299,0.00952975451946259,0.218849271535873,0.997704029083252,-0.0677256807684898,0,0.972207129001617,-0.145124465227127,0.183717742562294,0.977037787437439,-0.0680116266012192,0.201919630169868,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.97571212053299,0.218849420547485,-0.0095297135412693,0.997703969478607,0,0.0677258297801018,0.972207069396973,0.183717846870422,0.145124778151512,0.977037727832794,0.20191977918148,0.0680118054151535,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.975712060928345,-0.00952969118952751,-0.218849584460258,0.997703969478607,0.0677258297801018,0,0.972207009792328,0.145124763250351,-0.183717995882034,0.977037727832794,0.0680118054151535,-0.201919928193092,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0.97571212053299,-0.218849301338196,0.00952974148094654,0.997703969478607,0,-0.0677259787917137,0.972207069396973,-0.183717638254166,-0.145125105977058,0.977037727832794,-0.201919630169868,-0.068011961877346,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.218849286437035,0.00952974148094654,-0.97571212053299,0,-0.0677256807684898,-0.997704029083252,0.183717831969261,-0.145124509930611,-0.972207069396973,0.201919674873352,-0.0680116564035416,-0.977037787437439,-0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.218849420547485,0.0095297172665596,0.97571212053299,0,-0.0677257031202316,0.997704029083252,-0.183717906475067,-0.145124524831772,0.972207069396973,-0.201919823884964,-0.068011686205864,0.977037727832794,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0.972207129001617,0.145124465227127,-0.183717742562294,0.997704029083252,0.0677256733179092,0,0.97571212053299,-0.00952975824475288,-0.218849256634712,0.977037787437439,0.0680116191506386,-0.201919630169868,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403, +1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.97571212053299,0.00952975172549486,-0.218849286437035,0.997703969478607,-0.0677258223295212,0,0.972207069396973,-0.14512474834919,-0.183717682957649,0.977037847042084,-0.0680117681622505,-0.20191964507103,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,0.972207069396973,0.14512474834919,0.183717668056488,0.997703969478607,0.0677258297801018,0,0.97571212053299,-0.00952975451946259,0.218849271535873,0.977037847042084,0.0680117756128311,0.201919630169868,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,1,-0,-0,1,-0,0,1,-0,0,1,-0,0,0.972207069396973,-0.183717831969261,-0.145124778151512,0.997703969478607,0,-0.0677258223295212,0.97571212053299,-0.218849405646324,0.00952972564846277,0.977037727832794,-0.20191977918148,-0.0680117979645729,0.965207040309906,-0.26148721575737,-0,0.965207040309906,-0.26148721575737,-0,0.965207040309906,-0.26148721575737,-0,0.965207040309906,-0.26148721575737,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.97571212053299,-0.218849420547485,-0.0095297247171402,0.997703969478607,0,0.0677259713411331,0.972207009792328,-0.183717757463455,0.145125061273575,0.977037727832794,-0.201919749379158,0.0680119395256042,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,-0,-0,1,0,0,0.972207009792328,0.183717772364616,-0.145125061273575,0.997703969478607,0,-0.0677259787917137,0.97571212053299,0.218849420547485,0.00952971447259188,0.977037727832794,0.20191977918148,-0.0680119544267654,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,-0,0.965206980705261,0.261487156152725,0,1,-0,0,1,0,0,1,0,0,1,0,0,0.972207009792328,-0.14512474834919,0.183718010783195,0.997703969478607,-0.0677258223295212,0,0.975712060928345,0.00952969118952751,0.218849584460258,0.977037727832794,-0.0680117979645729,0.201919928193092,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403, +1,-0,0,1,-0,0,1,-0,0,1,-0,0,0.975712060928345,-0.00952969398349524,0.218849569559097,0.997704029083252,0.0677256733179092,0,0.972207069396973,0.145124465227127,0.18371807038784,0.977037727832794,0.0680116564035416,0.201919972896576,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0.972207069396973,-0.145124480128288,-0.183718055486679,0.997704029083252,-0.0677256807684898,0,0.975712060928345,0.00952969398349524,-0.218849569559097,0.977037727832794,-0.0680116638541222,-0.201919972896576,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,1,0,0,1,0,0,1,0,0,1,0,0,0.972207069396973,0.183717623353004,0.145125105977058,0.997703969478607,0,0.0677259713411331,0.97571212053299,0.218849316239357,-0.00952974893152714,0.977037847042084,0.201919630169868,0.0680119544267654,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.97571212053299,0.218849271535873,0.00952975638210773,0.997703969478607,0,-0.0677258223295212,0.972207069396973,0.183717668056488,-0.145124807953835,0.977037847042084,0.201919630169868,-0.0680118054151535,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.972207069396973,-0.18371769785881,0.145124822854996,0.997703969478607,0,0.0677258297801018,0.97571212053299,-0.218849286437035,-0.00952974613755941,0.977037847042084,-0.201919630169868,0.0680118054151535,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,-0.183717846870422,0.145124554634094,-0.972207069396973,0,0.0677257031202316,-0.997704029083252,-0.218849360942841,-0.0095297284424305,-0.97571212053299,-0.20191977918148,0.068011686205864,-0.977037727832794,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906, +0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.218849450349808,0.00952971167862415,-0.97571212053299,0,-0.0677258521318436,-0.997703969478607,-0.1837178170681,-0.145124852657318,-0.972207069396973,-0.201919764280319,-0.0680118426680565,-0.977037727832794,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,0,-1,0,0,-1,0.183717772364616,0.145124807953835,-0.972207069396973,0,0.0677258297801018,-0.997703969478607,0.218849375844002,-0.00952972657978535,-0.97571212053299,0.201919689774513,0.0680118054151535,-0.977037727832794,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0.183717876672745,0.145124495029449,0.972207069396973,0,0.0677256807684898,0.997704029083252,0.218849375844002,-0.00952972192317247,0.97571212053299,0.20191977918148,0.0680116564035416,0.977037727832794,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0.218849420547485,0.0095297135412693,0.97571212053299,0,-0.0677258297801018,0.997703969478607,0.183717846870422,-0.145124778151512,0.972207069396973,0.20191977918148,-0.0680118054151535,0.977037727832794,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,-0.183717921376228,0.145124837756157,0.972207009792328,0,0.0677258521318436,0.997703969478607,-0.21884948015213,-0.00952970236539841,0.97571212053299,-0.201919838786125,0.0680118277668953,0.977037727832794,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,0,-0,1,0,-0,1,0,-0,1,0,-0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,0,1,0,0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0, +1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1, +0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1 + } + TangentsW: *768 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *542 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25,0.5,0.125,0.5,0,0.5,1,0.625,0.125,0.5,0.25,0.375,0.125,0.5,0.375,0.625,0.375,0.75,0.25,0.5,0.5,0.375,0.375,0.25,0.25,0.5,0.625,0.625,0.625,0.875,0.125,0.5,0.75,0.375,0.625,0.125,0.125,0.5,0.875,0.625,0.875,0.75,0,0.5,1,0.375,0.875,0.25,0,0.75,0.125,0.75,0,0.875,0.125,0.75,0.25,0.25,0.125,0.25,0,0.25,0.25,0.125,0.125,0.4375,0.0625,0.375,0.0625,0.4375,0,0.4375,1,0.5,0.0625,0.4375,0.125,0.4375,0.3125,0.375,0.3125,0.3125,0.25,0.4375,0.25,0.5,0.3125,0.4375,0.375,0.4375,0.5625,0.375,0.5625,0.125,0.1875,0.4375,0.5,0.5,0.5625,0.4375,0.625,0.4375,0.8125,0.375,0.8125,0.1875,0,0.4375,0.75,0.5,0.8125,0.4375,0.875,0.6875,0.0625,0.625,0.0625,0.625,0.9375,0.6875,0,0.75,0.0625,0.6875,0.125,0.1875,0.0625,0.375,0.6875,0.125,0.0625,0.1875,0,0.25,0.0625,0.1875,0.125,0.5625,0.0625,0.5625,0,0.5625,1,0.5625,0.125,0.5625,0.1875,0.625,0.1875,0.5625,0.25,0.5,0.1875,0.4375,0.1875,0.375,0.1875,0.5625,0.3125,0.625,0.3125,0.6875,0.25,0.5625,0.375,0.5625,0.4375,0.625,0.4375,0.8125,0.25,0.5625,0.5,0.5,0.4375,0.4375,0.4375,0.375,0.4375,0.1875,0.25,0.5625,0.5625,0.625,0.5625,0.875,0.1875,0.5625,0.625,0.5625,0.6875,0.625,0.6875,0.875,0.0625,0.5625,0.75,0.5,0.6875,0.4375,0.6875,0.375,0.6875,0.5625,0.8125,0.625,0.8125,0.8125,0,0.5625,0.875,0.5625,0.9375,0.625,0.9375,0.5625,1,0.5,0.9375,0.4375,0.9375,0.4375,1,0.375,0.9375,0.3125,0,0.8125,0.0625,0.8125,0,0.875,0.0625,0.8125,0.125,0.8125,0.1875,0.875,0.1875,0.8125,0.25,0.75,0.1875,0.6875,0.1875,0.6875,0.25,0.3125,0.0625,0.3125,0,0.3125,0.125,0.3125,0.1875,0.3125,0.25,0.25,0.1875,0.1875,0.1875,0.1875,0.25,0.125,0.1875,0.4375,0.125,0.375,0.125,0.375,0.0625,0.4375,0.0625,0.4375,0.375,0.375,0.375,0.375,0.3125,0.4375,0.3125,0.4375,0.625,0.375,0.625,0.375,0.5625,0.4375,0.5625,0.4375,0.875,0.375,0.875,0.375,0.8125,0.4375,0.8125,0.6875,0.125,0.625,0.125,0.625,0.0625,0.6875,0.0625,0.1875,0.125,0.125,0.125,0.125,0.0625,0.1875,0.0625,0.5,0.0625,0.5,0,0.5625,0, +0.5625,0.0625,0.5625,0.125,0.625,0.1875,0.5625,0.1875,0.5,0.1875,0.5,0.25,0.4375,0.25,0.4375,0.1875,0.5,0.3125,0.5625,0.25,0.5625,0.3125,0.5625,0.375,0.625,0.375,0.625,0.4375,0.5625,0.4375,0.5,0.4375,0.5,0.5,0.4375,0.5,0.4375,0.4375,0.5,0.5625,0.5625,0.5,0.5625,0.5625,0.5625,0.625,0.625,0.625,0.625,0.6875,0.5625,0.6875,0.5,0.6875,0.5,0.75,0.4375,0.75,0.4375,0.6875,0.5,0.8125,0.5625,0.75,0.5625,0.8125,0.5625,0.875,0.625,0.875,0.625,0.9375,0.5625,0.9375,0.5,0.9375,0.5,1,0.4375,1,0.4375,0.9375,0.75,0.0625,0.75,0,0.8125,0,0.8125,0.0625,0.8125,0.125,0.875,0.125,0.875,0.1875,0.8125,0.1875,0.75,0.1875,0.75,0.25,0.6875,0.25,0.6875,0.1875,0.25,0.0625,0.25,0,0.3125,0,0.3125,0.0625,0.3125,0.125,0.375,0.1875,0.3125,0.1875,0.25,0.1875,0.25,0.25,0.1875,0.25,0.1875,0.1875,0.375,0,0.4375,0,0.5,0.125,0.375,0.25,0.5,0.375,0.375,0.5,0.5,0.625,0.375,0.75,0.5,0.875,0.625,0,0.6875,0,0.75,0.125,0.125,0,0.1875,0,0.25,0.125,0.625,0.25,0.625,0.3125,0.625,0.5,0.375,0.4375,0.625,0.5625,0.625,0.75,0.375,0.6875,0.625,0.8125,0.625,1,0.5625,1,0.375,1,0.375,0.9375,0.875,0,0.875,0.0625,0.875,0.25,0.8125,0.25,0.3125,0.25,0.125,0.25,0.125,0.1875 + } + UVIndex: *768 { + a: 51,19,47,46,57,24,53,52,63,30,59,58,69,36,65,64,75,17,71,70,81,45,78,76,50,15,83,82,85,17,87,86,89,18,55,90,56,18,88,92,95,21,97,96,100,23,61,101,62,23,99,104,107,27,109,108,112,29,67,113,68,29,111,115,118,33,120,119,122,35,124,123,74,39,128,127,130,40,132,131,134,41,136,135,80,43,138,137,139,19,91,140,142,44,144,143,47,0,48,46,48,15,50,46,50,14,51,46,53,2,55,52,55,18,56,52,56,20,57,52,59,4,61,58,61,23,62,58,62,26,63,58,65,6,67,64,67,29,68,64,68,32,69,64,71,1,73,70,73,39,74,70,74,38,75,70,78,12,79,76,79,43,80,76,80,42,81,76,83,1,71,82,71,17,85,82,85,14,50,82,87,3,88,86,88,18,89,86,89,14,85,86,55,2,91,90,91,19,51,90,51,14,89,90,88,3,93,92,93,21,95,92,95,20,56,92,97,5,99,96,99,23,100,96,100,20,95,96,61,4,102,101,102,24,57,101,57,20,100,101,99,5,105,104,105,27,107,104,107,26,62,104,109,7,111,108,111,29,112,108,112,26,107,108,67,6,114,113,114,30,63,113,63,26,112,113,111,7,116,115,116,33,118,115,118,32,68,115,120,9,121,119,121,35,122,119,122,32,118,119,124,8,125,123,125,36,69,123,69,32,122,123,128,10,129,127,129,40,130,127,130,38,74,127,132,11,133,131,133,41,134,131,134,38,130,131,136,3,87,135,87,17,75,135,75,38,134,135,138,0,47,137,47,19,139,137,139,42,80,137,91,2,141,140,141,44,142,140,142,42,139,140,144,13,145,143,145,45,81,143,81,42,142,143,146,149,148,147,150,153,152,151,154,157,156,155,158,161,160,159,162,165,164,163,166,169,168,167,170,173,172,171,174,176,175,163,177,180,179,178,181,183,182,178,184,187,186,185,188,191,190,189,192,194,193,189,195,198,197,196,199,202,201,200,203,205,204,200,206,209,208,207,210,213,212,211,214,217,216,215,218,221,220,219,222,225,224,223,226,229,228,227,230,232,231,147,233,236,235,234,148,149,238,237,238,149,170,171,170,149,146,239,152,153,179,240,179,153,181,178,181,153,150,241,156,157,190,242,190,157,192,189,192,157,154,243,160,161,201,244,201,161,203,200,203,161,158,245,164,165,247,246,247,165,214,215,214,165,162,248,168,169,250,249,250,169,226,227,226,169,166,251,172,173,164,246,164,173,174,163,174,173,170,239,175,176,182,252,182,176,177,178,177,176,174,239, +179,180,231,240,231,180,146,147,146,180,177,239,182,183,253,252,253,183,184,185,184,183,181,241,186,187,193,254,193,187,188,189,188,187,184,241,190,191,255,242,255,191,150,151,150,191,188,241,193,194,256,254,256,194,195,196,195,194,192,243,197,198,204,257,204,198,199,200,199,198,195,243,201,202,258,244,258,202,154,155,154,202,199,243,204,205,259,257,259,205,206,207,206,205,203,245,208,209,261,260,261,209,210,211,210,209,206,245,212,213,263,262,263,213,158,159,158,213,210,245,216,217,265,264,265,217,218,219,218,217,214,248,220,221,267,266,267,221,222,223,222,221,218,248,224,225,175,252,175,225,162,163,162,225,222,248,228,229,148,237,148,229,230,147,230,229,226,251,231,232,268,240,268,232,233,234,233,232,230,251,235,236,270,269,270,236,166,167,166,236,233,251 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *384 { + a: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Model: 2359439406816, "Model::", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",-1.04023893373156,0.998288783259251,-1.04375962988677 + P: "Lcl Scaling", "Lcl Scaling", "", "A",10,10,10 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 2359439411456, "Model::", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",1.04023893373156,-0.998288783259251,1.04375962988677 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 2359439409136, "Model::", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",-1.0671176743957,0.998288783259251,9.39023469168045 + P: "Lcl Scaling", "Lcl Scaling", "", "A",10,10,10 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 2359439416096, "Model::", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",1.04023893373156,-0.998288783259251,1.1806740271636 + P: "Lcl Scaling", "Lcl Scaling", "", "A",0.77384837213491,0.77384837213491,0.77384837213491 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Material: 2359823919504, "Material::Mat_Green", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties70: { + P: "AmbientColor", "Color", "", "A",0,0,0 + P: "DiffuseColor", "Color", "", "A",0,1,0 + P: "DiffuseFactor", "Number", "", "A",0.800000011920929 + P: "TransparencyFactor", "Number", "", "A",1 + P: "Emissive", "Vector3D", "Vector", "",0,0,0 + P: "Ambient", "Vector3D", "Vector", "",0,0,0 + P: "Diffuse", "Vector3D", "Vector", "",0,0.800000011920929,0 + P: "Opacity", "double", "Number", "",1 + } + } + Material: 2359823921584, "Material::Mat_Red", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties70: { + P: "AmbientColor", "Color", "", "A",0,0,0 + P: "DiffuseColor", "Color", "", "A",1,0,0 + P: "DiffuseFactor", "Number", "", "A",0.800000011920929 + P: "TransparencyFactor", "Number", "", "A",1 + P: "Emissive", "Vector3D", "Vector", "",0,0,0 + P: "Ambient", "Vector3D", "Vector", "",0,0,0 + P: "Diffuse", "Vector3D", "Vector", "",0.800000011920929,0,0 + P: "Opacity", "double", "Number", "",1 + } + } + AnimationStack: 2359349464816, "AnimStack::Take 001", "" { + Properties70: { + P: "LocalStart", "KTime", "Time", "",1924423250 + P: "LocalStop", "KTime", "Time", "",230930790000 + P: "ReferenceStart", "KTime", "Time", "",1924423250 + P: "ReferenceStop", "KTime", "Time", "",230930790000 + } + } + AnimationLayer: 2359327403664, "AnimLayer::BaseLayer", "" { + } +} + +; Object connections +;------------------------------------------------------------------ + +Connections: { + + ;Model::, Model::RootNode + C: "OO",2359439406816,0 + + ;Model::, Model::RootNode + C: "OO",2359439409136,0 + + ;AnimLayer::BaseLayer, AnimStack::Take 001 + C: "OO",2359327403664,2359349464816 + + ;Geometry::, Model:: + C: "OO",2358377979296,2359439406816 + + ;Material::Mat_Green, Model:: + C: "OO",2359823919504,2359439406816 + + ;Model::, Model:: + C: "OO",2359439411456,2359439406816 + + ;Geometry::, Model:: + C: "OO",2358377961872,2359439411456 + + ;Material::Mat_Green, Model:: + C: "OO",2359823919504,2359439411456 + + ;Geometry::, Model:: + C: "OO",2358377982464,2359439409136 + + ;Material::Mat_Red, Model:: + C: "OO",2359823921584,2359439409136 + + ;Model::, Model:: + C: "OO",2359439416096,2359439409136 + + ;Geometry::, Model:: + C: "OO",2358377979824,2359439416096 + + ;Material::Mat_Red, Model:: + C: "OO",2359823921584,2359439416096 +} +;Takes section +;---------------------------------------------------- + +Takes: { + Current: "Take 001" + Take: "Take 001" { + FileName: "Take_001.tak" + LocalTime: 1924423250,230930790000 + ReferenceTime: 1924423250,230930790000 + } +} diff --git a/test/models/FBX/cubes_with_mirroring_and_pivot.fbx b/test/models/FBX/cubes_with_mirroring_and_pivot.fbx new file mode 100644 index 000000000..172bf2cb5 --- /dev/null +++ b/test/models/FBX/cubes_with_mirroring_and_pivot.fbx @@ -0,0 +1,855 @@ +; FBX 7.5.0 project file +; ---------------------------------------------------- + +FBXHeaderExtension: { + FBXHeaderVersion: 1003 + FBXVersion: 7500 + CreationTimeStamp: { + Version: 1000 + Year: 2019 + Month: 5 + Day: 14 + Hour: 17 + Minute: 27 + Second: 42 + Millisecond: 70 + } + Creator: "FBX SDK/FBX Plugins version 2018.1.1" + SceneInfo: "SceneInfo::GlobalInfo", "UserData" { + Type: "UserData" + Version: 100 + MetaData: { + Version: 100 + Title: "" + Subject: "" + Author: "" + Keywords: "" + Revision: "" + Comment: "" + } + Properties70: { + P: "DocumentUrl", "KString", "Url", "", "U:\Some\Absolute\Path\cubes_with_mirroring_and_pivot.fbx" + P: "SrcDocumentUrl", "KString", "Url", "", "U:\Some\Absolute\Path\cubes_with_mirroring_and_pivot.fbx" + P: "Original", "Compound", "", "" + P: "Original|ApplicationVendor", "KString", "", "", "Autodesk" + P: "Original|ApplicationName", "KString", "", "", "Maya" + P: "Original|ApplicationVersion", "KString", "", "", "201800" + P: "Original|DateTime_GMT", "DateTime", "", "", "14/05/2019 16:27:42.070" + P: "Original|FileName", "KString", "", "", "U:\Some\Absolute\Path\cubes_with_mirroring_and_pivot.fbx" + P: "LastSaved", "Compound", "", "" + P: "LastSaved|ApplicationVendor", "KString", "", "", "Autodesk" + P: "LastSaved|ApplicationName", "KString", "", "", "Maya" + P: "LastSaved|ApplicationVersion", "KString", "", "", "201800" + P: "LastSaved|DateTime_GMT", "DateTime", "", "", "14/05/2019 16:27:42.070" + P: "Original|ApplicationActiveProject", "KString", "", "", "U:\Some\Absolute\Path" + } + } +} +GlobalSettings: { + Version: 1000 + Properties70: { + P: "UpAxis", "int", "Integer", "",1 + P: "UpAxisSign", "int", "Integer", "",1 + P: "FrontAxis", "int", "Integer", "",2 + P: "FrontAxisSign", "int", "Integer", "",1 + P: "CoordAxis", "int", "Integer", "",0 + P: "CoordAxisSign", "int", "Integer", "",1 + P: "OriginalUpAxis", "int", "Integer", "",1 + P: "OriginalUpAxisSign", "int", "Integer", "",1 + P: "UnitScaleFactor", "double", "Number", "",100 + P: "OriginalUnitScaleFactor", "double", "Number", "",1 + P: "AmbientColor", "ColorRGB", "Color", "",0,0,0 + P: "DefaultCamera", "KString", "", "", "Producer Perspective" + P: "TimeMode", "enum", "", "",11 + P: "TimeProtocol", "enum", "", "",2 + P: "SnapOnFrameMode", "enum", "", "",0 + P: "TimeSpanStart", "KTime", "Time", "",1924423250 + P: "TimeSpanStop", "KTime", "Time", "",384884650000 + P: "CustomFrameRate", "double", "Number", "",-1 + P: "TimeMarker", "Compound", "", "" + P: "CurrentTimeMarker", "int", "Integer", "",-1 + } +} + +; Documents Description +;------------------------------------------------------------------ + +Documents: { + Count: 1 + Document: 1827132552544, "", "Scene" { + Properties70: { + P: "SourceObject", "object", "", "" + P: "ActiveAnimStackName", "KString", "", "", "Take 001" + } + RootNode: 0 + } +} + +; Document References +;------------------------------------------------------------------ + +References: { +} + +; Object definitions +;------------------------------------------------------------------ + +Definitions: { + Version: 100 + Count: 13 + ObjectType: "GlobalSettings" { + Count: 1 + } + ObjectType: "AnimationStack" { + Count: 1 + PropertyTemplate: "FbxAnimStack" { + Properties70: { + P: "Description", "KString", "", "", "" + P: "LocalStart", "KTime", "Time", "",0 + P: "LocalStop", "KTime", "Time", "",0 + P: "ReferenceStart", "KTime", "Time", "",0 + P: "ReferenceStop", "KTime", "Time", "",0 + } + } + } + ObjectType: "AnimationLayer" { + Count: 1 + PropertyTemplate: "FbxAnimLayer" { + Properties70: { + P: "Weight", "Number", "", "A",100 + P: "Mute", "bool", "", "",0 + P: "Solo", "bool", "", "",0 + P: "Lock", "bool", "", "",0 + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BlendMode", "enum", "", "",0 + P: "RotationAccumulationMode", "enum", "", "",0 + P: "ScaleAccumulationMode", "enum", "", "",0 + P: "BlendModeBypass", "ULongLong", "", "",0 + } + } + } + ObjectType: "Geometry" { + Count: 4 + PropertyTemplate: "FbxMesh" { + Properties70: { + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BBoxMin", "Vector3D", "Vector", "",0,0,0 + P: "BBoxMax", "Vector3D", "Vector", "",0,0,0 + P: "Primary Visibility", "bool", "", "",1 + P: "Casts Shadows", "bool", "", "",1 + P: "Receive Shadows", "bool", "", "",1 + } + } + } + ObjectType: "Material" { + Count: 2 + PropertyTemplate: "FbxSurfaceLambert" { + Properties70: { + P: "ShadingModel", "KString", "", "", "Lambert" + P: "MultiLayer", "bool", "", "",0 + P: "EmissiveColor", "Color", "", "A",0,0,0 + P: "EmissiveFactor", "Number", "", "A",1 + P: "AmbientColor", "Color", "", "A",0.2,0.2,0.2 + P: "AmbientFactor", "Number", "", "A",1 + P: "DiffuseColor", "Color", "", "A",0.8,0.8,0.8 + P: "DiffuseFactor", "Number", "", "A",1 + P: "Bump", "Vector3D", "Vector", "",0,0,0 + P: "NormalMap", "Vector3D", "Vector", "",0,0,0 + P: "BumpFactor", "double", "Number", "",1 + P: "TransparentColor", "Color", "", "A",0,0,0 + P: "TransparencyFactor", "Number", "", "A",0 + P: "DisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "DisplacementFactor", "double", "Number", "",1 + P: "VectorDisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "VectorDisplacementFactor", "double", "Number", "",1 + } + } + } + ObjectType: "Model" { + Count: 4 + PropertyTemplate: "FbxNode" { + Properties70: { + P: "QuaternionInterpolate", "enum", "", "",0 + P: "RotationOffset", "Vector3D", "Vector", "",0,0,0 + P: "RotationPivot", "Vector3D", "Vector", "",0,0,0 + P: "ScalingOffset", "Vector3D", "Vector", "",0,0,0 + P: "ScalingPivot", "Vector3D", "Vector", "",0,0,0 + P: "TranslationActive", "bool", "", "",0 + P: "TranslationMin", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMax", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMinX", "bool", "", "",0 + P: "TranslationMinY", "bool", "", "",0 + P: "TranslationMinZ", "bool", "", "",0 + P: "TranslationMaxX", "bool", "", "",0 + P: "TranslationMaxY", "bool", "", "",0 + P: "TranslationMaxZ", "bool", "", "",0 + P: "RotationOrder", "enum", "", "",0 + P: "RotationSpaceForLimitOnly", "bool", "", "",0 + P: "RotationStiffnessX", "double", "Number", "",0 + P: "RotationStiffnessY", "double", "Number", "",0 + P: "RotationStiffnessZ", "double", "Number", "",0 + P: "AxisLen", "double", "Number", "",10 + P: "PreRotation", "Vector3D", "Vector", "",0,0,0 + P: "PostRotation", "Vector3D", "Vector", "",0,0,0 + P: "RotationActive", "bool", "", "",0 + P: "RotationMin", "Vector3D", "Vector", "",0,0,0 + P: "RotationMax", "Vector3D", "Vector", "",0,0,0 + P: "RotationMinX", "bool", "", "",0 + P: "RotationMinY", "bool", "", "",0 + P: "RotationMinZ", "bool", "", "",0 + P: "RotationMaxX", "bool", "", "",0 + P: "RotationMaxY", "bool", "", "",0 + P: "RotationMaxZ", "bool", "", "",0 + P: "InheritType", "enum", "", "",0 + P: "ScalingActive", "bool", "", "",0 + P: "ScalingMin", "Vector3D", "Vector", "",0,0,0 + P: "ScalingMax", "Vector3D", "Vector", "",1,1,1 + P: "ScalingMinX", "bool", "", "",0 + P: "ScalingMinY", "bool", "", "",0 + P: "ScalingMinZ", "bool", "", "",0 + P: "ScalingMaxX", "bool", "", "",0 + P: "ScalingMaxY", "bool", "", "",0 + P: "ScalingMaxZ", "bool", "", "",0 + P: "GeometricTranslation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricRotation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricScaling", "Vector3D", "Vector", "",1,1,1 + P: "MinDampRangeX", "double", "Number", "",0 + P: "MinDampRangeY", "double", "Number", "",0 + P: "MinDampRangeZ", "double", "Number", "",0 + P: "MaxDampRangeX", "double", "Number", "",0 + P: "MaxDampRangeY", "double", "Number", "",0 + P: "MaxDampRangeZ", "double", "Number", "",0 + P: "MinDampStrengthX", "double", "Number", "",0 + P: "MinDampStrengthY", "double", "Number", "",0 + P: "MinDampStrengthZ", "double", "Number", "",0 + P: "MaxDampStrengthX", "double", "Number", "",0 + P: "MaxDampStrengthY", "double", "Number", "",0 + P: "MaxDampStrengthZ", "double", "Number", "",0 + P: "PreferedAngleX", "double", "Number", "",0 + P: "PreferedAngleY", "double", "Number", "",0 + P: "PreferedAngleZ", "double", "Number", "",0 + P: "LookAtProperty", "object", "", "" + P: "UpVectorProperty", "object", "", "" + P: "Show", "bool", "", "",1 + P: "NegativePercentShapeSupport", "bool", "", "",1 + P: "DefaultAttributeIndex", "int", "Integer", "",-1 + P: "Freeze", "bool", "", "",0 + P: "LODBox", "bool", "", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",0,0,0 + P: "Lcl Rotation", "Lcl Rotation", "", "A",0,0,0 + P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1 + P: "Visibility", "Visibility", "", "A",1 + P: "Visibility Inheritance", "Visibility Inheritance", "", "",1 + } + } + } +} + +; Object properties +;------------------------------------------------------------------ + +Objects: { + Geometry: 1827080157856, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,1,2,3,5,6,7,9,10,11,13,15 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 1827080155296, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,1,2,3,5,6,7,9,10,11,13,15 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 1827080156320, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,1,2,3,5,6,7,9,10,11,13,15 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 1827080139424, "Geometry::", "Mesh" { + Vertices: *588 { + a: -0.499999970197678,-0.5,0.5,0.500000059604645,-0.5,0.5,-0.499999970197678,0.5,0.5,0.500000059604645,0.5,0.5,-0.499999970197678,0.5,-0.49999988079071,0.500000059604645,0.5,-0.49999988079071,-0.499999970197678,-0.5,-0.49999988079071,0.500000059604645,-0.5,-0.49999988079071,0,0,0.5,0,-0.5,0.5,0.500000059604645,0,0.5,0,0.5,0.5,-0.499999970197678,0,0.5,0,0.5,1.19209289550781e-07,0.500000059604645,0.5,1.19209289550781e-07,0,0.5,-0.49999988079071,-0.499999970197678,0.5,1.19209289550781e-07,0,0,-0.49999988079071,0.500000059604645,0,-0.49999988079071,0,-0.5,-0.49999988079071,-0.499999970197678,0,-0.49999988079071,0,-0.5,1.19209289550781e-07,0.500000059604645,-0.5,1.19209289550781e-07,-0.499999970197678,-0.5,1.19209289550781e-07,0.500000059604645,0,1.19209289550781e-07,-0.499999970197678,0,1.19209289550781e-07,-0.25,-0.25,0.5,-0.499999970197678,-0.25,0.5,-0.25,-0.5,0.5,0,-0.25,0.5,-0.25,0,0.5,-0.25,0.5,0.25,-0.499999970197678,0.5,0.25,-0.25,0.5,0.5,0,0.5,0.25,-0.25,0.5,1.19209289550781e-07,-0.25,0.25,-0.49999988079071,-0.499999970197678,0.25,-0.49999988079071,-0.25,0.5,-0.49999988079071,0,0.25,-0.49999988079071,-0.25,0,-0.49999988079071,-0.25,-0.5,-0.24999988079071,-0.499999970197678,-0.5,-0.24999988079071,-0.25,-0.5,-0.49999988079071,0,-0.5,-0.24999988079071,-0.25,-0.5,1.19209289550781e-07,0.500000059604645,-0.25,0.25,0.500000059604645,-0.25,0.5,0.500000059604645,-0.5,0.25,0.500000059604645,-0.25,1.19209289550781e-07,0.500000059604645,0,0.25,-0.499999970197678,-0.25,-0.24999988079071,-0.499999970197678,-0.25,-0.49999988079071,-0.499999970197678,-0.25,1.19209289550781e-07,-0.499999970197678,0,-0.24999988079071,0.250000059604645,-0.25,0.5,0.250000059604645,-0.5,0.5,0.250000059604645,0,0.5,0.250000059604645,0.25,0.5,0.500000059604645,0.25,0.5,0.250000059604645,0.5,0.5,0,0.25,0.5,-0.25,0.25,0.5,-0.499999970197678,0.25,0.5,0.250000059604645,0.5,0.25,0.500000059604645,0.5,0.25,0.250000059604645,0.5,1.19209289550781e-07,0.250000059604645,0.5,-0.24999988079071,0.500000059604645,0.5,-0.24999988079071,0.250000059604645,0.5,-0.49999988079071, +0,0.5,-0.24999988079071,-0.25,0.5,-0.24999988079071,-0.499999970197678,0.5,-0.24999988079071,0.250000059604645,0.25,-0.49999988079071,0.500000059604645,0.25,-0.49999988079071,0.250000059604645,0,-0.49999988079071,0.250000059604645,-0.25,-0.49999988079071,0.500000059604645,-0.25,-0.49999988079071,0.250000059604645,-0.5,-0.49999988079071,0,-0.25,-0.49999988079071,-0.25,-0.25,-0.49999988079071,0.250000059604645,-0.5,-0.24999988079071,0.500000059604645,-0.5,-0.24999988079071,0.250000059604645,-0.5,1.19209289550781e-07,0.250000059604645,-0.5,0.25,0,-0.5,0.25,-0.25,-0.5,0.25,-0.499999970197678,-0.5,0.25,0.500000059604645,-0.25,-0.24999988079071,0.500000059604645,0,-0.24999988079071,0.500000059604645,0.25,-0.24999988079071,0.500000059604645,0.25,1.19209289550781e-07,0.500000059604645,0.25,0.25,-0.499999970197678,-0.25,0.25,-0.499999970197678,0,0.25,-0.499999970197678,0.25,0.25,-0.499999970197678,0.25,1.19209289550781e-07,-0.499999970197678,0.25,-0.24999988079071,-0.594913899898529,0,0.594913899898529,-0.152911216020584,0,0.714658200740814,-0.594913899898529,-0.152911216020584,0.594913899898529,-0.152911216020584,-0.152911216020584,0.714658200740814,-0.594913899898529,0.594913899898529,7.29137497046395e-08,-0.152911216020584,0.714658200740814,7.29137497046395e-08,-0.594913899898529,0.594913899898529,0.152911216020584,-0.152911216020584,0.714658200740814,0.152911216020584,-0.594913899898529,0,-0.594913899898529,-0.152911216020584,0,-0.714658200740814,-0.594913899898529,0.152911216020584,-0.594913899898529,-0.152911216020584,0.152911216020584,-0.714658200740814,-0.594913899898529,-0.594913899898529,7.29137497046395e-08,-0.152911216020584,-0.714658200740814,7.29137497046395e-08,-0.594913899898529,-0.594913899898529,-0.152911216020584,-0.152911216020584,-0.714658200740814,-0.152911216020584,0.594913899898529,0,0.594913899898529,0.714658200740814,0,0.152911216020584,0.594913899898529,-0.152911216020584,0.594913899898529,0.714658200740814,-0.152911216020584,0.152911216020584,-0.714658200740814,0,-0.152911216020584,-0.594913899898529,-0.152911216020584,-0.594913899898529, +-0.714658200740814,-0.152911216020584,-0.152911216020584,8.62321627254444e-17,-0.594913899898529,0.594913899898529,8.62321627254444e-17,-0.152911216020584,0.714658200740814,0.152911230921745,-0.594913899898529,0.594913899898529,0.152911230921745,-0.152911216020584,0.714658200740814,0.152911230921745,0,0.714658200740814,0.594913899898529,0.152911216020584,0.594913899898529,0.152911230921745,0.152911216020584,0.714658200740814,8.62321627254444e-17,0.594913899898529,0.594913899898529,8.62321627254444e-17,0.152911216020584,0.714658200740814,-0.152911216020584,0.594913899898529,0.594913899898529,-0.152911216020584,0.152911216020584,0.714658200740814,8.62321627254444e-17,0.714658200740814,0.152911216020584,0.152911230921745,0.594913899898529,0.594913899898529,0.152911230921745,0.714658200740814,0.152911216020584,0.594913899898529,0.594913899898529,7.29137497046395e-08,0.152911230921745,0.714658200740814,7.29137497046395e-08,0.594913899898529,0.594913899898529,-0.152911216020584,0.152911230921745,0.714658200740814,-0.152911216020584,8.62321627254444e-17,0.594913899898529,-0.594913899898529,8.62321627254444e-17,0.714658200740814,-0.152911216020584,-0.152911216020584,0.594913899898529,-0.594913899898529,-0.152911216020584,0.714658200740814,-0.152911216020584,8.62321627254444e-17,0.152911216020584,-0.714658200740814,0.152911230921745,0.594913899898529,-0.594913899898529,0.152911230921745,0.152911216020584,-0.714658200740814,0.594913899898529,0,-0.594913899898529,0.152911230921745,0,-0.714658200740814,0.594913899898529,-0.152911216020584,-0.594913899898529,0.152911230921745,-0.152911216020584,-0.714658200740814,8.62321627254444e-17,-0.594913899898529,-0.594913899898529,8.62321627254444e-17,-0.152911216020584,-0.714658200740814,-0.152911216020584,-0.594913899898529,-0.594913899898529,-0.152911216020584,-0.152911216020584,-0.714658200740814,8.62321627254444e-17,-0.714658200740814,-0.152911216020584,0.152911230921745,-0.594913899898529,-0.594913899898529,0.152911230921745,-0.714658200740814,-0.152911216020584,0.594913899898529,-0.594913899898529,7.29137497046395e-08, +0.152911230921745,-0.714658200740814,7.29137497046395e-08,0.594913899898529,-0.594913899898529,0.152911216020584,0.152911230921745,-0.714658200740814,0.152911216020584,8.62321627254444e-17,-0.714658200740814,0.152911216020584,-0.152911216020584,-0.594913899898529,0.594913899898529,-0.152911216020584,-0.714658200740814,0.152911216020584,0.714658200740814,-0.152911216020584,7.29137497046395e-08,0.594913899898529,-0.594913899898529,-0.152911216020584,0.714658200740814,-0.152911216020584,-0.152911216020584,0.714658200740814,0,-0.152911216020584,0.594913899898529,0.152911216020584,-0.594913899898529,0.714658200740814,0.152911216020584,-0.152911216020584,0.714658200740814,0.152911216020584,7.29137497046395e-08,0.594913899898529,0.594913899898529,0.152911216020584,0.714658200740814,0.152911216020584,0.152911216020584,-0.714658200740814,-0.152911216020584,7.29137497046395e-08,-0.594913899898529,-0.594913899898529,0.152911216020584,-0.714658200740814,-0.152911216020584,0.152911216020584,-0.714658200740814,0,0.152911216020584,-0.594913899898529,0.152911216020584,0.594913899898529,-0.714658200740814,0.152911216020584,0.152911216020584,-0.714658200740814,0.152911216020584,7.29137497046395e-08,-0.594913899898529,0.594913899898529,-0.152911216020584,-0.714658200740814,0.152911216020584,-0.152911216020584,-0.541863918304443,-0.541864037513733,0.541863918304443,8.62321627254444e-17,0,0.714658200740814,-0.541863918304443,0.541863918304443,0.541863918304443,8.62321627254444e-17,0.714658200740814,7.29137497046395e-08,-0.541863918304443,0.541863918304443,-0.541863799095154,8.62321627254444e-17,0,-0.714658200740814,-0.541863918304443,-0.541864037513733,-0.541863799095154,8.62321627254444e-17,-0.714658200740814,7.29137497046395e-08,0.541863977909088,-0.541864037513733,0.541863918304443,0.714658200740814,0,7.29137497046395e-08,-0.714658200740814,0,7.29137497046395e-08,0.541863977909088,0.541863918304443,0.541863918304443,0.541863977909088,0.541863918304443,-0.541863799095154,0.541863977909088,-0.541864037513733,-0.541863799095154 + } + PolygonVertexIndex: *768 { + a: 99,98,100,-102,103,102,104,-106,107,106,108,-110,111,110,112,-114,115,114,116,-118,118,106,119,-121,122,121,123,-125,125,114,126,-128,129,128,130,-132,132,128,133,-135,136,135,137,-139,140,139,141,-143,143,139,144,-146,147,146,148,-150,151,150,152,-154,154,150,155,-157,158,157,159,-161,161,121,162,-164,164,157,165,-167,167,146,168,-170,170,135,171,-173,173,110,174,-176,176,98,177,-179,179,102,180,-182,100,182,162,-102,162,121,122,-102,122,183,99,-102,104,184,130,-106,130,128,132,-106,132,185,103,-106,108,186,141,-110,141,139,143,-110,143,187,107,-110,112,188,152,-114,152,150,154,-114,154,189,111,-114,116,190,159,-118,159,157,164,-118,164,191,115,-118,119,188,112,-121,112,110,173,-121,173,192,118,-121,123,190,116,-125,116,114,125,-125,125,183,122,-125,126,193,133,-128,133,128,129,-128,129,183,125,-128,130,184,177,-132,177,98,99,-132,99,183,129,-132,133,193,171,-135,171,135,136,-135,136,185,132,-135,137,194,144,-139,144,139,140,-139,140,185,136,-139,141,186,180,-143,180,102,103,-143,103,185,140,-143,144,194,168,-146,168,146,147,-146,147,187,143,-146,148,195,155,-150,155,150,151,-150,151,187,147,-150,152,188,119,-154,119,106,107,-154,107,187,151,-154,155,195,165,-157,165,157,158,-157,158,189,154,-157,159,190,123,-161,123,121,161,-161,161,189,158,-161,162,182,174,-164,174,110,111,-164,111,189,161,-164,165,195,148,-167,148,146,167,-167,167,191,164,-167,168,194,137,-170,137,135,170,-170,170,191,167,-170,171,193,126,-173,126,114,115,-173,115,191,170,-173,174,182,100,-176,100,98,176,-176,176,192,173,-176,177,184,104,-179,104,102,179,-179,179,192,176,-179,180,186,108,-182,108,106,118,-182,118,192,179,-182,30,26,27,-13,35,31,32,-17,40,36,37,-21,45,41,42,-24,50,46,47,-11,54,51,52,-21,29,55,56,-10,57,58,59,-11,61,62,33,-12,34,64,60,-12,66,67,68,-15,70,71,38,-16,39,73,69,-16,75,76,77,-19,79,80,43,-20,44,81,78,-20,83,84,48,-23,85,86,28,-10,49,88,82,-23,89,90,74,-19,91,92,65,-15,53,93,87,-24,94,95,63,-13,96,97,72,-17,27,26,28,-1,28,26,29,-10,29,26,30,-9,32,31,33,-3,33,31,34,-12,34,31,35,-14,37,36,38,-5,38,36,39, +-16,39,36,40,-18,42,41,43,-7,43,41,44,-20,44,41,45,-22,47,46,48,-2,48,46,49,-23,49,46,50,-25,52,51,42,-7,42,51,53,-24,53,51,54,-26,56,55,47,-2,47,55,57,-11,57,55,29,-9,59,58,60,-4,60,58,61,-12,61,58,57,-9,33,62,63,-3,63,62,30,-13,30,62,61,-9,60,64,65,-4,65,64,66,-15,66,64,34,-14,68,67,69,-6,69,67,70,-16,70,67,66,-14,38,71,72,-5,72,71,35,-17,35,71,70,-14,69,73,74,-6,74,73,75,-19,75,73,39,-18,77,76,78,-8,78,76,79,-20,79,76,75,-18,43,80,52,-7,52,80,40,-21,40,80,79,-18,78,81,82,-8,82,81,83,-23,83,81,44,-22,48,84,56,-2,56,84,85,-10,85,84,83,-22,28,86,87,-1,87,86,45,-24,45,86,85,-22,82,88,77,-8,77,88,89,-19,89,88,49,-25,74,90,68,-6,68,90,91,-15,91,90,89,-25,65,92,59,-4,59,92,50,-11,50,92,91,-25,87,93,27,-1,27,93,94,-13,94,93,53,-26,63,95,32,-3,32,95,96,-17,96,95,94,-26,72,97,37,-5,37,97,54,-21,54,97,96,-26 + } + Edges: *384 { + a: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,102,104,105,108,109,110,114,116,117,120,121,122,126,128,129,132,133,134,138,140,141,144,145,146,150,152,153,156,158,162,164,165,168,170,174,176,180,181,182,186,188,193,194,198,205,206,210,212,216,217,218,222,224,229,230,234,241,242,246,248,252,253,254,258,260,266,270,277,278,282,284,290,294,296,301,302,306,314,318,320,326,330,332,338,342,350,354,356,362,366,368,374,378,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,481,482,483,485,490,491,493,494,495,497,502,503,505,506,507,509,514,515,517,518,519,521,526,527,529,530,531,533,538,539,541,543,545,550,551,553,555,557,563,565,566,567,569,575,577,578,581,589,590,593,599,601,602,603,605,611,613,614,617,625,626,629,635,637,638,639,641,647,649,653,661,662,665,671,673,677,683,685,686,689,697,701,707,709,713,719,721,725,733,737,743,745,749,755,757,761 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *2304 { + a: -0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487185955048,0.965206921100616,0,-0.261487185955048,0.965206921100616,0,-0.261487185955048,0.965206921100616,0,-0.261487185955048,0.965206921100616,0,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.965206921100616,0.261487156152725,0,0.965206921100616,0.261487156152725,0,0.965206921100616,0.261487156152725,0,0.965206921100616,0.261487156152725,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0.261487126350403,0,-0.965206980705261, +0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.965206921100616,-0.261487156152725,0,-0.965206921100616,-0.261487156152725,0,-0.965206921100616,-0.261487156152725,0,-0.965206921100616,-0.261487156152725,0.261487185955048,-0.965206921100616,0,0.261487185955048,-0.965206921100616,0,0.261487185955048,-0.965206921100616,0,0.261487185955048,-0.965206921100616,0,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0.965206980705261,-0.261487066745758,0,0.965206980705261,-0.261487066745758,0,0.965206980705261,-0.261487066745758,0,0.965206980705261,-0.261487066745758,0,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0.261487066745758,0,-0.965206980705261,0.261487066745758,0,-0.965206980705261,0.261487066745758,0,-0.965206980705261,0.261487066745758,0,-0.211917281150818,-0.211917445063591,0.954034626483917,0,0,1,-0.211917281150818,-0.21191743016243,0.954034626483917,-0.211917266249657,-0.211917445063591,0.954034626483917,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,-0.211917445063591,0.954034626483917,0.211917281150818, +0,1,0,-0.211917445063591,0.954034626483917,0.211917281150818,-0.211917445063591,0.954034626483917,0.211917266249657,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,1,0,0,1,0,0,1,0,0,1,0,-0.211917594075203,0.211917579174042,-0.954034507274628,0,0,-1,-0.211917594075203,0.211917579174042,-0.954034507274628,-0.211917594075203,0.211917564272881,-0.954034507274628,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.211917325854301,-0.954034626483917,-0.211917325854301,0,-1,0,-0.211917325854301,-0.954034686088562,-0.211917325854301,-0.211917355656624,-0.954034686088562,-0.211917355656624,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0.954034626483917,-0.211917251348495,0.21191731095314,1,0,0,0.954034626483917,-0.211917251348495,0.211917340755463,0.954034745693207,-0.211917266249657,0.211917325854301,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,1,0,0,1,0,0,1,0,0,1,0,0,-0.954034686088562,-0.211917355656624,-0.211917459964752,-1,0,0,-0.954034626483917,-0.211917325854301,-0.211917445063591,-0.954034686088562,-0.211917355656624,-0.211917474865913,-0.965206980705261,-0.261487066745758,0,-0.965206980705261,-0.261487066745758,0,-0.965206980705261,-0.261487066745758,0,-0.965206980705261,-0.261487066745758,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0.211917281150818,-0.211917400360107,0.954034626483917,0,0,1,0.211917266249657,-0.211917415261269,0.954034626483917,0.211917266249657,-0.211917415261269,0.954034626483917,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261, +0,0,1,0,0,1,0,0,1,0,0,1,0.211917296051979,0.211917415261269,0.954034626483917,0,0,1,0.211917296051979,0.211917415261269,0.954034626483917,0.211917281150818,0.211917415261269,0.954034626483917,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0,1,0,0,1,0,0,1,0,0,1,-0.211917281150818,0.211917445063591,0.954034626483917,0,0,1,-0.211917281150818,0.211917445063591,0.954034626483917,-0.211917266249657,0.211917445063591,0.954034626483917,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0.211917445063591,0.954034626483917,0.211917445063591,0,1,0,0.211917415261269,0.954034566879272,0.211917415261269,0.211917445063591,0.954034626483917,0.211917445063591,0.261487185955048,0.965206921100616,0,0.261487185955048,0.965206921100616,0,0.261487185955048,0.965206921100616,0,0.261487185955048,0.965206921100616,0,0,1,0,0,1,0,0,1,0,0,1,0,0.211917445063591,0.954034626483917,-0.211917489767075,0,1,0,0.21191743016243,0.954034566879272,-0.211917489767075,0.211917445063591,0.954034566879272,-0.211917474865913,0,0.965206921100616,-0.261487156152725,0,0.965206921100616,-0.261487156152725,0,0.965206921100616,-0.261487156152725,0,0.965206921100616,-0.261487156152725,0,1,0,0,1,0,0,1,0,0,1,0,-0.211917459964752,0.954034686088562,-0.211917340755463,0,1,0,-0.211917445063591,0.954034626483917,-0.21191731095314,-0.211917489767075,0.954034686088562,-0.211917355656624,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,0,1,0,0,1,0,0,1,0,0,1,0,0.211917608976364,0.211917579174042,-0.954034507274628,0,0,-1,0.211917608976364,0.211917564272881,-0.954034566879272,0.211917594075203,0.211917579174042,-0.954034507274628,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261, +0.261487126350403,0,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0.211917579174042,-0.211917534470558,-0.954034507274628,0,0,-1,0.211917594075203,-0.211917549371719,-0.954034507274628,0.211917594075203,-0.211917519569397,-0.954034507274628,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.211917594075203,-0.211917549371719,-0.954034507274628,0,0,-1,-0.211917579174042,-0.211917534470558,-0.954034566879272,-0.211917594075203,-0.211917519569397,-0.954034507274628,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0.211917340755463,-0.954034686088562,-0.211917519569397,0,-1,0,0.211917325854301,-0.954034626483917,-0.211917489767075,0.211917325854301,-0.954034686088562,-0.211917489767075,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0.211917281150818,-0.954034626483917,0.211917445063591,0,-1,0,0.211917296051979,-0.954034626483917,0.211917445063591,0.211917266249657,-0.954034626483917,0.211917445063591,0,-0.965206921100616,0.261487156152725,0,-0.965206921100616,0.261487156152725,0,-0.965206921100616,0.261487156152725,0,-0.965206921100616,0.261487156152725,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.211917296051979,-0.954034626483917,0.211917296051979,0,-1,0,-0.211917296051979,-0.954034626483917,0.211917296051979,-0.211917281150818,-0.954034686088562,0.211917281150818,-0.261487185955048,-0.965206921100616,0,-0.261487185955048,-0.965206921100616,0,-0.261487185955048,-0.965206921100616,0,-0.261487185955048,-0.965206921100616,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0.954034626483917,-0.211917325854301,-0.211917400360107,1,0,0,0.954034686088562,-0.211917340755463,-0.211917400360107,0.954034686088562,-0.211917355656624,-0.21191743016243,0.965206980705261,0,-0.261487185955048, +0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,1,0,0,1,0,0,1,0,0,1,0,0,0.954034686088562,0.211917370557785,-0.211917489767075,1,0,0,0.954034686088562,0.211917355656624,-0.211917445063591,0.954034626483917,0.211917355656624,-0.211917445063591,0.965206980705261,0.261487066745758,0,0.965206980705261,0.261487066745758,0,0.965206980705261,0.261487066745758,0,0.965206980705261,0.261487066745758,0,1,0,0,1,0,0,1,0,0,1,0,0,0.954034626483917,0.211917296051979,0.211917385458946,1,0,0,0.954034626483917,0.211917296051979,0.211917385458946,0.954034626483917,0.211917266249657,0.211917355656624,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,1,0,0,1,0,0,1,0,0,1,0,0,-0.954034626483917,-0.211917251348495,0.211917400360107,-1,0,0,-0.954034626483917,-0.211917266249657,0.211917400360107,-0.954034626483917,-0.211917251348495,0.211917400360107,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0.954034626483917,0.211917281150818,0.211917445063591,-1,0,0,-0.954034626483917,0.211917281150818,0.211917445063591,-0.954034626483917,0.211917266249657,0.211917445063591,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0.954034566879272,0.211917355656624,-0.211917519569397,-1,0,0,-0.954034686088562,0.211917370557785,-0.211917534470558,-0.954034626483917,0.211917355656624,-0.211917504668236,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0, +1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0, +-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0 + } + NormalsW: *768 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *2304 { + a: 0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0.965207040309906,0.261487185955048,0,0.965207040309906,0.261487185955048,0,0.965207040309906,0.261487185955048,0,0.965207040309906,0.261487185955048,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,0.965206980705261,-0.261487185955048,0,0.965206980705261,-0.261487185955048,0,0.965206980705261,-0.261487185955048,0,0.965206980705261,-0.261487185955048,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.261487126350403,-0.965206980705261,0,-0.261487126350403,-0.965206980705261,0,-0.261487126350403,-0.965206980705261,0,-0.261487126350403,-0.965206980705261,0,-0.965207040309906,-0.261487185955048,0,-0.965207040309906,-0.261487185955048,0,-0.965207040309906,-0.261487185955048,0,-0.965207040309906,-0.261487185955048,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0.965206980705261,0.261487185955048,0,-0.965206980705261,0.261487185955048,0,-0.965206980705261,0.261487185955048,0,-0.965206980705261,0.261487185955048,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,0,1,0,0,1,0,0,1,0,0,1,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,0,1,0,0,1,0,0,1,0, +0,1,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,-0.0554696954786777,0.977241098880768,0.204750895500183,0.0677256807684898,0.997704029083252,-0,0.0995207726955414,0.966452240943909,0.236782029271126,0.022095151245594,0.974918127059937,0.221464186906815,0,0.965206980705261,0.261487185955048,0,0.965206980705261,0.261487185955048,0,0.965206980705261,0.261487185955048,0,0.965206980705261,0.261487185955048,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0554696545004845,0.204750746488571,-0.977241158485413,0.0677258297801018,0,-0.997703969478607,0.0995210781693459,0.23678195476532,-0.966452240943909,0.0220953319221735,0.221464082598686,-0.974918246269226,0,0.261487126350403,-0.965206980705261,0,0.261487126350403,-0.965206980705261,0,0.261487126350403,-0.965206980705261,0,0.261487126350403,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.055469736456871,-0.977241158485413,-0.204751059412956,0.0677258297801018,-0.997703969478607,0,0.0995209664106369,-0.966452121734619,-0.236782252788544,0.0220952294766903,-0.974918127059937,-0.221464350819588,0,-0.965206980705261,-0.261487185955048,0,-0.965206980705261,-0.261487185955048,0,-0.965206980705261,-0.261487185955048,0,-0.965206980705261,-0.261487185955048,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0,-0.0554696694016457,-0.204750820994377,0.977241218090057,0.0677259787917137,0,0.997703969478607,0.0995214134454727,-0.236782014369965,0.966452121734619,0.0220954976975918,-0.221464157104492,0.974918186664581,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0.204750746488571,0.977241218090057,0.0554696507751942,0,0.997704029083252,-0.0677256807684898,0.236781880259514,0.966452300548553,-0.0995208472013474,0.221463993191719,0.974918186664581,-0.0220952127128839,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0, +-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0.204750791192055,0.977241098880768,-0.0554696619510651,0,0.997704029083252,0.0677257031202316,-0.236781939864159,0.966452240943909,0.099520817399025,-0.221464112401009,0.974918246269226,0.022095188498497,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0,-0.099520780146122,0.966452240943909,0.236781999468803,-0.0677256733179092,0.997704029083252,0,0.0554696880280972,0.977241098880768,0.204750865697861,-0.022095151245594,0.974918127059937,0.221464157104492,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0554696880280972,0.977241098880768,-0.204750865697861,0.0677258223295212,0.997703969478607,-0,0.0995210558176041,0.966452181339264,-0.236782059073448,0.0220952890813351,0.974918246269226,-0.221464201807976,0,0.965207040309906,-0.261487185955048,0,0.965207040309906,-0.261487185955048,0,0.965207040309906,-0.261487185955048,0,0.965207040309906,-0.261487185955048,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0995210707187653,0.966452240943909,-0.236782118678093,-0.0677258297801018,0.997703969478607,0,0.0554696954786777,0.977241098880768,-0.204750895500183,-0.0220952928066254,0.974918186664581,-0.221464231610298,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0995210558176041,0.236782118678093,-0.966452240943909,-0.0677258223295212,0,-0.997703969478607,0.0554696917533875,0.204750880599022,-0.977241098880768,-0.0220952853560448,0.221464216709137,-0.974918127059937,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0554697066545486,-0.204750955104828,-0.977241158485413,0.0677259713411331,0,-0.997703969478607,0.0995213314890862,-0.236782237887383,-0.966452181339264,0.0220954213291407,-0.221464306116104,-0.974918186664581,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0995213687419891,-0.236782059073448,-0.966452181339264, +-0.0677259787917137,0,-0.997703969478607,0.0554696545004845,-0.204750776290894,-0.977241158485413,-0.0220954604446888,-0.221464172005653,-0.974918246269226,0,0,-1,0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0995209515094757,-0.966452121734619,-0.236782252788544,-0.0677258223295212,-0.997703969478607,-0,0.0554697290062904,-0.977241098880768,-0.204751014709473,-0.0220952183008194,-0.974918127059937,-0.221464365720749,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0,-0.0554697290062904,-0.977241158485413,0.204751014709473,0.0677256733179092,-0.997704029083252,0,0.099520668387413,-0.966452181339264,0.236782178282738,0.022095087915659,-0.974918127059937,0.221464276313782,0,-0.965207040309906,0.261487185955048,0,-0.965207040309906,0.261487185955048,0,-0.965207040309906,0.261487185955048,0,-0.965207040309906,0.261487185955048,0,-1,0,0,-1,0,0,-1,-0,0,-1,0,-0.0995206907391548,-0.966452181339264,0.236782178282738,-0.0677256807684898,-0.997704029083252,-0,0.0554697178304195,-0.977241098880768,0.20475098490715,-0.0220951028168201,-0.974918127059937,0.221464276313782,0,-1,-0,0,-1,-0,-0,-1,0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.0995213836431503,-0.23678220808506,0.966452121734619,-0.0677259713411331,0,0.997703969478607,0.0554697066545486,-0.204750940203667,0.977241098880768,-0.0220954623073339,-0.221464291214943,0.974918186664581,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0.0554696954786777,0.204750895500183,0.977241098880768,0.0677258223295212,0,0.997703969478607,0.0995211154222488,0.236782103776932,0.966452181339264,0.0220953226089478,0.221464246511459,0.974918186664581,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0,1,0,0,1,0,0,1,0,0,1,-0.0995211601257324,0.23678195476532,0.966452181339264,-0.0677258297801018,0,0.997703969478607,0.0554696619510651,0.204750776290894,0.977241218090057,-0.022095363587141,0.221464082598686,0.974918246269226,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0.236781939864159,0.966452240943909,0.0995208621025085, +-0,0.997704029083252,0.0677257031202316,0.204750806093216,0.977241158485413,-0.0554696656763554,0.221464112401009,0.974918186664581,0.0220951996743679,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0.204750806093216,0.977241098880768,0.0554696694016457,0,0.997703969478607,-0.0677258521318436,-0.236782044172287,0.966452240943909,-0.0995211452245712,-0.221464172005653,0.974918246269226,-0.0220953542739153,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,0,1,-0,-0,1,0,-0,1,0,-0,1,0,-0.236781984567642,0.966452300548553,0.09952113032341,-0,0.997703969478607,0.0677258297801018,-0.204750761389732,0.977241158485413,-0.0554696582257748,-0.221464067697525,0.974918246269226,0.022095350548625,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,-0,-0,1,0,-0.236781880259514,0.966452360153198,-0.0995208248496056,0,0.997704029083252,-0.0677256807684898,-0.20475073158741,0.977241158485413,0.0554696470499039,-0.221464022994041,0.974918246269226,-0.0220951903611422,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0.204750746488571,0.977241158485413,-0.0554696545004845,0,0.997703969478607,0.0677258297801018,0.23678195476532,0.966452240943909,0.0995210781693459,0.221464082598686,0.974918246269226,0.0220953319221735,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0,0.236782059073448,0.966452240943909,-0.0995211154222488,0,0.997703969478607,-0.0677258521318436,0.204750806093216,0.977241098880768,0.0554696656763554,0.221464142203331,0.974918186664581,-0.0220953188836575,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,-0,-1,0,-0,-1, +0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1, +-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0 + } + BinormalsW: *768 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *2304 { + a: 0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965207040309906,0.26148721575737,0,0.965207040309906,0.26148721575737,0,0.965207040309906,0.26148721575737,0,0.965207040309906,0.26148721575737,0,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0.261487156152725,-0,0.965206980705261,-0.261487156152725,-0,0.965206980705261,-0.261487156152725,-0,0.965206980705261,-0.261487156152725,-0,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,0.965206980705261,-0.261487156152725,0,0.965206980705261,-0.261487156152725,0,0.965206980705261,-0.261487156152725,0,0.965206980705261,-0.261487156152725,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,-0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0.26148721575737,-0,0.965207040309906, +0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0.97571212053299,0.00952975451946259,0.218849271535873,0.997704029083252,-0.0677256807684898,0,0.972207129001617,-0.145124465227127,0.183717742562294,0.977037787437439,-0.0680116266012192,0.201919630169868,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.97571212053299,0.218849420547485,-0.0095297135412693,0.997703969478607,0,0.0677258297801018,0.972207069396973,0.183717846870422,0.145124778151512,0.977037727832794,0.20191977918148,0.0680118054151535,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.975712060928345,-0.00952968932688236,-0.21884959936142,0.997703969478607,0.0677258297801018,0,0.972207009792328,0.145124763250351,-0.183717966079712,0.977037727832794,0.0680118054151535,-0.201919928193092,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0.97571212053299,-0.218849316239357,0.00952973961830139,0.997703969478607,0,-0.0677259787917137,0.972207069396973,-0.183717638254166,-0.145125105977058,0.977037727832794,-0.201919630169868,-0.068011961877346,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.218849301338196,0.00952973961830139,-0.97571212053299,0,-0.0677256807684898,-0.997704029083252,0.1837178170681,-0.145124509930611,-0.972207069396973,0.201919689774513,-0.0680116564035416,-0.977037787437439,-0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.218849420547485,0.0095297172665596,0.97571212053299,0,-0.0677257031202316,0.997704029083252,-0.183717906475067,-0.145124524831772,0.972207069396973,-0.201919823884964,-0.068011686205864,0.977037727832794,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0.972207129001617,0.145124465227127,-0.183717742562294,0.997704029083252,0.0677256733179092,0,0.97571212053299,-0.00952975824475288,-0.218849256634712,0.977037787437439,0.0680116191506386,-0.201919630169868,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403, +1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.97571212053299,0.00952975172549486,-0.218849286437035,0.997703969478607,-0.0677258223295212,0,0.972207069396973,-0.14512474834919,-0.183717682957649,0.977037847042084,-0.0680117681622505,-0.20191964507103,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,0.972207069396973,0.14512474834919,0.183717668056488,0.997703969478607,0.0677258297801018,0,0.97571212053299,-0.00952975451946259,0.218849271535873,0.977037847042084,0.0680117756128311,0.201919630169868,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,1,-0,-0,1,-0,0,1,-0,0,1,-0,0,0.972207069396973,-0.183717831969261,-0.145124778151512,0.997703969478607,0,-0.0677258223295212,0.97571212053299,-0.218849420547485,0.00952972378581762,0.977037727832794,-0.20191977918148,-0.0680117979645729,0.965207040309906,-0.26148721575737,-0,0.965207040309906,-0.26148721575737,-0,0.965207040309906,-0.26148721575737,-0,0.965207040309906,-0.26148721575737,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.97571212053299,-0.218849420547485,-0.0095297247171402,0.997703969478607,0,0.0677259713411331,0.972207009792328,-0.183717742562294,0.145125061273575,0.977037727832794,-0.201919749379158,0.0680119395256042,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,-0,-0,1,0,0,0.972207009792328,0.183717772364616,-0.145125061273575,0.997703969478607,0,-0.0677259787917137,0.97571212053299,0.218849420547485,0.00952971447259188,0.977037727832794,0.20191977918148,-0.0680119544267654,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,-0,0.965206980705261,0.261487156152725,0,1,-0,0,1,0,0,1,0,0,1,0,0,0.972207009792328,-0.14512474834919,0.183717995882034,0.997703969478607,-0.0677258223295212,0,0.975712060928345,0.00952969118952751,0.218849584460258,0.977037727832794,-0.0680117979645729,0.201919928193092,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403, +1,-0,0,1,-0,0,1,-0,0,1,-0,0,0.975712060928345,-0.00952969212085009,0.218849584460258,0.997704029083252,0.0677256733179092,0,0.972207069396973,0.145124465227127,0.183718055486679,0.977037727832794,0.0680116564035416,0.201919972896576,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0.972207069396973,-0.145124480128288,-0.183718040585518,0.997704029083252,-0.0677256807684898,0,0.975712060928345,0.00952969398349524,-0.218849569559097,0.977037727832794,-0.0680116713047028,-0.201919972896576,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,1,0,0,1,0,0,1,0,0,1,0,0,0.972207069396973,0.183717623353004,0.145125105977058,0.997703969478607,0,0.0677259713411331,0.97571212053299,0.218849316239357,-0.00952974893152714,0.977037847042084,0.201919630169868,0.0680119544267654,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.97571212053299,0.218849271535873,0.00952975638210773,0.997703969478607,0,-0.0677258223295212,0.972207069396973,0.183717668056488,-0.145124807953835,0.977037847042084,0.201919630169868,-0.0680118054151535,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.972207069396973,-0.183717682957649,0.145124822854996,0.997703969478607,0,0.0677258297801018,0.97571212053299,-0.218849286437035,-0.00952974427491426,0.977037847042084,-0.201919630169868,0.0680118054151535,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,-0.183717846870422,0.145124554634094,-0.972207069396973,0,0.0677257031202316,-0.997704029083252,-0.218849360942841,-0.0095297284424305,-0.97571212053299,-0.20191977918148,0.068011686205864,-0.977037727832794,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906, +0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.218849450349808,0.00952971167862415,-0.97571212053299,0,-0.0677258521318436,-0.997703969478607,-0.1837178170681,-0.145124852657318,-0.972207069396973,-0.201919764280319,-0.0680118426680565,-0.977037727832794,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,0,-1,0,0,-1,0.183717772364616,0.145124807953835,-0.972207069396973,0,0.0677258297801018,-0.997703969478607,0.218849375844002,-0.00952972657978535,-0.97571212053299,0.201919689774513,0.0680118054151535,-0.977037727832794,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0.183717876672745,0.145124495029449,0.972207069396973,0,0.0677256807684898,0.997704029083252,0.218849375844002,-0.00952972192317247,0.97571212053299,0.20191977918148,0.0680116564035416,0.977037727832794,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0.218849420547485,0.0095297135412693,0.97571212053299,0,-0.0677258297801018,0.997703969478607,0.183717846870422,-0.145124778151512,0.972207069396973,0.20191977918148,-0.0680118054151535,0.977037727832794,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,-0.183717906475067,0.145124837756157,0.972207009792328,0,0.0677258521318436,0.997703969478607,-0.21884948015213,-0.00952970236539841,0.97571212053299,-0.201919838786125,0.0680118277668953,0.977037727832794,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,0,-0,1,0,-0,1,0,-0,1,0,-0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,0,1,0,0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0, +1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1, +0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1 + } + TangentsW: *768 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *542 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25,0.5,0.125,0.5,0,0.5,1,0.625,0.125,0.5,0.25,0.375,0.125,0.5,0.375,0.625,0.375,0.75,0.25,0.5,0.5,0.375,0.375,0.25,0.25,0.5,0.625,0.625,0.625,0.875,0.125,0.5,0.75,0.375,0.625,0.125,0.125,0.5,0.875,0.625,0.875,0.75,0,0.5,1,0.375,0.875,0.25,0,0.75,0.125,0.75,0,0.875,0.125,0.75,0.25,0.25,0.125,0.25,0,0.25,0.25,0.125,0.125,0.4375,0.0625,0.375,0.0625,0.4375,0,0.4375,1,0.5,0.0625,0.4375,0.125,0.4375,0.3125,0.375,0.3125,0.3125,0.25,0.4375,0.25,0.5,0.3125,0.4375,0.375,0.4375,0.5625,0.375,0.5625,0.125,0.1875,0.4375,0.5,0.5,0.5625,0.4375,0.625,0.4375,0.8125,0.375,0.8125,0.1875,0,0.4375,0.75,0.5,0.8125,0.4375,0.875,0.6875,0.0625,0.625,0.0625,0.625,0.9375,0.6875,0,0.75,0.0625,0.6875,0.125,0.1875,0.0625,0.375,0.6875,0.125,0.0625,0.1875,0,0.25,0.0625,0.1875,0.125,0.5625,0.0625,0.5625,0,0.5625,1,0.5625,0.125,0.5625,0.1875,0.625,0.1875,0.5625,0.25,0.5,0.1875,0.4375,0.1875,0.375,0.1875,0.5625,0.3125,0.625,0.3125,0.6875,0.25,0.5625,0.375,0.5625,0.4375,0.625,0.4375,0.8125,0.25,0.5625,0.5,0.5,0.4375,0.4375,0.4375,0.375,0.4375,0.1875,0.25,0.5625,0.5625,0.625,0.5625,0.875,0.1875,0.5625,0.625,0.5625,0.6875,0.625,0.6875,0.875,0.0625,0.5625,0.75,0.5,0.6875,0.4375,0.6875,0.375,0.6875,0.5625,0.8125,0.625,0.8125,0.8125,0,0.5625,0.875,0.5625,0.9375,0.625,0.9375,0.5625,1,0.5,0.9375,0.4375,0.9375,0.4375,1,0.375,0.9375,0.3125,0,0.8125,0.0625,0.8125,0,0.875,0.0625,0.8125,0.125,0.8125,0.1875,0.875,0.1875,0.8125,0.25,0.75,0.1875,0.6875,0.1875,0.6875,0.25,0.3125,0.0625,0.3125,0,0.3125,0.125,0.3125,0.1875,0.3125,0.25,0.25,0.1875,0.1875,0.1875,0.1875,0.25,0.125,0.1875,0.4375,0.125,0.375,0.125,0.375,0.0625,0.4375,0.0625,0.4375,0.375,0.375,0.375,0.375,0.3125,0.4375,0.3125,0.4375,0.625,0.375,0.625,0.375,0.5625,0.4375,0.5625,0.4375,0.875,0.375,0.875,0.375,0.8125,0.4375,0.8125,0.6875,0.125,0.625,0.125,0.625,0.0625,0.6875,0.0625,0.1875,0.125,0.125,0.125,0.125,0.0625,0.1875,0.0625,0.5,0.0625,0.5,0,0.5625,0, +0.5625,0.0625,0.5625,0.125,0.625,0.1875,0.5625,0.1875,0.5,0.1875,0.5,0.25,0.4375,0.25,0.4375,0.1875,0.5,0.3125,0.5625,0.25,0.5625,0.3125,0.5625,0.375,0.625,0.375,0.625,0.4375,0.5625,0.4375,0.5,0.4375,0.5,0.5,0.4375,0.5,0.4375,0.4375,0.5,0.5625,0.5625,0.5,0.5625,0.5625,0.5625,0.625,0.625,0.625,0.625,0.6875,0.5625,0.6875,0.5,0.6875,0.5,0.75,0.4375,0.75,0.4375,0.6875,0.5,0.8125,0.5625,0.75,0.5625,0.8125,0.5625,0.875,0.625,0.875,0.625,0.9375,0.5625,0.9375,0.5,0.9375,0.5,1,0.4375,1,0.4375,0.9375,0.75,0.0625,0.75,0,0.8125,0,0.8125,0.0625,0.8125,0.125,0.875,0.125,0.875,0.1875,0.8125,0.1875,0.75,0.1875,0.75,0.25,0.6875,0.25,0.6875,0.1875,0.25,0.0625,0.25,0,0.3125,0,0.3125,0.0625,0.3125,0.125,0.375,0.1875,0.3125,0.1875,0.25,0.1875,0.25,0.25,0.1875,0.25,0.1875,0.1875,0.375,0,0.4375,0,0.5,0.125,0.375,0.25,0.5,0.375,0.375,0.5,0.5,0.625,0.375,0.75,0.5,0.875,0.625,0,0.6875,0,0.75,0.125,0.125,0,0.1875,0,0.25,0.125,0.625,0.25,0.625,0.3125,0.625,0.5,0.375,0.4375,0.625,0.5625,0.625,0.75,0.375,0.6875,0.625,0.8125,0.625,1,0.5625,1,0.375,1,0.375,0.9375,0.875,0,0.875,0.0625,0.875,0.25,0.8125,0.25,0.3125,0.25,0.125,0.25,0.125,0.1875 + } + UVIndex: *768 { + a: 51,19,47,46,57,24,53,52,63,30,59,58,69,36,65,64,75,17,71,70,81,45,78,76,50,15,83,82,85,17,87,86,89,18,55,90,56,18,88,92,95,21,97,96,100,23,61,101,62,23,99,104,107,27,109,108,112,29,67,113,68,29,111,115,118,33,120,119,122,35,124,123,74,39,128,127,130,40,132,131,134,41,136,135,80,43,138,137,139,19,91,140,142,44,144,143,47,0,48,46,48,15,50,46,50,14,51,46,53,2,55,52,55,18,56,52,56,20,57,52,59,4,61,58,61,23,62,58,62,26,63,58,65,6,67,64,67,29,68,64,68,32,69,64,71,1,73,70,73,39,74,70,74,38,75,70,78,12,79,76,79,43,80,76,80,42,81,76,83,1,71,82,71,17,85,82,85,14,50,82,87,3,88,86,88,18,89,86,89,14,85,86,55,2,91,90,91,19,51,90,51,14,89,90,88,3,93,92,93,21,95,92,95,20,56,92,97,5,99,96,99,23,100,96,100,20,95,96,61,4,102,101,102,24,57,101,57,20,100,101,99,5,105,104,105,27,107,104,107,26,62,104,109,7,111,108,111,29,112,108,112,26,107,108,67,6,114,113,114,30,63,113,63,26,112,113,111,7,116,115,116,33,118,115,118,32,68,115,120,9,121,119,121,35,122,119,122,32,118,119,124,8,125,123,125,36,69,123,69,32,122,123,128,10,129,127,129,40,130,127,130,38,74,127,132,11,133,131,133,41,134,131,134,38,130,131,136,3,87,135,87,17,75,135,75,38,134,135,138,0,47,137,47,19,139,137,139,42,80,137,91,2,141,140,141,44,142,140,142,42,139,140,144,13,145,143,145,45,81,143,81,42,142,143,146,149,148,147,150,153,152,151,154,157,156,155,158,161,160,159,162,165,164,163,166,169,168,167,170,173,172,171,174,176,175,163,177,180,179,178,181,183,182,178,184,187,186,185,188,191,190,189,192,194,193,189,195,198,197,196,199,202,201,200,203,205,204,200,206,209,208,207,210,213,212,211,214,217,216,215,218,221,220,219,222,225,224,223,226,229,228,227,230,232,231,147,233,236,235,234,148,149,238,237,238,149,170,171,170,149,146,239,152,153,179,240,179,153,181,178,181,153,150,241,156,157,190,242,190,157,192,189,192,157,154,243,160,161,201,244,201,161,203,200,203,161,158,245,164,165,247,246,247,165,214,215,214,165,162,248,168,169,250,249,250,169,226,227,226,169,166,251,172,173,164,246,164,173,174,163,174,173,170,239,175,176,182,252,182,176,177,178,177,176,174,239, +179,180,231,240,231,180,146,147,146,180,177,239,182,183,253,252,253,183,184,185,184,183,181,241,186,187,193,254,193,187,188,189,188,187,184,241,190,191,255,242,255,191,150,151,150,191,188,241,193,194,256,254,256,194,195,196,195,194,192,243,197,198,204,257,204,198,199,200,199,198,195,243,201,202,258,244,258,202,154,155,154,202,199,243,204,205,259,257,259,205,206,207,206,205,203,245,208,209,261,260,261,209,210,211,210,209,206,245,212,213,263,262,263,213,158,159,158,213,210,245,216,217,265,264,265,217,218,219,218,217,214,248,220,221,267,266,267,221,222,223,222,221,218,248,224,225,175,252,175,225,162,163,162,225,222,248,228,229,148,237,148,229,230,147,230,229,226,251,231,232,268,240,268,232,233,234,233,232,230,251,235,236,270,269,270,236,166,167,166,236,233,251 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *384 { + a: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Model: 1827098352032, "Model::Cube2", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",-0.0104023897647858,0.00998288810253143,-0.0104375958442688 + P: "Lcl Scaling", "Lcl Scaling", "", "A",0.1,-0.1,0.1 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 1827098379872, "Model::Cube1", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",1.04023897647858,-0.998288810253143,1.04375958442688 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 1827098382192, "Model::Cube3", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",-0.0106711769104004,0.00998288810253143,0.0939023494720459 + P: "Lcl Scaling", "Lcl Scaling", "", "A",0.1,0.1,0.1 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 1827098384512, "Model::Cube1", "Mesh" { + Version: 232 + Properties70: { + P: "RotationPivot", "Vector3D", "Vector", "",-0.578102593944473,0.709856817059169,-0.892474638271642 + P: "ScalingOffset", "Vector3D", "Vector", "",0.168946330316482,-0.207450555573549,0.260819301999204 + P: "ScalingPivot", "Vector3D", "Vector", "",-0.747048924260949,0.917307372632704,-1.15329394027084 + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",1.04023897647858,-0.998288810253143,1.18067407608032 + P: "Lcl Scaling", "Lcl Scaling", "", "A",0.77384837213491,0.77384837213491,0.77384837213491 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Material: 1827074508720, "Material::Mat_Green", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties70: { + P: "AmbientColor", "Color", "", "A",0,0,0 + P: "DiffuseColor", "Color", "", "A",0,1,0 + P: "DiffuseFactor", "Number", "", "A",0.800000011920929 + P: "TransparencyFactor", "Number", "", "A",1 + P: "Emissive", "Vector3D", "Vector", "",0,0,0 + P: "Ambient", "Vector3D", "Vector", "",0,0,0 + P: "Diffuse", "Vector3D", "Vector", "",0,0.800000011920929,0 + P: "Opacity", "double", "Number", "",1 + } + } + Material: 1827074501920, "Material::Mat_Red", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties70: { + P: "AmbientColor", "Color", "", "A",0,0,0 + P: "DiffuseColor", "Color", "", "A",1,0,0 + P: "DiffuseFactor", "Number", "", "A",0.800000011920929 + P: "TransparencyFactor", "Number", "", "A",1 + P: "Emissive", "Vector3D", "Vector", "",0,0,0 + P: "Ambient", "Vector3D", "Vector", "",0,0,0 + P: "Diffuse", "Vector3D", "Vector", "",0.800000011920929,0,0 + P: "Opacity", "double", "Number", "",1 + } + } + AnimationStack: 1825586153728, "AnimStack::Take 001", "" { + Properties70: { + P: "LocalStart", "KTime", "Time", "",1924423250 + P: "LocalStop", "KTime", "Time", "",230930790000 + P: "ReferenceStart", "KTime", "Time", "",1924423250 + P: "ReferenceStop", "KTime", "Time", "",230930790000 + } + } + AnimationLayer: 1827070038960, "AnimLayer::BaseLayer", "" { + } +} + +; Object connections +;------------------------------------------------------------------ + +Connections: { + + ;Model::Cube2, Model::RootNode + C: "OO",1827098352032,0 + + ;Model::Cube3, Model::RootNode + C: "OO",1827098382192,0 + + ;AnimLayer::BaseLayer, AnimStack::Take 001 + C: "OO",1827070038960,1825586153728 + + ;Geometry::, Model::Cube2 + C: "OO",1827080157856,1827098352032 + + ;Material::Mat_Green, Model::Cube2 + C: "OO",1827074508720,1827098352032 + + ;Model::Cube1, Model::Cube2 + C: "OO",1827098379872,1827098352032 + + ;Geometry::, Model::Cube1 + C: "OO",1827080155296,1827098379872 + + ;Material::Mat_Green, Model::Cube1 + C: "OO",1827074508720,1827098379872 + + ;Geometry::, Model::Cube3 + C: "OO",1827080156320,1827098382192 + + ;Material::Mat_Red, Model::Cube3 + C: "OO",1827074501920,1827098382192 + + ;Model::Cube1, Model::Cube3 + C: "OO",1827098384512,1827098382192 + + ;Geometry::, Model::Cube1 + C: "OO",1827080139424,1827098384512 + + ;Material::Mat_Red, Model::Cube1 + C: "OO",1827074501920,1827098384512 +} +;Takes section +;---------------------------------------------------- + +Takes: { + Current: "Take 001" + Take: "Take 001" { + FileName: "Take_001.tak" + LocalTime: 1924423250,230930790000 + ReferenceTime: 1924423250,230930790000 + } +} diff --git a/test/models/FBX/cubes_with_names.fbx b/test/models/FBX/cubes_with_names.fbx new file mode 100644 index 000000000..203543ec8 --- /dev/null +++ b/test/models/FBX/cubes_with_names.fbx @@ -0,0 +1,852 @@ +; FBX 7.5.0 project file +; ---------------------------------------------------- + +FBXHeaderExtension: { + FBXHeaderVersion: 1003 + FBXVersion: 7500 + CreationTimeStamp: { + Version: 1000 + Year: 2019 + Month: 1 + Day: 7 + Hour: 16 + Minute: 17 + Second: 31 + Millisecond: 730 + } + Creator: "FBX SDK/FBX Plugins version 2018.1.1" + SceneInfo: "SceneInfo::GlobalInfo", "UserData" { + Type: "UserData" + Version: 100 + MetaData: { + Version: 100 + Title: "" + Subject: "" + Author: "" + Keywords: "" + Revision: "" + Comment: "" + } + Properties70: { + P: "DocumentUrl", "KString", "Url", "", "U:\Some\Absolute\Path\cubes_with_names.fbx" + P: "SrcDocumentUrl", "KString", "Url", "", "U:\Some\Absolute\Path\cubes_with_names.fbx" + P: "Original", "Compound", "", "" + P: "Original|ApplicationVendor", "KString", "", "", "Autodesk" + P: "Original|ApplicationName", "KString", "", "", "Maya" + P: "Original|ApplicationVersion", "KString", "", "", "201800" + P: "Original|DateTime_GMT", "DateTime", "", "", "07/01/2019 16:17:31.730" + P: "Original|FileName", "KString", "", "", "U:\Some\Absolute\Path\cubes_with_names.fbx" + P: "LastSaved", "Compound", "", "" + P: "LastSaved|ApplicationVendor", "KString", "", "", "Autodesk" + P: "LastSaved|ApplicationName", "KString", "", "", "Maya" + P: "LastSaved|ApplicationVersion", "KString", "", "", "201800" + P: "LastSaved|DateTime_GMT", "DateTime", "", "", "07/01/2019 16:17:31.730" + P: "Original|ApplicationActiveProject", "KString", "", "", "U:\Some\Absolute\Path" + } + } +} +GlobalSettings: { + Version: 1000 + Properties70: { + P: "UpAxis", "int", "Integer", "",1 + P: "UpAxisSign", "int", "Integer", "",1 + P: "FrontAxis", "int", "Integer", "",2 + P: "FrontAxisSign", "int", "Integer", "",1 + P: "CoordAxis", "int", "Integer", "",0 + P: "CoordAxisSign", "int", "Integer", "",1 + P: "OriginalUpAxis", "int", "Integer", "",1 + P: "OriginalUpAxisSign", "int", "Integer", "",1 + P: "UnitScaleFactor", "double", "Number", "",1 + P: "OriginalUnitScaleFactor", "double", "Number", "",1 + P: "AmbientColor", "ColorRGB", "Color", "",0,0,0 + P: "DefaultCamera", "KString", "", "", "Producer Perspective" + P: "TimeMode", "enum", "", "",11 + P: "TimeProtocol", "enum", "", "",2 + P: "SnapOnFrameMode", "enum", "", "",0 + P: "TimeSpanStart", "KTime", "Time", "",1924423250 + P: "TimeSpanStop", "KTime", "Time", "",384884650000 + P: "CustomFrameRate", "double", "Number", "",-1 + P: "TimeMarker", "Compound", "", "" + P: "CurrentTimeMarker", "int", "Integer", "",-1 + } +} + +; Documents Description +;------------------------------------------------------------------ + +Documents: { + Count: 1 + Document: 2359325563280, "", "Scene" { + Properties70: { + P: "SourceObject", "object", "", "" + P: "ActiveAnimStackName", "KString", "", "", "Take 001" + } + RootNode: 0 + } +} + +; Document References +;------------------------------------------------------------------ + +References: { +} + +; Object definitions +;------------------------------------------------------------------ + +Definitions: { + Version: 100 + Count: 13 + ObjectType: "GlobalSettings" { + Count: 1 + } + ObjectType: "AnimationStack" { + Count: 1 + PropertyTemplate: "FbxAnimStack" { + Properties70: { + P: "Description", "KString", "", "", "" + P: "LocalStart", "KTime", "Time", "",0 + P: "LocalStop", "KTime", "Time", "",0 + P: "ReferenceStart", "KTime", "Time", "",0 + P: "ReferenceStop", "KTime", "Time", "",0 + } + } + } + ObjectType: "AnimationLayer" { + Count: 1 + PropertyTemplate: "FbxAnimLayer" { + Properties70: { + P: "Weight", "Number", "", "A",100 + P: "Mute", "bool", "", "",0 + P: "Solo", "bool", "", "",0 + P: "Lock", "bool", "", "",0 + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BlendMode", "enum", "", "",0 + P: "RotationAccumulationMode", "enum", "", "",0 + P: "ScaleAccumulationMode", "enum", "", "",0 + P: "BlendModeBypass", "ULongLong", "", "",0 + } + } + } + ObjectType: "Geometry" { + Count: 4 + PropertyTemplate: "FbxMesh" { + Properties70: { + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BBoxMin", "Vector3D", "Vector", "",0,0,0 + P: "BBoxMax", "Vector3D", "Vector", "",0,0,0 + P: "Primary Visibility", "bool", "", "",1 + P: "Casts Shadows", "bool", "", "",1 + P: "Receive Shadows", "bool", "", "",1 + } + } + } + ObjectType: "Material" { + Count: 2 + PropertyTemplate: "FbxSurfaceLambert" { + Properties70: { + P: "ShadingModel", "KString", "", "", "Lambert" + P: "MultiLayer", "bool", "", "",0 + P: "EmissiveColor", "Color", "", "A",0,0,0 + P: "EmissiveFactor", "Number", "", "A",1 + P: "AmbientColor", "Color", "", "A",0.2,0.2,0.2 + P: "AmbientFactor", "Number", "", "A",1 + P: "DiffuseColor", "Color", "", "A",0.8,0.8,0.8 + P: "DiffuseFactor", "Number", "", "A",1 + P: "Bump", "Vector3D", "Vector", "",0,0,0 + P: "NormalMap", "Vector3D", "Vector", "",0,0,0 + P: "BumpFactor", "double", "Number", "",1 + P: "TransparentColor", "Color", "", "A",0,0,0 + P: "TransparencyFactor", "Number", "", "A",0 + P: "DisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "DisplacementFactor", "double", "Number", "",1 + P: "VectorDisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "VectorDisplacementFactor", "double", "Number", "",1 + } + } + } + ObjectType: "Model" { + Count: 4 + PropertyTemplate: "FbxNode" { + Properties70: { + P: "QuaternionInterpolate", "enum", "", "",0 + P: "RotationOffset", "Vector3D", "Vector", "",0,0,0 + P: "RotationPivot", "Vector3D", "Vector", "",0,0,0 + P: "ScalingOffset", "Vector3D", "Vector", "",0,0,0 + P: "ScalingPivot", "Vector3D", "Vector", "",0,0,0 + P: "TranslationActive", "bool", "", "",0 + P: "TranslationMin", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMax", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMinX", "bool", "", "",0 + P: "TranslationMinY", "bool", "", "",0 + P: "TranslationMinZ", "bool", "", "",0 + P: "TranslationMaxX", "bool", "", "",0 + P: "TranslationMaxY", "bool", "", "",0 + P: "TranslationMaxZ", "bool", "", "",0 + P: "RotationOrder", "enum", "", "",0 + P: "RotationSpaceForLimitOnly", "bool", "", "",0 + P: "RotationStiffnessX", "double", "Number", "",0 + P: "RotationStiffnessY", "double", "Number", "",0 + P: "RotationStiffnessZ", "double", "Number", "",0 + P: "AxisLen", "double", "Number", "",10 + P: "PreRotation", "Vector3D", "Vector", "",0,0,0 + P: "PostRotation", "Vector3D", "Vector", "",0,0,0 + P: "RotationActive", "bool", "", "",0 + P: "RotationMin", "Vector3D", "Vector", "",0,0,0 + P: "RotationMax", "Vector3D", "Vector", "",0,0,0 + P: "RotationMinX", "bool", "", "",0 + P: "RotationMinY", "bool", "", "",0 + P: "RotationMinZ", "bool", "", "",0 + P: "RotationMaxX", "bool", "", "",0 + P: "RotationMaxY", "bool", "", "",0 + P: "RotationMaxZ", "bool", "", "",0 + P: "InheritType", "enum", "", "",0 + P: "ScalingActive", "bool", "", "",0 + P: "ScalingMin", "Vector3D", "Vector", "",0,0,0 + P: "ScalingMax", "Vector3D", "Vector", "",1,1,1 + P: "ScalingMinX", "bool", "", "",0 + P: "ScalingMinY", "bool", "", "",0 + P: "ScalingMinZ", "bool", "", "",0 + P: "ScalingMaxX", "bool", "", "",0 + P: "ScalingMaxY", "bool", "", "",0 + P: "ScalingMaxZ", "bool", "", "",0 + P: "GeometricTranslation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricRotation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricScaling", "Vector3D", "Vector", "",1,1,1 + P: "MinDampRangeX", "double", "Number", "",0 + P: "MinDampRangeY", "double", "Number", "",0 + P: "MinDampRangeZ", "double", "Number", "",0 + P: "MaxDampRangeX", "double", "Number", "",0 + P: "MaxDampRangeY", "double", "Number", "",0 + P: "MaxDampRangeZ", "double", "Number", "",0 + P: "MinDampStrengthX", "double", "Number", "",0 + P: "MinDampStrengthY", "double", "Number", "",0 + P: "MinDampStrengthZ", "double", "Number", "",0 + P: "MaxDampStrengthX", "double", "Number", "",0 + P: "MaxDampStrengthY", "double", "Number", "",0 + P: "MaxDampStrengthZ", "double", "Number", "",0 + P: "PreferedAngleX", "double", "Number", "",0 + P: "PreferedAngleY", "double", "Number", "",0 + P: "PreferedAngleZ", "double", "Number", "",0 + P: "LookAtProperty", "object", "", "" + P: "UpVectorProperty", "object", "", "" + P: "Show", "bool", "", "",1 + P: "NegativePercentShapeSupport", "bool", "", "",1 + P: "DefaultAttributeIndex", "int", "Integer", "",-1 + P: "Freeze", "bool", "", "",0 + P: "LODBox", "bool", "", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",0,0,0 + P: "Lcl Rotation", "Lcl Rotation", "", "A",0,0,0 + P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1 + P: "Visibility", "Visibility", "", "A",1 + P: "Visibility Inheritance", "Visibility Inheritance", "", "",1 + } + } + } +} + +; Object properties +;------------------------------------------------------------------ + +Objects: { + Geometry: 2358377979296, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,1,2,3,5,6,7,9,10,11,13,15 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 2358377961872, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,1,2,3,5,6,7,9,10,11,13,15 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 2358377982464, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,1,2,3,5,6,7,9,10,11,13,15 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 2358377979824, "Geometry::", "Mesh" { + Vertices: *588 { + a: -0.499999970197678,-0.5,0.5,0.500000059604645,-0.5,0.5,-0.499999970197678,0.5,0.5,0.500000059604645,0.5,0.5,-0.499999970197678,0.5,-0.49999988079071,0.500000059604645,0.5,-0.49999988079071,-0.499999970197678,-0.5,-0.49999988079071,0.500000059604645,-0.5,-0.49999988079071,0,0,0.5,0,-0.5,0.5,0.500000059604645,0,0.5,0,0.5,0.5,-0.499999970197678,0,0.5,0,0.5,1.19209289550781e-07,0.500000059604645,0.5,1.19209289550781e-07,0,0.5,-0.49999988079071,-0.499999970197678,0.5,1.19209289550781e-07,0,0,-0.49999988079071,0.500000059604645,0,-0.49999988079071,0,-0.5,-0.49999988079071,-0.499999970197678,0,-0.49999988079071,0,-0.5,1.19209289550781e-07,0.500000059604645,-0.5,1.19209289550781e-07,-0.499999970197678,-0.5,1.19209289550781e-07,0.500000059604645,0,1.19209289550781e-07,-0.499999970197678,0,1.19209289550781e-07,-0.25,-0.25,0.5,-0.499999970197678,-0.25,0.5,-0.25,-0.5,0.5,0,-0.25,0.5,-0.25,0,0.5,-0.25,0.5,0.25,-0.499999970197678,0.5,0.25,-0.25,0.5,0.5,0,0.5,0.25,-0.25,0.5,1.19209289550781e-07,-0.25,0.25,-0.49999988079071,-0.499999970197678,0.25,-0.49999988079071,-0.25,0.5,-0.49999988079071,0,0.25,-0.49999988079071,-0.25,0,-0.49999988079071,-0.25,-0.5,-0.24999988079071,-0.499999970197678,-0.5,-0.24999988079071,-0.25,-0.5,-0.49999988079071,0,-0.5,-0.24999988079071,-0.25,-0.5,1.19209289550781e-07,0.500000059604645,-0.25,0.25,0.500000059604645,-0.25,0.5,0.500000059604645,-0.5,0.25,0.500000059604645,-0.25,1.19209289550781e-07,0.500000059604645,0,0.25,-0.499999970197678,-0.25,-0.24999988079071,-0.499999970197678,-0.25,-0.49999988079071,-0.499999970197678,-0.25,1.19209289550781e-07,-0.499999970197678,0,-0.24999988079071,0.250000059604645,-0.25,0.5,0.250000059604645,-0.5,0.5,0.250000059604645,0,0.5,0.250000059604645,0.25,0.5,0.500000059604645,0.25,0.5,0.250000059604645,0.5,0.5,0,0.25,0.5,-0.25,0.25,0.5,-0.499999970197678,0.25,0.5,0.250000059604645,0.5,0.25,0.500000059604645,0.5,0.25,0.250000059604645,0.5,1.19209289550781e-07,0.250000059604645,0.5,-0.24999988079071,0.500000059604645,0.5,-0.24999988079071,0.250000059604645,0.5,-0.49999988079071, +0,0.5,-0.24999988079071,-0.25,0.5,-0.24999988079071,-0.499999970197678,0.5,-0.24999988079071,0.250000059604645,0.25,-0.49999988079071,0.500000059604645,0.25,-0.49999988079071,0.250000059604645,0,-0.49999988079071,0.250000059604645,-0.25,-0.49999988079071,0.500000059604645,-0.25,-0.49999988079071,0.250000059604645,-0.5,-0.49999988079071,0,-0.25,-0.49999988079071,-0.25,-0.25,-0.49999988079071,0.250000059604645,-0.5,-0.24999988079071,0.500000059604645,-0.5,-0.24999988079071,0.250000059604645,-0.5,1.19209289550781e-07,0.250000059604645,-0.5,0.25,0,-0.5,0.25,-0.25,-0.5,0.25,-0.499999970197678,-0.5,0.25,0.500000059604645,-0.25,-0.24999988079071,0.500000059604645,0,-0.24999988079071,0.500000059604645,0.25,-0.24999988079071,0.500000059604645,0.25,1.19209289550781e-07,0.500000059604645,0.25,0.25,-0.499999970197678,-0.25,0.25,-0.499999970197678,0,0.25,-0.499999970197678,0.25,0.25,-0.499999970197678,0.25,1.19209289550781e-07,-0.499999970197678,0.25,-0.24999988079071,-0.594913899898529,0,0.594913899898529,-0.152911216020584,0,0.714658200740814,-0.594913899898529,-0.152911216020584,0.594913899898529,-0.152911216020584,-0.152911216020584,0.714658200740814,-0.594913899898529,0.594913899898529,7.29137497046395e-08,-0.152911216020584,0.714658200740814,7.29137497046395e-08,-0.594913899898529,0.594913899898529,0.152911216020584,-0.152911216020584,0.714658200740814,0.152911216020584,-0.594913899898529,0,-0.594913899898529,-0.152911216020584,0,-0.714658200740814,-0.594913899898529,0.152911216020584,-0.594913899898529,-0.152911216020584,0.152911216020584,-0.714658200740814,-0.594913899898529,-0.594913899898529,7.29137497046395e-08,-0.152911216020584,-0.714658200740814,7.29137497046395e-08,-0.594913899898529,-0.594913899898529,-0.152911216020584,-0.152911216020584,-0.714658200740814,-0.152911216020584,0.594913899898529,0,0.594913899898529,0.714658200740814,0,0.152911216020584,0.594913899898529,-0.152911216020584,0.594913899898529,0.714658200740814,-0.152911216020584,0.152911216020584,-0.714658200740814,0,-0.152911216020584,-0.594913899898529,-0.152911216020584,-0.594913899898529, +-0.714658200740814,-0.152911216020584,-0.152911216020584,8.62321627254444e-17,-0.594913899898529,0.594913899898529,8.62321627254444e-17,-0.152911216020584,0.714658200740814,0.152911230921745,-0.594913899898529,0.594913899898529,0.152911230921745,-0.152911216020584,0.714658200740814,0.152911230921745,0,0.714658200740814,0.594913899898529,0.152911216020584,0.594913899898529,0.152911230921745,0.152911216020584,0.714658200740814,8.62321627254444e-17,0.594913899898529,0.594913899898529,8.62321627254444e-17,0.152911216020584,0.714658200740814,-0.152911216020584,0.594913899898529,0.594913899898529,-0.152911216020584,0.152911216020584,0.714658200740814,8.62321627254444e-17,0.714658200740814,0.152911216020584,0.152911230921745,0.594913899898529,0.594913899898529,0.152911230921745,0.714658200740814,0.152911216020584,0.594913899898529,0.594913899898529,7.29137497046395e-08,0.152911230921745,0.714658200740814,7.29137497046395e-08,0.594913899898529,0.594913899898529,-0.152911216020584,0.152911230921745,0.714658200740814,-0.152911216020584,8.62321627254444e-17,0.594913899898529,-0.594913899898529,8.62321627254444e-17,0.714658200740814,-0.152911216020584,-0.152911216020584,0.594913899898529,-0.594913899898529,-0.152911216020584,0.714658200740814,-0.152911216020584,8.62321627254444e-17,0.152911216020584,-0.714658200740814,0.152911230921745,0.594913899898529,-0.594913899898529,0.152911230921745,0.152911216020584,-0.714658200740814,0.594913899898529,0,-0.594913899898529,0.152911230921745,0,-0.714658200740814,0.594913899898529,-0.152911216020584,-0.594913899898529,0.152911230921745,-0.152911216020584,-0.714658200740814,8.62321627254444e-17,-0.594913899898529,-0.594913899898529,8.62321627254444e-17,-0.152911216020584,-0.714658200740814,-0.152911216020584,-0.594913899898529,-0.594913899898529,-0.152911216020584,-0.152911216020584,-0.714658200740814,8.62321627254444e-17,-0.714658200740814,-0.152911216020584,0.152911230921745,-0.594913899898529,-0.594913899898529,0.152911230921745,-0.714658200740814,-0.152911216020584,0.594913899898529,-0.594913899898529,7.29137497046395e-08, +0.152911230921745,-0.714658200740814,7.29137497046395e-08,0.594913899898529,-0.594913899898529,0.152911216020584,0.152911230921745,-0.714658200740814,0.152911216020584,8.62321627254444e-17,-0.714658200740814,0.152911216020584,-0.152911216020584,-0.594913899898529,0.594913899898529,-0.152911216020584,-0.714658200740814,0.152911216020584,0.714658200740814,-0.152911216020584,7.29137497046395e-08,0.594913899898529,-0.594913899898529,-0.152911216020584,0.714658200740814,-0.152911216020584,-0.152911216020584,0.714658200740814,0,-0.152911216020584,0.594913899898529,0.152911216020584,-0.594913899898529,0.714658200740814,0.152911216020584,-0.152911216020584,0.714658200740814,0.152911216020584,7.29137497046395e-08,0.594913899898529,0.594913899898529,0.152911216020584,0.714658200740814,0.152911216020584,0.152911216020584,-0.714658200740814,-0.152911216020584,7.29137497046395e-08,-0.594913899898529,-0.594913899898529,0.152911216020584,-0.714658200740814,-0.152911216020584,0.152911216020584,-0.714658200740814,0,0.152911216020584,-0.594913899898529,0.152911216020584,0.594913899898529,-0.714658200740814,0.152911216020584,0.152911216020584,-0.714658200740814,0.152911216020584,7.29137497046395e-08,-0.594913899898529,0.594913899898529,-0.152911216020584,-0.714658200740814,0.152911216020584,-0.152911216020584,-0.541863918304443,-0.541864037513733,0.541863918304443,8.62321627254444e-17,0,0.714658200740814,-0.541863918304443,0.541863918304443,0.541863918304443,8.62321627254444e-17,0.714658200740814,7.29137497046395e-08,-0.541863918304443,0.541863918304443,-0.541863799095154,8.62321627254444e-17,0,-0.714658200740814,-0.541863918304443,-0.541864037513733,-0.541863799095154,8.62321627254444e-17,-0.714658200740814,7.29137497046395e-08,0.541863977909088,-0.541864037513733,0.541863918304443,0.714658200740814,0,7.29137497046395e-08,-0.714658200740814,0,7.29137497046395e-08,0.541863977909088,0.541863918304443,0.541863918304443,0.541863977909088,0.541863918304443,-0.541863799095154,0.541863977909088,-0.541864037513733,-0.541863799095154 + } + PolygonVertexIndex: *768 { + a: 99,98,100,-102,103,102,104,-106,107,106,108,-110,111,110,112,-114,115,114,116,-118,118,106,119,-121,122,121,123,-125,125,114,126,-128,129,128,130,-132,132,128,133,-135,136,135,137,-139,140,139,141,-143,143,139,144,-146,147,146,148,-150,151,150,152,-154,154,150,155,-157,158,157,159,-161,161,121,162,-164,164,157,165,-167,167,146,168,-170,170,135,171,-173,173,110,174,-176,176,98,177,-179,179,102,180,-182,100,182,162,-102,162,121,122,-102,122,183,99,-102,104,184,130,-106,130,128,132,-106,132,185,103,-106,108,186,141,-110,141,139,143,-110,143,187,107,-110,112,188,152,-114,152,150,154,-114,154,189,111,-114,116,190,159,-118,159,157,164,-118,164,191,115,-118,119,188,112,-121,112,110,173,-121,173,192,118,-121,123,190,116,-125,116,114,125,-125,125,183,122,-125,126,193,133,-128,133,128,129,-128,129,183,125,-128,130,184,177,-132,177,98,99,-132,99,183,129,-132,133,193,171,-135,171,135,136,-135,136,185,132,-135,137,194,144,-139,144,139,140,-139,140,185,136,-139,141,186,180,-143,180,102,103,-143,103,185,140,-143,144,194,168,-146,168,146,147,-146,147,187,143,-146,148,195,155,-150,155,150,151,-150,151,187,147,-150,152,188,119,-154,119,106,107,-154,107,187,151,-154,155,195,165,-157,165,157,158,-157,158,189,154,-157,159,190,123,-161,123,121,161,-161,161,189,158,-161,162,182,174,-164,174,110,111,-164,111,189,161,-164,165,195,148,-167,148,146,167,-167,167,191,164,-167,168,194,137,-170,137,135,170,-170,170,191,167,-170,171,193,126,-173,126,114,115,-173,115,191,170,-173,174,182,100,-176,100,98,176,-176,176,192,173,-176,177,184,104,-179,104,102,179,-179,179,192,176,-179,180,186,108,-182,108,106,118,-182,118,192,179,-182,30,26,27,-13,35,31,32,-17,40,36,37,-21,45,41,42,-24,50,46,47,-11,54,51,52,-21,29,55,56,-10,57,58,59,-11,61,62,33,-12,34,64,60,-12,66,67,68,-15,70,71,38,-16,39,73,69,-16,75,76,77,-19,79,80,43,-20,44,81,78,-20,83,84,48,-23,85,86,28,-10,49,88,82,-23,89,90,74,-19,91,92,65,-15,53,93,87,-24,94,95,63,-13,96,97,72,-17,27,26,28,-1,28,26,29,-10,29,26,30,-9,32,31,33,-3,33,31,34,-12,34,31,35,-14,37,36,38,-5,38,36,39, +-16,39,36,40,-18,42,41,43,-7,43,41,44,-20,44,41,45,-22,47,46,48,-2,48,46,49,-23,49,46,50,-25,52,51,42,-7,42,51,53,-24,53,51,54,-26,56,55,47,-2,47,55,57,-11,57,55,29,-9,59,58,60,-4,60,58,61,-12,61,58,57,-9,33,62,63,-3,63,62,30,-13,30,62,61,-9,60,64,65,-4,65,64,66,-15,66,64,34,-14,68,67,69,-6,69,67,70,-16,70,67,66,-14,38,71,72,-5,72,71,35,-17,35,71,70,-14,69,73,74,-6,74,73,75,-19,75,73,39,-18,77,76,78,-8,78,76,79,-20,79,76,75,-18,43,80,52,-7,52,80,40,-21,40,80,79,-18,78,81,82,-8,82,81,83,-23,83,81,44,-22,48,84,56,-2,56,84,85,-10,85,84,83,-22,28,86,87,-1,87,86,45,-24,45,86,85,-22,82,88,77,-8,77,88,89,-19,89,88,49,-25,74,90,68,-6,68,90,91,-15,91,90,89,-25,65,92,59,-4,59,92,50,-11,50,92,91,-25,87,93,27,-1,27,93,94,-13,94,93,53,-26,63,95,32,-3,32,95,96,-17,96,95,94,-26,72,97,37,-5,37,97,54,-21,54,97,96,-26 + } + Edges: *384 { + a: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,102,104,105,108,109,110,114,116,117,120,121,122,126,128,129,132,133,134,138,140,141,144,145,146,150,152,153,156,158,162,164,165,168,170,174,176,180,181,182,186,188,193,194,198,205,206,210,212,216,217,218,222,224,229,230,234,241,242,246,248,252,253,254,258,260,266,270,277,278,282,284,290,294,296,301,302,306,314,318,320,326,330,332,338,342,350,354,356,362,366,368,374,378,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,481,482,483,485,490,491,493,494,495,497,502,503,505,506,507,509,514,515,517,518,519,521,526,527,529,530,531,533,538,539,541,543,545,550,551,553,555,557,563,565,566,567,569,575,577,578,581,589,590,593,599,601,602,603,605,611,613,614,617,625,626,629,635,637,638,639,641,647,649,653,661,662,665,671,673,677,683,685,686,689,697,701,707,709,713,719,721,725,733,737,743,745,749,755,757,761 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *2304 { + a: -0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.26148721575737,0.965207040309906,0,-0.26148721575737,0.965207040309906,0,-0.26148721575737,0.965207040309906,0,-0.26148721575737,0.965207040309906,0,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.965207040309906,0.261487185955048,0,0.965207040309906,0.261487185955048,0,0.965207040309906,0.261487185955048,0,0.965207040309906,0.261487185955048,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0.261487126350403,0,-0.965206980705261, +0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.965207040309906,-0.261487185955048,0,-0.965207040309906,-0.261487185955048,0,-0.965207040309906,-0.261487185955048,0,-0.965207040309906,-0.261487185955048,0.26148721575737,-0.965207040309906,0,0.26148721575737,-0.965207040309906,0,0.26148721575737,-0.965207040309906,0,0.26148721575737,-0.965207040309906,0,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0.965206980705261,-0.261487066745758,0,0.965206980705261,-0.261487066745758,0,0.965206980705261,-0.261487066745758,0,0.965206980705261,-0.261487066745758,0,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0.261487066745758,0,-0.965206980705261,0.261487066745758,0,-0.965206980705261,0.261487066745758,0,-0.965206980705261,0.261487066745758,0,-0.211917281150818,-0.211917445063591,0.954034626483917,0,0,1,-0.211917281150818,-0.21191743016243,0.954034626483917,-0.211917266249657,-0.211917445063591,0.954034626483917,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,-0.211917445063591,0.954034626483917,0.211917281150818, +0,1,0,-0.211917445063591,0.954034626483917,0.211917281150818,-0.211917445063591,0.954034626483917,0.211917266249657,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,1,0,0,1,0,0,1,0,0,1,0,-0.211917623877525,0.211917608976364,-0.954034626483917,0,0,-1,-0.211917623877525,0.211917608976364,-0.954034626483917,-0.211917623877525,0.211917594075203,-0.954034626483917,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.211917355656624,-0.954034745693207,-0.211917355656624,0,-1,0,-0.211917325854301,-0.954034686088562,-0.211917325854301,-0.211917355656624,-0.954034686088562,-0.211917355656624,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0.954034745693207,-0.211917281150818,0.211917340755463,1,0,0,0.954034745693207,-0.211917281150818,0.211917370557785,0.954034626483917,-0.211917236447334,0.211917296051979,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,1,0,0,1,0,0,1,0,0,1,0,0,-0.954034686088562,-0.211917355656624,-0.211917459964752,-1,0,0,-0.954034626483917,-0.211917325854301,-0.211917445063591,-0.954034686088562,-0.211917355656624,-0.211917474865913,-0.965206980705261,-0.261487066745758,0,-0.965206980705261,-0.261487066745758,0,-0.965206980705261,-0.261487066745758,0,-0.965206980705261,-0.261487066745758,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0.211917281150818,-0.211917400360107,0.954034626483917,0,0,1,0.211917266249657,-0.211917415261269,0.954034626483917,0.211917266249657,-0.211917415261269,0.954034626483917,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261,0.261487126350403,0,0.965206980705261, +0,0,1,0,0,1,0,0,1,0,0,1,0.211917296051979,0.211917415261269,0.954034626483917,0,0,1,0.211917296051979,0.211917415261269,0.954034626483917,0.211917281150818,0.211917415261269,0.954034626483917,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0.261487185955048,0.965207040309906,0,0,1,0,0,1,0,0,1,0,0,1,-0.211917281150818,0.211917445063591,0.954034626483917,0,0,1,-0.211917281150818,0.211917445063591,0.954034626483917,-0.211917266249657,0.211917445063591,0.954034626483917,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,-0.261487126350403,0,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0.211917445063591,0.954034626483917,0.211917445063591,0,1,0,0.211917445063591,0.954034686088562,0.211917445063591,0.211917445063591,0.954034626483917,0.211917445063591,0.26148721575737,0.965207040309906,0,0.26148721575737,0.965207040309906,0,0.26148721575737,0.965207040309906,0,0.26148721575737,0.965207040309906,0,0,1,0,0,1,0,0,1,0,0,1,0,0.211917445063591,0.954034626483917,-0.211917489767075,0,1,0,0.211917459964752,0.954034686088562,-0.211917519569397,0.211917474865913,0.954034686088562,-0.211917504668236,0,0.965207040309906,-0.261487185955048,0,0.965207040309906,-0.261487185955048,0,0.965207040309906,-0.261487185955048,0,0.965207040309906,-0.261487185955048,0,1,0,0,1,0,0,1,0,0,1,0,-0.211917459964752,0.954034686088562,-0.211917340755463,0,1,0,-0.211917445063591,0.954034626483917,-0.21191731095314,-0.211917489767075,0.954034686088562,-0.211917355656624,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,-0.261487185955048,0.965207040309906,0,0,1,0,0,1,0,0,1,0,0,1,0,0.211917638778687,0.211917608976364,-0.954034626483917,0,0,-1,0.211917608976364,0.211917564272881,-0.954034566879272,0.211917623877525,0.211917608976364,-0.954034626483917,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261, +0.261487126350403,0,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0.211917608976364,-0.211917564272881,-0.954034626483917,0,0,-1,0.211917623877525,-0.211917579174042,-0.954034626483917,0.211917623877525,-0.211917549371719,-0.954034626483917,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,-0.261487185955048,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.211917623877525,-0.211917579174042,-0.954034626483917,0,0,-1,-0.211917579174042,-0.211917534470558,-0.954034566879272,-0.211917623877525,-0.211917549371719,-0.954034626483917,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,-0.261487126350403,0,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0.211917340755463,-0.954034686088562,-0.211917519569397,0,-1,0,0.211917325854301,-0.954034626483917,-0.211917489767075,0.211917325854301,-0.954034686088562,-0.211917489767075,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0.261487185955048,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0.211917281150818,-0.954034626483917,0.211917445063591,0,-1,0,0.211917296051979,-0.954034626483917,0.211917445063591,0.211917266249657,-0.954034626483917,0.211917445063591,0,-0.965207040309906,0.261487185955048,0,-0.965207040309906,0.261487185955048,0,-0.965207040309906,0.261487185955048,0,-0.965207040309906,0.261487185955048,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.211917325854301,-0.954034745693207,0.211917325854301,0,-1,0,-0.211917325854301,-0.954034745693207,0.211917325854301,-0.211917281150818,-0.954034686088562,0.211917281150818,-0.26148721575737,-0.965207040309906,0,-0.26148721575737,-0.965207040309906,0,-0.26148721575737,-0.965207040309906,0,-0.26148721575737,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0.954034626483917,-0.211917325854301,-0.211917400360107,1,0,0,0.954034686088562,-0.211917340755463,-0.211917400360107,0.954034686088562,-0.211917355656624,-0.21191743016243,0.965206980705261,0,-0.261487185955048, +0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,0.965206980705261,0,-0.261487185955048,1,0,0,1,0,0,1,0,0,1,0,0,0.954034686088562,0.211917370557785,-0.211917489767075,1,0,0,0.954034686088562,0.211917355656624,-0.211917445063591,0.954034626483917,0.211917355656624,-0.211917445063591,0.965206980705261,0.261487066745758,0,0.965206980705261,0.261487066745758,0,0.965206980705261,0.261487066745758,0,0.965206980705261,0.261487066745758,0,1,0,0,1,0,0,1,0,0,1,0,0,0.954034626483917,0.211917296051979,0.211917385458946,1,0,0,0.954034626483917,0.211917296051979,0.211917385458946,0.954034745693207,0.211917296051979,0.211917385458946,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,0.965206980705261,0,0.261487185955048,1,0,0,1,0,0,1,0,0,1,0,0,-0.954034626483917,-0.211917251348495,0.211917400360107,-1,0,0,-0.954034626483917,-0.211917266249657,0.211917400360107,-0.954034626483917,-0.211917251348495,0.211917400360107,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-0.965206980705261,0,0.261487185955048,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0.954034626483917,0.211917281150818,0.211917445063591,-1,0,0,-0.954034626483917,0.211917281150818,0.211917445063591,-0.954034626483917,0.211917266249657,0.211917445063591,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-0.965206980705261,0.261487126350403,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0.954034686088562,0.211917385458946,-0.211917549371719,-1,0,0,-0.954034686088562,0.211917370557785,-0.211917534470558,-0.954034626483917,0.211917355656624,-0.211917504668236,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-0.965206980705261,0,-0.261487185955048,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0, +1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0, +-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0 + } + NormalsW: *768 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *2304 { + a: 0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0.965206921100616,0.261487156152725,0,0.965206921100616,0.261487156152725,0,0.965206921100616,0.261487156152725,0,0.965206921100616,0.261487156152725,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,0.965206980705261,-0.261487185955048,0,0.965206980705261,-0.261487185955048,0,0.965206980705261,-0.261487185955048,0,0.965206980705261,-0.261487185955048,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0.261487156152725,-0.965206921100616,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.261487126350403,-0.965206980705261,0,-0.261487126350403,-0.965206980705261,0,-0.261487126350403,-0.965206980705261,0,-0.261487126350403,-0.965206980705261,0,-0.965206921100616,-0.261487156152725,0,-0.965206921100616,-0.261487156152725,0,-0.965206921100616,-0.261487156152725,0,-0.965206921100616,-0.261487156152725,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0.965206980705261,0.261487185955048,0,-0.965206980705261,0.261487185955048,0,-0.965206980705261,0.261487185955048,0,-0.965206980705261,0.261487185955048,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,-0.261487156152725,0.965206921100616,0,0,1,0,0,1,0,0,1,0,0,1,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,0,1,0,0,1,0,0,1,0, +0,1,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,0.261487066745758,0.965206980705261,0,-0.0554696954786777,0.977241098880768,0.204750895500183,0.0677256807684898,0.997704029083252,-0,0.0995207726955414,0.966452240943909,0.236782029271126,0.022095151245594,0.974918127059937,0.221464186906815,0,0.965206980705261,0.261487185955048,0,0.965206980705261,0.261487185955048,0,0.965206980705261,0.261487185955048,0,0.965206980705261,0.261487185955048,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0554696545004845,0.204750746488571,-0.977241158485413,0.0677258297801018,0,-0.997703969478607,0.0995210781693459,0.23678195476532,-0.966452240943909,0.0220953319221735,0.221464082598686,-0.974918246269226,0,0.261487126350403,-0.965206980705261,0,0.261487126350403,-0.965206980705261,0,0.261487126350403,-0.965206980705261,0,0.261487126350403,-0.965206980705261,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0554697290062904,-0.977241039276123,-0.204751029610634,0.0677258297801018,-0.997703969478607,0,0.0995209515094757,-0.966452121734619,-0.236782252788544,0.0220952276140451,-0.974918127059937,-0.221464350819588,0,-0.965206980705261,-0.261487185955048,0,-0.965206980705261,-0.261487185955048,0,-0.965206980705261,-0.261487185955048,0,-0.965206980705261,-0.261487185955048,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0,-0.0554696619510651,-0.204750776290894,0.977241098880768,0.0677259787917137,0,0.997703969478607,0.0995214134454727,-0.236782014369965,0.966452121734619,0.0220954976975918,-0.221464157104492,0.974918186664581,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0.20475073158741,0.977241218090057,0.0554696507751942,0,0.997704029083252,-0.0677256807684898,0.236781880259514,0.966452300548553,-0.0995208472013474,0.221463993191719,0.974918186664581,-0.0220952145755291,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0, +-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0.204750791192055,0.977241098880768,-0.0554696619510651,0,0.997704029083252,0.0677257031202316,-0.236781939864159,0.966452240943909,0.099520817399025,-0.221464112401009,0.974918246269226,0.022095188498497,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0,-0.099520780146122,0.966452240943909,0.236781999468803,-0.0677256733179092,0.997704029083252,0,0.0554696880280972,0.977241098880768,0.204750865697861,-0.022095151245594,0.974918127059937,0.221464157104492,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0554696880280972,0.977241098880768,-0.204750865697861,0.0677258223295212,0.997703969478607,-0,0.0995210558176041,0.966452181339264,-0.236782059073448,0.0220952890813351,0.974918246269226,-0.221464201807976,0,0.965206921100616,-0.261487156152725,0,0.965206921100616,-0.261487156152725,0,0.965206921100616,-0.261487156152725,0,0.965206921100616,-0.261487156152725,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0995210707187653,0.966452240943909,-0.236782118678093,-0.0677258297801018,0.997703969478607,0,0.0554696954786777,0.977241098880768,-0.204750895500183,-0.0220952928066254,0.974918186664581,-0.221464231610298,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0.0995210558176041,0.236782118678093,-0.966452240943909,-0.0677258223295212,0,-0.997703969478607,0.0554696880280972,0.204750880599022,-0.977241098880768,-0.0220952853560448,0.221464216709137,-0.974918127059937,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0554697066545486,-0.204750955104828,-0.977241158485413,0.0677259713411331,0,-0.997703969478607,0.0995213389396667,-0.236782237887383,-0.966452181339264,0.0220954176038504,-0.221464291214943,-0.974918127059937,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,-0.261487156152725,-0.965206921100616,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0995213687419891,-0.236782059073448,-0.966452181339264, +-0.0677259787917137,0,-0.997703969478607,0.0554696545004845,-0.204750776290894,-0.977241158485413,-0.0220954604446888,-0.221464172005653,-0.974918246269226,0,0,-1,0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.0995209366083145,-0.966452121734619,-0.236782252788544,-0.0677258223295212,-0.997703969478607,-0,0.0554697290062904,-0.977241098880768,-0.204751014709473,-0.0220952201634645,-0.974918127059937,-0.221464365720749,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0,-0.0554697252810001,-0.977241158485413,0.204751014709473,0.0677256733179092,-0.997704029083252,0,0.099520668387413,-0.966452181339264,0.236782178282738,0.0220950860530138,-0.974918127059937,0.221464276313782,0,-0.965206921100616,0.261487156152725,0,-0.965206921100616,0.261487156152725,0,-0.965206921100616,0.261487156152725,0,-0.965206921100616,0.261487156152725,0,-1,0,0,-1,0,0,-1,-0,0,-1,0,-0.0995206832885742,-0.966452181339264,0.236782178282738,-0.0677256807684898,-0.997704029083252,-0,0.0554697178304195,-0.977241098880768,0.20475098490715,-0.0220950935035944,-0.974918127059937,0.221464276313782,0,-1,-0,0,-1,-0,-0,-1,0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.0995213836431503,-0.23678220808506,0.966452121734619,-0.0677259713411331,0,0.997703969478607,0.0554697066545486,-0.204750940203667,0.977241098880768,-0.0220954623073339,-0.221464291214943,0.974918186664581,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0.0554696954786777,0.204750895500183,0.977241098880768,0.0677258223295212,0,0.997703969478607,0.0995211154222488,0.236782103776932,0.966452181339264,0.0220953226089478,0.221464246511459,0.974918186664581,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0.261487156152725,0.965206921100616,0,0,1,0,0,1,0,0,1,0,0,1,-0.0995211452245712,0.23678195476532,0.966452181339264,-0.0677258297801018,0,0.997703969478607,0.0554696656763554,0.204750776290894,0.977241218090057,-0.022095363587141,0.221464082598686,0.974918246269226,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0.236781939864159,0.966452240943909,0.0995208621025085, +-0,0.997704029083252,0.0677257031202316,0.204750806093216,0.977241158485413,-0.0554696656763554,0.221464112401009,0.974918186664581,0.0220951996743679,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0.204750806093216,0.977241098880768,0.0554696694016457,0,0.997703969478607,-0.0677258521318436,-0.236782044172287,0.966452240943909,-0.0995211452245712,-0.221464172005653,0.974918246269226,-0.0220953542739153,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,-0.261487066745758,0.965206980705261,0,0,1,-0,-0,1,0,-0,1,0,-0,1,0,-0.236781984567642,0.966452300548553,0.09952113032341,-0,0.997703969478607,0.0677258297801018,-0.204750761389732,0.977241158485413,-0.0554696582257748,-0.221464067697525,0.974918246269226,0.0220953486859798,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,-0,-0,1,0,-0.236781880259514,0.966452360153198,-0.0995208248496056,0,0.997704029083252,-0.0677256807684898,-0.20475073158741,0.977241158485413,0.0554696470499039,-0.221464022994041,0.974918246269226,-0.0220951903611422,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0.204750746488571,0.977241158485413,-0.0554696545004845,0,0.997703969478607,0.0677258297801018,0.23678195476532,0.966452240943909,0.0995210781693459,0.221464082598686,0.974918246269226,0.0220953319221735,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0,1,0,0,1,0,0,1,0,0,1,0,0.236782073974609,0.966452240943909,-0.0995211005210876,0,0.997703969478607,-0.0677258521318436,0.204750806093216,0.977241098880768,0.0554696656763554,0.221464142203331,0.974918186664581,-0.0220953188836575,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,-0,-1,0,-0,-1, +0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-1,-0,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1, +-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0 + } + BinormalsW: *768 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *2304 { + a: 0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965207040309906,0.26148721575737,0,0.965207040309906,0.26148721575737,0,0.965207040309906,0.26148721575737,0,0.965207040309906,0.26148721575737,0,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,-0.261487156152725,-0,0.965206980705261,-0.261487156152725,-0,0.965206980705261,-0.261487156152725,-0,0.965206980705261,-0.261487156152725,-0,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,0.965206980705261,-0.261487156152725,0,0.965206980705261,-0.261487156152725,0,0.965206980705261,-0.261487156152725,0,0.965206980705261,-0.261487156152725,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,-0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0.26148721575737,-0,0.965207040309906, +0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0.97571212053299,0.00952975451946259,0.218849271535873,0.997704029083252,-0.0677256807684898,0,0.972207129001617,-0.145124465227127,0.183717742562294,0.977037787437439,-0.0680116266012192,0.201919630169868,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.97571212053299,0.218849420547485,-0.0095297135412693,0.997703969478607,0,0.0677258297801018,0.972207069396973,0.183717846870422,0.145124778151512,0.977037727832794,0.20191977918148,0.0680118054151535,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.975712060928345,-0.00952969118952751,-0.218849584460258,0.997703969478607,0.0677258297801018,0,0.972207009792328,0.145124763250351,-0.183717995882034,0.977037727832794,0.0680118054151535,-0.201919928193092,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0.97571212053299,-0.218849301338196,0.00952974148094654,0.997703969478607,0,-0.0677259787917137,0.972207069396973,-0.183717638254166,-0.145125105977058,0.977037727832794,-0.201919630169868,-0.068011961877346,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.218849286437035,0.00952974148094654,-0.97571212053299,0,-0.0677256807684898,-0.997704029083252,0.183717831969261,-0.145124509930611,-0.972207069396973,0.201919674873352,-0.0680116564035416,-0.977037787437439,-0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.218849420547485,0.0095297172665596,0.97571212053299,0,-0.0677257031202316,0.997704029083252,-0.183717906475067,-0.145124524831772,0.972207069396973,-0.201919823884964,-0.068011686205864,0.977037727832794,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0.972207129001617,0.145124465227127,-0.183717742562294,0.997704029083252,0.0677256733179092,0,0.97571212053299,-0.00952975824475288,-0.218849256634712,0.977037787437439,0.0680116191506386,-0.201919630169868,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403, +1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.97571212053299,0.00952975172549486,-0.218849286437035,0.997703969478607,-0.0677258223295212,0,0.972207069396973,-0.14512474834919,-0.183717682957649,0.977037847042084,-0.0680117681622505,-0.20191964507103,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,0.972207069396973,0.14512474834919,0.183717668056488,0.997703969478607,0.0677258297801018,0,0.97571212053299,-0.00952975451946259,0.218849271535873,0.977037847042084,0.0680117756128311,0.201919630169868,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,0.965206980705261,-0,0.261487126350403,1,-0,-0,1,-0,0,1,-0,0,1,-0,0,0.972207069396973,-0.183717831969261,-0.145124778151512,0.997703969478607,0,-0.0677258223295212,0.97571212053299,-0.218849405646324,0.00952972564846277,0.977037727832794,-0.20191977918148,-0.0680117979645729,0.965207040309906,-0.26148721575737,-0,0.965207040309906,-0.26148721575737,-0,0.965207040309906,-0.26148721575737,-0,0.965207040309906,-0.26148721575737,-0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0.97571212053299,-0.218849420547485,-0.0095297247171402,0.997703969478607,0,0.0677259713411331,0.972207009792328,-0.183717757463455,0.145125061273575,0.977037727832794,-0.201919749379158,0.0680119395256042,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,-0,-0,1,0,0,0.972207009792328,0.183717772364616,-0.145125061273575,0.997703969478607,0,-0.0677259787917137,0.97571212053299,0.218849420547485,0.00952971447259188,0.977037727832794,0.20191977918148,-0.0680119544267654,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,-0,0.965206980705261,0.261487156152725,0,1,-0,0,1,0,0,1,0,0,1,0,0,0.972207009792328,-0.14512474834919,0.183718010783195,0.997703969478607,-0.0677258223295212,0,0.975712060928345,0.00952969118952751,0.218849584460258,0.977037727832794,-0.0680117979645729,0.201919928193092,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403,0.965206980705261,0,0.261487126350403, +1,-0,0,1,-0,0,1,-0,0,1,-0,0,0.975712060928345,-0.00952969398349524,0.218849569559097,0.997704029083252,0.0677256733179092,0,0.972207069396973,0.145124465227127,0.18371807038784,0.977037727832794,0.0680116564035416,0.201919972896576,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0.972207069396973,-0.145124480128288,-0.183718055486679,0.997704029083252,-0.0677256807684898,0,0.975712060928345,0.00952969398349524,-0.218849569559097,0.977037727832794,-0.0680116638541222,-0.201919972896576,0.965206980705261,0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,0.965206980705261,-0,-0.261487126350403,0.965206980705261,0,-0.261487126350403,1,0,0,1,0,0,1,0,0,1,0,0,0.972207069396973,0.183717623353004,0.145125105977058,0.997703969478607,0,0.0677259713411331,0.97571212053299,0.218849316239357,-0.00952974893152714,0.977037847042084,0.201919630169868,0.0680119544267654,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,0.965206980705261,0.261487156152725,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.97571212053299,0.218849271535873,0.00952975638210773,0.997703969478607,0,-0.0677258223295212,0.972207069396973,0.183717668056488,-0.145124807953835,0.977037847042084,0.201919630169868,-0.0680118054151535,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0.972207069396973,-0.18371769785881,0.145124822854996,0.997703969478607,0,0.0677258297801018,0.97571212053299,-0.218849286437035,-0.00952974613755941,0.977037847042084,-0.201919630169868,0.0680118054151535,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,-0.183717846870422,0.145124554634094,-0.972207069396973,0,0.0677257031202316,-0.997704029083252,-0.218849360942841,-0.0095297284424305,-0.97571212053299,-0.20191977918148,0.068011686205864,-0.977037727832794,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906,-0.26148721575737,-0,-0.965207040309906, +0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0.218849450349808,0.00952971167862415,-0.97571212053299,0,-0.0677258521318436,-0.997703969478607,-0.1837178170681,-0.145124852657318,-0.972207069396973,-0.201919764280319,-0.0680118426680565,-0.977037727832794,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,0,-1,0,0,-1,0.183717772364616,0.145124807953835,-0.972207069396973,0,0.0677258297801018,-0.997703969478607,0.218849375844002,-0.00952972657978535,-0.97571212053299,0.201919689774513,0.0680118054151535,-0.977037727832794,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0.26148721575737,0,-0.965207040309906,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0.183717876672745,0.145124495029449,0.972207069396973,0,0.0677256807684898,0.997704029083252,0.218849375844002,-0.00952972192317247,0.97571212053299,0.20191977918148,0.0680116564035416,0.977037727832794,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0.26148721575737,-0,0.965207040309906,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0.218849420547485,0.0095297135412693,0.97571212053299,0,-0.0677258297801018,0.997703969478607,0.183717846870422,-0.145124778151512,0.972207069396973,0.20191977918148,-0.0680118054151535,0.977037727832794,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,-0.183717921376228,0.145124837756157,0.972207009792328,0,0.0677258521318436,0.997703969478607,-0.21884948015213,-0.00952970236539841,0.97571212053299,-0.201919838786125,0.0680118277668953,0.977037727832794,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,-0.26148721575737,0,0.965207040309906,0,-0,1,0,-0,1,0,-0,1,0,-0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,0,1,0,0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,-0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0, +1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,-0,1,-0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1, +0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1 + } + TangentsW: *768 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *542 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25,0.5,0.125,0.5,0,0.5,1,0.625,0.125,0.5,0.25,0.375,0.125,0.5,0.375,0.625,0.375,0.75,0.25,0.5,0.5,0.375,0.375,0.25,0.25,0.5,0.625,0.625,0.625,0.875,0.125,0.5,0.75,0.375,0.625,0.125,0.125,0.5,0.875,0.625,0.875,0.75,0,0.5,1,0.375,0.875,0.25,0,0.75,0.125,0.75,0,0.875,0.125,0.75,0.25,0.25,0.125,0.25,0,0.25,0.25,0.125,0.125,0.4375,0.0625,0.375,0.0625,0.4375,0,0.4375,1,0.5,0.0625,0.4375,0.125,0.4375,0.3125,0.375,0.3125,0.3125,0.25,0.4375,0.25,0.5,0.3125,0.4375,0.375,0.4375,0.5625,0.375,0.5625,0.125,0.1875,0.4375,0.5,0.5,0.5625,0.4375,0.625,0.4375,0.8125,0.375,0.8125,0.1875,0,0.4375,0.75,0.5,0.8125,0.4375,0.875,0.6875,0.0625,0.625,0.0625,0.625,0.9375,0.6875,0,0.75,0.0625,0.6875,0.125,0.1875,0.0625,0.375,0.6875,0.125,0.0625,0.1875,0,0.25,0.0625,0.1875,0.125,0.5625,0.0625,0.5625,0,0.5625,1,0.5625,0.125,0.5625,0.1875,0.625,0.1875,0.5625,0.25,0.5,0.1875,0.4375,0.1875,0.375,0.1875,0.5625,0.3125,0.625,0.3125,0.6875,0.25,0.5625,0.375,0.5625,0.4375,0.625,0.4375,0.8125,0.25,0.5625,0.5,0.5,0.4375,0.4375,0.4375,0.375,0.4375,0.1875,0.25,0.5625,0.5625,0.625,0.5625,0.875,0.1875,0.5625,0.625,0.5625,0.6875,0.625,0.6875,0.875,0.0625,0.5625,0.75,0.5,0.6875,0.4375,0.6875,0.375,0.6875,0.5625,0.8125,0.625,0.8125,0.8125,0,0.5625,0.875,0.5625,0.9375,0.625,0.9375,0.5625,1,0.5,0.9375,0.4375,0.9375,0.4375,1,0.375,0.9375,0.3125,0,0.8125,0.0625,0.8125,0,0.875,0.0625,0.8125,0.125,0.8125,0.1875,0.875,0.1875,0.8125,0.25,0.75,0.1875,0.6875,0.1875,0.6875,0.25,0.3125,0.0625,0.3125,0,0.3125,0.125,0.3125,0.1875,0.3125,0.25,0.25,0.1875,0.1875,0.1875,0.1875,0.25,0.125,0.1875,0.4375,0.125,0.375,0.125,0.375,0.0625,0.4375,0.0625,0.4375,0.375,0.375,0.375,0.375,0.3125,0.4375,0.3125,0.4375,0.625,0.375,0.625,0.375,0.5625,0.4375,0.5625,0.4375,0.875,0.375,0.875,0.375,0.8125,0.4375,0.8125,0.6875,0.125,0.625,0.125,0.625,0.0625,0.6875,0.0625,0.1875,0.125,0.125,0.125,0.125,0.0625,0.1875,0.0625,0.5,0.0625,0.5,0,0.5625,0, +0.5625,0.0625,0.5625,0.125,0.625,0.1875,0.5625,0.1875,0.5,0.1875,0.5,0.25,0.4375,0.25,0.4375,0.1875,0.5,0.3125,0.5625,0.25,0.5625,0.3125,0.5625,0.375,0.625,0.375,0.625,0.4375,0.5625,0.4375,0.5,0.4375,0.5,0.5,0.4375,0.5,0.4375,0.4375,0.5,0.5625,0.5625,0.5,0.5625,0.5625,0.5625,0.625,0.625,0.625,0.625,0.6875,0.5625,0.6875,0.5,0.6875,0.5,0.75,0.4375,0.75,0.4375,0.6875,0.5,0.8125,0.5625,0.75,0.5625,0.8125,0.5625,0.875,0.625,0.875,0.625,0.9375,0.5625,0.9375,0.5,0.9375,0.5,1,0.4375,1,0.4375,0.9375,0.75,0.0625,0.75,0,0.8125,0,0.8125,0.0625,0.8125,0.125,0.875,0.125,0.875,0.1875,0.8125,0.1875,0.75,0.1875,0.75,0.25,0.6875,0.25,0.6875,0.1875,0.25,0.0625,0.25,0,0.3125,0,0.3125,0.0625,0.3125,0.125,0.375,0.1875,0.3125,0.1875,0.25,0.1875,0.25,0.25,0.1875,0.25,0.1875,0.1875,0.375,0,0.4375,0,0.5,0.125,0.375,0.25,0.5,0.375,0.375,0.5,0.5,0.625,0.375,0.75,0.5,0.875,0.625,0,0.6875,0,0.75,0.125,0.125,0,0.1875,0,0.25,0.125,0.625,0.25,0.625,0.3125,0.625,0.5,0.375,0.4375,0.625,0.5625,0.625,0.75,0.375,0.6875,0.625,0.8125,0.625,1,0.5625,1,0.375,1,0.375,0.9375,0.875,0,0.875,0.0625,0.875,0.25,0.8125,0.25,0.3125,0.25,0.125,0.25,0.125,0.1875 + } + UVIndex: *768 { + a: 51,19,47,46,57,24,53,52,63,30,59,58,69,36,65,64,75,17,71,70,81,45,78,76,50,15,83,82,85,17,87,86,89,18,55,90,56,18,88,92,95,21,97,96,100,23,61,101,62,23,99,104,107,27,109,108,112,29,67,113,68,29,111,115,118,33,120,119,122,35,124,123,74,39,128,127,130,40,132,131,134,41,136,135,80,43,138,137,139,19,91,140,142,44,144,143,47,0,48,46,48,15,50,46,50,14,51,46,53,2,55,52,55,18,56,52,56,20,57,52,59,4,61,58,61,23,62,58,62,26,63,58,65,6,67,64,67,29,68,64,68,32,69,64,71,1,73,70,73,39,74,70,74,38,75,70,78,12,79,76,79,43,80,76,80,42,81,76,83,1,71,82,71,17,85,82,85,14,50,82,87,3,88,86,88,18,89,86,89,14,85,86,55,2,91,90,91,19,51,90,51,14,89,90,88,3,93,92,93,21,95,92,95,20,56,92,97,5,99,96,99,23,100,96,100,20,95,96,61,4,102,101,102,24,57,101,57,20,100,101,99,5,105,104,105,27,107,104,107,26,62,104,109,7,111,108,111,29,112,108,112,26,107,108,67,6,114,113,114,30,63,113,63,26,112,113,111,7,116,115,116,33,118,115,118,32,68,115,120,9,121,119,121,35,122,119,122,32,118,119,124,8,125,123,125,36,69,123,69,32,122,123,128,10,129,127,129,40,130,127,130,38,74,127,132,11,133,131,133,41,134,131,134,38,130,131,136,3,87,135,87,17,75,135,75,38,134,135,138,0,47,137,47,19,139,137,139,42,80,137,91,2,141,140,141,44,142,140,142,42,139,140,144,13,145,143,145,45,81,143,81,42,142,143,146,149,148,147,150,153,152,151,154,157,156,155,158,161,160,159,162,165,164,163,166,169,168,167,170,173,172,171,174,176,175,163,177,180,179,178,181,183,182,178,184,187,186,185,188,191,190,189,192,194,193,189,195,198,197,196,199,202,201,200,203,205,204,200,206,209,208,207,210,213,212,211,214,217,216,215,218,221,220,219,222,225,224,223,226,229,228,227,230,232,231,147,233,236,235,234,148,149,238,237,238,149,170,171,170,149,146,239,152,153,179,240,179,153,181,178,181,153,150,241,156,157,190,242,190,157,192,189,192,157,154,243,160,161,201,244,201,161,203,200,203,161,158,245,164,165,247,246,247,165,214,215,214,165,162,248,168,169,250,249,250,169,226,227,226,169,166,251,172,173,164,246,164,173,174,163,174,173,170,239,175,176,182,252,182,176,177,178,177,176,174,239, +179,180,231,240,231,180,146,147,146,180,177,239,182,183,253,252,253,183,184,185,184,183,181,241,186,187,193,254,193,187,188,189,188,187,184,241,190,191,255,242,255,191,150,151,150,191,188,241,193,194,256,254,256,194,195,196,195,194,192,243,197,198,204,257,204,198,199,200,199,198,195,243,201,202,258,244,258,202,154,155,154,202,199,243,204,205,259,257,259,205,206,207,206,205,203,245,208,209,261,260,261,209,210,211,210,209,206,245,212,213,263,262,263,213,158,159,158,213,210,245,216,217,265,264,265,217,218,219,218,217,214,248,220,221,267,266,267,221,222,223,222,221,218,248,224,225,175,252,175,225,162,163,162,225,222,248,228,229,148,237,148,229,230,147,230,229,226,251,231,232,268,240,268,232,233,234,233,232,230,251,235,236,270,269,270,236,166,167,166,236,233,251 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *384 { + a: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Model: 2359439406816, "Model::Cube2", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",-1.04023893373156,0.998288783259251,-1.04375962988677 + P: "Lcl Scaling", "Lcl Scaling", "", "A",10,10,10 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 2359439411456, "Model::Куб1", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",1.04023893373156,-0.998288783259251,1.04375962988677 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 2359439409136, "Model::Cube3", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",-1.0671176743957,0.998288783259251,9.39023469168045 + P: "Lcl Scaling", "Lcl Scaling", "", "A",10,10,10 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 2359439416096, "Model::Куб1", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",1.04023893373156,-0.998288783259251,1.1806740271636 + P: "Lcl Scaling", "Lcl Scaling", "", "A",0.77384837213491,0.77384837213491,0.77384837213491 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Material: 2359823919504, "Material::Mat_Green", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties70: { + P: "AmbientColor", "Color", "", "A",0,0,0 + P: "DiffuseColor", "Color", "", "A",0,1,0 + P: "DiffuseFactor", "Number", "", "A",0.800000011920929 + P: "TransparencyFactor", "Number", "", "A",1 + P: "Emissive", "Vector3D", "Vector", "",0,0,0 + P: "Ambient", "Vector3D", "Vector", "",0,0,0 + P: "Diffuse", "Vector3D", "Vector", "",0,0.800000011920929,0 + P: "Opacity", "double", "Number", "",1 + } + } + Material: 2359823921584, "Material::Mat_Red", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties70: { + P: "AmbientColor", "Color", "", "A",0,0,0 + P: "DiffuseColor", "Color", "", "A",1,0,0 + P: "DiffuseFactor", "Number", "", "A",0.800000011920929 + P: "TransparencyFactor", "Number", "", "A",1 + P: "Emissive", "Vector3D", "Vector", "",0,0,0 + P: "Ambient", "Vector3D", "Vector", "",0,0,0 + P: "Diffuse", "Vector3D", "Vector", "",0.800000011920929,0,0 + P: "Opacity", "double", "Number", "",1 + } + } + AnimationStack: 2359349464816, "AnimStack::Take 001", "" { + Properties70: { + P: "LocalStart", "KTime", "Time", "",1924423250 + P: "LocalStop", "KTime", "Time", "",230930790000 + P: "ReferenceStart", "KTime", "Time", "",1924423250 + P: "ReferenceStop", "KTime", "Time", "",230930790000 + } + } + AnimationLayer: 2359327403664, "AnimLayer::BaseLayer", "" { + } +} + +; Object connections +;------------------------------------------------------------------ + +Connections: { + + ;Model::Cube2, Model::RootNode + C: "OO",2359439406816,0 + + ;Model::Cube3, Model::RootNode + C: "OO",2359439409136,0 + + ;AnimLayer::BaseLayer, AnimStack::Take 001 + C: "OO",2359327403664,2359349464816 + + ;Geometry::, Model::Cube2 + C: "OO",2358377979296,2359439406816 + + ;Material::Mat_Green, Model::Cube2 + C: "OO",2359823919504,2359439406816 + + ;Model::Куб1, Model::Cube2 + C: "OO",2359439411456,2359439406816 + + ;Geometry::, Model::Куб1 + C: "OO",2358377961872,2359439411456 + + ;Material::Mat_Green, Model::Куб1 + C: "OO",2359823919504,2359439411456 + + ;Geometry::, Model::Cube3 + C: "OO",2358377982464,2359439409136 + + ;Material::Mat_Red, Model::Cube3 + C: "OO",2359823921584,2359439409136 + + ;Model::Куб1, Model::Cube3 + C: "OO",2359439416096,2359439409136 + + ;Geometry::, Model::Куб1 + C: "OO",2358377979824,2359439416096 + + ;Material::Mat_Red, Model::Куб1 + C: "OO",2359823921584,2359439416096 +} +;Takes section +;---------------------------------------------------- + +Takes: { + Current: "Take 001" + Take: "Take 001" { + FileName: "Take_001.tak" + LocalTime: 1924423250,230930790000 + ReferenceTime: 1924423250,230930790000 + } +} diff --git a/test/unit/utFBXImporterExporter.cpp b/test/unit/utFBXImporterExporter.cpp index f0de0c741..a678357ff 100644 --- a/test/unit/utFBXImporterExporter.cpp +++ b/test/unit/utFBXImporterExporter.cpp @@ -76,6 +76,119 @@ TEST_F( utFBXImporterExporter, importBareBoxWithoutColorsAndTextureCoords ) { EXPECT_EQ(mesh->mNumVertices, 36); } +TEST_F(utFBXImporterExporter, importCubesWithNoNames) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/FBX/cubes_nonames.fbx", aiProcess_ValidateDataStructure); + ASSERT_TRUE(scene); + + ASSERT_TRUE(scene->mRootNode); + const auto root = scene->mRootNode; + ASSERT_STREQ(root->mName.C_Str(), "RootNode"); + ASSERT_TRUE(root->mChildren); + ASSERT_EQ(root->mNumChildren, 2); + + const auto child0 = root->mChildren[0]; + ASSERT_TRUE(child0); + ASSERT_STREQ(child0->mName.C_Str(), "RootNode001"); + ASSERT_TRUE(child0->mChildren); + ASSERT_EQ(child0->mNumChildren, 1); + + const auto child00 = child0->mChildren[0]; + ASSERT_TRUE(child00); + ASSERT_STREQ(child00->mName.C_Str(), "RootNode001001"); + + const auto child1 = root->mChildren[1]; + ASSERT_TRUE(child1); + ASSERT_STREQ(child1->mName.C_Str(), "RootNode002"); + ASSERT_TRUE(child1->mChildren); + ASSERT_EQ(child1->mNumChildren, 1); + + const auto child10 = child1->mChildren[0]; + ASSERT_TRUE(child10); + ASSERT_STREQ(child10->mName.C_Str(), "RootNode002001"); +} + +TEST_F(utFBXImporterExporter, importCubesWithUnicodeDuplicatedNames) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/FBX/cubes_with_names.fbx", aiProcess_ValidateDataStructure); + ASSERT_TRUE(scene); + + ASSERT_TRUE(scene->mRootNode); + const auto root = scene->mRootNode; + ASSERT_STREQ(root->mName.C_Str(), "RootNode"); + ASSERT_TRUE(root->mChildren); + ASSERT_EQ(root->mNumChildren, 2); + + const auto child0 = root->mChildren[0]; + ASSERT_TRUE(child0); + ASSERT_STREQ(child0->mName.C_Str(), "Cube2"); + ASSERT_TRUE(child0->mChildren); + ASSERT_EQ(child0->mNumChildren, 1); + + const auto child00 = child0->mChildren[0]; + ASSERT_TRUE(child00); + ASSERT_STREQ(child00->mName.C_Str(), "\xd0\x9a\xd1\x83\xd0\xb1\x31"); + + const auto child1 = root->mChildren[1]; + ASSERT_TRUE(child1); + ASSERT_STREQ(child1->mName.C_Str(), "Cube3"); + ASSERT_TRUE(child1->mChildren); + ASSERT_EQ(child1->mNumChildren, 1); + + const auto child10 = child1->mChildren[0]; + ASSERT_TRUE(child10); + ASSERT_STREQ(child10->mName.C_Str(), "\xd0\x9a\xd1\x83\xd0\xb1\x31""001"); +} + +TEST_F(utFBXImporterExporter, importCubesComplexTransform) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/FBX/cubes_with_mirroring_and_pivot.fbx", aiProcess_ValidateDataStructure); + ASSERT_TRUE(scene); + + ASSERT_TRUE(scene->mRootNode); + const auto root = scene->mRootNode; + ASSERT_STREQ(root->mName.C_Str(), "RootNode"); + ASSERT_TRUE(root->mChildren); + ASSERT_EQ(root->mNumChildren, 2); + + const auto child0 = root->mChildren[0]; + ASSERT_TRUE(child0); + ASSERT_STREQ(child0->mName.C_Str(), "Cube2"); + ASSERT_TRUE(child0->mChildren); + ASSERT_EQ(child0->mNumChildren, 1); + + const auto child00 = child0->mChildren[0]; + ASSERT_TRUE(child00); + ASSERT_STREQ(child00->mName.C_Str(), "Cube1"); + + const auto child1 = root->mChildren[1]; + ASSERT_TRUE(child1); + ASSERT_STREQ(child1->mName.C_Str(), "Cube3"); + + auto parent = child1; + constexpr size_t chain_length = 8u; + const char* chainStr[chain_length] = { + "Cube1001_$AssimpFbx$_Translation", + "Cube1001_$AssimpFbx$_RotationPivot", + "Cube1001_$AssimpFbx$_RotationPivotInverse", + "Cube1001_$AssimpFbx$_ScalingOffset", + "Cube1001_$AssimpFbx$_ScalingPivot", + "Cube1001_$AssimpFbx$_Scaling", + "Cube1001_$AssimpFbx$_ScalingPivotInverse", + "Cube1001" + }; + for (size_t i = 0; i < chain_length; ++i) + { + ASSERT_TRUE(parent->mChildren); + ASSERT_EQ(parent->mNumChildren, 1); + auto node = parent->mChildren[0]; + ASSERT_TRUE(node); + ASSERT_STREQ(node->mName.C_Str(), chainStr[i]); + parent = node; + } + ASSERT_EQ(0, parent->mNumChildren) << "Leaf node"; +} + TEST_F( utFBXImporterExporter, importPhongMaterial ) { Assimp::Importer importer; const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/FBX/phong_cube.fbx", aiProcess_ValidateDataStructure ); From 13bba4fb4c0aa957895247b6cbd0b099d92cb83d Mon Sep 17 00:00:00 2001 From: Mike Samsonov Date: Wed, 15 May 2019 11:26:09 +0100 Subject: [PATCH 173/187] even more efficient --- code/FBXConverter.cpp | 8 +++++--- code/FBXConverter.h | 4 ++++ test/unit/utFBXImporterExporter.cpp | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index f509289b3..50ea60b91 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -442,15 +442,17 @@ namespace Assimp { void FBXConverter::GetUniqueName(const std::string &name, std::string &uniqueName) { uniqueName = name; - int i = 0; - while (mNodeNames.find(uniqueName) != mNodeNames.end()) + auto it_pair = mNodeNameInstances.insert({ name, 0 }); // duplicate node name instance count + unsigned int& i = it_pair.first->second; + auto uniqueIt_pair = mNodeNames.insert(uniqueName); + while (!uniqueIt_pair.second) { i++; std::stringstream ext; ext << name << std::setfill('0') << std::setw(3) << i; uniqueName = ext.str(); + uniqueIt_pair = mNodeNames.insert(uniqueName); } - mNodeNames.insert(uniqueName); } const char* FBXConverter::NameTransformationComp(TransformationComp comp) { diff --git a/code/FBXConverter.h b/code/FBXConverter.h index 1bdf9ac9f..f5de99ae3 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -461,6 +461,10 @@ private: using NodeAnimBitMap = std::map ; NodeAnimBitMap node_anim_chain_bits; + // number of nodes with the same name + using NodeAnimNameMap = std::unordered_map; + NodeAnimNameMap mNodeNameInstances; + using NodeNameCache = std::unordered_set; NodeNameCache mNodeNames; diff --git a/test/unit/utFBXImporterExporter.cpp b/test/unit/utFBXImporterExporter.cpp index a678357ff..188f7cf22 100644 --- a/test/unit/utFBXImporterExporter.cpp +++ b/test/unit/utFBXImporterExporter.cpp @@ -166,7 +166,7 @@ TEST_F(utFBXImporterExporter, importCubesComplexTransform) { ASSERT_STREQ(child1->mName.C_Str(), "Cube3"); auto parent = child1; - constexpr size_t chain_length = 8u; + const size_t chain_length = 8u; const char* chainStr[chain_length] = { "Cube1001_$AssimpFbx$_Translation", "Cube1001_$AssimpFbx$_RotationPivot", From c84ac7a1351fa001506eb8317bdfb65859289f63 Mon Sep 17 00:00:00 2001 From: Mike Samsonov Date: Tue, 14 May 2019 14:43:16 +0100 Subject: [PATCH 174/187] Fragmented FBX ASCII emdedded resource --- code/FBXDocument.h | 2 +- code/FBXMaterial.cpp | 42 +- code/FBXUtil.cpp | 76 +- code/FBXUtil.h | 12 +- .../box_embedded_texture_fragmented.fbx | 697 ++++++++++++++++++ test/unit/utFBXImporterExporter.cpp | 24 + 6 files changed, 812 insertions(+), 41 deletions(-) create mode 100644 test/models/FBX/embedded_ascii/box_embedded_texture_fragmented.fbx diff --git a/code/FBXDocument.h b/code/FBXDocument.h index c849defdc..53bd65878 100644 --- a/code/FBXDocument.h +++ b/code/FBXDocument.h @@ -643,7 +643,7 @@ private: std::string fileName; std::shared_ptr props; - uint32_t contentLength; + uint64_t contentLength; uint8_t* content; }; diff --git a/code/FBXMaterial.cpp b/code/FBXMaterial.cpp index f16f13440..665a98a75 100644 --- a/code/FBXMaterial.cpp +++ b/code/FBXMaterial.cpp @@ -326,16 +326,40 @@ Video::Video(uint64_t id, const Element& element, const Document& doc, const std DOMError("embedded content is not surrounded by quotation marks", &element); } else { - const char* encodedData = data + 1; - size_t encodedDataLen = static_cast(token.end() - token.begin()); - // search for last quotation mark - while (encodedDataLen > 1 && encodedData[encodedDataLen] != '"') - encodedDataLen--; - if (encodedDataLen % 4 != 0) { - DOMError("embedded content is invalid, needs to be in base64", &element); + size_t targetLength = 0; + auto numTokens = Content->Tokens().size(); + // First time compute size (it could be large like 64Gb and it is good to allocate it once) + for (uint32_t tokenIdx = 0; tokenIdx < numTokens; ++tokenIdx) + { + const Token& dataToken = GetRequiredToken(*Content, tokenIdx); + size_t tokenLength = dataToken.end() - dataToken.begin() - 2; // ignore double quotes + const char* base64data = dataToken.begin() + 1; + const size_t outLength = Util::ComputeDecodedSizeBase64(base64data, tokenLength); + if (outLength == 0) + { + DOMError("Corrupted embedded content found", &element); + } + targetLength += outLength; } - else { - contentLength = Util::DecodeBase64(encodedData, encodedDataLen, content); + if (targetLength == 0) + { + DOMError("Corrupted embedded content found", &element); + } + content = new uint8_t[targetLength]; + contentLength = static_cast(targetLength); + size_t dst_offset = 0; + for (uint32_t tokenIdx = 0; tokenIdx < numTokens; ++tokenIdx) + { + const Token& dataToken = GetRequiredToken(*Content, tokenIdx); + size_t tokenLength = dataToken.end() - dataToken.begin() - 2; // ignore double quotes + const char* base64data = dataToken.begin() + 1; + dst_offset += Util::DecodeBase64(base64data, tokenLength, content + dst_offset, targetLength - dst_offset); + } + if (targetLength != dst_offset) + { + delete[] content; + contentLength = 0; + DOMError("Corrupted embedded content found", &element); } } } diff --git a/code/FBXUtil.cpp b/code/FBXUtil.cpp index 557d0d843..43c1a3bbb 100644 --- a/code/FBXUtil.cpp +++ b/code/FBXUtil.cpp @@ -114,47 +114,65 @@ std::string AddTokenText(const std::string& prefix, const std::string& text, con text) ); } +// Generated by this formula: T["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[i]] = i; static const uint8_t base64DecodeTable[128] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 64, 0, 0, - 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, - 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0 + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 255, 255, 255, + 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, + 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 255, 255, 255, 255, 255 }; uint8_t DecodeBase64(char ch) { - return base64DecodeTable[size_t(ch)]; + const auto idx = static_cast(ch); + if (idx > 127) + return 255; + return base64DecodeTable[idx]; } -size_t DecodeBase64(const char* in, size_t inLength, uint8_t*& out) +size_t ComputeDecodedSizeBase64(const char* in, size_t inLength) { - if (inLength < 4) { - out = 0; + if (inLength < 2) + { return 0; } - - const size_t outLength = (inLength * 3) / 4; - out = new uint8_t[outLength]; - memset(out, 0, outLength); - - size_t i = 0; - size_t j = 0; - for (i = 0; i < inLength - 4; i += 4) + const size_t equals = size_t(in[inLength - 1] == '=') + size_t(in[inLength - 2] == '='); + const size_t full_length = (inLength * 3) >> 2; // div by 4 + if (full_length < equals) { - uint8_t b0 = Util::DecodeBase64(in[i]); - uint8_t b1 = Util::DecodeBase64(in[i + 1]); - uint8_t b2 = Util::DecodeBase64(in[i + 2]); - uint8_t b3 = Util::DecodeBase64(in[i + 3]); - - out[j++] = (uint8_t)((b0 << 2) | (b1 >> 4)); - out[j++] = (uint8_t)((b1 << 4) | (b2 >> 2)); - out[j++] = (uint8_t)((b2 << 6) | b3); + return 0; } - return outLength; + return full_length - equals; +} + +size_t DecodeBase64(const char* in, size_t inLength, uint8_t* out, size_t maxOutLength) +{ + if (maxOutLength == 0 || inLength < 2) { + return 0; + } + const size_t realLength = inLength - size_t(in[inLength - 1] == '=') - size_t(in[inLength - 2] == '='); + size_t dst_offset = 0; + int val = 0, valb = -8; + for (size_t src_offset = 0; src_offset < realLength; ++src_offset) + { + const uint8_t table_value = Util::DecodeBase64(in[src_offset]); + if (table_value == 255) + { + return 0; + } + val = (val << 6) + table_value; + valb += 6; + if (valb >= 0) + { + out[dst_offset++] = static_cast((val >> valb) & 0xFF); + valb -= 8; + } + } + return dst_offset; } static const char to_base64_string[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; diff --git a/code/FBXUtil.h b/code/FBXUtil.h index b26eba5d5..f7e148c2e 100644 --- a/code/FBXUtil.h +++ b/code/FBXUtil.h @@ -105,13 +105,21 @@ std::string AddTokenText(const std::string& prefix, const std::string& text, con * @return decoded byte value*/ uint8_t DecodeBase64(char ch); +/** Compute decoded size of a Base64-encoded string +* +* @param in Characters to decode. +* @param inLength Number of characters to decode. +* @return size of the decoded data (number of bytes)*/ +size_t ComputeDecodedSizeBase64(const char* in, size_t inLength); + /** Decode a Base64-encoded string * * @param in Characters to decode. * @param inLength Number of characters to decode. -* @param out Reference to pointer where we will store the decoded data. +* @param out Pointer where we will store the decoded data. +* @param maxOutLength Size of output buffer. * @return size of the decoded data (number of bytes)*/ -size_t DecodeBase64(const char* in, size_t inLength, uint8_t*& out); +size_t DecodeBase64(const char* in, size_t inLength, uint8_t* out, size_t maxOutLength); char EncodeBase64(char byte); diff --git a/test/models/FBX/embedded_ascii/box_embedded_texture_fragmented.fbx b/test/models/FBX/embedded_ascii/box_embedded_texture_fragmented.fbx new file mode 100644 index 000000000..6a476d3a1 --- /dev/null +++ b/test/models/FBX/embedded_ascii/box_embedded_texture_fragmented.fbx @@ -0,0 +1,697 @@ +; FBX 7.5.0 project file +; ---------------------------------------------------- + +FBXHeaderExtension: { + FBXHeaderVersion: 1003 + FBXVersion: 7500 + CreationTimeStamp: { + Version: 1000 + Year: 2019 + Month: 5 + Day: 14 + Hour: 12 + Minute: 35 + Second: 1 + Millisecond: 267 + } + Creator: "FBX SDK/FBX Plugins version 2018.1.1" + SceneInfo: "SceneInfo::GlobalInfo", "UserData" { + Type: "UserData" + Version: 100 + MetaData: { + Version: 100 + Title: "" + Subject: "" + Author: "" + Keywords: "" + Revision: "" + Comment: "" + } + Properties70: { + P: "DocumentUrl", "KString", "Url", "", "U:\Some\Absolute\Path\box_embedded_texture_fragmented.fbx" + P: "SrcDocumentUrl", "KString", "Url", "", "U:\Some\Absolute\Path\box_embedded_texture_fragmented.fbx" + P: "Original", "Compound", "", "" + P: "Original|ApplicationVendor", "KString", "", "", "Autodesk" + P: "Original|ApplicationName", "KString", "", "", "Maya" + P: "Original|ApplicationVersion", "KString", "", "", "201800" + P: "Original|DateTime_GMT", "DateTime", "", "", "14/05/2019 11:35:01.267" + P: "Original|FileName", "KString", "", "", "U:\Some\Absolute\Path\box_embedded_texture_fragmented.fbx" + P: "LastSaved", "Compound", "", "" + P: "LastSaved|ApplicationVendor", "KString", "", "", "Autodesk" + P: "LastSaved|ApplicationName", "KString", "", "", "Maya" + P: "LastSaved|ApplicationVersion", "KString", "", "", "201800" + P: "LastSaved|DateTime_GMT", "DateTime", "", "", "14/05/2019 11:35:01.267" + P: "Original|ApplicationActiveProject", "KString", "", "", "U:\Some\Absolute\Path" + } + } +} +GlobalSettings: { + Version: 1000 + Properties70: { + P: "UpAxis", "int", "Integer", "",1 + P: "UpAxisSign", "int", "Integer", "",1 + P: "FrontAxis", "int", "Integer", "",2 + P: "FrontAxisSign", "int", "Integer", "",1 + P: "CoordAxis", "int", "Integer", "",0 + P: "CoordAxisSign", "int", "Integer", "",1 + P: "OriginalUpAxis", "int", "Integer", "",1 + P: "OriginalUpAxisSign", "int", "Integer", "",1 + P: "UnitScaleFactor", "double", "Number", "",100 + P: "OriginalUnitScaleFactor", "double", "Number", "",1 + P: "AmbientColor", "ColorRGB", "Color", "",0,0,0 + P: "DefaultCamera", "KString", "", "", "Producer Perspective" + P: "TimeMode", "enum", "", "",6 + P: "TimeProtocol", "enum", "", "",2 + P: "SnapOnFrameMode", "enum", "", "",0 + P: "TimeSpanStart", "KTime", "Time", "",0 + P: "TimeSpanStop", "KTime", "Time", "",153953860000 + P: "CustomFrameRate", "double", "Number", "",-1 + P: "TimeMarker", "Compound", "", "" + P: "CurrentTimeMarker", "int", "Integer", "",-1 + } +} + +; Documents Description +;------------------------------------------------------------------ + +Documents: { + Count: 1 + Document: 1827090966928, "", "Scene" { + Properties70: { + P: "SourceObject", "object", "", "" + P: "ActiveAnimStackName", "KString", "", "", "Take 001" + } + RootNode: 0 + } +} + +; Document References +;------------------------------------------------------------------ + +References: { +} + +; Object definitions +;------------------------------------------------------------------ + +Definitions: { + Version: 100 + Count: 17 + ObjectType: "GlobalSettings" { + Count: 1 + } + ObjectType: "AnimationStack" { + Count: 1 + PropertyTemplate: "FbxAnimStack" { + Properties70: { + P: "Description", "KString", "", "", "" + P: "LocalStart", "KTime", "Time", "",0 + P: "LocalStop", "KTime", "Time", "",0 + P: "ReferenceStart", "KTime", "Time", "",0 + P: "ReferenceStop", "KTime", "Time", "",0 + } + } + } + ObjectType: "AnimationLayer" { + Count: 1 + PropertyTemplate: "FbxAnimLayer" { + Properties70: { + P: "Weight", "Number", "", "A",100 + P: "Mute", "bool", "", "",0 + P: "Solo", "bool", "", "",0 + P: "Lock", "bool", "", "",0 + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BlendMode", "enum", "", "",0 + P: "RotationAccumulationMode", "enum", "", "",0 + P: "ScaleAccumulationMode", "enum", "", "",0 + P: "BlendModeBypass", "ULongLong", "", "",0 + } + } + } + ObjectType: "Geometry" { + Count: 1 + PropertyTemplate: "FbxMesh" { + Properties70: { + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BBoxMin", "Vector3D", "Vector", "",0,0,0 + P: "BBoxMax", "Vector3D", "Vector", "",0,0,0 + P: "Primary Visibility", "bool", "", "",1 + P: "Casts Shadows", "bool", "", "",1 + P: "Receive Shadows", "bool", "", "",1 + } + } + } + ObjectType: "Material" { + Count: 1 + PropertyTemplate: "FbxSurfacePhong" { + Properties70: { + P: "ShadingModel", "KString", "", "", "Phong" + P: "MultiLayer", "bool", "", "",0 + P: "EmissiveColor", "Color", "", "A",0,0,0 + P: "EmissiveFactor", "Number", "", "A",1 + P: "AmbientColor", "Color", "", "A",0.2,0.2,0.2 + P: "AmbientFactor", "Number", "", "A",1 + P: "DiffuseColor", "Color", "", "A",0.8,0.8,0.8 + P: "DiffuseFactor", "Number", "", "A",1 + P: "Bump", "Vector3D", "Vector", "",0,0,0 + P: "NormalMap", "Vector3D", "Vector", "",0,0,0 + P: "BumpFactor", "double", "Number", "",1 + P: "TransparentColor", "Color", "", "A",0,0,0 + P: "TransparencyFactor", "Number", "", "A",0 + P: "DisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "DisplacementFactor", "double", "Number", "",1 + P: "VectorDisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "VectorDisplacementFactor", "double", "Number", "",1 + P: "SpecularColor", "Color", "", "A",0.2,0.2,0.2 + P: "SpecularFactor", "Number", "", "A",1 + P: "ShininessExponent", "Number", "", "A",20 + P: "ReflectionColor", "Color", "", "A",0,0,0 + P: "ReflectionFactor", "Number", "", "A",1 + } + } + } + ObjectType: "Texture" { + Count: 1 + PropertyTemplate: "FbxFileTexture" { + Properties70: { + P: "TextureTypeUse", "enum", "", "",0 + P: "Texture alpha", "Number", "", "A",1 + P: "CurrentMappingType", "enum", "", "",0 + P: "WrapModeU", "enum", "", "",0 + P: "WrapModeV", "enum", "", "",0 + P: "UVSwap", "bool", "", "",0 + P: "PremultiplyAlpha", "bool", "", "",1 + P: "Translation", "Vector", "", "A",0,0,0 + P: "Rotation", "Vector", "", "A",0,0,0 + P: "Scaling", "Vector", "", "A",1,1,1 + P: "TextureRotationPivot", "Vector3D", "Vector", "",0,0,0 + P: "TextureScalingPivot", "Vector3D", "Vector", "",0,0,0 + P: "CurrentTextureBlendMode", "enum", "", "",1 + P: "UVSet", "KString", "", "", "default" + P: "UseMaterial", "bool", "", "",0 + P: "UseMipMap", "bool", "", "",0 + } + } + } + ObjectType: "Model" { + Count: 1 + PropertyTemplate: "FbxNode" { + Properties70: { + P: "QuaternionInterpolate", "enum", "", "",0 + P: "RotationOffset", "Vector3D", "Vector", "",0,0,0 + P: "RotationPivot", "Vector3D", "Vector", "",0,0,0 + P: "ScalingOffset", "Vector3D", "Vector", "",0,0,0 + P: "ScalingPivot", "Vector3D", "Vector", "",0,0,0 + P: "TranslationActive", "bool", "", "",0 + P: "TranslationMin", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMax", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMinX", "bool", "", "",0 + P: "TranslationMinY", "bool", "", "",0 + P: "TranslationMinZ", "bool", "", "",0 + P: "TranslationMaxX", "bool", "", "",0 + P: "TranslationMaxY", "bool", "", "",0 + P: "TranslationMaxZ", "bool", "", "",0 + P: "RotationOrder", "enum", "", "",0 + P: "RotationSpaceForLimitOnly", "bool", "", "",0 + P: "RotationStiffnessX", "double", "Number", "",0 + P: "RotationStiffnessY", "double", "Number", "",0 + P: "RotationStiffnessZ", "double", "Number", "",0 + P: "AxisLen", "double", "Number", "",10 + P: "PreRotation", "Vector3D", "Vector", "",0,0,0 + P: "PostRotation", "Vector3D", "Vector", "",0,0,0 + P: "RotationActive", "bool", "", "",0 + P: "RotationMin", "Vector3D", "Vector", "",0,0,0 + P: "RotationMax", "Vector3D", "Vector", "",0,0,0 + P: "RotationMinX", "bool", "", "",0 + P: "RotationMinY", "bool", "", "",0 + P: "RotationMinZ", "bool", "", "",0 + P: "RotationMaxX", "bool", "", "",0 + P: "RotationMaxY", "bool", "", "",0 + P: "RotationMaxZ", "bool", "", "",0 + P: "InheritType", "enum", "", "",0 + P: "ScalingActive", "bool", "", "",0 + P: "ScalingMin", "Vector3D", "Vector", "",0,0,0 + P: "ScalingMax", "Vector3D", "Vector", "",1,1,1 + P: "ScalingMinX", "bool", "", "",0 + P: "ScalingMinY", "bool", "", "",0 + P: "ScalingMinZ", "bool", "", "",0 + P: "ScalingMaxX", "bool", "", "",0 + P: "ScalingMaxY", "bool", "", "",0 + P: "ScalingMaxZ", "bool", "", "",0 + P: "GeometricTranslation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricRotation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricScaling", "Vector3D", "Vector", "",1,1,1 + P: "MinDampRangeX", "double", "Number", "",0 + P: "MinDampRangeY", "double", "Number", "",0 + P: "MinDampRangeZ", "double", "Number", "",0 + P: "MaxDampRangeX", "double", "Number", "",0 + P: "MaxDampRangeY", "double", "Number", "",0 + P: "MaxDampRangeZ", "double", "Number", "",0 + P: "MinDampStrengthX", "double", "Number", "",0 + P: "MinDampStrengthY", "double", "Number", "",0 + P: "MinDampStrengthZ", "double", "Number", "",0 + P: "MaxDampStrengthX", "double", "Number", "",0 + P: "MaxDampStrengthY", "double", "Number", "",0 + P: "MaxDampStrengthZ", "double", "Number", "",0 + P: "PreferedAngleX", "double", "Number", "",0 + P: "PreferedAngleY", "double", "Number", "",0 + P: "PreferedAngleZ", "double", "Number", "",0 + P: "LookAtProperty", "object", "", "" + P: "UpVectorProperty", "object", "", "" + P: "Show", "bool", "", "",1 + P: "NegativePercentShapeSupport", "bool", "", "",1 + P: "DefaultAttributeIndex", "int", "Integer", "",-1 + P: "Freeze", "bool", "", "",0 + P: "LODBox", "bool", "", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",0,0,0 + P: "Lcl Rotation", "Lcl Rotation", "", "A",0,0,0 + P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1 + P: "Visibility", "Visibility", "", "A",1 + P: "Visibility Inheritance", "Visibility Inheritance", "", "",1 + } + } + } + ObjectType: "AnimationCurveNode" { + Count: 8 + PropertyTemplate: "FbxAnimCurveNode" { + Properties70: { + P: "d", "Compound", "", "" + } + } + } + ObjectType: "CollectionExclusive" { + Count: 1 + PropertyTemplate: "FbxDisplayLayer" { + Properties70: { + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "Show", "bool", "", "",1 + P: "Freeze", "bool", "", "",0 + P: "LODBox", "bool", "", "",0 + } + } + } + ObjectType: "Video" { + Count: 1 + PropertyTemplate: "FbxVideo" { + Properties70: { + P: "Path", "KString", "XRefUrl", "", "" + P: "RelPath", "KString", "XRefUrl", "", "" + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "ClipIn", "KTime", "Time", "",0 + P: "ClipOut", "KTime", "Time", "",0 + P: "Offset", "KTime", "Time", "",0 + P: "PlaySpeed", "double", "Number", "",0 + P: "FreeRunning", "bool", "", "",0 + P: "Loop", "bool", "", "",0 + P: "Mute", "bool", "", "",0 + P: "AccessMode", "enum", "", "",0 + P: "ImageSequence", "bool", "", "",0 + P: "ImageSequenceOffset", "int", "Integer", "",0 + P: "FrameRate", "double", "Number", "",0 + P: "LastFrame", "int", "Integer", "",0 + P: "Width", "int", "Integer", "",0 + P: "Height", "int", "Integer", "",0 + P: "StartFrame", "int", "Integer", "",0 + P: "StopFrame", "int", "Integer", "",0 + P: "InterlaceMode", "enum", "", "",0 + } + } + } +} + +; Object properties +;------------------------------------------------------------------ + +Objects: { + Geometry: 1827080161440, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,-0.5,0.5,-0.50000011920929,-0.5,-0.5,0.50000011920929,-0.5,0.5,0.50000011920929,-0.5,-0.5,-0.500000059604645,0.5,0.5,-0.500000059604645,0.5,-0.5,0.500000059604645,0.5,0.5,0.500000059604645,0.5 + } + PolygonVertexIndex: *24 { + a: 0,2,3,-2,4,5,7,-7,0,1,5,-5,1,3,7,-6,3,2,6,-8,2,0,4,-7 + } + Edges: *12 { + a: 0,1,2,3,4,5,6,7,9,11,13,17 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,-5.96046447753906e-08,-1,0,-5.96046447753906e-08,-1,0,-5.96046447753906e-08,-1,0,-5.96046447753906e-08,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,5.96046447753906e-08,0,1,5.96046447753906e-08,0,1,5.96046447753906e-08,0,1,5.96046447753906e-08,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "UVChannel_1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 1.19209289550781e-07,1,0,5.96046447753906e-08,1,0,0,1,0,5.96046447753906e-08,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,1,0,0,1,0,0,1,0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,-0,-5.96046447753906e-08,1,-0,-5.96046447753906e-08,1,-0,-5.96046447753906e-08,1,-0,-5.96046447753906e-08,1,0,0,1,0,0,1,0,0,1,0,0,1 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementBinormal: 1 { + Version: 102 + Name: "UVChannel_3" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: -1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-0,0,-1,-0,0,-1,0,-0,-1,-0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,5.96046447753906e-08,-1,0,5.96046447753906e-08,-1,0,5.96046447753906e-08,-1,0,5.96046447753906e-08,-1,-0,0,-1,-0,0,-1,-0,0,-1,-0,0,-1 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "UVChannel_1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: -1,1.19209289550781e-07,0,-1,5.96046447753906e-08,0,-1,-0,0,-1,5.96046447753906e-08,0,1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-5.96046447753906e-08,-0,1,-5.96046447753906e-08,0,1,-5.96046447753906e-08,0,1,-5.96046447753906e-08,0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,-0,0,-1,-0,0,-1,0,0,-1,0,0,-1,0 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementTangent: 1 { + Version: 102 + Name: "UVChannel_3" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: -0,-1,0,-0,-1,0,-0,-1,0,-0,-1,0,0,1,0,0,1,0,-0,1,-0,0,1,0,-1,5.96046447753906e-08,0,-1,5.96046447753906e-08,0,-1,5.96046447753906e-08,-0,-1,5.96046447753906e-08,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,-0,-0,1,-0,-0,1,-0,-0,1,-0,-0,0,1,-0,0,1,-0,0,1,-0,0,1,-0 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "UVChannel_1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *48 { + a: 1,0,0,0,1,1,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1 + } + UVIndex: *24 { + a: 0,2,3,1,4,5,7,6,8,9,11,10,12,13,15,14,16,17,19,18,20,21,23,22 + } + } + LayerElementUV: 1 { + Version: 101 + Name: "UVChannel_3" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *48 { + a: 0.28125,0.28125,0,0.28125,0,0,0.28125,0,0.34375,1,0.34375,0.71875,0.625,0.71875,0.625,1,0.28125,0.65625,0,0.65625,0,0.375,0.28125,0.375,0.625,0.28125,0.34375,0.28125,0.34375,0,0.625,0,0.28125,1,0,1,0,0.71875,0.28125,0.71875,0.625,0.65625,0.34375,0.65625,0.34375,0.375,0.625,0.375 + } + UVIndex: *24 { + a: 0,1,2,3,4,5,6,7,20,21,22,23,8,9,10,11,16,17,18,19,12,13,14,15 + } + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: *12 { + a: 0,0,0,0,0,0,0,0,0,0,0,0 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + Layer: 1 { + Version: 100 + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 1 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 1 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 1 + } + } + } + Model: 1826985145024, "Model::Box", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",0,0.5,2.18556946492754e-06 + P: "Lcl Rotation", "Lcl Rotation", "", "A",-90,0,0 + P: "currentUVSet", "KString", "", "U", "UVChannel_1" + P: "mr displacement use global settings", "Bool", "", "A+U",1 + P: "mr displacement view dependent", "Bool", "", "A+U",1 + P: "mr displacement method", "Integer", "", "A+U",6,6,6 + P: "mr displacement smoothing on", "Bool", "", "A+U",1 + P: "mr displacement edge length", "Number", "", "A+U",2,2,2 + P: "mr displacement max displace", "Number", "", "A+U",20,20,20 + P: "mr displacement parametric subdivision level", "Integer", "", "A+U",5,5,5 + P: "MaxHandle", "Integer", "", "A+UH",1,0,0 + } + Shading: T + Culling: "CullingOff" + } + Material: 1826343864784, "Material::Default", "" { + Version: 102 + ShadingModel: "phong" + MultiLayer: 0 + Properties70: { + P: "AmbientColor", "Color", "", "A",0,0,0 + P: "DiffuseColor", "Color", "", "A",1,1,1 + P: "TransparencyFactor", "Number", "", "A",1 + P: "SpecularColor", "Color", "", "A",0,0,0 + P: "ShininessExponent", "Number", "", "A",2 + P: "Emissive", "Vector3D", "Vector", "",0,0,0 + P: "Ambient", "Vector3D", "Vector", "",0,0,0 + P: "Diffuse", "Vector3D", "Vector", "",1,1,1 + P: "Specular", "Vector3D", "Vector", "",0,0,0 + P: "Shininess", "double", "Number", "",2 + P: "Opacity", "double", "Number", "",1 + P: "Reflectivity", "double", "Number", "",0 + } + } + Video: 1826343863824, "Video::Map #2", "Clip" { + Type: "Clip" + Properties70: { + P: "Path", "KString", "XRefUrl", "", "U:/Some/Absolute/Path/paper.png" + P: "RelPath", "KString", "XRefUrl", "", "paper.png" + } + UseMipMap: 0 + Filename: "U:/Some/Absolute/Path/paper.png" + RelativeFilename: "paper.png" + Content: , + "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" + } + Texture: 1826343863344, "Texture::Map #2", "" { + Type: "TextureVideoClip" + Version: 202 + TextureName: "Texture::Map #2" + Properties70: { + P: "CurrentTextureBlendMode", "enum", "", "",0 + P: "UVSet", "KString", "", "", "UVChannel_1" + P: "UseMaterial", "bool", "", "",1 + } + Media: "Video::Map #2" + FileName: "U:/Some/Absolute/Path/paper.png" + RelativeFilename: "paper.png" + ModelUVTranslation: 0,0 + ModelUVScaling: 1,1 + Texture_Alpha_Source: "None" + Cropping: 0,0,0,0 + } + AnimationStack: 1827077611568, "AnimStack::Take 001", "" { + Properties70: { + P: "LocalStop", "KTime", "Time", "",153953860000 + P: "ReferenceStop", "KTime", "Time", "",153953860000 + } + } + AnimationCurveNode: 1827077610320, "AnimCurveNode::mr displacement use global settings", "" { + Properties70: { + P: "d|mr displacement use global settings", "Bool", "", "A",1 + } + } + AnimationCurveNode: 1827077600128, "AnimCurveNode::mr displacement view dependent", "" { + Properties70: { + P: "d|mr displacement view dependent", "Bool", "", "A",1 + } + } + AnimationCurveNode: 1827077602624, "AnimCurveNode::mr displacement method", "" { + Properties70: { + P: "d|mr displacement method", "Integer", "", "A",6 + } + } + AnimationCurveNode: 1827077604912, "AnimCurveNode::mr displacement smoothing on", "" { + Properties70: { + P: "d|mr displacement smoothing on", "Bool", "", "A",1 + } + } + AnimationCurveNode: 1827077603664, "AnimCurveNode::mr displacement edge length", "" { + Properties70: { + P: "d|mr displacement edge length", "Number", "", "A",2 + } + } + AnimationCurveNode: 1827077606160, "AnimCurveNode::mr displacement max displace", "" { + Properties70: { + P: "d|mr displacement max displace", "Number", "", "A",20 + } + } + AnimationCurveNode: 1827077607824, "AnimCurveNode::mr displacement parametric subdivision level", "" { + Properties70: { + P: "d|mr displacement parametric subdivision level", "Integer", "", "A",5 + } + } + AnimationCurveNode: 1827077611360, "AnimCurveNode::MaxHandle", "" { + Properties70: { + P: "d|MaxHandle", "Integer", "", "A",1 + } + } + AnimationLayer: 1827070138064, "AnimLayer::BaseLayer", "" { + } + CollectionExclusive: 1827093511360, "DisplayLayer::Box", "DisplayLayer" { + Properties70: { + P: "Color", "ColorRGB", "Color", "",0.607999980449677,0,0.157000005245209 + } + } +} + +; Object connections +;------------------------------------------------------------------ + +Connections: { + + ;Model::Box, Model::RootNode + C: "OO",1826985145024,0 + + ;AnimLayer::BaseLayer, AnimStack::Take 001 + C: "OO",1827070138064,1827077611568 + + ;AnimCurveNode::mr displacement use global settings, AnimLayer::BaseLayer + C: "OO",1827077610320,1827070138064 + + ;AnimCurveNode::mr displacement view dependent, AnimLayer::BaseLayer + C: "OO",1827077600128,1827070138064 + + ;AnimCurveNode::mr displacement method, AnimLayer::BaseLayer + C: "OO",1827077602624,1827070138064 + + ;AnimCurveNode::mr displacement smoothing on, AnimLayer::BaseLayer + C: "OO",1827077604912,1827070138064 + + ;AnimCurveNode::mr displacement edge length, AnimLayer::BaseLayer + C: "OO",1827077603664,1827070138064 + + ;AnimCurveNode::mr displacement max displace, AnimLayer::BaseLayer + C: "OO",1827077606160,1827070138064 + + ;AnimCurveNode::mr displacement parametric subdivision level, AnimLayer::BaseLayer + C: "OO",1827077607824,1827070138064 + + ;AnimCurveNode::MaxHandle, AnimLayer::BaseLayer + C: "OO",1827077611360,1827070138064 + + ;Texture::Map #2, Material::Default + C: "OP",1826343863344,1826343864784, "DiffuseColor" + + ;Texture::Map #2, Material::Default + C: "OP",1826343863344,1826343864784, "TransparentColor" + + ;Video::Map #2, Texture::Map #2 + C: "OO",1826343863824,1826343863344 + + ;Geometry::, Model::Box + C: "OO",1827080161440,1826985145024 + + ;Material::Default, Model::Box + C: "OO",1826343864784,1826985145024 + + ;AnimCurveNode::mr displacement use global settings, Model::Box + C: "OP",1827077610320,1826985145024, "mr displacement use global settings" + + ;AnimCurveNode::mr displacement view dependent, Model::Box + C: "OP",1827077600128,1826985145024, "mr displacement view dependent" + + ;AnimCurveNode::mr displacement method, Model::Box + C: "OP",1827077602624,1826985145024, "mr displacement method" + + ;AnimCurveNode::mr displacement smoothing on, Model::Box + C: "OP",1827077604912,1826985145024, "mr displacement smoothing on" + + ;AnimCurveNode::mr displacement edge length, Model::Box + C: "OP",1827077603664,1826985145024, "mr displacement edge length" + + ;AnimCurveNode::mr displacement max displace, Model::Box + C: "OP",1827077606160,1826985145024, "mr displacement max displace" + + ;AnimCurveNode::mr displacement parametric subdivision level, Model::Box + C: "OP",1827077607824,1826985145024, "mr displacement parametric subdivision level" + + ;AnimCurveNode::MaxHandle, Model::Box + C: "OP",1827077611360,1826985145024, "MaxHandle" + + ;Model::Box, DisplayLayer::Box + C: "OO",1826985145024,1827093511360 +} +;Takes section +;---------------------------------------------------- + +Takes: { + Current: "Take 001" + Take: "Take 001" { + FileName: "Take_001.tak" + LocalTime: 0,153953860000 + ReferenceTime: 0,153953860000 + } +} diff --git a/test/unit/utFBXImporterExporter.cpp b/test/unit/utFBXImporterExporter.cpp index f0de0c741..da96e7212 100644 --- a/test/unit/utFBXImporterExporter.cpp +++ b/test/unit/utFBXImporterExporter.cpp @@ -128,4 +128,28 @@ TEST_F(utFBXImporterExporter, importEmbeddedAsciiTest) { aiString path; aiTextureMapMode modes[2]; EXPECT_EQ(aiReturn_SUCCESS, mat->GetTexture(aiTextureType_DIFFUSE, 0, &path, nullptr, nullptr, nullptr, nullptr, modes)); + + ASSERT_EQ(1, scene->mNumTextures); + ASSERT_TRUE(scene->mTextures[0]->pcData); + ASSERT_EQ(439176u, scene->mTextures[0]->mWidth) << "FBX ASCII base64 compression splits data by 512Kb, it should be two parts for this texture"; +} + +TEST_F(utFBXImporterExporter, importEmbeddedFragmentedAsciiTest) { + // see https://github.com/assimp/assimp/issues/1957 + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/FBX/embedded_ascii/box_embedded_texture_fragmented.fbx", aiProcess_ValidateDataStructure); + EXPECT_NE(nullptr, scene); + + EXPECT_EQ(1, scene->mNumMaterials); + aiMaterial *mat = scene->mMaterials[0]; + ASSERT_NE(nullptr, mat); + + aiString path; + aiTextureMapMode modes[2]; + ASSERT_EQ(aiReturn_SUCCESS, mat->GetTexture(aiTextureType_DIFFUSE, 0, &path, nullptr, nullptr, nullptr, nullptr, modes)); + ASSERT_STREQ(path.C_Str(), "paper.png"); + + ASSERT_EQ(1, scene->mNumTextures); + ASSERT_TRUE(scene->mTextures[0]->pcData); + ASSERT_EQ(968029u, scene->mTextures[0]->mWidth) << "FBX ASCII base64 compression splits data by 512Kb, it should be two parts for this texture"; } From 6c13ec8190cf4c15e0ab98df241d65d72a1dc11e Mon Sep 17 00:00:00 2001 From: Mike Samsonov Date: Tue, 14 May 2019 15:45:57 +0100 Subject: [PATCH 175/187] fix for clang runtime checks for overflow --- code/FBXUtil.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/code/FBXUtil.cpp b/code/FBXUtil.cpp index 43c1a3bbb..0c73ba9f9 100644 --- a/code/FBXUtil.cpp +++ b/code/FBXUtil.cpp @@ -170,6 +170,7 @@ size_t DecodeBase64(const char* in, size_t inLength, uint8_t* out, size_t maxOut { out[dst_offset++] = static_cast((val >> valb) & 0xFF); valb -= 8; + val &= 0xFFF; } } return dst_offset; From ff4ab7ff2ec3a8002be22aeb14988bb775614f69 Mon Sep 17 00:00:00 2001 From: Brian Naranjo Date: Fri, 17 May 2019 11:48:57 -0700 Subject: [PATCH 176/187] Add mesh names to imported ASCII STL --- code/STLLoader.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/code/STLLoader.cpp b/code/STLLoader.cpp index c615561a8..c7144e444 100644 --- a/code/STLLoader.cpp +++ b/code/STLLoader.cpp @@ -278,6 +278,7 @@ void STLImporter::LoadASCIIFile( aiNode *root ) { } std::string name( szMe, temp ); node->mName.Set( name.c_str() ); + pMesh->mName.Set( name.c_str() ); //pScene->mRootNode->mName.length = temp; //memcpy(pScene->mRootNode->mName.data,szMe,temp); //pScene->mRootNode->mName.data[temp] = '\0'; From 45c12cd5fb10803f359852c4866cac5031848429 Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Mon, 20 May 2019 13:49:56 +0100 Subject: [PATCH 177/187] Update irrXMLWrapper.h Use std::find to find and remove null characters from XML --- include/assimp/irrXMLWrapper.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/include/assimp/irrXMLWrapper.h b/include/assimp/irrXMLWrapper.h index ec8ee7c76..290cf67ea 100644 --- a/include/assimp/irrXMLWrapper.h +++ b/include/assimp/irrXMLWrapper.h @@ -91,14 +91,15 @@ public: stream->Read(&data[0],data.size(),1); // Remove null characters from the input sequence otherwise the parsing will utterly fail - unsigned int size = 0; - unsigned int size_max = static_cast(data.size()); - for(unsigned int i = 0; i < size_max; i++) { - if(data[i] != '\0') { - data[size++] = data[i]; - } + // std::find is usually much faster than manually iterating + // It is very unlikely that there will be any null characters + auto null_char_iter = std::find(data.begin(), data.end(), '\0'); + + while (null_char_iter != data.end()) + { + null_char_iter = data.erase(null_char_iter); + null_char_iter = std::find(null_char_iter, data.end(), '\0'); } - data.resize(size); BaseImporter::ConvertToUTF8(data); } From b10dc5747b9004785e95e33321a832be7a39a698 Mon Sep 17 00:00:00 2001 From: Andor Goetzendorff Date: Mon, 20 May 2019 15:35:19 +0200 Subject: [PATCH 178/187] Revert "Remove experimental change unintentionally included in commit f001dfc8" This reverts commit e45d120f218206cd44e3c5aa31b23096183e6c65. --- port/PyAssimp/pyassimp/helper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index 9042b7f9f..62384f54f 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -192,9 +192,9 @@ def try_load_functions(library_path, dll): # library found! from .structs import Scene, ExportDataBlob - load.restype = ctype.POINTER(Scene) - load_mem.restype = ctype.POINTER(Scene) - export2blob.restype = ctype.POINTER(ExportDataBlob) + load.restype = ctypes.POINTER(Scene) + load_mem.restype = ctypes.POINTER(Scene) + export2blob.restype = ctypes.POINTER(ExportDataBlob) return (library_path, load, load_mem, export, export2blob, release, dll) def search_library(): From 0eec1c1d4a29518e559d2522ab2b8c8be9d1a343 Mon Sep 17 00:00:00 2001 From: Mike Samsonov Date: Tue, 21 May 2019 16:05:38 +0100 Subject: [PATCH 179/187] One map to rule them all --- code/FBXConverter.cpp | 9 ++++----- code/FBXConverter.h | 5 +---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 50ea60b91..5031665a6 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -442,16 +442,15 @@ namespace Assimp { void FBXConverter::GetUniqueName(const std::string &name, std::string &uniqueName) { uniqueName = name; - auto it_pair = mNodeNameInstances.insert({ name, 0 }); // duplicate node name instance count + auto it_pair = mNodeNames.insert({ name, 0 }); // duplicate node name instance count unsigned int& i = it_pair.first->second; - auto uniqueIt_pair = mNodeNames.insert(uniqueName); - while (!uniqueIt_pair.second) + while (!it_pair.second) { i++; - std::stringstream ext; + std::ostringstream ext; ext << name << std::setfill('0') << std::setw(3) << i; uniqueName = ext.str(); - uniqueIt_pair = mNodeNames.insert(uniqueName); + it_pair = mNodeNames.insert({ uniqueName, 0 }); } } diff --git a/code/FBXConverter.h b/code/FBXConverter.h index f5de99ae3..dba7c0a05 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -462,10 +462,7 @@ private: NodeAnimBitMap node_anim_chain_bits; // number of nodes with the same name - using NodeAnimNameMap = std::unordered_map; - NodeAnimNameMap mNodeNameInstances; - - using NodeNameCache = std::unordered_set; + using NodeNameCache = std::unordered_map; NodeNameCache mNodeNames; double anim_fps; From a60b7696e3509b3e95d80f2e0557464b572bff62 Mon Sep 17 00:00:00 2001 From: Alexandre Avenel Date: Sun, 17 Feb 2019 11:44:02 +0100 Subject: [PATCH 180/187] Parse post process arguments when using info tool --- tools/assimp_cmd/Info.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/assimp_cmd/Info.cpp b/tools/assimp_cmd/Info.cpp index b504083d3..d730b9308 100644 --- a/tools/assimp_cmd/Info.cpp +++ b/tools/assimp_cmd/Info.cpp @@ -317,10 +317,15 @@ int Assimp_Info (const char* const* params, unsigned int num) { return 1; } - // do maximum post-processing unless -r was specified + // Parse post-processing flags unless -r was specified ImportData import; if (!raw) { - import.ppFlags = aiProcessPreset_TargetRealtime_MaxQuality; + // get import flags + ProcessStandardArguments(import, params + 1, num - 1); + + //No custom post process flags defined, we set all the post process flags active + if(import.ppFlags == 0) + import.ppFlags |= aiProcessPreset_TargetRealtime_MaxQuality; } // import the main model From 5fa750fda03b2f4d67493e2cccbf1ca7d9b61ee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Wed, 22 May 2019 10:19:32 +0200 Subject: [PATCH 181/187] Fix code files encoding to make them all UTF-8 --- code/Importer/IFC/IFCBoolean.cpp | 2 +- code/res/resource.h | 4 +-- contrib/irrXML/irrString.h | 2 +- contrib/poly2tri/AUTHORS | 2 +- .../contrib/dotzlib/DotZLib/ChecksumImpl.cs | 4 +-- .../contrib/dotzlib/DotZLib/CircularBuffer.cs | 2 +- .../zlib/contrib/dotzlib/DotZLib/CodecBase.cs | 2 +- .../zlib/contrib/dotzlib/DotZLib/Deflater.cs | 2 +- .../zlib/contrib/dotzlib/DotZLib/DotZLib.cs | 2 +- .../contrib/dotzlib/DotZLib/GZipStream.cs | 2 +- .../zlib/contrib/dotzlib/DotZLib/Inflater.cs | 2 +- tools/assimp_view/stdafx.cpp | 4 +-- tools/assimp_view/stdafx.h | 26 +++++++++---------- 13 files changed, 28 insertions(+), 28 deletions(-) diff --git a/code/Importer/IFC/IFCBoolean.cpp b/code/Importer/IFC/IFCBoolean.cpp index 337e1d40b..d30a87f62 100644 --- a/code/Importer/IFC/IFCBoolean.cpp +++ b/code/Importer/IFC/IFCBoolean.cpp @@ -256,7 +256,7 @@ bool IntersectsBoundaryProfile(const IfcVector3& e0, const IfcVector3& e1, const for( size_t i = 0, bcount = boundary.size(); i < bcount; ++i ) { IfcVector3 b01 = boundary[(i + 1) % bcount] - boundary[i]; IfcVector3 b12 = boundary[(i + 2) % bcount] - boundary[(i + 1) % bcount]; - IfcVector3 b1_side = IfcVector3(b01.y, -b01.x, 0.0); // rotated 90° clockwise in Z plane + IfcVector3 b1_side = IfcVector3(b01.y, -b01.x, 0.0); // rotated 90° clockwise in Z plane // Warning: rough estimate only. A concave poly with lots of small segments each featuring a small counter rotation // could fool the accumulation. Correct implementation would be sum( acos( b01 * b2) * sign( b12 * b1_side)) windingOrder += (b1_side.x*b12.x + b1_side.y*b12.y); diff --git a/code/res/resource.h b/code/res/resource.h index 37d39284f..c28c05073 100644 --- a/code/res/resource.h +++ b/code/res/resource.h @@ -2,8 +2,8 @@ // Microsoft Visual C++ generated include file. // Used by assimp.rc -// Nächste Standardwerte für neue Objekte -// +// Next standard values for new objects +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 diff --git a/contrib/irrXML/irrString.h b/contrib/irrXML/irrString.h index af21b8e51..ff0097b71 100644 --- a/contrib/irrXML/irrString.h +++ b/contrib/irrXML/irrString.h @@ -19,7 +19,7 @@ so you can assign unicode to string and ascii to string Note that the conversation between both is not done using an encoding. Known bugs: -Special characters like 'Ä', 'Ü' and 'Ö' are ignored in the +Special characters like 'Ä', 'Ü' and 'Ö' are ignored in the methods make_upper, make_lower and equals_ignore_case. */ template diff --git a/contrib/poly2tri/AUTHORS b/contrib/poly2tri/AUTHORS index 1736f14bb..aa390660d 100644 --- a/contrib/poly2tri/AUTHORS +++ b/contrib/poly2tri/AUTHORS @@ -1,7 +1,7 @@ Primary Contributors: Mason Green (C++, Python) - Thomas Åhlén (Java) + Thomas Ã…hlén (Java) Other Contributors: diff --git a/contrib/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs b/contrib/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs index b110dae6a..cd1ef44eb 100644 --- a/contrib/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +++ b/contrib/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs @@ -1,5 +1,5 @@ // -// © Copyright Henrik Ravn 2004 +// © Copyright Henrik Ravn 2004 // // Use, modification and distribution are subject to the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -199,4 +199,4 @@ namespace DotZLib } #endregion -} \ No newline at end of file +} diff --git a/contrib/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs b/contrib/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs index 9c8d60195..e7a88b9f4 100644 --- a/contrib/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +++ b/contrib/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs @@ -1,5 +1,5 @@ // -// © Copyright Henrik Ravn 2004 +// © Copyright Henrik Ravn 2004 // // Use, modification and distribution are subject to the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/contrib/zlib/contrib/dotzlib/DotZLib/CodecBase.cs b/contrib/zlib/contrib/dotzlib/DotZLib/CodecBase.cs index b0eb78a02..6ef6d8fab 100644 --- a/contrib/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +++ b/contrib/zlib/contrib/dotzlib/DotZLib/CodecBase.cs @@ -1,5 +1,5 @@ // -// © Copyright Henrik Ravn 2004 +// © Copyright Henrik Ravn 2004 // // Use, modification and distribution are subject to the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/contrib/zlib/contrib/dotzlib/DotZLib/Deflater.cs b/contrib/zlib/contrib/dotzlib/DotZLib/Deflater.cs index 9039f41f6..778a6794d 100644 --- a/contrib/zlib/contrib/dotzlib/DotZLib/Deflater.cs +++ b/contrib/zlib/contrib/dotzlib/DotZLib/Deflater.cs @@ -1,5 +1,5 @@ // -// © Copyright Henrik Ravn 2004 +// © Copyright Henrik Ravn 2004 // // Use, modification and distribution are subject to the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/contrib/zlib/contrib/dotzlib/DotZLib/DotZLib.cs b/contrib/zlib/contrib/dotzlib/DotZLib/DotZLib.cs index 90c7c3b38..a48ed4974 100644 --- a/contrib/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +++ b/contrib/zlib/contrib/dotzlib/DotZLib/DotZLib.cs @@ -1,5 +1,5 @@ // -// © Copyright Henrik Ravn 2004 +// © Copyright Henrik Ravn 2004 // // Use, modification and distribution are subject to the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/contrib/zlib/contrib/dotzlib/DotZLib/GZipStream.cs b/contrib/zlib/contrib/dotzlib/DotZLib/GZipStream.cs index f0eada1d2..07b2f7a9b 100644 --- a/contrib/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +++ b/contrib/zlib/contrib/dotzlib/DotZLib/GZipStream.cs @@ -1,5 +1,5 @@ // -// © Copyright Henrik Ravn 2004 +// © Copyright Henrik Ravn 2004 // // Use, modification and distribution are subject to the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/contrib/zlib/contrib/dotzlib/DotZLib/Inflater.cs b/contrib/zlib/contrib/dotzlib/DotZLib/Inflater.cs index d295f2680..8e900ae20 100644 --- a/contrib/zlib/contrib/dotzlib/DotZLib/Inflater.cs +++ b/contrib/zlib/contrib/dotzlib/DotZLib/Inflater.cs @@ -1,5 +1,5 @@ // -// © Copyright Henrik Ravn 2004 +// © Copyright Henrik Ravn 2004 // // Use, modification and distribution are subject to the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/tools/assimp_view/stdafx.cpp b/tools/assimp_view/stdafx.cpp index 709f0fd9a..bbbb7e0c0 100644 --- a/tools/assimp_view/stdafx.cpp +++ b/tools/assimp_view/stdafx.cpp @@ -1,8 +1,8 @@ // stdafx.cpp : Quelldatei, die nur die Standard-Includes einbindet. // assimp_view.pch ist der vorkompilierte Header. -// stdafx.obj enthält die vorkompilierten Typinformationen. +// stdafx.obj enthält die vorkompilierten Typinformationen. #include "stdafx.h" -// TODO: Auf zusätzliche Header verweisen, die in STDAFX.H +// TODO: Auf zusätzliche Header verweisen, die in STDAFX.H // und nicht in dieser Datei erforderlich sind. diff --git a/tools/assimp_view/stdafx.h b/tools/assimp_view/stdafx.h index 35104d4b0..d3f4692cb 100644 --- a/tools/assimp_view/stdafx.h +++ b/tools/assimp_view/stdafx.h @@ -1,26 +1,26 @@ -// stdafx.h : Includedatei für Standardsystem-Includedateien -// oder häufig verwendete projektspezifische Includedateien, -// die nur in unregelmäßigen Abständen geändert werden. +// stdafx.h : Includedatei für Standardsystem-Includedateien +// oder häufig verwendete projektspezifische Includedateien, +// die nur in unregelmäßigen Abständen geändert werden. // #pragma once -// Ändern Sie folgende Definitionen für Plattformen, die älter als die unten angegebenen sind. -// In MSDN finden Sie die neuesten Informationen über die entsprechenden Werte für die unterschiedlichen Plattformen. -#ifndef WINVER // Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu. -# define WINVER 0x0501 // Ändern Sie dies in den geeigneten Wert für andere Versionen von Windows. +// Ändern Sie folgende Definitionen für Plattformen, die älter als die unten angegebenen sind. +// In MSDN finden Sie die neuesten Informationen über die entsprechenden Werte für die unterschiedlichen Plattformen. +#ifndef WINVER // Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu. +# define WINVER 0x0501 // Ändern Sie dies in den geeigneten Wert für andere Versionen von Windows. #endif -#ifndef _WIN32_WINNT // Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu. -# define _WIN32_WINNT 0x0501 // Ändern Sie dies in den geeigneten Wert für andere Versionen von Windows. +#ifndef _WIN32_WINNT // Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu. +# define _WIN32_WINNT 0x0501 // Ändern Sie dies in den geeigneten Wert für andere Versionen von Windows. #endif -#ifndef _WIN32_WINDOWS // Lassen Sie die Verwendung spezifischer Features von Windows 98 oder später zu. -# define _WIN32_WINDOWS 0x0410 // Ändern Sie dies in den geeigneten Wert für Windows Me oder höher. +#ifndef _WIN32_WINDOWS // Lassen Sie die Verwendung spezifischer Features von Windows 98 oder später zu. +# define _WIN32_WINDOWS 0x0410 // Ändern Sie dies in den geeigneten Wert für Windows Me oder höher. #endif -#ifndef _WIN32_IE // Lassen Sie die Verwendung spezifischer Features von IE 6.0 oder später zu. -#define _WIN32_IE 0x0600 // Ändern Sie dies in den geeigneten Wert für andere Versionen von IE. +#ifndef _WIN32_IE // Lassen Sie die Verwendung spezifischer Features von IE 6.0 oder später zu. +#define _WIN32_IE 0x0600 // Ändern Sie dies in den geeigneten Wert für andere Versionen von IE. #endif // Windows-Headerdateien: From fc7575f5c5a60501fbe1252b7ac7b93207105d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Wed, 22 May 2019 10:23:06 +0200 Subject: [PATCH 182/187] Remove Unix executable bit on code files --- code/FIReader.cpp | 0 code/glTF2Asset.inl | 0 code/glTF2Importer.cpp | 0 code/glTFImporter.cpp | 0 4 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 code/FIReader.cpp mode change 100755 => 100644 code/glTF2Asset.inl mode change 100755 => 100644 code/glTF2Importer.cpp mode change 100755 => 100644 code/glTFImporter.cpp diff --git a/code/FIReader.cpp b/code/FIReader.cpp old mode 100755 new mode 100644 diff --git a/code/glTF2Asset.inl b/code/glTF2Asset.inl old mode 100755 new mode 100644 diff --git a/code/glTF2Importer.cpp b/code/glTF2Importer.cpp old mode 100755 new mode 100644 diff --git a/code/glTFImporter.cpp b/code/glTFImporter.cpp old mode 100755 new mode 100644 From daef984ac603e10ffff19f99eccccb6815151913 Mon Sep 17 00:00:00 2001 From: Alexandre Avenel Date: Wed, 22 May 2019 20:00:33 +0200 Subject: [PATCH 183/187] Optim FindInstancesProcess ComputePositionEpsilon() is a costly function which was called in the inner loop although it only uses data from upper loop. --- code/FindInstancesProcess.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/FindInstancesProcess.cpp b/code/FindInstancesProcess.cpp index be1138116..64907458a 100644 --- a/code/FindInstancesProcess.cpp +++ b/code/FindInstancesProcess.cpp @@ -137,6 +137,11 @@ void FindInstancesProcess::Execute( aiScene* pScene) aiMesh* inst = pScene->mMeshes[i]; hashes[i] = GetMeshHash(inst); + // Find an appropriate epsilon + // to compare position differences against + float epsilon = ComputePositionEpsilon(inst); + epsilon *= epsilon; + for (int a = i-1; a >= 0; --a) { if (hashes[i] == hashes[a]) { @@ -154,12 +159,7 @@ void FindInstancesProcess::Execute( aiScene* pScene) orig->mPrimitiveTypes != inst->mPrimitiveTypes) continue; - // up to now the meshes are equal. find an appropriate - // epsilon to compare position differences against - float epsilon = ComputePositionEpsilon(inst); - epsilon *= epsilon; - - // now compare vertex positions, normals, + // up to now the meshes are equal. Now compare vertex positions, normals, // tangents and bitangents using this epsilon. if (orig->HasPositions()) { if(!CompareArrays(orig->mVertices,inst->mVertices,orig->mNumVertices,epsilon)) From d048bccad1ea3f72906da2d970b30f187db91f33 Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Wed, 22 May 2019 13:54:15 -1000 Subject: [PATCH 184/187] Export static libaries as CMake package When built with BUILD_SHARED_LIBS disabled, the exported CMake targets are modified to reference the static library location. This also fixes version detection for VS2017 and beyond within the target import script. --- CMakeLists.txt | 16 ++++-- assimpTargets-debug.cmake.in | 100 ++++++++++++++++++++++----------- assimpTargets-release.cmake.in | 98 +++++++++++++++++++++----------- assimpTargets.cmake.in | 6 +- 4 files changed, 148 insertions(+), 72 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cda2d4e84..520dd68d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -328,16 +328,24 @@ ENDIF() # cmake configuration files CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimp-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimp-config.cmake" @ONLY IMMEDIATE) CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets.cmake" @ONLY IMMEDIATE) -CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets-debug.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-debug.cmake" @ONLY IMMEDIATE) -CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets-release.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-release.cmake" @ONLY IMMEDIATE) +IF (is_multi_config) + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets-debug.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-debug.cmake" @ONLY IMMEDIATE) + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets-release.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-release.cmake" @ONLY IMMEDIATE) + SET(PACKAGE_TARGETS_FILE "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-debug.cmake" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-release.cmake") +ELSEIF (CMAKE_BUILD_TYPE STREQUAL Debug) + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets-debug.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-debug.cmake" @ONLY IMMEDIATE) + SET(PACKAGE_TARGETS_FILE "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-debug.cmake") +ELSE() + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets-release.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-release.cmake" @ONLY IMMEDIATE) + SET(PACKAGE_TARGETS_FILE "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-release.cmake") +ENDIF() CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimp-config-version.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimp-config-version.cmake" @ONLY IMMEDIATE) #we should generated these scripts after CMake VERSION 3.0.2 using export(EXPORT ...) and write_basic_package_version_file(...) INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/assimp-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/assimp-config-version.cmake" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-debug.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-release.cmake" + ${PACKAGE_TARGETS_FILE} DESTINATION "${ASSIMP_LIB_INSTALL_DIR}/cmake/assimp-${ASSIMP_VERSION_MAJOR}.${ASSIMP_VERSION_MINOR}" COMPONENT ${LIBASSIMP-DEV_COMPONENT}) FIND_PACKAGE( DirectX ) diff --git a/assimpTargets-debug.cmake.in b/assimpTargets-debug.cmake.in index a83e6c22d..6ee6b2886 100644 --- a/assimpTargets-debug.cmake.in +++ b/assimpTargets-debug.cmake.in @@ -5,48 +5,75 @@ # Commands may need to know the format version. set(CMAKE_IMPORT_FILE_VERSION 1) +set(ASSIMP_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@) + if(MSVC) - if( MSVC70 OR MSVC71 ) - set(MSVC_PREFIX "vc70") - elseif( MSVC80 ) - set(MSVC_PREFIX "vc80") - elseif( MSVC90 ) - set(MSVC_PREFIX "vc90") - elseif( MSVC10 ) - set(MSVC_PREFIX "vc100") - elseif( MSVC11 ) - set(MSVC_PREFIX "vc110") - elseif( MSVC12 ) - set(MSVC_PREFIX "vc120") - elseif( MSVC14 ) - set(MSVC_PREFIX "vc140") + if(MSVC_TOOLSET_VERSION) + set(MSVC_PREFIX "vc${MSVC_TOOLSET_VERSION}") else() - set(MSVC_PREFIX "vc150") + if( MSVC70 OR MSVC71 ) + set(MSVC_PREFIX "vc70") + elseif( MSVC80 ) + set(MSVC_PREFIX "vc80") + elseif( MSVC90 ) + set(MSVC_PREFIX "vc90") + elseif( MSVC10 ) + set(MSVC_PREFIX "vc100") + elseif( MSVC11 ) + set(MSVC_PREFIX "vc110") + elseif( MSVC12 ) + set(MSVC_PREFIX "vc120") + elseif( MSVC14 ) + set(MSVC_PREFIX "vc140") + else() + set(MSVC_PREFIX "vc150") + endif() endif() set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library" ) - set(sharedLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@") - set(importLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_IMPORT_LIBRARY_SUFFIX@") + if(ASSIMP_BUILD_SHARED_LIBS) + set(sharedLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@") + set(importLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_IMPORT_LIBRARY_SUFFIX@") - # Import target "assimp::assimp" for configuration "Debug" - set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) - set_target_properties(assimp::assimp PROPERTIES - IMPORTED_IMPLIB_DEBUG "${_IMPORT_PREFIX}/lib/${importLibraryName}" - IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" - ) - list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) - list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${importLibraryName}") - list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" ) + # Import target "assimp::assimp" for configuration "Debug" + set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_IMPLIB_DEBUG "${_IMPORT_PREFIX}/lib/${importLibraryName}" + IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" + ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${importLibraryName}") + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" ) + else() + set(staticLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_STATIC_LIBRARY_SUFFIX@") + + # Import target "assimp::assimp" for configuration "Debug" + set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/${staticLibraryName}" + ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${staticLibraryName}") + endif() else() - set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@" CACHE STRING "the suffix for the openrave libraries" ) - set(sharedLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@.@ASSIMP_VERSION_MAJOR@") - set_target_properties(assimp::assimp PROPERTIES - IMPORTED_SONAME_DEBUG "${sharedLibraryName}" - IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" + set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@" CACHE STRING "the suffix for the assimp libraries" ) + if(ASSIMP_BUILD_SHARED_LIBS) + set(sharedLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@.@ASSIMP_VERSION_MAJOR@") + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_SONAME_DEBUG "${sharedLibraryName}" + IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" ) - list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) - list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" ) + else() + set(staticLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_STATIC_LIBRARY_SUFFIX@") + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/${staticLibraryName}" + ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${staticLibraryName}" ) + endif() endif() @@ -60,7 +87,11 @@ set( ASSIMP_CXX_FLAGS ) # dynamically linked library set( ASSIMP_LINK_FLAGS "" ) set( ASSIMP_LIBRARY_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_LIB_INSTALL_DIR@") set( ASSIMP_INCLUDE_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_INCLUDE_INSTALL_DIR@") -set( ASSIMP_LIBRARIES ${sharedLibraryName}) +if(ASSIMP_BUILD_SHARED_LIBS) + set( ASSIMP_LIBRARIES ${sharedLibraryName}) +else() + set( ASSIMP_LIBRARIES ${staticLibraryName}) +endif() # for compatibility with pkg-config set(ASSIMP_CFLAGS_OTHER "${ASSIMP_CXX_FLAGS}") @@ -75,4 +106,5 @@ MARK_AS_ADVANCED( ASSIMP_CFLAGS_OTHER ASSIMP_LDFLAGS_OTHER ASSIMP_LIBRARY_SUFFIX + ASSIMP_BUILD_SHARED_LIBS ) diff --git a/assimpTargets-release.cmake.in b/assimpTargets-release.cmake.in index 2efae448a..56bfc3602 100644 --- a/assimpTargets-release.cmake.in +++ b/assimpTargets-release.cmake.in @@ -5,48 +5,75 @@ # Commands may need to know the format version. set(CMAKE_IMPORT_FILE_VERSION 1) +set(ASSIMP_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@) + if(MSVC) - if( MSVC70 OR MSVC71 ) - set(MSVC_PREFIX "vc70") - elseif( MSVC80 ) - set(MSVC_PREFIX "vc80") - elseif( MSVC90 ) - set(MSVC_PREFIX "vc90") - elseif( MSVC10 ) - set(MSVC_PREFIX "vc100") - elseif( MSVC11 ) - set(MSVC_PREFIX "vc110") - elseif( MSVC12 ) - set(MSVC_PREFIX "vc120") - elseif( MSVC14 ) - set(MSVC_PREFIX "vc140") + if(MSVC_TOOLSET_VERSION) + set(MSVC_PREFIX "vc${MSVC_TOOLSET_VERSION}") else() - set(MSVC_PREFIX "vc150") + if( MSVC70 OR MSVC71 ) + set(MSVC_PREFIX "vc70") + elseif( MSVC80 ) + set(MSVC_PREFIX "vc80") + elseif( MSVC90 ) + set(MSVC_PREFIX "vc90") + elseif( MSVC10 ) + set(MSVC_PREFIX "vc100") + elseif( MSVC11 ) + set(MSVC_PREFIX "vc110") + elseif( MSVC12 ) + set(MSVC_PREFIX "vc120") + elseif( MSVC14 ) + set(MSVC_PREFIX "vc140") + else() + set(MSVC_PREFIX "vc150") + endif() endif() set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library" ) - set(sharedLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_SHARED_LIBRARY_SUFFIX@") - set(importLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_IMPORT_LIBRARY_SUFFIX@") + if(ASSIMP_BUILD_SHARED_LIBS) + set(sharedLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_SHARED_LIBRARY_SUFFIX@") + set(importLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_IMPORT_LIBRARY_SUFFIX@") - # Import target "assimp::assimp" for configuration "Release" - set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - set_target_properties(assimp::assimp PROPERTIES - IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/${importLibraryName}" - IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" + # Import target "assimp::assimp" for configuration "Release" + set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/${importLibraryName}" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" ) - list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) - list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${importLibraryName}") - list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${importLibraryName}") + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" ) + else() + set(staticLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_STATIC_LIBRARY_SUFFIX@") + + # Import target "assimp::assimp" for configuration "Release" + set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${staticLibraryName}" + ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${staticLibraryName}") + endif() else() - set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@" CACHE STRING "the suffix for the openrave libraries" ) - set(sharedLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_SHARED_LIBRARY_SUFFIX@.@ASSIMP_VERSION_MAJOR@") - set_target_properties(assimp::assimp PROPERTIES - IMPORTED_SONAME_RELEASE "${sharedLibraryName}" - IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" + set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@" CACHE STRING "the suffix for the assimp libraries" ) + if(ASSIMP_BUILD_SHARED_LIBS) + set(sharedLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_SHARED_LIBRARY_SUFFIX@.@ASSIMP_VERSION_MAJOR@") + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_SONAME_RELEASE "${sharedLibraryName}" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" ) - list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) - list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" ) + else() + set(staticLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_STATIC_LIBRARY_SUFFIX@") + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${staticLibraryName}" + ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${staticLibraryName}" ) + endif() endif() # Commands beyond this point should not need to know the version. @@ -58,7 +85,11 @@ set( ASSIMP_CXX_FLAGS ) # dynamically linked library set( ASSIMP_LINK_FLAGS "" ) set( ASSIMP_LIBRARY_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_LIB_INSTALL_DIR@") set( ASSIMP_INCLUDE_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_INCLUDE_INSTALL_DIR@") -set( ASSIMP_LIBRARIES ${sharedLibraryName}) +if(ASSIMP_BUILD_SHARED_LIBS) + set( ASSIMP_LIBRARIES ${sharedLibraryName}) +else() + set( ASSIMP_LIBRARIES ${staticLibraryName}) +endif() # for compatibility with pkg-config set(ASSIMP_CFLAGS_OTHER "${ASSIMP_CXX_FLAGS}") @@ -73,4 +104,5 @@ MARK_AS_ADVANCED( ASSIMP_CFLAGS_OTHER ASSIMP_LDFLAGS_OTHER ASSIMP_LIBRARY_SUFFIX + ASSIMP_BUILD_SHARED_LIBS ) diff --git a/assimpTargets.cmake.in b/assimpTargets.cmake.in index 68e2c0dec..ab1a8d2c7 100644 --- a/assimpTargets.cmake.in +++ b/assimpTargets.cmake.in @@ -51,7 +51,11 @@ if(_IMPORT_PREFIX STREQUAL "/") endif() # Create imported target assimp::assimp -add_library(assimp::assimp SHARED IMPORTED) +if(@BUILD_SHARED_LIBS@) + add_library(assimp::assimp SHARED IMPORTED) +else() + add_library(assimp::assimp STATIC IMPORTED) +endif() set_target_properties(assimp::assimp PROPERTIES COMPATIBLE_INTERFACE_STRING "assimp_MAJOR_VERSION" From 3924a5c32a135a2f7b2827fe0f7183693b2d6d13 Mon Sep 17 00:00:00 2001 From: Eric Olson Date: Mon, 27 May 2019 12:59:00 -0500 Subject: [PATCH 185/187] Ensure obj is not null before using hasattr Fixes error shown below: File "C:\Users\micro\build2\boxwin_external_libs\pyassimp\core.py", line 320, in load scene = _init(model.contents) File "C:\Users\micro\build2\boxwin_external_libs\pyassimp\core.py", line 206, in _init raise e File "C:\Users\micro\build2\boxwin_external_libs\pyassimp\core.py", line 187, in _init call_init(e, target) File "C:\Users\micro\build2\boxwin_external_libs\pyassimp\core.py", line 80, in call_init _init(obj.contents, obj, caller) File "C:\Users\micro\build2\boxwin_external_libs\pyassimp\core.py", line 214, in _init if _is_init_type(obj): File "C:\Users\micro\build2\boxwin_external_libs\pyassimp\core.py", line 86, in _is_init_type if helper.hasattr_silent(obj,'contents'): #pointer File "C:\Users\micro\build2\boxwin_external_libs\pyassimp\helper.py", line 277, in hasattr_silent return hasattr(object, name) ValueError: NULL pointer access --- port/PyAssimp/pyassimp/core.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index 44163a434..c346e2652 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -82,7 +82,8 @@ def call_init(obj, caller = None): _init(obj,parent=caller) def _is_init_type(obj): - if helper.hasattr_silent(obj,'contents'): #pointer + + if obj and helper.hasattr_silent(obj,'contents'): #pointer return _is_init_type(obj[0]) # null-pointer case that arises when we reach a mesh attribute # like mBitangents which use mNumVertices rather than mNumBitangents From dff92d77331debe5eacaf07c2745fd755c549a01 Mon Sep 17 00:00:00 2001 From: Mark Gillard Date: Mon, 27 May 2019 21:14:50 +0300 Subject: [PATCH 186/187] quality-of-life improvements for Visual Studio --- .gitignore | 7 +++++++ include/assimp/defs.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 49cd60ca8..9dcb6623d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,12 @@ build *.sln *.ncb *.vcproj +*.vcxproj.user +*.VC.db +*.VC.db-shm +*.VC.db-wal +*.VC.opendb +*.ipch # Output bin/ @@ -32,6 +38,7 @@ cmake_uninstall.cmake *.dir/ assimp-config.cmake assimp-config-version.cmake +assimpTargets*.cmake # MakeFile Makefile diff --git a/include/assimp/defs.h b/include/assimp/defs.h index 4a177e3c3..2631263f5 100644 --- a/include/assimp/defs.h +++ b/include/assimp/defs.h @@ -293,7 +293,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef _MSC_VER # define AI_NO_EXCEPT noexcept #else -# if (_MSC_VER == 1915 ) +# if (_MSC_VER >= 1915 ) # define AI_NO_EXCEPT noexcept # else # define AI_NO_EXCEPT From 48ed2d2d3c6cc1fa73d3ced821b5189de569bc53 Mon Sep 17 00:00:00 2001 From: Mike Samsonov Date: Thu, 30 May 2019 10:54:44 +0100 Subject: [PATCH 187/187] Double precision fix --- code/FBXParser.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/FBXParser.cpp b/code/FBXParser.cpp index fe63866a0..5d5c2c6c1 100644 --- a/code/FBXParser.cpp +++ b/code/FBXParser.cpp @@ -643,9 +643,9 @@ void ParseVectorDataArray(std::vector& out, const Element& el) if (type == 'd') { const double* d = reinterpret_cast(&buff[0]); for (unsigned int i = 0; i < count3; ++i, d += 3) { - out.push_back(aiVector3D(static_cast(d[0]), - static_cast(d[1]), - static_cast(d[2]))); + out.push_back(aiVector3D(static_cast(d[0]), + static_cast(d[1]), + static_cast(d[2]))); } // for debugging /*for ( size_t i = 0; i < out.size(); i++ ) {