summaryrefslogtreecommitdiff
path: root/libs/assimp/code/AssetLib/Raw
diff options
context:
space:
mode:
Diffstat (limited to 'libs/assimp/code/AssetLib/Raw')
-rw-r--r--libs/assimp/code/AssetLib/Raw/RawLoader.cpp302
-rw-r--r--libs/assimp/code/AssetLib/Raw/RawLoader.h108
2 files changed, 0 insertions, 410 deletions
diff --git a/libs/assimp/code/AssetLib/Raw/RawLoader.cpp b/libs/assimp/code/AssetLib/Raw/RawLoader.cpp
deleted file mode 100644
index bfd2e6d..0000000
--- a/libs/assimp/code/AssetLib/Raw/RawLoader.cpp
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
----------------------------------------------------------------------------
-Open Asset Import Library (assimp)
----------------------------------------------------------------------------
-
-Copyright (c) 2006-2022, 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.
----------------------------------------------------------------------------
-*/
-
-/** @file RawLoader.cpp
- * @brief Implementation of the RAW importer class
- */
-
-#ifndef ASSIMP_BUILD_NO_RAW_IMPORTER
-
-// internal headers
-#include "RawLoader.h"
-#include <assimp/ParsingUtils.h>
-#include <assimp/fast_atof.h>
-#include <assimp/importerdesc.h>
-#include <assimp/scene.h>
-#include <assimp/DefaultLogger.hpp>
-#include <assimp/IOSystem.hpp>
-#include <memory>
-
-using namespace Assimp;
-
-static const aiImporterDesc desc = {
- "Raw Importer",
- "",
- "",
- "",
- aiImporterFlags_SupportTextFlavour,
- 0,
- 0,
- 0,
- 0,
- "raw"
-};
-
-// ------------------------------------------------------------------------------------------------
-// Constructor to be privately used by Importer
-RAWImporter::RAWImporter() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-// Destructor, private as well
-RAWImporter::~RAWImporter() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-// Returns whether the class can handle the format of the given file.
-bool RAWImporter::CanRead(const std::string &filename, IOSystem * /*pIOHandler*/, bool /*checkSig*/) const {
- return SimpleExtensionCheck(filename, "raw");
-}
-
-// ------------------------------------------------------------------------------------------------
-const aiImporterDesc *RAWImporter::GetInfo() const {
- return &desc;
-}
-
-// ------------------------------------------------------------------------------------------------
-// Imports the given file into the given scene structure.
-void RAWImporter::InternReadFile(const std::string &pFile,
- aiScene *pScene, IOSystem *pIOHandler) {
- std::unique_ptr<IOStream> file(pIOHandler->Open(pFile, "rb"));
-
- // Check whether we can read from the file
- if (file.get() == nullptr) {
- throw DeadlyImportError("Failed to open RAW file ", pFile, ".");
- }
-
- // allocate storage and copy the contents of the file to a memory buffer
- // (terminate it with zero)
- std::vector<char> mBuffer2;
- TextFileToBuffer(file.get(), mBuffer2);
- const char *buffer = &mBuffer2[0];
-
- // list of groups loaded from the file
- std::vector<GroupInformation> outGroups(1, GroupInformation("<default>"));
- std::vector<GroupInformation>::iterator curGroup = outGroups.begin();
-
- // now read all lines
- char line[4096];
- while (GetNextLine(buffer, line)) {
- // if the line starts with a non-numeric identifier, it marks
- // the beginning of a new group
- const char *sz = line;
- SkipSpaces(&sz);
- if (IsLineEnd(*sz)) continue;
- if (!IsNumeric(*sz)) {
- const char *sz2 = sz;
- while (!IsSpaceOrNewLine(*sz2))
- ++sz2;
- const unsigned int length = (unsigned int)(sz2 - sz);
-
- // find an existing group with this name
- for (std::vector<GroupInformation>::iterator it = outGroups.begin(), end = outGroups.end();
- it != end; ++it) {
- if (length == (*it).name.length() && !::strcmp(sz, (*it).name.c_str())) {
- curGroup = it;
- sz2 = nullptr;
- break;
- }
- }
- if (sz2) {
- outGroups.push_back(GroupInformation(std::string(sz, length)));
- curGroup = outGroups.end() - 1;
- }
- } else {
- // there can be maximally 12 floats plus an extra texture file name
- float data[12];
- unsigned int num;
- for (num = 0; num < 12; ++num) {
- if (!SkipSpaces(&sz) || !IsNumeric(*sz)) break;
- sz = fast_atoreal_move<float>(sz, data[num]);
- }
- if (num != 12 && num != 9) {
- ASSIMP_LOG_ERROR("A line may have either 9 or 12 floats and an optional texture");
- continue;
- }
-
- MeshInformation *output = nullptr;
-
- const char *sz2 = sz;
- unsigned int length;
- if (!IsLineEnd(*sz)) {
- while (!IsSpaceOrNewLine(*sz2))
- ++sz2;
- length = (unsigned int)(sz2 - sz);
- } else if (9 == num) {
- sz = "%default%";
- length = 9;
- } else {
- sz = "";
- length = 0;
- }
-
- // search in the list of meshes whether we have one with this texture
- for (auto &mesh : (*curGroup).meshes) {
- if (length == mesh.name.length() && (length ? !::strcmp(sz, mesh.name.c_str()) : true)) {
- output = &mesh;
- break;
- }
- }
- // if we don't have the mesh, create it
- if (!output) {
- (*curGroup).meshes.push_back(MeshInformation(std::string(sz, length)));
- output = &((*curGroup).meshes.back());
- }
- if (12 == num) {
- aiColor4D v(data[0], data[1], data[2], 1.0f);
- output->colors.push_back(v);
- output->colors.push_back(v);
- output->colors.push_back(v);
-
- output->vertices.push_back(aiVector3D(data[3], data[4], data[5]));
- output->vertices.push_back(aiVector3D(data[6], data[7], data[8]));
- output->vertices.push_back(aiVector3D(data[9], data[10], data[11]));
- } else {
- output->vertices.push_back(aiVector3D(data[0], data[1], data[2]));
- output->vertices.push_back(aiVector3D(data[3], data[4], data[5]));
- output->vertices.push_back(aiVector3D(data[6], data[7], data[8]));
- }
- }
- }
-
- pScene->mRootNode = new aiNode();
- pScene->mRootNode->mName.Set("<RawRoot>");
-
- // count the number of valid groups
- // (meshes can't be empty)
- for (auto &outGroup : outGroups) {
- if (!outGroup.meshes.empty()) {
- ++pScene->mRootNode->mNumChildren;
- pScene->mNumMeshes += (unsigned int)outGroup.meshes.size();
- }
- }
-
- if (!pScene->mNumMeshes) {
- throw DeadlyImportError("RAW: No meshes loaded. The file seems to be corrupt or empty.");
- }
-
- pScene->mMeshes = new aiMesh *[pScene->mNumMeshes];
- aiNode **cc;
- if (1 == pScene->mRootNode->mNumChildren) {
- cc = &pScene->mRootNode;
- pScene->mRootNode->mNumChildren = 0;
- } else {
- cc = new aiNode *[pScene->mRootNode->mNumChildren];
- memset(cc, 0, sizeof(aiNode *) * pScene->mRootNode->mNumChildren);
- pScene->mRootNode->mChildren = cc;
- }
-
- pScene->mNumMaterials = pScene->mNumMeshes;
- aiMaterial **mats = pScene->mMaterials = new aiMaterial *[pScene->mNumMaterials];
-
- unsigned int meshIdx = 0;
- for (auto &outGroup : outGroups) {
- if (outGroup.meshes.empty()) continue;
-
- aiNode *node;
- if (pScene->mRootNode->mNumChildren) {
- node = *cc = new aiNode();
- node->mParent = pScene->mRootNode;
- } else
- node = *cc;
- node->mName.Set(outGroup.name);
-
- // add all meshes
- node->mNumMeshes = (unsigned int)outGroup.meshes.size();
- unsigned int *pi = node->mMeshes = new unsigned int[node->mNumMeshes];
- for (std::vector<MeshInformation>::iterator it2 = outGroup.meshes.begin(),
- end2 = outGroup.meshes.end();
- it2 != end2; ++it2) {
- ai_assert(!(*it2).vertices.empty());
-
- // allocate the mesh
- *pi++ = meshIdx;
- aiMesh *mesh = pScene->mMeshes[meshIdx] = new aiMesh();
- mesh->mMaterialIndex = meshIdx++;
-
- mesh->mPrimitiveTypes = aiPrimitiveType_TRIANGLE;
-
- // allocate storage for the vertex components and copy them
- mesh->mNumVertices = (unsigned int)(*it2).vertices.size();
- mesh->mVertices = new aiVector3D[mesh->mNumVertices];
- ::memcpy(mesh->mVertices, &(*it2).vertices[0], sizeof(aiVector3D) * mesh->mNumVertices);
-
- if ((*it2).colors.size()) {
- ai_assert((*it2).colors.size() == mesh->mNumVertices);
-
- mesh->mColors[0] = new aiColor4D[mesh->mNumVertices];
- ::memcpy(mesh->mColors[0], &(*it2).colors[0], sizeof(aiColor4D) * mesh->mNumVertices);
- }
-
- // generate triangles
- ai_assert(0 == mesh->mNumVertices % 3);
- aiFace *fc = mesh->mFaces = new aiFace[mesh->mNumFaces = mesh->mNumVertices / 3];
- aiFace *const fcEnd = fc + mesh->mNumFaces;
- unsigned int n = 0;
- while (fc != fcEnd) {
- aiFace &f = *fc++;
- f.mIndices = new unsigned int[f.mNumIndices = 3];
- for (unsigned int m = 0; m < 3; ++m)
- f.mIndices[m] = n++;
- }
-
- // generate a material for the mesh
- aiMaterial *mat = new aiMaterial();
-
- aiColor4D clr(1.0f, 1.0f, 1.0f, 1.0f);
- if ("%default%" == (*it2).name) // a gray default material
- {
- clr.r = clr.g = clr.b = 0.6f;
- } else if ((*it2).name.length() > 0) // a texture
- {
- aiString s;
- s.Set((*it2).name);
- mat->AddProperty(&s, AI_MATKEY_TEXTURE_DIFFUSE(0));
- }
- mat->AddProperty<aiColor4D>(&clr, 1, AI_MATKEY_COLOR_DIFFUSE);
- *mats++ = mat;
- }
- }
-}
-
-#endif // !! ASSIMP_BUILD_NO_RAW_IMPORTER
diff --git a/libs/assimp/code/AssetLib/Raw/RawLoader.h b/libs/assimp/code/AssetLib/Raw/RawLoader.h
deleted file mode 100644
index 6e4c4d1..0000000
--- a/libs/assimp/code/AssetLib/Raw/RawLoader.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2022, 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.
-
-----------------------------------------------------------------------
-*/
-
-/** @file RAWLoader.h
- * @brief Declaration of the RAW importer class.
- */
-#pragma once
-#ifndef AI_RAWLOADER_H_INCLUDED
-#define AI_RAWLOADER_H_INCLUDED
-
-#include <assimp/BaseImporter.h>
-#include <assimp/types.h>
-#include <vector>
-
-namespace Assimp {
-
-// ---------------------------------------------------------------------------
-/** Importer class for the PovRay RAW triangle format
-*/
-class RAWImporter : public BaseImporter {
-public:
- RAWImporter();
- ~RAWImporter();
-
- // -------------------------------------------------------------------
- /** Returns whether the class can handle the format of the given file.
- * See BaseImporter::CanRead() for details.
- */
- bool CanRead( const std::string& pFile, IOSystem* pIOHandler,
- bool checkSig) const override;
-
-protected:
- // -------------------------------------------------------------------
- /** Return importer meta information.
- * See #BaseImporter::GetInfo for the details
- */
- const aiImporterDesc* GetInfo () const override;
-
- // -------------------------------------------------------------------
- /** Imports the given file into the given scene structure.
- * See BaseImporter::InternReadFile() for details
- */
- void InternReadFile( const std::string& pFile, aiScene* pScene,
- IOSystem* pIOHandler) override;
-
-private:
- struct MeshInformation {
- explicit MeshInformation(const std::string& _name) : name(_name) {
- vertices.reserve(100);
- colors.reserve(100);
- }
-
- std::string name;
- std::vector<aiVector3D> vertices;
- std::vector<aiColor4D> colors;
- };
-
- struct GroupInformation {
- explicit GroupInformation(const std::string& _name) : name(_name) {
- meshes.reserve(10);
- }
-
- std::string name;
- std::vector<MeshInformation> meshes;
- };
-};
-
-} // end of namespace Assimp
-
-#endif // AI_3DSIMPORTER_H_IN