diff --git a/external/etk b/external/etk index 45c4fbb9..ceab3d4d 160000 --- a/external/etk +++ b/external/etk @@ -1 +1 @@ -Subproject commit 45c4fbb98db6b5b50599dfaef5903d3a78e63f08 +Subproject commit ceab3d4d7d578d818aa7fba11e86fa3557f14d36 diff --git a/sources/ewol/openGL/openGL.cpp b/sources/ewol/openGL/openGL.cpp index a8ee220a..9adcb4b0 100644 --- a/sources/ewol/openGL/openGL.cpp +++ b/sources/ewol/openGL/openGL.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include //#define DIRECT_MODE /** @@ -165,6 +166,59 @@ std::ostream& ewol::operator <<(std::ostream& _os, const enum openGL::openGlFlag return _os; } + +std::vector>& getListRenderMode() { + static std::vector> list = { + std::make_pair(ewol::openGL::renderPoint, "POINTS"), + std::make_pair(ewol::openGL::renderLine, "LINES"), + std::make_pair(ewol::openGL::renderLineStrip, "LINES_STRIP"), + std::make_pair(ewol::openGL::renderLineLoop, "LINE_LOOP"), + std::make_pair(ewol::openGL::renderTriangle, "TRIANGLE"), + std::make_pair(ewol::openGL::renderTriangleStrip, "TRIANGLE_STRIP"), + std::make_pair(ewol::openGL::renderTriangleFan, "TRIANGLE_FAN"), + std::make_pair(ewol::openGL::renderQuad, "QUAD"), + std::make_pair(ewol::openGL::renderQuadStrip, "QUAD_STRIP"), + std::make_pair(ewol::openGL::renderPolygon, "POLYGON"), + }; + return list; +} + + +namespace etk { + template<> std::string to_string(const ewol::openGL::renderMode& _obj) { + for (auto &it : getListRenderMode()) { + if (it.first == _obj) { + return it.second; + } + } + EWOL_ERROR("Can not convert : " << static_cast(_obj) << " return UNKNOW"); + return "UNKNOW"; + } + template<> std::u32string to_u32string(const ewol::openGL::renderMode& _obj) { + return etk::to_u32string(etk::to_string(_obj)); + } + template<> bool from_string(ewol::openGL::renderMode& _variableRet, const std::string& _value) { + for (auto &it : getListRenderMode()) { + if (it.second == _value) { + _variableRet = it.first; + return true; + } + } + EWOL_WARNING("Can not parse : '" << _value << "' set Triangle default value"); + _variableRet = ewol::openGL::renderTriangle; + return false; + } + template<> bool from_string(ewol::openGL::renderMode& _variableRet, const std::u32string& _value) { + return from_string(_variableRet, etk::to_string(_value)); + } +}; + +std::ostream& ewol::operator <<(std::ostream& _os, const enum openGL::renderMode& _obj) { + _os << etk::to_string(_obj); + return _os; +} + + typedef struct { uint32_t curentFlag; GLenum OGlFlag; diff --git a/sources/ewol/openGL/openGL.h b/sources/ewol/openGL/openGL.h index c59da45b..6a0e2bc2 100644 --- a/sources/ewol/openGL/openGL.h +++ b/sources/ewol/openGL/openGL.h @@ -141,6 +141,18 @@ namespace ewol { FLAG_ALPHA_TEST = 1<<27, //!< FLAG_FOG = 1<<28, //!< }; + enum renderMode { + renderPoint = GL_POINTS, + renderLine = GL_LINES, + renderLineStrip = GL_LINE_STRIP, //!< Not supported in EWOL (TODO : Later) + renderLineLoop = GL_LINE_LOOP, + renderTriangle = GL_TRIANGLES, + renderTriangleStrip = GL_TRIANGLE_STRIP, //!< Not supported in EWOL (TODO : Later) + renderTriangleFan = GL_TRIANGLE_FAN, //!< Not supported in EWOL (TODO : Later) + renderQuad = GL_QUADS, //!< Not supported in OpenGL-ES2 + renderQuadStrip = GL_QUAD_STRIP, //!< Not supported in OpenGL-ES2 + renderPolygon = GL_POLYGON //!< Not supported in OpenGL-ES2 + }; /** * @brief enable a flag on the system @@ -181,6 +193,7 @@ namespace ewol { void reset(); }; std::ostream& operator <<(std::ostream& _os, const enum openGL::openGlFlags& _obj); + std::ostream& operator <<(std::ostream& _os, const enum openGL::renderMode& _obj); };