vrshoot

annotate libs/assimp/ValidateDataStructure.h @ 0:b2f14e535253

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 01 Feb 2014 19:58:19 +0200
parents
children
rev   line source
nuclear@0 1 /*
nuclear@0 2 Open Asset Import Library (assimp)
nuclear@0 3 ----------------------------------------------------------------------
nuclear@0 4
nuclear@0 5 Copyright (c) 2006-2012, assimp team
nuclear@0 6 All rights reserved.
nuclear@0 7
nuclear@0 8 Redistribution and use of this software in source and binary forms,
nuclear@0 9 with or without modification, are permitted provided that the
nuclear@0 10 following conditions are met:
nuclear@0 11
nuclear@0 12 * Redistributions of source code must retain the above
nuclear@0 13 copyright notice, this list of conditions and the
nuclear@0 14 following disclaimer.
nuclear@0 15
nuclear@0 16 * Redistributions in binary form must reproduce the above
nuclear@0 17 copyright notice, this list of conditions and the
nuclear@0 18 following disclaimer in the documentation and/or other
nuclear@0 19 materials provided with the distribution.
nuclear@0 20
nuclear@0 21 * Neither the name of the assimp team, nor the names of its
nuclear@0 22 contributors may be used to endorse or promote products
nuclear@0 23 derived from this software without specific prior
nuclear@0 24 written permission of the assimp team.
nuclear@0 25
nuclear@0 26 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
nuclear@0 27 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
nuclear@0 28 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
nuclear@0 29 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
nuclear@0 30 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
nuclear@0 31 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
nuclear@0 32 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
nuclear@0 33 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
nuclear@0 34 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
nuclear@0 35 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
nuclear@0 36 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
nuclear@0 37
nuclear@0 38 ----------------------------------------------------------------------
nuclear@0 39 */
nuclear@0 40
nuclear@0 41 /** @file Defines a (dummy) post processing step to validate the loader's
nuclear@0 42 * output data structure (for debugging)
nuclear@0 43 */
nuclear@0 44 #ifndef AI_VALIDATEPROCESS_H_INC
nuclear@0 45 #define AI_VALIDATEPROCESS_H_INC
nuclear@0 46
nuclear@0 47 #include "assimp/types.h"
nuclear@0 48 #include "BaseProcess.h"
nuclear@0 49
nuclear@0 50 struct aiBone;
nuclear@0 51 struct aiMesh;
nuclear@0 52 struct aiAnimation;
nuclear@0 53 struct aiNodeAnim;
nuclear@0 54 struct aiTexture;
nuclear@0 55 struct aiMaterial;
nuclear@0 56 struct aiNode;
nuclear@0 57 struct aiString;
nuclear@0 58
nuclear@0 59 namespace Assimp {
nuclear@0 60
nuclear@0 61 // --------------------------------------------------------------------------------------
nuclear@0 62 /** Validates the whole ASSIMP scene data structure for correctness.
nuclear@0 63 * ImportErrorException is thrown of the scene is corrupt.*/
nuclear@0 64 // --------------------------------------------------------------------------------------
nuclear@0 65 class ValidateDSProcess : public BaseProcess
nuclear@0 66 {
nuclear@0 67 public:
nuclear@0 68
nuclear@0 69 ValidateDSProcess();
nuclear@0 70 ~ValidateDSProcess();
nuclear@0 71
nuclear@0 72 public:
nuclear@0 73 // -------------------------------------------------------------------
nuclear@0 74 bool IsActive( unsigned int pFlags) const;
nuclear@0 75
nuclear@0 76 // -------------------------------------------------------------------
nuclear@0 77 void Execute( aiScene* pScene);
nuclear@0 78
nuclear@0 79 protected:
nuclear@0 80
nuclear@0 81 // -------------------------------------------------------------------
nuclear@0 82 /** Report a validation error. This will throw an exception,
nuclear@0 83 * control won't return.
nuclear@0 84 * @param msg Format string for sprintf().*/
nuclear@0 85 AI_WONT_RETURN void ReportError(const char* msg,...);
nuclear@0 86
nuclear@0 87
nuclear@0 88 // -------------------------------------------------------------------
nuclear@0 89 /** Report a validation warning. This won't throw an exception,
nuclear@0 90 * control will return to the callera.
nuclear@0 91 * @param msg Format string for sprintf().*/
nuclear@0 92 void ReportWarning(const char* msg,...);
nuclear@0 93
nuclear@0 94
nuclear@0 95 // -------------------------------------------------------------------
nuclear@0 96 /** Validates a mesh
nuclear@0 97 * @param pMesh Input mesh*/
nuclear@0 98 void Validate( const aiMesh* pMesh);
nuclear@0 99
nuclear@0 100 // -------------------------------------------------------------------
nuclear@0 101 /** Validates a bone
nuclear@0 102 * @param pMesh Input mesh
nuclear@0 103 * @param pBone Input bone*/
nuclear@0 104 void Validate( const aiMesh* pMesh,const aiBone* pBone,float* afSum);
nuclear@0 105
nuclear@0 106 // -------------------------------------------------------------------
nuclear@0 107 /** Validates an animation
nuclear@0 108 * @param pAnimation Input animation*/
nuclear@0 109 void Validate( const aiAnimation* pAnimation);
nuclear@0 110
nuclear@0 111 // -------------------------------------------------------------------
nuclear@0 112 /** Validates a material
nuclear@0 113 * @param pMaterial Input material*/
nuclear@0 114 void Validate( const aiMaterial* pMaterial);
nuclear@0 115
nuclear@0 116 // -------------------------------------------------------------------
nuclear@0 117 /** Search the material data structure for invalid or corrupt
nuclear@0 118 * texture keys.
nuclear@0 119 * @param pMaterial Input material
nuclear@0 120 * @param type Type of the texture*/
nuclear@0 121 void SearchForInvalidTextures(const aiMaterial* pMaterial,
nuclear@0 122 aiTextureType type);
nuclear@0 123
nuclear@0 124 // -------------------------------------------------------------------
nuclear@0 125 /** Validates a texture
nuclear@0 126 * @param pTexture Input texture*/
nuclear@0 127 void Validate( const aiTexture* pTexture);
nuclear@0 128
nuclear@0 129 // -------------------------------------------------------------------
nuclear@0 130 /** Validates a light source
nuclear@0 131 * @param pLight Input light
nuclear@0 132 */
nuclear@0 133 void Validate( const aiLight* pLight);
nuclear@0 134
nuclear@0 135 // -------------------------------------------------------------------
nuclear@0 136 /** Validates a camera
nuclear@0 137 * @param pCamera Input camera*/
nuclear@0 138 void Validate( const aiCamera* pCamera);
nuclear@0 139
nuclear@0 140 // -------------------------------------------------------------------
nuclear@0 141 /** Validates a bone animation channel
nuclear@0 142 * @param pAnimation Animation channel.
nuclear@0 143 * @param pBoneAnim Input bone animation */
nuclear@0 144 void Validate( const aiAnimation* pAnimation,
nuclear@0 145 const aiNodeAnim* pBoneAnim);
nuclear@0 146
nuclear@0 147 // -------------------------------------------------------------------
nuclear@0 148 /** Validates a node and all of its subnodes
nuclear@0 149 * @param Node Input node*/
nuclear@0 150 void Validate( const aiNode* pNode);
nuclear@0 151
nuclear@0 152 // -------------------------------------------------------------------
nuclear@0 153 /** Validates a string
nuclear@0 154 * @param pString Input string*/
nuclear@0 155 void Validate( const aiString* pString);
nuclear@0 156
nuclear@0 157 private:
nuclear@0 158
nuclear@0 159 // template to validate one of the aiScene::mXXX arrays
nuclear@0 160 template <typename T>
nuclear@0 161 inline void DoValidation(T** array, unsigned int size,
nuclear@0 162 const char* firstName, const char* secondName);
nuclear@0 163
nuclear@0 164 // extended version: checks whethr T::mName occurs twice
nuclear@0 165 template <typename T>
nuclear@0 166 inline void DoValidationEx(T** array, unsigned int size,
nuclear@0 167 const char* firstName, const char* secondName);
nuclear@0 168
nuclear@0 169 // extension to the first template which does also search
nuclear@0 170 // the nodegraph for an item with the same name
nuclear@0 171 template <typename T>
nuclear@0 172 inline void DoValidationWithNameCheck(T** array, unsigned int size,
nuclear@0 173 const char* firstName, const char* secondName);
nuclear@0 174
nuclear@0 175 aiScene* mScene;
nuclear@0 176 };
nuclear@0 177
nuclear@0 178
nuclear@0 179
nuclear@0 180
nuclear@0 181 } // end of namespace Assimp
nuclear@0 182
nuclear@0 183 #endif // AI_VALIDATEPROCESS_H_INC