Base: add method isEqual() to Base::Flags<> to simplify comparison

This commit is contained in:
wmayer
2022-04-05 19:09:14 +02:00
parent 61ec7268a4
commit 568fbc3e35
2 changed files with 6 additions and 7 deletions

View File

@@ -187,11 +187,7 @@ bool ColorGradientProfile::isEqual(const ColorGradientProfile& cg) const
return false;
if (fMax != cg.fMax)
return false;
if (visibility.testFlag(Visibility::Grayed) !=
cg.visibility.testFlag(Visibility::Grayed))
return false;
if (visibility.testFlag(Visibility::Invisible) !=
cg.visibility.testFlag(Visibility::Invisible))
if (!visibility.isEqual(cg.visibility))
return false;
if (tColorModel != cg.tColorModel)
return false;

View File

@@ -116,10 +116,13 @@ public:
using u = typename std::underlying_type<Enum>::type;
return (i & f) == f && (static_cast<u>(f) != 0 || i == f);
}
constexpr inline void setFlag(Enum f, bool on = true)
{
constexpr inline void setFlag(Enum f, bool on = true) {
on ? (i |= f) : (i &= ~f);
}
constexpr bool isEqual(Flags f) const {
using u = typename std::underlying_type<Enum>::type;
return static_cast<u>(i) == static_cast<u>(f.i);
}
};
}