Skip to content

Commit e5fb1cc

Browse files
committed
ShaderManager: Add operators for effect mask
1 parent 3a0187a commit e5fb1cc

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

src/shadermanager.h

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class ShaderManager : public QObject
1616
public:
1717
enum class Effect
1818
{
19+
NoEffect = 0,
1920
Color = 1 << 0,
2021
Brightness = 1 << 1,
2122
Ghost = 1 << 2,
@@ -50,4 +51,49 @@ class ShaderManager : public QObject
5051
QByteArray m_fragmentShaderSource;
5152
};
5253

54+
inline ShaderManager::Effect operator|(ShaderManager::Effect a, ShaderManager::Effect b)
55+
{
56+
return static_cast<ShaderManager::Effect>(static_cast<int>(a) | static_cast<int>(b));
57+
}
58+
59+
inline ShaderManager::Effect operator|=(ShaderManager::Effect &a, ShaderManager::Effect b)
60+
{
61+
return static_cast<ShaderManager::Effect>((int &)a |= static_cast<int>(b));
62+
}
63+
64+
inline ShaderManager::Effect operator&(ShaderManager::Effect a, ShaderManager::Effect b)
65+
{
66+
return static_cast<ShaderManager::Effect>(static_cast<int>(a) & static_cast<int>(b));
67+
}
68+
69+
inline ShaderManager::Effect operator&=(ShaderManager::Effect &a, ShaderManager::Effect b)
70+
{
71+
return static_cast<ShaderManager::Effect>((int &)a &= static_cast<int>(b));
72+
}
73+
74+
inline ShaderManager::Effect operator~(ShaderManager::Effect a)
75+
{
76+
return static_cast<ShaderManager::Effect>(~static_cast<int>(a));
77+
}
78+
79+
inline bool operator==(ShaderManager::Effect a, int b)
80+
{
81+
return static_cast<int>(a) == b;
82+
}
83+
84+
inline bool operator==(int a, ShaderManager::Effect b)
85+
{
86+
return a == static_cast<int>(b);
87+
}
88+
89+
inline bool operator!=(ShaderManager::Effect a, int b)
90+
{
91+
return static_cast<int>(a) != b;
92+
}
93+
94+
inline bool operator!=(int a, ShaderManager::Effect b)
95+
{
96+
return a != static_cast<int>(b);
97+
}
98+
5399
} // namespace scratchcpprender

0 commit comments

Comments
 (0)