/* KWin - the KDE window manager This file is part of the KDE project. SPDX-FileCopyrightText: 2009 Lucas Murray SPDX-FileCopyrightText: 2018 Vlad Zahorodnii SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include "effect/effect.h" #include "effect/timeline.h" namespace KWin { class SnapHelperEffect : public Effect { Q_OBJECT public: SnapHelperEffect(); ~SnapHelperEffect() override; void reconfigure(ReconfigureFlags flags) override; void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override; void paintScreen(const RenderTarget &renderTarget, const RenderViewport &viewport, int mask, const QRegion ®ion, Output *screen) override; void postPaintScreen() override; bool isActive() const override; private Q_SLOTS: void slotWindowAdded(EffectWindow *w); void slotWindowClosed(EffectWindow *w); void slotWindowStartUserMovedResized(EffectWindow *w); void slotWindowFinishUserMovedResized(EffectWindow *w); void slotWindowFrameGeometryChanged(EffectWindow *w, const QRectF &old); private: QRectF m_geometry; EffectWindow *m_window = nullptr; struct Animation { bool active = false; TimeLine timeLine; }; Animation m_animation; }; } // namespace KWin