summaryrefslogtreecommitdiff
path: root/src/mbgl/gl/enum.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/gl/enum.cpp')
-rw-r--r--src/mbgl/gl/enum.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/mbgl/gl/enum.cpp b/src/mbgl/gl/enum.cpp
index a6f251a438..ea47f2104f 100644
--- a/src/mbgl/gl/enum.cpp
+++ b/src/mbgl/gl/enum.cpp
@@ -123,5 +123,65 @@ platform::GLboolean Enum<gfx::DepthMaskType>::to(const gfx::DepthMaskType value)
return value == gfx::DepthMaskType::ReadWrite ? GL_TRUE : GL_FALSE;
}
+template <>
+gfx::StencilFunctionType Enum<gfx::StencilFunctionType>::from(const platform::GLint value) {
+ switch (value) {
+ case GL_NEVER: return gfx::StencilFunctionType::Never;
+ case GL_LESS: return gfx::StencilFunctionType::Less;
+ case GL_EQUAL: return gfx::StencilFunctionType::Equal;
+ case GL_LEQUAL: return gfx::StencilFunctionType::LessEqual;
+ case GL_GREATER: return gfx::StencilFunctionType::Greater;
+ case GL_NOTEQUAL: return gfx::StencilFunctionType::NotEqual;
+ case GL_GEQUAL: return gfx::StencilFunctionType::GreaterEqual;
+ case GL_ALWAYS: return gfx::StencilFunctionType::Always;
+ }
+ return {};
+}
+
+template <>
+platform::GLenum Enum<gfx::StencilFunctionType>::to(const gfx::StencilFunctionType value) {
+ switch (value) {
+ case gfx::StencilFunctionType::Never: return GL_NEVER;
+ case gfx::StencilFunctionType::Less: return GL_LESS;
+ case gfx::StencilFunctionType::Equal: return GL_EQUAL;
+ case gfx::StencilFunctionType::LessEqual: return GL_LEQUAL;
+ case gfx::StencilFunctionType::Greater: return GL_GREATER;
+ case gfx::StencilFunctionType::NotEqual: return GL_NOTEQUAL;
+ case gfx::StencilFunctionType::GreaterEqual: return GL_GEQUAL;
+ case gfx::StencilFunctionType::Always: return GL_ALWAYS;
+ }
+ return GL_INVALID_ENUM;
+}
+
+template <>
+gfx::StencilOpType Enum<gfx::StencilOpType>::from(const platform::GLint value) {
+ switch (value) {
+ case GL_KEEP: return gfx::StencilOpType::Keep;
+ case GL_ZERO: return gfx::StencilOpType::Zero;
+ case GL_REPLACE: return gfx::StencilOpType::Replace;
+ case GL_INCR: return gfx::StencilOpType::Increment;
+ case GL_INCR_WRAP: return gfx::StencilOpType::IncrementWrap;
+ case GL_DECR: return gfx::StencilOpType::Decrement;
+ case GL_DECR_WRAP: return gfx::StencilOpType::DecrementWrap;
+ case GL_INVERT: return gfx::StencilOpType::Invert;
+ }
+ return {};
+}
+
+template <>
+platform::GLenum Enum<gfx::StencilOpType>::to(const gfx::StencilOpType value) {
+ switch (value) {
+ case gfx::StencilOpType::Keep: return GL_KEEP;
+ case gfx::StencilOpType::Zero: return GL_ZERO;
+ case gfx::StencilOpType::Replace: return GL_REPLACE;
+ case gfx::StencilOpType::Increment: return GL_INCR;
+ case gfx::StencilOpType::IncrementWrap: return GL_INCR_WRAP;
+ case gfx::StencilOpType::Decrement: return GL_DECR;
+ case gfx::StencilOpType::DecrementWrap: return GL_DECR_WRAP;
+ case gfx::StencilOpType::Invert: return GL_INVERT;
+ }
+ return GL_INVALID_ENUM;
+}
+
} // namespace gl
} // namespace mbgl