/***************************************************************** KWin - the KDE window manager This file is part of the KDE project. Copyright (C) 2007 Philip Falkner <philip.falkner@gmail.com> You can Freely distribute this program under the GNU General Public License. See the file "COPYING" for the exact licensing terms. ******************************************************************/ #ifndef KWIN_FADE_H #define KWIN_FADE_H #include <effects.h> namespace KWinInternal { class FadeEffect : public Effect { public: FadeEffect(); virtual void prePaintWindow( EffectWindow* w, int* mask, QRegion* region, int time ); virtual void paintWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data ); virtual void postPaintWindow( EffectWindow* w ); // TODO react also on virtual desktop changes virtual void windowOpacityChanged( EffectWindow* c, double old_opacity ); virtual void windowAdded( EffectWindow* c ); virtual void windowClosed( EffectWindow* c ); virtual void windowDeleted( EffectWindow* c ); private: int fade_in_speed, fade_out_speed; // TODO make these configurable class WindowInfo; QMap< const EffectWindow*, WindowInfo > windows; }; class FadeEffect::WindowInfo { public: WindowInfo() : current( 0 ) , target( 0 ) , step_mult( 0 ) , deleted( false ) {}; bool isFading() const; double current; double target; double step_mult; bool deleted; }; inline bool FadeEffect::WindowInfo::isFading() const { return current != target; } } // namespace #endif