/* SPDX-FileCopyrightText: 2014 Martin Gräßlin SPDX-FileCopyrightText: 2015 Marco Martin SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #ifndef WINDOWEFFECTS_H #define WINDOWEFFECTS_H #include "kwindoweffects_p.h" #include #include #include #include class BlurManager; class Blur; class ContrastManager; class Contrast; class SlideManager; class WindowEffects : public QObject, public KWindowEffectsPrivate { Q_OBJECT public: WindowEffects(); ~WindowEffects() override; bool eventFilter(QObject *watched, QEvent *event) override; void trackWindow(QWindow *window); void releaseWindow(QWindow *window); bool isEffectAvailable(KWindowEffects::Effect effect) override; void slideWindow(QWindow *window, KWindowEffects::SlideFromLocation location, int offset) override; void enableBlurBehind(QWindow *window, bool enable = true, const QRegion ®ion = QRegion()) override; void enableBackgroundContrast(QWindow *window, bool enable = true, qreal contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion ®ion = QRegion()) override; private: void installContrast(QWindow *window, bool enable = true, qreal contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion ®ion = QRegion()); void installBlur(QWindow *window, bool enable, const QRegion ®ion); void installSlide(QWindow *window, KWindowEffects::SlideFromLocation location, int offset); void resetBlur(QWindow *window, Blur *blur = nullptr); void resetContrast(QWindow *window, Contrast *contrast = nullptr); QHash> m_windowWatchers; QHash m_blurRegions; struct BackgroundContrastData { qreal contrast = 1; qreal intensity = 1; qreal saturation = 1; QRegion region; }; QHash m_backgroundConstrastRegions; QHash> m_blurs; QHash> m_contrasts; struct SlideData { KWindowEffects::SlideFromLocation location; int offset; }; QHash m_slideMap; BlurManager *m_blurManager; ContrastManager *m_contrastManager; SlideManager *m_slideManager; }; #endif