]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/stenciltest.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / core / stenciltest.h
index 652f8d4093b9ac3bdb82135d2a6fe834c36880ae..2a4338f2012afef716c7f2b91494e32d7abeb7cd 100644 (file)
@@ -8,13 +8,13 @@
 namespace Msp {
 namespace GL {
 
-enum StencilOp
+enum StencilOp: std::uint8_t
 {
        KEEP,
        SET_ZERO,
        REPLACE,
-       INCR,
-       DECR,
+       INCR_CLAMP,
+       DECR_CLAMP,
        INVERT,
        INCR_WRAP,
        DECR_WRAP
@@ -37,16 +37,23 @@ struct StencilTest
                void actions(StencilOp, StencilOp, StencilOp);
        };
 
-       bool enabled;
-       Predicate compare;
-       StencilOp stencil_fail_op;
-       StencilOp depth_fail_op;
-       StencilOp depth_pass_op;
-       unsigned reference;
+       bool enabled = false;
+       Predicate compare = ALWAYS;
+       StencilOp stencil_fail_op = KEEP;
+       StencilOp depth_fail_op = KEEP;
+       StencilOp depth_pass_op = KEEP;
+       unsigned reference = 0;
 
-       StencilTest();
+       bool operator==(const StencilTest &) const;
+       bool operator!=(const StencilTest &s) const { return !operator==(s); }
 };
 
+inline bool StencilTest::operator==(const StencilTest &other) const
+{
+       return enabled==other.enabled && compare==other.compare && stencil_fail_op==other.stencil_fail_op &&
+               depth_fail_op==other.depth_fail_op && depth_pass_op==other.depth_pass_op && reference==other.reference;
+}
+
 void operator>>(const LexicalConverter &, StencilOp &);
 void operator<<(LexicalConverter &, StencilOp);