Added helper class for tempered opacity in QPainter.

This commit is contained in:
23rd 2023-07-07 14:45:58 +03:00
parent eac439713b
commit 18ea4136b7

View file

@ -135,3 +135,30 @@ private:
QPainter::RenderHints _hints;
};
class ScopedPainterOpacity {
public:
ScopedPainterOpacity(QPainter &p, float64 nowOpacity)
: _painter(p)
, _wasOpacity(p.opacity()) {
if (_wasOpacity != nowOpacity) {
_painter.setOpacity(nowOpacity);
}
}
ScopedPainterOpacity(
const ScopedPainterOpacity &other) = delete;
ScopedPainterOpacity &operator=(
const ScopedPainterOpacity &other) = delete;
~ScopedPainterOpacity() {
if (_painter.isActive()) {
_painter.setOpacity(_wasOpacity);
}
}
private:
QPainter &_painter;
const float64 _wasOpacity;
};