Mercurial > hg > forks > gldragon
diff dmscene.h @ 70:03aa729a9e90
Refactor PLY file parsing from dmscene.* to dmply.* and some helper functions into dmutil.h
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 16 Dec 2019 07:51:05 +0200 |
parents | 701bef61dcf1 |
children | 1ed7f9d85342 |
line wrap: on
line diff
--- a/dmscene.h Mon Dec 16 06:51:40 2019 +0200 +++ b/dmscene.h Mon Dec 16 07:51:05 2019 +0200 @@ -11,116 +11,10 @@ #include "dmutil.h" #include <cstdint> -#include <fstream> -#include <unordered_map> - - -#define PLY_PROP_VERTEX_INDICES "vertex_indices" -#define PLY_ELEM_FACE "face" -#define PLY_ELEM_VERTEX "vertex" - - -enum DMPLYFormat -{ - PLY_FMT_UNKNOWN, - PLY_FMT_ASCII, - PLY_FMT_BIN_LE, - PLY_FMT_BIN_BE -}; - - -enum DMPLYPropType -{ - PLY_TYPE_NONE, - PLY_TYPE_LIST, - - PLY_TYPE_UINT8, - PLY_TYPE_INT8, - PLY_TYPE_INT16, - PLY_TYPE_UINT16, - PLY_TYPE_INT32, - PLY_TYPE_UINT32, - PLY_TYPE_FLOAT, - PLY_TYPE_DOUBLE -}; - - -/* Structures - */ -union DMPLYPropValue -{ - double v_double; - float v_float; - unsigned int v_uint; - int v_int; -}; -struct DMPLYFileProperty -{ - std::string name; - DMPLYPropType - type, - list_num_type, - list_values_type; - - DMPLYPropValue value, list_num_value; - std::vector<DMPLYPropValue> list_values; -}; - - -struct DMPLYFileElement -{ - int value; - std::string name; - - std::unordered_map<std::string, DMPLYFileProperty> prop_map; - std::vector<DMPLYFileProperty *> properties; - - DMPLYFileProperty *checkProp(const std::string &prop) - { - if (prop_map.count(prop)) - return &prop_map[prop]; - else - return 0; - } -}; - - -struct DMTextFileInfo -{ - int nline, state; - std::string filename; - std::string line; - std::ifstream file; - std::string *key; -}; - - -struct DMPLYFileInfo : DMTextFileInfo -{ - DMPLYFormat format; - - std::unordered_map<std::string, DMPLYFileElement> elem_map; - std::vector<DMPLYFileElement *> elements; - DMPLYFileElement *element; - - DMPLYFileInfo() - { - element = 0; - format = PLY_FMT_UNKNOWN; - } - - DMPLYFileElement *checkElem(const std::string &elem) - { - if (elem_map.count(elem)) - return &elem_map[elem]; - else - return 0; - } -}; - - +/* Structures and classes + */ struct DMVector3 { float x, y, z; @@ -159,9 +53,6 @@ fragShaderFile, vertShaderFile, fragShaderStr, vertShaderStr; - bool loadFromPLY(const std::string &filename); - bool loadFromPLY(const std::string &filename, DMPLYFileInfo &info); - DMModel() { nfaces = nvertices = 0;