ColladaExporter cleanup

Namespace, NULL and includes
pull/3188/head
RichardTea 2020-05-01 11:39:43 +01:00
parent ee16d2c4c9
commit 5b9f207f1f
3 changed files with 23 additions and 28 deletions

View File

@ -44,9 +44,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef ASSIMP_BUILD_NO_COLLADA_EXPORTER #ifndef ASSIMP_BUILD_NO_COLLADA_EXPORTER
#include "ColladaExporter.h" #include "ColladaExporter.h"
#include <assimp/Bitmap.h> #include <assimp/Bitmap.h>
#include <assimp/ColladaMetaData.h> #include <assimp/ColladaMetaData.h>
#include <assimp/DefaultIOSystem.h> #include <assimp/DefaultIOSystem.h>
#include <assimp/Exceptional.h>
#include <assimp/MathFunctions.h> #include <assimp/MathFunctions.h>
#include <assimp/SceneCombiner.h> #include <assimp/SceneCombiner.h>
#include <assimp/StringUtils.h> #include <assimp/StringUtils.h>
@ -57,15 +59,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <assimp/Exporter.hpp> #include <assimp/Exporter.hpp>
#include <assimp/IOSystem.hpp> #include <assimp/IOSystem.hpp>
#include <assimp/Exceptional.h>
#include <ctime> #include <ctime>
#include <iostream>
#include <memory> #include <memory>
#include <set>
#include <vector>
using namespace Assimp;
namespace Assimp { namespace Assimp {
@ -84,7 +79,7 @@ void ExportSceneCollada(const char *pFile, IOSystem *pIOSystem, const aiScene *p
// we're still here - export successfully completed. Write result to the given IOSYstem // we're still here - export successfully completed. Write result to the given IOSYstem
std::unique_ptr<IOStream> outfile(pIOSystem->Open(pFile, "wt")); std::unique_ptr<IOStream> outfile(pIOSystem->Open(pFile, "wt"));
if (outfile == NULL) { if (outfile == nullptr) {
throw DeadlyExportError("could not open output .dae file: " + std::string(pFile)); throw DeadlyExportError("could not open output .dae file: " + std::string(pFile));
} }
@ -92,8 +87,6 @@ void ExportSceneCollada(const char *pFile, IOSystem *pIOSystem, const aiScene *p
outfile->Write(iDoTheExportThing.mOutput.str().c_str(), static_cast<size_t>(iDoTheExportThing.mOutput.tellp()), 1); outfile->Write(iDoTheExportThing.mOutput.str().c_str(), static_cast<size_t>(iDoTheExportThing.mOutput.tellp()), 1);
} }
} // end of namespace Assimp
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Encodes a string into a valid XML ID using the xsd:ID schema qualifications. // Encodes a string into a valid XML ID using the xsd:ID schema qualifications.
static const std::string XMLIDEncode(const std::string &name) { static const std::string XMLIDEncode(const std::string &name) {
@ -207,7 +200,7 @@ void ColladaExporter::WriteHeader() {
static const unsigned int date_nb_chars = 20; static const unsigned int date_nb_chars = 20;
char date_str[date_nb_chars]; char date_str[date_nb_chars];
std::time_t date = std::time(NULL); std::time_t date = std::time(nullptr);
std::strftime(date_str, date_nb_chars, "%Y-%m-%dT%H:%M:%S", std::localtime(&date)); std::strftime(date_str, date_nb_chars, "%Y-%m-%dT%H:%M:%S", std::localtime(&date));
aiVector3D scaling; aiVector3D scaling;
@ -358,7 +351,7 @@ void ColladaExporter::WriteTextures() {
std::string name = mFile + "_texture_" + (i < 1000 ? "0" : "") + (i < 100 ? "0" : "") + (i < 10 ? "0" : "") + str + "." + ((const char *)texture->achFormatHint); std::string name = mFile + "_texture_" + (i < 1000 ? "0" : "") + (i < 100 ? "0" : "") + (i < 10 ? "0" : "") + str + "." + ((const char *)texture->achFormatHint);
std::unique_ptr<IOStream> outfile(mIOSystem->Open(mPath + mIOSystem->getOsSeparator() + name, "wb")); std::unique_ptr<IOStream> outfile(mIOSystem->Open(mPath + mIOSystem->getOsSeparator() + name, "wb"));
if (outfile == NULL) { if (outfile == nullptr) {
throw DeadlyExportError("could not open output texture file: " + mPath + name); throw DeadlyExportError("could not open output texture file: " + mPath + name);
} }
@ -571,7 +564,7 @@ bool ColladaExporter::ReadMaterialSurface(Surface &poSurface, const aiMaterial &
if (pSrcMat.GetTextureCount(pTexture) > 0) { if (pSrcMat.GetTextureCount(pTexture) > 0) {
aiString texfile; aiString texfile;
unsigned int uvChannel = 0; unsigned int uvChannel = 0;
pSrcMat.GetTexture(pTexture, 0, &texfile, NULL, &uvChannel); pSrcMat.GetTexture(pTexture, 0, &texfile, nullptr, &uvChannel);
std::string index_str(texfile.C_Str()); std::string index_str(texfile.C_Str());
@ -1420,7 +1413,7 @@ aiBone *findBone(const aiScene *scene, const aiString &name) {
} }
} }
} }
return NULL; return nullptr;
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
@ -1474,7 +1467,7 @@ const aiNode *findSkeletonRootNode(const aiScene *scene, const aiMesh *mesh) {
} }
} }
return NULL; return nullptr;
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
@ -1636,13 +1629,13 @@ inline std::string MakeUniqueId(const std::unordered_set<std::string> &idSet, co
return result; return result;
} }
void Assimp::ColladaExporter::CreateNodeIds(const aiNode *node) { void ColladaExporter::CreateNodeIds(const aiNode *node) {
GetNodeUniqueId(node); GetNodeUniqueId(node);
for (size_t a = 0; a < node->mNumChildren; ++a) for (size_t a = 0; a < node->mNumChildren; ++a)
CreateNodeIds(node->mChildren[a]); CreateNodeIds(node->mChildren[a]);
} }
std::string Assimp::ColladaExporter::GetNodeUniqueId(const aiNode *node) { std::string ColladaExporter::GetNodeUniqueId(const aiNode *node) {
// Use the pointer as the key. This is safe because the scene is immutable. // Use the pointer as the key. This is safe because the scene is immutable.
auto idIt = mNodeIdMap.find(node); auto idIt = mNodeIdMap.find(node);
if (idIt != mNodeIdMap.cend()) if (idIt != mNodeIdMap.cend())
@ -1669,12 +1662,12 @@ std::string Assimp::ColladaExporter::GetNodeUniqueId(const aiNode *node) {
return idStr; return idStr;
} }
std::string Assimp::ColladaExporter::GetNodeName(const aiNode *node) { std::string ColladaExporter::GetNodeName(const aiNode *node) {
return XMLEscape(node->mName.C_Str()); return XMLEscape(node->mName.C_Str());
} }
std::string Assimp::ColladaExporter::GetBoneUniqueId(const aiBone *bone) { std::string ColladaExporter::GetBoneUniqueId(const aiBone *bone) {
// Find the Node that is this Bone // Find the Node that is this Bone
const aiNode *boneNode = findBoneNode(mScene->mRootNode, bone); const aiNode *boneNode = findBoneNode(mScene->mRootNode, bone);
if (boneNode == nullptr) if (boneNode == nullptr)
@ -1683,7 +1676,7 @@ std::string Assimp::ColladaExporter::GetBoneUniqueId(const aiBone *bone) {
return GetNodeUniqueId(boneNode); return GetNodeUniqueId(boneNode);
} }
std::string Assimp::ColladaExporter::GetObjectUniqueId(AiObjectType type, size_t pIndex) { std::string ColladaExporter::GetObjectUniqueId(AiObjectType type, size_t pIndex) {
auto idIt = GetObjectIdMap(type).find(pIndex); auto idIt = GetObjectIdMap(type).find(pIndex);
if (idIt != GetObjectIdMap(type).cend()) if (idIt != GetObjectIdMap(type).cend())
return idIt->second; return idIt->second;
@ -1693,7 +1686,7 @@ std::string Assimp::ColladaExporter::GetObjectUniqueId(AiObjectType type, size_t
return result.second; return result.second;
} }
std::string Assimp::ColladaExporter::GetObjectName(AiObjectType type, size_t pIndex) { std::string ColladaExporter::GetObjectName(AiObjectType type, size_t pIndex) {
auto objectName = GetObjectNameMap(type).find(pIndex); auto objectName = GetObjectNameMap(type).find(pIndex);
if (objectName != GetObjectNameMap(type).cend()) if (objectName != GetObjectNameMap(type).cend())
return objectName->second; return objectName->second;
@ -1708,7 +1701,7 @@ std::string Assimp::ColladaExporter::GetObjectName(AiObjectType type, size_t pIn
// @param index object index // @param index object index
// @param name in/out. Caller to set the original name if known. // @param name in/out. Caller to set the original name if known.
// @param idStr in/out. Caller to set the preferred id if known. // @param idStr in/out. Caller to set the preferred id if known.
Assimp::ColladaExporter::NameIdPair Assimp::ColladaExporter::AddObjectIndexToMaps(AiObjectType type, size_t index) { ColladaExporter::NameIdPair ColladaExporter::AddObjectIndexToMaps(AiObjectType type, size_t index) {
std::string name; std::string name;
std::string idStr; std::string idStr;
@ -1758,5 +1751,7 @@ Assimp::ColladaExporter::NameIdPair Assimp::ColladaExporter::AddObjectIndexToMap
return std::make_pair(name, idStr); return std::make_pair(name, idStr);
} }
} // end of namespace Assimp
#endif #endif
#endif #endif

View File

@ -46,12 +46,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef AI_COLLADAEXPORTER_H_INC #ifndef AI_COLLADAEXPORTER_H_INC
#define AI_COLLADAEXPORTER_H_INC #define AI_COLLADAEXPORTER_H_INC
#include <assimp/StringUtils.h>
#include <assimp/ai_assert.h> #include <assimp/ai_assert.h>
#include <assimp/light.h>
#include <assimp/material.h> #include <assimp/material.h>
#include <assimp/mesh.h>
#include <assimp/Exporter.hpp>
#include <array> #include <array>
#include <map> #include <map>
@ -61,9 +57,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
struct aiScene; struct aiScene;
struct aiNode; struct aiNode;
struct aiLight;
struct aiBone;
namespace Assimp { namespace Assimp {
class IOSystem;
/// Helper class to export a given scene to a Collada file. Just for my personal /// Helper class to export a given scene to a Collada file. Just for my personal
/// comfort when implementing it. /// comfort when implementing it.
class ColladaExporter { class ColladaExporter {

View File

@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef AI_COLLADAMETADATA_H_INC #ifndef AI_COLLADAMETADATA_H_INC
#define AI_COLLADAMETADATA_H_INC #define AI_COLLADAMETADATA_H_INC
#define AI_METADATA_COLLADA_ID "COLLADA_ID" #define AI_METADATA_COLLADA_ID "Collada_id"
#define AI_METADATA_COLLADA_SID "COLLADA_SID" #define AI_METADATA_COLLADA_SID "Collada_sid"
#endif #endif