| /* |
| Open Asset Import Library (assimp) |
| ---------------------------------------------------------------------- |
| |
| Copyright (c) 2006-2017, 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. |
| |
| ----------------------------------------------------------------------*/ |
| #ifndef OBJFILEMTLIMPORTER_H_INC |
| #define OBJFILEMTLIMPORTER_H_INC |
| |
| #include <vector> |
| #include <string> |
| #include <assimp/defs.h> |
| |
| struct aiColor3D; |
| struct aiString; |
| |
| namespace Assimp { |
| |
| namespace ObjFile { |
| struct Model; |
| struct Material; |
| } |
| |
| |
| /** |
| * @class ObjFileMtlImporter |
| * @brief Loads the material description from a mtl file. |
| */ |
| class ObjFileMtlImporter |
| { |
| public: |
| static const size_t BUFFERSIZE = 2048; |
| typedef std::vector<char> DataArray; |
| typedef std::vector<char>::iterator DataArrayIt; |
| typedef std::vector<char>::const_iterator ConstDataArrayIt; |
| |
| public: |
| //! \brief Default constructor |
| ObjFileMtlImporter( std::vector<char> &buffer, const std::string &strAbsPath, |
| ObjFile::Model *pModel ); |
| |
| //! \brief DEstructor |
| ~ObjFileMtlImporter(); |
| |
| private: |
| /// Copy constructor, empty. |
| ObjFileMtlImporter(const ObjFileMtlImporter &rOther); |
| /// \brief Assignment operator, returns only a reference of this instance. |
| ObjFileMtlImporter &operator = (const ObjFileMtlImporter &rOther); |
| /// Load the whole material description |
| void load(); |
| /// Get color data. |
| void getColorRGBA( aiColor3D *pColor); |
| /// Get illumination model from loaded data |
| void getIlluminationModel( int &illum_model ); |
| /// Gets a float value from data. |
| void getFloatValue( ai_real &value ); |
| /// Creates a new material from loaded data. |
| void createMaterial(); |
| /// Get texture name from loaded data. |
| void getTexture(); |
| void getTextureOption(bool &clamp, int &clampIndex, aiString *&out); |
| |
| private: |
| //! Absolute pathname |
| std::string m_strAbsPath; |
| //! Data iterator showing to the current position in data buffer |
| DataArrayIt m_DataIt; |
| //! Data iterator to end of buffer |
| DataArrayIt m_DataItEnd; |
| //! USed model instance |
| ObjFile::Model *m_pModel; |
| //! Current line in file |
| unsigned int m_uiLine; |
| //! Helper buffer |
| char m_buffer[BUFFERSIZE]; |
| }; |
| |
| // ------------------------------------------------------------------------------------------------ |
| |
| } // Namespace Assimp |
| |
| #endif // OBJFILEMTLIMPORTER_H_INC |