From 3cd55c54dbf66a320438d743fbd223952043cd39 Mon Sep 17 00:00:00 2001 From: Andy Maloney Date: Wed, 7 Dec 2016 19:33:08 -0500 Subject: Update assimp lib to 3.3.1 The currently included assimp lib is v3.0 from 2012. This updates assimp lib to the latest released version (3.3.1). Change-Id: I15a60e3150c0b268422f23137107b34e4c5c4342 Reviewed-by: Sean Harmer --- src/3rdparty/assimp/code/PlyParser.h | 594 ++++++++++++++++++----------------- 1 file changed, 299 insertions(+), 295 deletions(-) (limited to 'src/3rdparty/assimp/code/PlyParser.h') diff --git a/src/3rdparty/assimp/code/PlyParser.h b/src/3rdparty/assimp/code/PlyParser.h index 9120c20b0..2753c1004 100644 --- a/src/3rdparty/assimp/code/PlyParser.h +++ b/src/3rdparty/assimp/code/PlyParser.h @@ -2,11 +2,11 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2012, assimp team +Copyright (c) 2006-2016, 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 +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 @@ -23,16 +23,16 @@ following conditions are met: 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 +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 +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 +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 +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. ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ParsingUtils.h" +#include namespace Assimp @@ -76,17 +77,17 @@ uint8 ... forms are also used */ enum EDataType { - EDT_Char = 0x0u, - EDT_UChar, - EDT_Short, - EDT_UShort, - EDT_Int, - EDT_UInt, - EDT_Float, - EDT_Double, - - // Marks invalid entries - EDT_INVALID + EDT_Char = 0x0u, + EDT_UChar, + EDT_Short, + EDT_UShort, + EDT_Int, + EDT_UInt, + EDT_Float, + EDT_Double, + + // Marks invalid entries + EDT_INVALID }; // --------------------------------------------------------------------------------- @@ -96,81 +97,81 @@ enum EDataType */ enum ESemantic { - //! vertex position x coordinate - EST_XCoord = 0x0u, - //! vertex position x coordinate - EST_YCoord, - //! vertex position x coordinate - EST_ZCoord, - - //! vertex normal x coordinate - EST_XNormal, - //! vertex normal y coordinate - EST_YNormal, - //! vertex normal z coordinate - EST_ZNormal, - - //! u texture coordinate - EST_UTextureCoord, - //! v texture coordinate - EST_VTextureCoord, - - //! vertex colors, red channel - EST_Red, - //! vertex colors, green channel - EST_Green, - //! vertex colors, blue channel - EST_Blue, - //! vertex colors, alpha channel - EST_Alpha, - - //! vertex index list - EST_VertexIndex, - - //! texture index - EST_TextureIndex, - - //! texture coordinates (stored as element of a face) - EST_TextureCoordinates, - - //! material index - EST_MaterialIndex, - - //! ambient color, red channel - EST_AmbientRed, - //! ambient color, green channel - EST_AmbientGreen, - //! ambient color, blue channel - EST_AmbientBlue, - //! ambient color, alpha channel - EST_AmbientAlpha, - - //! diffuse color, red channel - EST_DiffuseRed, - //! diffuse color, green channel - EST_DiffuseGreen, - //! diffuse color, blue channel - EST_DiffuseBlue, - //! diffuse color, alpha channel - EST_DiffuseAlpha, - - //! specular color, red channel - EST_SpecularRed, - //! specular color, green channel - EST_SpecularGreen, - //! specular color, blue channel - EST_SpecularBlue, - //! specular color, alpha channel - EST_SpecularAlpha, - - //! specular power for phong shading - EST_PhongPower, - - //! opacity between 0 and 1 - EST_Opacity, - - //! Marks invalid entries - EST_INVALID + //! vertex position x coordinate + EST_XCoord = 0x0u, + //! vertex position x coordinate + EST_YCoord, + //! vertex position x coordinate + EST_ZCoord, + + //! vertex normal x coordinate + EST_XNormal, + //! vertex normal y coordinate + EST_YNormal, + //! vertex normal z coordinate + EST_ZNormal, + + //! u texture coordinate + EST_UTextureCoord, + //! v texture coordinate + EST_VTextureCoord, + + //! vertex colors, red channel + EST_Red, + //! vertex colors, green channel + EST_Green, + //! vertex colors, blue channel + EST_Blue, + //! vertex colors, alpha channel + EST_Alpha, + + //! vertex index list + EST_VertexIndex, + + //! texture index + EST_TextureIndex, + + //! texture coordinates (stored as element of a face) + EST_TextureCoordinates, + + //! material index + EST_MaterialIndex, + + //! ambient color, red channel + EST_AmbientRed, + //! ambient color, green channel + EST_AmbientGreen, + //! ambient color, blue channel + EST_AmbientBlue, + //! ambient color, alpha channel + EST_AmbientAlpha, + + //! diffuse color, red channel + EST_DiffuseRed, + //! diffuse color, green channel + EST_DiffuseGreen, + //! diffuse color, blue channel + EST_DiffuseBlue, + //! diffuse color, alpha channel + EST_DiffuseAlpha, + + //! specular color, red channel + EST_SpecularRed, + //! specular color, green channel + EST_SpecularGreen, + //! specular color, blue channel + EST_SpecularBlue, + //! specular color, alpha channel + EST_SpecularAlpha, + + //! specular power for phong shading + EST_PhongPower, + + //! opacity between 0 and 1 + EST_Opacity, + + //! Marks invalid entries + EST_INVALID }; // --------------------------------------------------------------------------------- @@ -180,23 +181,23 @@ enum ESemantic */ enum EElementSemantic { - //! The element is a vertex - EEST_Vertex = 0x0u, + //! The element is a vertex + EEST_Vertex = 0x0u, - //! The element is a face description (index table) - EEST_Face, + //! The element is a face description (index table) + EEST_Face, - //! The element is a tristrip description (index table) - EEST_TriStrip, + //! The element is a tristrip description (index table) + EEST_TriStrip, - //! The element is an edge description (ignored) - EEST_Edge, + //! The element is an edge description (ignored) + EEST_Edge, - //! The element is a material description - EEST_Material, + //! The element is a material description + EEST_Material, - //! Marks invalid entries - EEST_INVALID + //! Marks invalid entries + EEST_INVALID }; // --------------------------------------------------------------------------------- @@ -208,41 +209,44 @@ class Property { public: - //! Default constructor - Property() - : eType (EDT_Int), bIsList(false), eFirstType(EDT_UChar) - {} - - //! Data type of the property - EDataType eType; - - //! Semantical meaning of the property - ESemantic Semantic; - - //! Of the semantic of the property could not be parsed: - //! Contains the semantic specified in the file - std::string szName; - - //! Specifies whether the data type is a list where - //! the first element specifies the size of the list - bool bIsList; - EDataType eFirstType; - - // ------------------------------------------------------------------- - //! Parse a property from a string. The end of the - //! string is either '\n', '\r' or '\0'. Return valie is false - //! if the input string is NOT a valid property (E.g. does - //! not start with the "property" keyword) - static bool ParseProperty (const char* pCur, const char** pCurOut, - Property* pOut); - - // ------------------------------------------------------------------- - //! Parse a data type from a string - static EDataType ParseDataType(const char* pCur,const char** pCurOut); - - // ------------------------------------------------------------------- - //! Parse a semantic from a string - static ESemantic ParseSemantic(const char* pCur,const char** pCurOut); + //! Default constructor + Property() + : eType (EDT_Int), + Semantic(), + bIsList(false), + eFirstType(EDT_UChar) + {} + + //! Data type of the property + EDataType eType; + + //! Semantical meaning of the property + ESemantic Semantic; + + //! Of the semantic of the property could not be parsed: + //! Contains the semantic specified in the file + std::string szName; + + //! Specifies whether the data type is a list where + //! the first element specifies the size of the list + bool bIsList; + EDataType eFirstType; + + // ------------------------------------------------------------------- + //! Parse a property from a string. The end of the + //! string is either '\n', '\r' or '\0'. Return valie is false + //! if the input string is NOT a valid property (E.g. does + //! not start with the "property" keyword) + static bool ParseProperty (const char* pCur, const char** pCurOut, + Property* pOut); + + // ------------------------------------------------------------------- + //! Parse a data type from a string + static EDataType ParseDataType(const char* pCur,const char** pCurOut); + + // ------------------------------------------------------------------- + //! Parse a semantic from a string + static ESemantic ParseSemantic(const char* pCur,const char** pCurOut); }; // --------------------------------------------------------------------------------- @@ -255,195 +259,195 @@ class Element { public: - //! Default constructor - Element() - : eSemantic (EEST_INVALID) - , NumOccur(0) - {} + //! Default constructor + Element() + : eSemantic (EEST_INVALID) + , NumOccur(0) + {} - //! List of properties assigned to the element - //! std::vector to support operator[] - std::vector alProperties; + //! List of properties assigned to the element + //! std::vector to support operator[] + std::vector alProperties; - //! Semantic of the element - EElementSemantic eSemantic; + //! Semantic of the element + EElementSemantic eSemantic; - //! Of the semantic of the element could not be parsed: - //! Contains the semantic specified in the file - std::string szName; + //! Of the semantic of the element could not be parsed: + //! Contains the semantic specified in the file + std::string szName; - //! How many times will the element occur? - unsigned int NumOccur; + //! How many times will the element occur? + unsigned int NumOccur; - // ------------------------------------------------------------------- - //! Parse an element from a string. - //! The function will parse all properties contained in the - //! element, too. - static bool ParseElement (const char* pCur, const char** pCurOut, - Element* pOut); + // ------------------------------------------------------------------- + //! Parse an element from a string. + //! The function will parse all properties contained in the + //! element, too. + static bool ParseElement (const char* pCur, const char** pCurOut, + Element* pOut); - // ------------------------------------------------------------------- - //! Parse a semantic from a string - static EElementSemantic ParseSemantic(const char* pCur, - const char** pCurOut); + // ------------------------------------------------------------------- + //! Parse a semantic from a string + static EElementSemantic ParseSemantic(const char* pCur, + const char** pCurOut); }; // --------------------------------------------------------------------------------- /** \brief Instance of a property in a PLY file */ -class PropertyInstance +class PropertyInstance { public: - //! Default constructor - PropertyInstance () - {} + //! Default constructor + PropertyInstance () + {} - union ValueUnion - { + union ValueUnion + { - //! uInt32 representation of the property. All - // uint types are automatically converted to uint32 - uint32_t iUInt; + //! uInt32 representation of the property. All + // uint types are automatically converted to uint32 + uint32_t iUInt; - //! Int32 representation of the property. All - // int types are automatically converted to int32 - int32_t iInt; + //! Int32 representation of the property. All + // int types are automatically converted to int32 + int32_t iInt; - //! Float32 representation of the property - float fFloat; + //! Float32 representation of the property + float fFloat; - //! Float64 representation of the property - double fDouble; + //! Float64 representation of the property + double fDouble; - }; + }; - // ------------------------------------------------------------------- - //! List of all values parsed. Contains only one value - // for non-list properties - std::vector avList; + // ------------------------------------------------------------------- + //! List of all values parsed. Contains only one value + // for non-list properties + std::vector avList; - // ------------------------------------------------------------------- - //! Parse a property instance - static bool ParseInstance (const char* pCur,const char** pCurOut, - const Property* prop, PropertyInstance* p_pcOut); + // ------------------------------------------------------------------- + //! Parse a property instance + static bool ParseInstance (const char* pCur,const char** pCurOut, + const Property* prop, PropertyInstance* p_pcOut); - // ------------------------------------------------------------------- - //! Parse a property instance in binary format - static bool ParseInstanceBinary (const char* pCur,const char** pCurOut, - const Property* prop, PropertyInstance* p_pcOut,bool p_bBE); + // ------------------------------------------------------------------- + //! Parse a property instance in binary format + static bool ParseInstanceBinary (const char* pCur,const char** pCurOut, + const Property* prop, PropertyInstance* p_pcOut,bool p_bBE); - // ------------------------------------------------------------------- - //! Get the default value for a given data type - static ValueUnion DefaultValue(EDataType eType); + // ------------------------------------------------------------------- + //! Get the default value for a given data type + static ValueUnion DefaultValue(EDataType eType); - // ------------------------------------------------------------------- - //! Parse a value - static bool ParseValue(const char* pCur,const char** pCurOut, - EDataType eType,ValueUnion* out); + // ------------------------------------------------------------------- + //! Parse a value + static bool ParseValue(const char* pCur,const char** pCurOut, + EDataType eType,ValueUnion* out); - // ------------------------------------------------------------------- - //! Parse a binary value - static bool ParseValueBinary(const char* pCur,const char** pCurOut, - EDataType eType,ValueUnion* out,bool p_bBE); + // ------------------------------------------------------------------- + //! Parse a binary value + static bool ParseValueBinary(const char* pCur,const char** pCurOut, + EDataType eType,ValueUnion* out,bool p_bBE); - // ------------------------------------------------------------------- - //! Convert a property value to a given type TYPE - template - static TYPE ConvertTo(ValueUnion v, EDataType eType); + // ------------------------------------------------------------------- + //! Convert a property value to a given type TYPE + template + static TYPE ConvertTo(ValueUnion v, EDataType eType); }; // --------------------------------------------------------------------------------- /** \brief Class for an element instance in a PLY file */ -class ElementInstance +class ElementInstance { public: - //! Default constructor - ElementInstance () - {} + //! Default constructor + ElementInstance () + {} - //! List of all parsed properties - std::vector< PropertyInstance > alProperties; + //! List of all parsed properties + std::vector< PropertyInstance > alProperties; - // ------------------------------------------------------------------- - //! Parse an element instance - static bool ParseInstance (const char* pCur,const char** pCurOut, - const Element* pcElement, ElementInstance* p_pcOut); + // ------------------------------------------------------------------- + //! Parse an element instance + static bool ParseInstance (const char* pCur,const char** pCurOut, + const Element* pcElement, ElementInstance* p_pcOut); - // ------------------------------------------------------------------- - //! Parse a binary element instance - static bool ParseInstanceBinary (const char* pCur,const char** pCurOut, - const Element* pcElement, ElementInstance* p_pcOut,bool p_bBE); + // ------------------------------------------------------------------- + //! Parse a binary element instance + static bool ParseInstanceBinary (const char* pCur,const char** pCurOut, + const Element* pcElement, ElementInstance* p_pcOut,bool p_bBE); }; // --------------------------------------------------------------------------------- /** \brief Class for an element instance list in a PLY file */ -class ElementInstanceList +class ElementInstanceList { public: - //! Default constructor - ElementInstanceList () - {} + //! Default constructor + ElementInstanceList () + {} - //! List of all element instances - std::vector< ElementInstance > alInstances; + //! List of all element instances + std::vector< ElementInstance > alInstances; - // ------------------------------------------------------------------- - //! Parse an element instance list - static bool ParseInstanceList (const char* pCur,const char** pCurOut, - const Element* pcElement, ElementInstanceList* p_pcOut); + // ------------------------------------------------------------------- + //! Parse an element instance list + static bool ParseInstanceList (const char* pCur,const char** pCurOut, + const Element* pcElement, ElementInstanceList* p_pcOut); - // ------------------------------------------------------------------- - //! Parse a binary element instance list - static bool ParseInstanceListBinary (const char* pCur,const char** pCurOut, - const Element* pcElement, ElementInstanceList* p_pcOut,bool p_bBE); + // ------------------------------------------------------------------- + //! Parse a binary element instance list + static bool ParseInstanceListBinary (const char* pCur,const char** pCurOut, + const Element* pcElement, ElementInstanceList* p_pcOut,bool p_bBE); }; // --------------------------------------------------------------------------------- -/** \brief Class to represent the document object model of an ASCII or binary +/** \brief Class to represent the document object model of an ASCII or binary * (both little and big-endian) PLY file */ class DOM { public: - //! Default constructor - DOM() - {} + //! Default constructor + DOM() + {} - //! Contains all elements of the file format - std::vector alElements; - //! Contains the real data of each element's instance list - std::vector alElementData; + //! Contains all elements of the file format + std::vector alElements; + //! Contains the real data of each element's instance list + std::vector alElementData; - //! Parse the DOM for a PLY file. The input string is assumed - //! to be terminated with zero - static bool ParseInstance (const char* pCur,DOM* p_pcOut); - static bool ParseInstanceBinary (const char* pCur, - DOM* p_pcOut,bool p_bBE); + //! Parse the DOM for a PLY file. The input string is assumed + //! to be terminated with zero + static bool ParseInstance (const char* pCur,DOM* p_pcOut); + static bool ParseInstanceBinary (const char* pCur, + DOM* p_pcOut,bool p_bBE); - //! Skip all comment lines after this - static bool SkipComments (const char* pCur,const char** pCurOut); + //! Skip all comment lines after this + static bool SkipComments (const char* pCur,const char** pCurOut); private: - // ------------------------------------------------------------------- - //! Handle the file header and read all element descriptions - bool ParseHeader (const char* pCur,const char** pCurOut, bool p_bBE); + // ------------------------------------------------------------------- + //! Handle the file header and read all element descriptions + bool ParseHeader (const char* pCur,const char** pCurOut, bool p_bBE); - // ------------------------------------------------------------------- - //! Read in all element instance lists - bool ParseElementInstanceLists (const char* pCur,const char** pCurOut); + // ------------------------------------------------------------------- + //! Read in all element instance lists + bool ParseElementInstanceLists (const char* pCur,const char** pCurOut); - // ------------------------------------------------------------------- - //! Read in all element instance lists for a binary file format - bool ParseElementInstanceListsBinary (const char* pCur, - const char** pCurOut,bool p_bBE); + // ------------------------------------------------------------------- + //! Read in all element instance lists for a binary file format + bool ParseElementInstanceListsBinary (const char* pCur, + const char** pCurOut,bool p_bBE); }; // --------------------------------------------------------------------------------- @@ -453,46 +457,46 @@ class Face { public: - Face() - : iMaterialIndex(0xFFFFFFFF) - { - // set all indices to zero by default - mIndices.resize(3,0); - } + Face() + : iMaterialIndex(0xFFFFFFFF) + { + // set all indices to zero by default + mIndices.resize(3,0); + } public: - //! List of vertex indices - std::vector mIndices; + //! List of vertex indices + std::vector mIndices; - //! Material index - unsigned int iMaterialIndex; + //! Material index + unsigned int iMaterialIndex; }; // --------------------------------------------------------------------------------- template inline TYPE PLY::PropertyInstance::ConvertTo( - PLY::PropertyInstance::ValueUnion v, PLY::EDataType eType) + PLY::PropertyInstance::ValueUnion v, PLY::EDataType eType) { - switch (eType) - { - case EDT_Float: - return (TYPE)v.fFloat; - case EDT_Double: - return (TYPE)v.fDouble; - - case EDT_UInt: - case EDT_UShort: - case EDT_UChar: - return (TYPE)v.iUInt; - - case EDT_Int: - case EDT_Short: - case EDT_Char: - return (TYPE)v.iInt; - default: ; - }; - return (TYPE)0; + switch (eType) + { + case EDT_Float: + return (TYPE)v.fFloat; + case EDT_Double: + return (TYPE)v.fDouble; + + case EDT_UInt: + case EDT_UShort: + case EDT_UChar: + return (TYPE)v.iUInt; + + case EDT_Int: + case EDT_Short: + case EDT_Char: + return (TYPE)v.iInt; + default: ; + }; + return (TYPE)0; } } // Namespace PLY -- cgit v1.2.3