1 /********************************************************************
2 KWin - the KDE window manager
3 This file is part of the KDE project.
5 Copyright (C) 2007 Philip Falkner <philip.falkner@gmail.com>
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *********************************************************************/
21 #ifndef KWIN_BOXSWITCH_H
22 #define KWIN_BOXSWITCH_H
24 #include <kwineffects.h>
33 #include <kwinglutils.h>
35 #ifdef KWIN_HAVE_XRENDER_COMPOSITING
36 #include <X11/extensions/Xrender.h>
49 virtual void paintScreen( int mask
, QRegion region
, ScreenPaintData
& data
);
50 virtual void prePaintWindow( EffectWindow
* w
, WindowPrePaintData
& data
, int time
);
51 virtual void paintWindow( EffectWindow
* w
, int mask
, QRegion region
, WindowPaintData
& data
);
53 virtual void windowInputMouseEvent( Window w
, QEvent
* e
);
54 virtual void windowDamaged( EffectWindow
* w
, const QRect
& damage
);
55 virtual void windowGeometryShapeChanged( EffectWindow
* w
, const QRect
& old
);
56 virtual void tabBoxAdded( int mode
);
57 virtual void tabBoxClosed();
58 virtual void tabBoxUpdated();
59 virtual void windowClosed( EffectWindow
* w
);
64 void moveResizeInputWindow( int x
, int y
, int width
, int height
);
65 void calculateFrameSize();
66 void calculateItemSizes();
67 void setSelectedWindow( EffectWindow
* w
);
70 void paintHighlight( QRect area
);
71 void paintWindowThumbnail( EffectWindow
* w
);
72 void paintDesktopThumbnail( int iDesktop
);
73 void paintWindowIcon( EffectWindow
* w
);
74 void paintText( const QString
& text
);
81 int frame_margin
; // TODO graphical background
82 int highlight_margin
; // TODO graphical background
83 QSize item_max_size
; // maximum item display size (including highlight)
87 QColor color_highlight
;
90 QHash
< EffectWindow
*, ItemInfo
* > windows
;
91 EffectWindowList original_windows
;
92 EffectWindow
* selected_window
;
93 QHash
< int, ItemInfo
* > desktops
;
94 QList
< int > original_desktops
;
99 #ifdef KWIN_HAVE_XRENDER_COMPOSITING
100 XRenderPictFormat
* alphaFormat
;
104 class BoxSwitchEffect::ItemInfo
107 QRect area
; // maximal painting area, including any frames/highlights/etc.
111 #ifdef KWIN_HAVE_OPENGL_COMPOSITING
112 GLTexture iconTexture
;
114 #ifdef KWIN_HAVE_XRENDER_COMPOSITING