summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/styles/theme/othemebase.cpp14
1 files changed, 1 insertions, 13 deletions
diff --git a/noncore/styles/theme/othemebase.cpp b/noncore/styles/theme/othemebase.cpp
index acac847..62b3a11 100644
--- a/noncore/styles/theme/othemebase.cpp
+++ b/noncore/styles/theme/othemebase.cpp
@@ -1,531 +1,519 @@
1/* This file is part of the KDE libraries 1/* This file is part of the KDE libraries
2 Copyright (C) 1999 Daniel M. Duley <mosfet@kde.org> 2 Copyright (C) 1999 Daniel M. Duley <mosfet@kde.org>
3 3
4 This library is free software; you can redistribute it and/or 4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public 5 modify it under the terms of the GNU Library General Public
6 License version 2 as published by the Free Software Foundation. 6 License version 2 as published by the Free Software Foundation.
7 7
8 This library is distributed in the hope that it will be useful, 8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of 9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Library General Public License for more details. 11 Library General Public License for more details.
12 12
13 You should have received a copy of the GNU Library General Public License 13 You should have received a copy of the GNU Library General Public License
14 along with this library; see the file COPYING.LIB. If not, write to 14 along with this library; see the file COPYING.LIB. If not, write to
15 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 15 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16 Boston, MA 02111-1307, USA. 16 Boston, MA 02111-1307, USA.
17*/ 17*/
18#include "othemebase.h" 18#include "othemebase.h"
19#include "ogfxeffect.h" 19#include "ogfxeffect.h"
20#include <qpe/qpeapplication.h> 20#include <qpe/qpeapplication.h>
21//#include <kdebug.h> 21//#include <kdebug.h>
22//#include <klocale.h> 22//#include <klocale.h>
23#include <qpe/config.h> 23#include <qpe/config.h>
24//#include <kglobal.h> 24//#include <kglobal.h>
25//#include <kglobalsettings.h> 25//#include <kglobalsettings.h>
26//#include <kstddirs.h> 26//#include <kstddirs.h>
27#include <qfile.h> 27#include <qfile.h>
28#include <qtextstream.h> 28#include <qtextstream.h>
29#include <qdir.h> 29#include <qdir.h>
30#include <qpainter.h> 30#include <qpainter.h>
31#include <qbitmap.h> 31#include <qbitmap.h>
32#include <stdlib.h> 32#include <stdlib.h>
33#include <qstringlist.h> 33#include <qstringlist.h>
34 34
35#include <stdio.h> 35#include <stdio.h>
36 36
37 37
38template class QIntCache<OThemePixmap> 38template class QIntCache<OThemePixmap>
39; 39;
40 40
41static const char *widgetEntries[] = 41static const char *widgetEntries[] =
42 { // unsunken widgets (see header) 42 { // unsunken widgets (see header)
43 "PushButton", "ComboBox", "HSBarSlider", "VSBarSlider", "Bevel", "ToolButton", 43 "PushButton", "ComboBox", "HSBarSlider", "VSBarSlider", "Bevel", "ToolButton",
44 "ScrollButton", "HScrollDeco", "VScrollDeco", "ComboDeco", "MenuItem", "Tab", 44 "ScrollButton", "HScrollDeco", "VScrollDeco", "ComboDeco", "MenuItem", "Tab",
45 "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", 45 "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight",
46 // sunken widgets 46 // sunken widgets
47 "PushButtonDown", "ComboBoxDown", "HSBarSliderDown", "VSBarSliderDown", 47 "PushButtonDown", "ComboBoxDown", "HSBarSliderDown", "VSBarSliderDown",
48 "BevelDown", "ToolButtonDown", "ScrollButtonDown", "HScrollDecoDown", 48 "BevelDown", "ToolButtonDown", "ScrollButtonDown", "HScrollDecoDown",
49 "VScrollDecoDown", "ComboDecoDown", "MenuItemDown", "TabDown", "SunkenArrowUp", 49 "VScrollDecoDown", "ComboDecoDown", "MenuItemDown", "TabDown", "SunkenArrowUp",
50 "SunkenArrowDown", "SunkenArrowLeft", "SunkenArrowRight", 50 "SunkenArrowDown", "SunkenArrowLeft", "SunkenArrowRight",
51 // everything else 51 // everything else
52 "HScrollGroove", "VScrollGroove", "Slider", "SliderGroove", "CheckBoxDown", 52 "HScrollGroove", "VScrollGroove", "Slider", "SliderGroove", "CheckBoxDown",
53 "CheckBox", "RadioDown", "Radio", "HBarHandle", "VBarHandle", 53 "CheckBox", "RadioDown", "Radio", "HBarHandle", "VBarHandle",
54 "ToolBar", "Splitter", "CheckMark", "MenuBar", "DisableArrowUp", 54 "ToolBar", "Splitter", "CheckMark", "MenuBar", "DisableArrowUp",
55 "DisableArrowDown", "DisableArrowLeft", "DisableArrowRight", "ProgressBar", 55 "DisableArrowDown", "DisableArrowLeft", "DisableArrowRight", "ProgressBar",
56 "ProgressBackground", "MenuBarItem", "Background" 56 "ProgressBackground", "MenuBarItem", "Background"
57 }; 57 };
58 58
59#define INHERIT_ITEMS 16 59#define INHERIT_ITEMS 16
60 60
61 61
62// This is used to encode the keys. I used to use masks but I think this 62// This is used to encode the keys. I used to use masks but I think this
63// bitfield is nicer :) I don't know why C++ coders don't use these more.. 63// bitfield is nicer :) I don't know why C++ coders don't use these more..
64// (mosfet) 64// (mosfet)
65struct kthemeKeyData 65struct kthemeKeyData
66{ 66{
67unsigned int id : 67unsigned int id :
68 6; 68 6;
69unsigned int width : 69unsigned int width :
70 12; 70 12;
71unsigned int height : 71unsigned int height :
72 12; 72 12;
73unsigned int border : 73unsigned int border :
74 1; 74 1;
75unsigned int mask : 75unsigned int mask :
76 1; 76 1;
77}; 77};
78 78
79union kthemeKey{ 79union kthemeKey{
80 kthemeKeyData data; 80 kthemeKeyData data;
81 unsigned int cacheKey; 81 unsigned int cacheKey;
82}; 82};
83 83
84class MyConfig : public Config
85{
86public:
87 MyConfig ( const QString &f, Domain d ) : Config ( f, d )
88 { }
89
90 bool hasGroup ( const QString &gname ) const
91 {
92 QMap< QString, ConfigGroup>::ConstIterator it = groups. find ( gname );
93 return ( it != groups.end() );
94 }
95};
96 84
97void OThemeBase::generateBorderPix( int i ) 85void OThemeBase::generateBorderPix( int i )
98{ 86{
99 // separate pixmap into separate components 87 // separate pixmap into separate components
100 if ( pbPixmaps[ i ] ) { 88 if ( pbPixmaps[ i ] ) {
101 // evidently I have to do masks manually... 89 // evidently I have to do masks manually...
102 const QBitmap * srcMask = pbPixmaps[ i ] ->mask(); 90 const QBitmap * srcMask = pbPixmaps[ i ] ->mask();
103 QBitmap destMask( pbWidth[ i ], pbWidth[ i ] ); 91 QBitmap destMask( pbWidth[ i ], pbWidth[ i ] );
104 QPixmap tmp( pbWidth[ i ], pbWidth[ i ] ); 92 QPixmap tmp( pbWidth[ i ], pbWidth[ i ] );
105 93
106 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, 0, pbWidth[ i ], pbWidth[ i ], 94 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, 0, pbWidth[ i ], pbWidth[ i ],
107 Qt::CopyROP, false ); 95 Qt::CopyROP, false );
108 if ( srcMask ) { 96 if ( srcMask ) {
109 bitBlt( &destMask, 0, 0, srcMask, 0, 0, pbWidth[ i ], pbWidth[ i ], 97 bitBlt( &destMask, 0, 0, srcMask, 0, 0, pbWidth[ i ], pbWidth[ i ],
110 Qt::CopyROP, false ); 98 Qt::CopyROP, false );
111 tmp.setMask( destMask ); 99 tmp.setMask( destMask );
112 } 100 }
113 pbPixmaps[ i ] ->setBorder( OThemePixmap::TopLeft, tmp ); 101 pbPixmaps[ i ] ->setBorder( OThemePixmap::TopLeft, tmp );
114 102
115 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ], 0, 103 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ], 0,
116 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false ); 104 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false );
117 if ( srcMask ) { 105 if ( srcMask ) {
118 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ], 106 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ],
119 0, pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false ); 107 0, pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false );
120 tmp.setMask( destMask ); 108 tmp.setMask( destMask );
121 } 109 }
122 pbPixmaps[ i ] ->setBorder( OThemePixmap::TopRight, tmp ); 110 pbPixmaps[ i ] ->setBorder( OThemePixmap::TopRight, tmp );
123 111
124 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, pbPixmaps[ i ] ->height() - pbWidth[ i ], 112 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, pbPixmaps[ i ] ->height() - pbWidth[ i ],
125 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false ); 113 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false );
126 if ( srcMask ) { 114 if ( srcMask ) {
127 bitBlt( &destMask, 0, 0, srcMask, 0, pbPixmaps[ i ] ->height() - pbWidth[ i ], 115 bitBlt( &destMask, 0, 0, srcMask, 0, pbPixmaps[ i ] ->height() - pbWidth[ i ],
128 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false ); 116 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false );
129 tmp.setMask( destMask ); 117 tmp.setMask( destMask );
130 } 118 }
131 pbPixmaps[ i ] ->setBorder( OThemePixmap::BottomLeft, tmp ); 119 pbPixmaps[ i ] ->setBorder( OThemePixmap::BottomLeft, tmp );
132 120
133 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ], 121 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ],
134 pbPixmaps[ i ] ->height() - pbWidth[ i ], pbWidth[ i ], pbWidth[ i ], 122 pbPixmaps[ i ] ->height() - pbWidth[ i ], pbWidth[ i ], pbWidth[ i ],
135 Qt::CopyROP, false ); 123 Qt::CopyROP, false );
136 if ( srcMask ) { 124 if ( srcMask ) {
137 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ], 125 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ],
138 pbPixmaps[ i ] ->height() - pbWidth[ i ], pbWidth[ i ], pbWidth[ i ], 126 pbPixmaps[ i ] ->height() - pbWidth[ i ], pbWidth[ i ], pbWidth[ i ],
139 Qt::CopyROP, false ); 127 Qt::CopyROP, false );
140 tmp.setMask( destMask ); 128 tmp.setMask( destMask );
141 } 129 }
142 pbPixmaps[ i ] ->setBorder( OThemePixmap::BottomRight, tmp ); 130 pbPixmaps[ i ] ->setBorder( OThemePixmap::BottomRight, tmp );
143 131
144 tmp.resize( pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ] ); 132 tmp.resize( pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ] );
145 destMask.resize( pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ] ); 133 destMask.resize( pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ] );
146 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbWidth[ i ], 0, 134 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbWidth[ i ], 0,
147 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false ); 135 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false );
148 if ( srcMask ) { 136 if ( srcMask ) {
149 bitBlt( &destMask, 0, 0, srcMask, pbWidth[ i ], 0, 137 bitBlt( &destMask, 0, 0, srcMask, pbWidth[ i ], 0,
150 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], 138 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ],
151 Qt::CopyROP, false ); 139 Qt::CopyROP, false );
152 tmp.setMask( destMask ); 140 tmp.setMask( destMask );
153 } 141 }
154 pbPixmaps[ i ] ->setBorder( OThemePixmap::Top, tmp ); 142 pbPixmaps[ i ] ->setBorder( OThemePixmap::Top, tmp );
155 143
156 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbWidth[ i ], 144 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbWidth[ i ],
157 pbPixmaps[ i ] ->height() - pbWidth[ i ], 145 pbPixmaps[ i ] ->height() - pbWidth[ i ],
158 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false ); 146 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false );
159 if ( srcMask ) { 147 if ( srcMask ) {
160 bitBlt( &destMask, 0, 0, srcMask, pbWidth[ i ], 148 bitBlt( &destMask, 0, 0, srcMask, pbWidth[ i ],
161 pbPixmaps[ i ] ->height() - pbWidth[ i ], 149 pbPixmaps[ i ] ->height() - pbWidth[ i ],
162 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false ); 150 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false );
163 tmp.setMask( destMask ); 151 tmp.setMask( destMask );
164 } 152 }
165 pbPixmaps[ i ] ->setBorder( OThemePixmap::Bottom, tmp ); 153 pbPixmaps[ i ] ->setBorder( OThemePixmap::Bottom, tmp );
166 154
167 tmp.resize( pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2 ); 155 tmp.resize( pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2 );
168 destMask.resize( pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2 ); 156 destMask.resize( pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2 );
169 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, pbWidth[ i ], pbWidth[ i ], 157 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, pbWidth[ i ], pbWidth[ i ],
170 pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, Qt::CopyROP, false ); 158 pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, Qt::CopyROP, false );
171 if ( srcMask ) { 159 if ( srcMask ) {
172 bitBlt( &destMask, 0, 0, srcMask, 0, pbWidth[ i ], pbWidth[ i ], 160 bitBlt( &destMask, 0, 0, srcMask, 0, pbWidth[ i ], pbWidth[ i ],
173 pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, Qt::CopyROP, false ); 161 pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, Qt::CopyROP, false );
174 tmp.setMask( destMask ); 162 tmp.setMask( destMask );
175 } 163 }
176 164
177 pbPixmaps[ i ] ->setBorder( OThemePixmap::Left, tmp ); 165 pbPixmaps[ i ] ->setBorder( OThemePixmap::Left, tmp );
178 166
179 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ], 167 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ],
180 pbWidth[ i ], pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, 168 pbWidth[ i ], pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2,
181 Qt::CopyROP, false ); 169 Qt::CopyROP, false );
182 if ( srcMask ) { 170 if ( srcMask ) {
183 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ], 171 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ],
184 pbWidth[ i ], pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, 172 pbWidth[ i ], pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2,
185 Qt::CopyROP, false ); 173 Qt::CopyROP, false );
186 tmp.setMask( destMask ); 174 tmp.setMask( destMask );
187 } 175 }
188 pbPixmaps[ i ] ->setBorder( OThemePixmap::Right, tmp ); 176 pbPixmaps[ i ] ->setBorder( OThemePixmap::Right, tmp );
189 } 177 }
190 else 178 else
191 qDebug ( "OThemeBase: Tried making border from empty pixmap" ); 179 qDebug ( "OThemeBase: Tried making border from empty pixmap" );
192} 180}
193 181
194 182
195void OThemeBase::copyWidgetConfig( int sourceID, int destID, QString *pixnames, 183void OThemeBase::copyWidgetConfig( int sourceID, int destID, QString *pixnames,
196 QString *brdnames ) 184 QString *brdnames )
197{ 185{
198 scaleHints[ destID ] = scaleHints[ sourceID ]; 186 scaleHints[ destID ] = scaleHints[ sourceID ];
199 gradients[ destID ] = gradients[ sourceID ]; 187 gradients[ destID ] = gradients[ sourceID ];
200 blends[ destID ] = blends[ sourceID ]; 188 blends[ destID ] = blends[ sourceID ];
201 bContrasts[ destID ] = bContrasts[ sourceID ]; 189 bContrasts[ destID ] = bContrasts[ sourceID ];
202 borders[ destID ] = borders[ sourceID ]; 190 borders[ destID ] = borders[ sourceID ];
203 highlights[ destID ] = highlights[ sourceID ]; 191 highlights[ destID ] = highlights[ sourceID ];
204 192
205 if ( grLowColors[ sourceID ] ) 193 if ( grLowColors[ sourceID ] )
206 grLowColors[ destID ] = new QColor( *grLowColors[ sourceID ] ); 194 grLowColors[ destID ] = new QColor( *grLowColors[ sourceID ] );
207 else 195 else
208 grLowColors[ destID ] = NULL; 196 grLowColors[ destID ] = NULL;
209 197
210 if ( grHighColors[ sourceID ] ) 198 if ( grHighColors[ sourceID ] )
211 grHighColors[ destID ] = new QColor( *grHighColors[ sourceID ] ); 199 grHighColors[ destID ] = new QColor( *grHighColors[ sourceID ] );
212 else 200 else
213 grHighColors[ destID ] = NULL; 201 grHighColors[ destID ] = NULL;
214 202
215 if ( colors[ sourceID ] ) 203 if ( colors[ sourceID ] )
216 colors[ destID ] = new QColorGroup( *colors[ sourceID ] ); 204 colors[ destID ] = new QColorGroup( *colors[ sourceID ] );
217 else 205 else
218 colors[ destID ] = NULL; 206 colors[ destID ] = NULL;
219 207
220 // pixmap 208 // pixmap
221 pixnames[ destID ] = pixnames[ sourceID ]; 209 pixnames[ destID ] = pixnames[ sourceID ];
222 duplicate[ destID ] = false; 210 duplicate[ destID ] = false;
223 pixmaps[ destID ] = NULL; 211 pixmaps[ destID ] = NULL;
224 images[ destID ] = NULL; 212 images[ destID ] = NULL;
225 if ( !pixnames[ destID ].isEmpty() ) { 213 if ( !pixnames[ destID ].isEmpty() ) {
226 if ( scaleHints[ sourceID ] == TileScale && blends[ sourceID ] == 0.0 ) { 214 if ( scaleHints[ sourceID ] == TileScale && blends[ sourceID ] == 0.0 ) {
227 pixmaps[ destID ] = pixmaps[ sourceID ]; 215 pixmaps[ destID ] = pixmaps[ sourceID ];
228 duplicate[ destID ] = true; 216 duplicate[ destID ] = true;
229 } 217 }
230 if ( !duplicate[ destID ] ) { 218 if ( !duplicate[ destID ] ) {
231 pixmaps[ destID ] = loadPixmap( pixnames[ destID ] ); 219 pixmaps[ destID ] = loadPixmap( pixnames[ destID ] );
232 if ( scaleHints[ destID ] == TileScale && blends[ destID ] == 0.0 ) 220 if ( scaleHints[ destID ] == TileScale && blends[ destID ] == 0.0 )
233 images[ destID ] = NULL; 221 images[ destID ] = NULL;
234 else 222 else
235 images[ destID ] = loadImage( pixnames[ destID ] ); 223 images[ destID ] = loadImage( pixnames[ destID ] );
236 } 224 }
237 } 225 }
238 226
239 // border pixmap 227 // border pixmap
240 pbDuplicate[ destID ] = false; 228 pbDuplicate[ destID ] = false;
241 pbPixmaps[ destID ] = NULL; 229 pbPixmaps[ destID ] = NULL;
242 pbWidth[ destID ] = pbWidth[ sourceID ]; 230 pbWidth[ destID ] = pbWidth[ sourceID ];
243 brdnames[ destID ] = brdnames[ sourceID ]; 231 brdnames[ destID ] = brdnames[ sourceID ];
244 if ( !brdnames[ destID ].isEmpty() ) { 232 if ( !brdnames[ destID ].isEmpty() ) {
245 pbPixmaps[ destID ] = pbPixmaps[ sourceID ]; 233 pbPixmaps[ destID ] = pbPixmaps[ sourceID ];
246 pbDuplicate[ destID ] = true; 234 pbDuplicate[ destID ] = true;
247 } 235 }
248 236
249 if ( sourceID == ActiveTab && destID == InactiveTab ) 237 if ( sourceID == ActiveTab && destID == InactiveTab )
250 aTabLine = iTabLine; 238 aTabLine = iTabLine;
251 else if ( sourceID == InactiveTab && destID == ActiveTab ) 239 else if ( sourceID == InactiveTab && destID == ActiveTab )
252 iTabLine = aTabLine; 240 iTabLine = aTabLine;
253} 241}
254 242
255void OThemeBase::readConfig( Qt::GUIStyle /*style*/ ) 243void OThemeBase::readConfig( Qt::GUIStyle /*style*/ )
256{ 244{
257#define PREBLEND_ITEMS 12 245#define PREBLEND_ITEMS 12
258 static WidgetType preBlend[] = {Slider, IndicatorOn, IndicatorOff, 246 static WidgetType preBlend[] = {Slider, IndicatorOn, IndicatorOff,
259 ExIndicatorOn, ExIndicatorOff, HScrollDeco, VScrollDeco, HScrollDecoDown, 247 ExIndicatorOn, ExIndicatorOff, HScrollDeco, VScrollDeco, HScrollDecoDown,
260 VScrollDecoDown, ComboDeco, ComboDecoDown, CheckMark}; 248 VScrollDecoDown, ComboDeco, ComboDecoDown, CheckMark};
261 249
262 int i; 250 int i;
263 QString tmpStr; 251 QString tmpStr;
264 QString copyfrom[ WIDGETS ]; 252 QString copyfrom[ WIDGETS ];
265 QString pixnames[ WIDGETS ]; // used for duplicate check 253 QString pixnames[ WIDGETS ]; // used for duplicate check
266 QString brdnames[ WIDGETS ]; 254 QString brdnames[ WIDGETS ];
267 bool loaded[ WIDGETS ]; // used for preloading for CopyWidget 255 bool loaded[ WIDGETS ]; // used for preloading for CopyWidget
268 256
269 if ( configFileName.isEmpty() ) { 257 if ( configFileName.isEmpty() ) {
270 Config cfg ( "qpe" ); 258 Config cfg ( "qpe" );
271 cfg. setGroup ( "Appearance" ); 259 cfg. setGroup ( "Appearance" );
272 260
273 configFileName = cfg. readEntry ( "Theme", "default" ); 261 configFileName = cfg. readEntry ( "Theme", "default" );
274 } 262 }
275 MyConfig config( configFilePath + "/themes/" + configFileName + ".themerc" , Config::File ); 263 Config config( configFilePath + "/themes/" + configFileName + ".themerc" , Config::File );
276 264
277 //printf ( "Opened config file: %s\n", ( configFilePath + "/themes/" + configFileName + ".themerc" ). ascii()); 265 //printf ( "Opened config file: %s\n", ( configFilePath + "/themes/" + configFileName + ".themerc" ). ascii());
278 266
279 // Are we initalized? 267 // Are we initalized?
280 applyMiscResourceGroup( &config ); 268 applyMiscResourceGroup( &config );
281 for ( i = 0; i < INHERIT_ITEMS; ++i ) { 269 for ( i = 0; i < INHERIT_ITEMS; ++i ) {
282 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames ); 270 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames );
283 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() ); 271 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() );
284 } 272 }
285 for ( ; i < INHERIT_ITEMS*2; ++i ) { 273 for ( ; i < INHERIT_ITEMS*2; ++i ) {
286 if ( config.hasGroup( QString( widgetEntries[ i ] ) ) ) { 274 if ( config.hasGroup( QString( widgetEntries[ i ] ) ) ) {
287 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames ); 275 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames );
288 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() ); 276 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() );
289 } 277 }
290 else { 278 else {
291 copyfrom [ i ] = widgetEntries[ i - INHERIT_ITEMS ]; 279 copyfrom [ i ] = widgetEntries[ i - INHERIT_ITEMS ];
292 // printf ( "%d [%s]: copy=%s\n", i, widgetEntries [i], copyfrom [i].latin1()); 280 // printf ( "%d [%s]: copy=%s\n", i, widgetEntries [i], copyfrom [i].latin1());
293 } 281 }
294 } 282 }
295 for ( ; i < WIDGETS; ++i ) { 283 for ( ; i < WIDGETS; ++i ) {
296 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames ); 284 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames );
297 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() ); 285 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() );
298 } 286 }
299 287
300 // initalize defaults that may not be read 288 // initalize defaults that may not be read
301 for ( i = 0; i < WIDGETS; ++i ) 289 for ( i = 0; i < WIDGETS; ++i )
302 loaded[ i ] = false; 290 loaded[ i ] = false;
303 btnXShift = btnYShift = focus3DOffset = 0; 291 btnXShift = btnYShift = focus3DOffset = 0;
304 aTabLine = iTabLine = true; 292 aTabLine = iTabLine = true;
305 roundedButton = roundedCombo = roundedSlider = focus3D = false; 293 roundedButton = roundedCombo = roundedSlider = focus3D = false;
306 splitterWidth = 10; 294 splitterWidth = 10;
307 295
308 for ( i = 0; i < WIDGETS; ++i ) { 296 for ( i = 0; i < WIDGETS; ++i ) {
309 readResourceGroup( i, copyfrom, pixnames, brdnames, loaded ); 297 readResourceGroup( i, copyfrom, pixnames, brdnames, loaded );
310 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s, colors=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1(), (colors[i]?colors[i]->background().name().latin1():"<none)" )); 298 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s, colors=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1(), (colors[i]?colors[i]->background().name().latin1():"<none)" ));
311 } 299 }
312 300
313 // misc items 301 // misc items
314 readMiscResourceGroup(); 302 readMiscResourceGroup();
315 303
316 // Handle preblend items 304 // Handle preblend items
317 for ( i = 0; i < PREBLEND_ITEMS; ++i ) { 305 for ( i = 0; i < PREBLEND_ITEMS; ++i ) {
318 if ( pixmaps[ preBlend[ i ] ] != NULL && blends[ preBlend[ i ] ] != 0.0 ) 306 if ( pixmaps[ preBlend[ i ] ] != NULL && blends[ preBlend[ i ] ] != 0.0 )
319 blend( preBlend[ i ] ); 307 blend( preBlend[ i ] );
320 } 308 }
321} 309}
322 310
323OThemeBase::OThemeBase( const QString & configFile ) 311OThemeBase::OThemeBase( const QString & configFile )
324 : QWindowsStyle() 312 : QWindowsStyle()
325{ 313{
326 configFilePath = QPEApplication::qpeDir ( ) + "/plugins/styles/"; 314 configFilePath = QPEApplication::qpeDir ( ) + "/plugins/styles/";
327 configFileName = configFile; 315 configFileName = configFile;
328 316
329 readConfig( Qt::WindowsStyle ); 317 readConfig( Qt::WindowsStyle );
330 cache = new OThemeCache( cacheSize ); 318 cache = new OThemeCache( cacheSize );
331} 319}
332 320
333void OThemeBase::applyConfigFile( const QString &/*file*/ ) 321void OThemeBase::applyConfigFile( const QString &/*file*/ )
334{ 322{
335#if 0 323#if 0
336 // handle std color scheme 324 // handle std color scheme
337 Config inConfig( file, Config::File ); 325 Config inConfig( file, Config::File );
338 Config globalConfig ( "qpe" ); 326 Config globalConfig ( "qpe" );
339 327
340 globalConfig. setGroup ( "Apperance" ); 328 globalConfig. setGroup ( "Apperance" );
341 inConfig. setGroup( "General" ); 329 inConfig. setGroup( "General" );
342 330
343 if ( inConfig.hasKey( "foreground" ) ) 331 if ( inConfig.hasKey( "foreground" ) )
344 globalConfig.writeEntry( "Text", inConfig.readEntry( "foreground", " " ) ); 332 globalConfig.writeEntry( "Text", inConfig.readEntry( "foreground", " " ) );
345 if ( inConfig.hasKey( "background" ) ) 333 if ( inConfig.hasKey( "background" ) )
346 globalConfig.writeEntry( "Background", inConfig.readEntry( "background", " " ) ); 334 globalConfig.writeEntry( "Background", inConfig.readEntry( "background", " " ) );
347 if ( inConfig.hasKey( "selectForeground" ) ) 335 if ( inConfig.hasKey( "selectForeground" ) )
348 globalConfig.writeEntry( "HighlightedText", inConfig.readEntry( "selectForeground", " " ) ); 336 globalConfig.writeEntry( "HighlightedText", inConfig.readEntry( "selectForeground", " " ) );
349 if ( inConfig.hasKey( "selectBackground" ) ) 337 if ( inConfig.hasKey( "selectBackground" ) )
350 globalConfig.writeEntry( "Highlight", inConfig.readEntry( "selectBackground", " " ) ); 338 globalConfig.writeEntry( "Highlight", inConfig.readEntry( "selectBackground", " " ) );
351 if ( inConfig.hasKey( "windowForeground" ) ) 339 if ( inConfig.hasKey( "windowForeground" ) )
352 globalConfig.writeEntry( "Text", inConfig.readEntry( "windowForeground", " " ) ); 340 globalConfig.writeEntry( "Text", inConfig.readEntry( "windowForeground", " " ) );
353 if ( inConfig.hasKey( "windowBackground" ) ) 341 if ( inConfig.hasKey( "windowBackground" ) )
354 globalConfig.writeEntry( "Base", inConfig.readEntry( "windowBackground", " " ) ); 342 globalConfig.writeEntry( "Base", inConfig.readEntry( "windowBackground", " " ) );
355 343
356 // Keep track of the current theme so that we can select the right one 344 // Keep track of the current theme so that we can select the right one
357 // in the KControl module. 345 // in the KControl module.
358 globalConfig.writeEntry ( "CurrentTheme", file ); 346 globalConfig.writeEntry ( "CurrentTheme", file );
359 347
360 globalConfig.write(); 348 globalConfig.write();
361#endif 349#endif
362} 350}
363 351
364OThemeBase::~OThemeBase() 352OThemeBase::~OThemeBase()
365{ 353{
366 int i; 354 int i;
367 for ( i = 0; i < WIDGETS; ++i ) { 355 for ( i = 0; i < WIDGETS; ++i ) {
368 if ( !duplicate[ i ] ) { 356 if ( !duplicate[ i ] ) {
369 if ( images[ i ] ) 357 if ( images[ i ] )
370 delete images[ i ]; 358 delete images[ i ];
371 if ( pixmaps[ i ] ) 359 if ( pixmaps[ i ] )
372 delete pixmaps[ i ]; 360 delete pixmaps[ i ];
373 } 361 }
374 if ( !pbDuplicate[ i ] && pbPixmaps[ i ] ) 362 if ( !pbDuplicate[ i ] && pbPixmaps[ i ] )
375 delete pbPixmaps[ i ]; 363 delete pbPixmaps[ i ];
376 if ( colors[ i ] ) 364 if ( colors[ i ] )
377 delete( colors[ i ] ); 365 delete( colors[ i ] );
378 if ( grLowColors[ i ] ) 366 if ( grLowColors[ i ] )
379 delete( grLowColors[ i ] ); 367 delete( grLowColors[ i ] );
380 if ( grHighColors[ i ] ) 368 if ( grHighColors[ i ] )
381 delete( grHighColors[ i ] ); 369 delete( grHighColors[ i ] );
382 } 370 }
383 delete cache; 371 delete cache;
384} 372}
385 373
386QImage* OThemeBase::loadImage( QString &name ) 374QImage* OThemeBase::loadImage( QString &name )
387{ 375{
388 QImage * image = new QImage; 376 QImage * image = new QImage;
389 QString path = configFilePath + "/pixmaps/" + name; 377 QString path = configFilePath + "/pixmaps/" + name;
390 image->load( path ); 378 image->load( path );
391 if ( !image->isNull() ) 379 if ( !image->isNull() )
392 return ( image ); 380 return ( image );
393 qDebug ( "OThemeBase: Unable to load image %s\n", name.ascii ( ) ); 381 qDebug ( "OThemeBase: Unable to load image %s\n", name.ascii ( ) );
394 delete image; 382 delete image;
395 return ( NULL ); 383 return ( NULL );
396} 384}
397 385
398OThemePixmap* OThemeBase::loadPixmap( QString &name ) 386OThemePixmap* OThemeBase::loadPixmap( QString &name )
399{ 387{
400 OThemePixmap * pixmap = new OThemePixmap( false ); 388 OThemePixmap * pixmap = new OThemePixmap( false );
401 QString path = configFilePath + "/pixmaps/" + name; 389 QString path = configFilePath + "/pixmaps/" + name;
402 pixmap->load( path ); 390 pixmap->load( path );
403 if ( !pixmap->isNull() ) 391 if ( !pixmap->isNull() )
404 return pixmap; 392 return pixmap;
405 qDebug ( "OThemeBase: Unable to load pixmap %s\n", name.ascii() ); 393 qDebug ( "OThemeBase: Unable to load pixmap %s\n", name.ascii() );
406 delete pixmap; 394 delete pixmap;
407 return ( NULL ); 395 return ( NULL );
408} 396}
409 397
410OThemePixmap* OThemeBase::scale( int w, int h, WidgetType widget ) 398OThemePixmap* OThemeBase::scale( int w, int h, WidgetType widget )
411{ 399{
412 if ( scaleHints[ widget ] == FullScale ) { 400 if ( scaleHints[ widget ] == FullScale ) {
413 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w || 401 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w ||
414 pixmaps[ widget ] ->height() != h ) { 402 pixmaps[ widget ] ->height() != h ) {
415 OThemePixmap * cachePix = cache->pixmap( w, h, widget ); 403 OThemePixmap * cachePix = cache->pixmap( w, h, widget );
416 if ( cachePix ) { 404 if ( cachePix ) {
417 cachePix = new OThemePixmap( *cachePix ); 405 cachePix = new OThemePixmap( *cachePix );
418 if ( pixmaps[ widget ] ) 406 if ( pixmaps[ widget ] )
419 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, 407 cache->insert( pixmaps[ widget ], OThemeCache::FullScale,
420 widget ); 408 widget );
421 else 409 else
422 qDebug( "We would have inserted a null pixmap!\n" ); 410 qDebug( "We would have inserted a null pixmap!\n" );
423 pixmaps[ widget ] = cachePix; 411 pixmaps[ widget ] = cachePix;
424 } 412 }
425 else { 413 else {
426 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget ); 414 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget );
427 QImage tmpImg = images[ widget ] ->smoothScale( w, h ); 415 QImage tmpImg = images[ widget ] ->smoothScale( w, h );
428 pixmaps[ widget ] = new OThemePixmap; 416 pixmaps[ widget ] = new OThemePixmap;
429 pixmaps[ widget ] ->convertFromImage( tmpImg ); 417 pixmaps[ widget ] ->convertFromImage( tmpImg );
430 if ( blends[ widget ] != 0.0 ) 418 if ( blends[ widget ] != 0.0 )
431 blend( widget ); 419 blend( widget );
432 } 420 }
433 } 421 }
434 } 422 }
435 else if ( scaleHints[ widget ] == HorizontalScale ) { 423 else if ( scaleHints[ widget ] == HorizontalScale ) {
436 if ( pixmaps[ widget ] ->width() != w ) { 424 if ( pixmaps[ widget ] ->width() != w ) {
437 OThemePixmap * cachePix = cache->horizontalPixmap( w, widget ); 425 OThemePixmap * cachePix = cache->horizontalPixmap( w, widget );
438 if ( cachePix ) { 426 if ( cachePix ) {
439 cachePix = new OThemePixmap( *cachePix ); 427 cachePix = new OThemePixmap( *cachePix );
440 if ( pixmaps[ widget ] ) 428 if ( pixmaps[ widget ] )
441 cache->insert( pixmaps[ widget ], OThemeCache::HorizontalScale, widget ); 429 cache->insert( pixmaps[ widget ], OThemeCache::HorizontalScale, widget );
442 else 430 else
443 qDebug ( "We would have inserted a null pixmap!\n" ); 431 qDebug ( "We would have inserted a null pixmap!\n" );
444 pixmaps[ widget ] = cachePix; 432 pixmaps[ widget ] = cachePix;
445 } 433 }
446 else { 434 else {
447 cache->insert( pixmaps[ widget ], OThemeCache::HorizontalScale, widget ); 435 cache->insert( pixmaps[ widget ], OThemeCache::HorizontalScale, widget );
448 QImage tmpImg = images[ widget ] -> 436 QImage tmpImg = images[ widget ] ->
449 smoothScale( w, images[ widget ] ->height() ); 437 smoothScale( w, images[ widget ] ->height() );
450 pixmaps[ widget ] = new OThemePixmap; 438 pixmaps[ widget ] = new OThemePixmap;
451 pixmaps[ widget ] ->convertFromImage( tmpImg ); 439 pixmaps[ widget ] ->convertFromImage( tmpImg );
452 if ( blends[ widget ] != 0.0 ) 440 if ( blends[ widget ] != 0.0 )
453 blend( widget ); 441 blend( widget );
454 } 442 }
455 } 443 }
456 } 444 }
457 else if ( scaleHints[ widget ] == VerticalScale ) { 445 else if ( scaleHints[ widget ] == VerticalScale ) {
458 if ( pixmaps[ widget ] ->height() != h ) { 446 if ( pixmaps[ widget ] ->height() != h ) {
459 OThemePixmap * cachePix = cache->verticalPixmap( w, widget ); 447 OThemePixmap * cachePix = cache->verticalPixmap( w, widget );
460 if ( cachePix ) { 448 if ( cachePix ) {
461 cachePix = new OThemePixmap( *cachePix ); 449 cachePix = new OThemePixmap( *cachePix );
462 if ( pixmaps[ widget ] ) 450 if ( pixmaps[ widget ] )
463 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, widget ); 451 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, widget );
464 else 452 else
465 qDebug ( "We would have inserted a null pixmap!\n" ); 453 qDebug ( "We would have inserted a null pixmap!\n" );
466 pixmaps[ widget ] = cachePix; 454 pixmaps[ widget ] = cachePix;
467 } 455 }
468 else { 456 else {
469 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, widget ); 457 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, widget );
470 QImage tmpImg = 458 QImage tmpImg =
471 images[ widget ] ->smoothScale( images[ widget ] ->width(), h ); 459 images[ widget ] ->smoothScale( images[ widget ] ->width(), h );
472 pixmaps[ widget ] = new OThemePixmap; 460 pixmaps[ widget ] = new OThemePixmap;
473 pixmaps[ widget ] ->convertFromImage( tmpImg ); 461 pixmaps[ widget ] ->convertFromImage( tmpImg );
474 if ( blends[ widget ] != 0.0 ) 462 if ( blends[ widget ] != 0.0 )
475 blend( widget ); 463 blend( widget );
476 } 464 }
477 } 465 }
478 } 466 }
479 // If blended tile here so the blend is scaled properly 467 // If blended tile here so the blend is scaled properly
480 else if ( scaleHints[ widget ] == TileScale && blends[ widget ] != 0.0 ) { 468 else if ( scaleHints[ widget ] == TileScale && blends[ widget ] != 0.0 ) {
481 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w || 469 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w ||
482 pixmaps[ widget ] ->height() != h ) { 470 pixmaps[ widget ] ->height() != h ) {
483 OThemePixmap * cachePix = cache->pixmap( w, h, widget ); 471 OThemePixmap * cachePix = cache->pixmap( w, h, widget );
484 if ( cachePix ) { 472 if ( cachePix ) {
485 cachePix = new OThemePixmap( *cachePix ); 473 cachePix = new OThemePixmap( *cachePix );
486 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget ); 474 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget );
487 pixmaps[ widget ] = cachePix; 475 pixmaps[ widget ] = cachePix;
488 } 476 }
489 else { 477 else {
490 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget ); 478 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget );
491 QPixmap tile; 479 QPixmap tile;
492 tile.convertFromImage( *images[ widget ] ); 480 tile.convertFromImage( *images[ widget ] );
493 pixmaps[ widget ] = new OThemePixmap; 481 pixmaps[ widget ] = new OThemePixmap;
494 pixmaps[ widget ] ->resize( w, h ); 482 pixmaps[ widget ] ->resize( w, h );
495 QPainter p( pixmaps[ widget ] ); 483 QPainter p( pixmaps[ widget ] );
496 p.drawTiledPixmap( 0, 0, w, h, tile ); 484 p.drawTiledPixmap( 0, 0, w, h, tile );
497 if ( blends[ widget ] != 0.0 ) 485 if ( blends[ widget ] != 0.0 )
498 blend( widget ); 486 blend( widget );
499 } 487 }
500 } 488 }
501 } 489 }
502 return ( pixmaps[ widget ] ); 490 return ( pixmaps[ widget ] );
503} 491}
504 492
505OThemePixmap* OThemeBase::scaleBorder( int w, int h, WidgetType widget ) 493OThemePixmap* OThemeBase::scaleBorder( int w, int h, WidgetType widget )
506{ 494{
507 OThemePixmap * pixmap = NULL; 495 OThemePixmap * pixmap = NULL;
508 if ( !pbPixmaps[ widget ] && !pbWidth[ widget ] ) 496 if ( !pbPixmaps[ widget ] && !pbWidth[ widget ] )
509 return ( NULL ); 497 return ( NULL );
510 pixmap = cache->pixmap( w, h, widget, true ); 498 pixmap = cache->pixmap( w, h, widget, true );
511 if ( pixmap ) { 499 if ( pixmap ) {
512 pixmap = new OThemePixmap( *pixmap ); 500 pixmap = new OThemePixmap( *pixmap );
513 } 501 }
514 else { 502 else {
515 pixmap = new OThemePixmap(); 503 pixmap = new OThemePixmap();
516 pixmap->resize( w, h ); 504 pixmap->resize( w, h );
517 QBitmap mask; 505 QBitmap mask;
518 mask.resize( w, h ); 506 mask.resize( w, h );
519 mask.fill( color0 ); 507 mask.fill( color0 );
520 QPainter mPainter; 508 QPainter mPainter;
521 mPainter.begin( &mask ); 509 mPainter.begin( &mask );
522 510
523 QPixmap *tmp = borderPixmap( widget ) ->border( OThemePixmap::TopLeft ); 511 QPixmap *tmp = borderPixmap( widget ) ->border( OThemePixmap::TopLeft );
524 const QBitmap *srcMask = tmp->mask(); 512 const QBitmap *srcMask = tmp->mask();
525 int bdWidth = tmp->width(); 513 int bdWidth = tmp->width();
526 514
527 bitBlt( pixmap, 0, 0, tmp, 0, 0, bdWidth, bdWidth, 515 bitBlt( pixmap, 0, 0, tmp, 0, 0, bdWidth, bdWidth,
528 Qt::CopyROP, false ); 516 Qt::CopyROP, false );
529 if ( srcMask ) 517 if ( srcMask )
530 bitBlt( &mask, 0, 0, srcMask, 0, 0, bdWidth, bdWidth, 518 bitBlt( &mask, 0, 0, srcMask, 0, 0, bdWidth, bdWidth,
531 Qt::CopyROP, false ); 519 Qt::CopyROP, false );