ObjFileParser.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef OBJ_FILEPARSER_H_INC
  2. #define OBJ_FILEPARSER_H_INC
  3. #include <vector>
  4. #include <string>
  5. #include "aiTypes.h"
  6. /*struct aiVector2D_t;
  7. struct aiVector3D_t;*/
  8. namespace Assimp
  9. {
  10. namespace ObjFile
  11. {
  12. struct Model;
  13. struct Object;
  14. struct Material;
  15. struct Point3;
  16. struct Point2;
  17. }
  18. class ObjFileImporter;
  19. class ObjFileParser
  20. {
  21. public:
  22. static const size_t BUFFERSIZE = 1024;
  23. typedef std::vector<char> DataArray;
  24. typedef std::vector<char>::iterator DataArrayIt;
  25. typedef std::vector<char>::const_iterator ConstDataArrayIt;
  26. public:
  27. ObjFileParser(std::vector<char> &Data, const std::string &strAbsPath, const std::string &strModelName);
  28. ~ObjFileParser();
  29. ObjFile::Model *GetModel() const;
  30. private:
  31. void parseFile();
  32. void copyNextWord(char *pBuffer, size_t length);
  33. void copyNextLine(char *pBuffer, size_t length);
  34. void getVector3(std::vector<aiVector3D_t*> &point3d_array);
  35. void getVector2(std::vector<aiVector2D_t*> &point2d_array);
  36. void skipLine();
  37. void getFace();
  38. void getMaterialDesc();
  39. void getComment();
  40. void getMaterialLib();
  41. void getNewMaterial();
  42. void getGroupName();
  43. void getGroupNumber();
  44. void getObjectName();
  45. void createObject(const std::string &strObjectName);
  46. void reportErrorTokenInFace();
  47. void extractExtension(const std::string strFile, std::string &strExt);
  48. private:
  49. std::string m_strAbsPath;
  50. DataArrayIt m_DataIt;
  51. DataArrayIt m_DataItEnd;
  52. ObjFile::Model *m_pModel;
  53. unsigned int m_uiLine;
  54. char m_buffer[BUFFERSIZE];
  55. };
  56. } // Namespace Assimp
  57. #endif