summaryrefslogtreecommitdiff
authorsandman <sandman>2002-11-24 18:31:38 (UTC)
committer sandman <sandman>2002-11-24 18:31:38 (UTC)
commit75cf5d2277d66f533167bcb2e3b6f0eee2424d96 (patch) (unidiff)
tree32f6fb81494954ac93e6f451f701d0b83f9852b7
parent1b2c3ce0d94f033e8ffe1aa8575b210cdfb3c1ec (diff)
downloadopie-75cf5d2277d66f533167bcb2e3b6f0eee2424d96.zip
opie-75cf5d2277d66f533167bcb2e3b6f0eee2424d96.tar.gz
opie-75cf5d2277d66f533167bcb2e3b6f0eee2424d96.tar.bz2
Valgrind complaint
had to changed the initialization sequence
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/styles/theme/othemebase.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/styles/theme/othemebase.cpp b/noncore/styles/theme/othemebase.cpp
index 58005b5..acac847 100644
--- a/noncore/styles/theme/othemebase.cpp
+++ b/noncore/styles/theme/othemebase.cpp
@@ -1,1066 +1,1066 @@
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 84class MyConfig : public Config
85{ 85{
86public: 86public:
87 MyConfig ( const QString &f, Domain d ) : Config ( f, d ) 87 MyConfig ( const QString &f, Domain d ) : Config ( f, d )
88 { } 88 { }
89 89
90 bool hasGroup ( const QString &gname ) const 90 bool hasGroup ( const QString &gname ) const
91 { 91 {
92 QMap< QString, ConfigGroup>::ConstIterator it = groups. find ( gname ); 92 QMap< QString, ConfigGroup>::ConstIterator it = groups. find ( gname );
93 return ( it != groups.end() ); 93 return ( it != groups.end() );
94 } 94 }
95}; 95};
96 96
97void OThemeBase::generateBorderPix( int i ) 97void OThemeBase::generateBorderPix( int i )
98{ 98{
99 // separate pixmap into separate components 99 // separate pixmap into separate components
100 if ( pbPixmaps[ i ] ) { 100 if ( pbPixmaps[ i ] ) {
101 // evidently I have to do masks manually... 101 // evidently I have to do masks manually...
102 const QBitmap * srcMask = pbPixmaps[ i ] ->mask(); 102 const QBitmap * srcMask = pbPixmaps[ i ] ->mask();
103 QBitmap destMask( pbWidth[ i ], pbWidth[ i ] ); 103 QBitmap destMask( pbWidth[ i ], pbWidth[ i ] );
104 QPixmap tmp( pbWidth[ i ], pbWidth[ i ] ); 104 QPixmap tmp( pbWidth[ i ], pbWidth[ i ] );
105 105
106 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, 0, pbWidth[ i ], pbWidth[ i ], 106 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, 0, pbWidth[ i ], pbWidth[ i ],
107 Qt::CopyROP, false ); 107 Qt::CopyROP, false );
108 if ( srcMask ) { 108 if ( srcMask ) {
109 bitBlt( &destMask, 0, 0, srcMask, 0, 0, pbWidth[ i ], pbWidth[ i ], 109 bitBlt( &destMask, 0, 0, srcMask, 0, 0, pbWidth[ i ], pbWidth[ i ],
110 Qt::CopyROP, false ); 110 Qt::CopyROP, false );
111 tmp.setMask( destMask ); 111 tmp.setMask( destMask );
112 } 112 }
113 pbPixmaps[ i ] ->setBorder( OThemePixmap::TopLeft, tmp ); 113 pbPixmaps[ i ] ->setBorder( OThemePixmap::TopLeft, tmp );
114 114
115 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ], 0, 115 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ], 0,
116 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false ); 116 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false );
117 if ( srcMask ) { 117 if ( srcMask ) {
118 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ], 118 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ],
119 0, pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false ); 119 0, pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false );
120 tmp.setMask( destMask ); 120 tmp.setMask( destMask );
121 } 121 }
122 pbPixmaps[ i ] ->setBorder( OThemePixmap::TopRight, tmp ); 122 pbPixmaps[ i ] ->setBorder( OThemePixmap::TopRight, tmp );
123 123
124 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, pbPixmaps[ i ] ->height() - pbWidth[ i ], 124 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, pbPixmaps[ i ] ->height() - pbWidth[ i ],
125 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false ); 125 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false );
126 if ( srcMask ) { 126 if ( srcMask ) {
127 bitBlt( &destMask, 0, 0, srcMask, 0, pbPixmaps[ i ] ->height() - pbWidth[ i ], 127 bitBlt( &destMask, 0, 0, srcMask, 0, pbPixmaps[ i ] ->height() - pbWidth[ i ],
128 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false ); 128 pbWidth[ i ], pbWidth[ i ], Qt::CopyROP, false );
129 tmp.setMask( destMask ); 129 tmp.setMask( destMask );
130 } 130 }
131 pbPixmaps[ i ] ->setBorder( OThemePixmap::BottomLeft, tmp ); 131 pbPixmaps[ i ] ->setBorder( OThemePixmap::BottomLeft, tmp );
132 132
133 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ], 133 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ],
134 pbPixmaps[ i ] ->height() - pbWidth[ i ], pbWidth[ i ], pbWidth[ i ], 134 pbPixmaps[ i ] ->height() - pbWidth[ i ], pbWidth[ i ], pbWidth[ i ],
135 Qt::CopyROP, false ); 135 Qt::CopyROP, false );
136 if ( srcMask ) { 136 if ( srcMask ) {
137 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ], 137 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ],
138 pbPixmaps[ i ] ->height() - pbWidth[ i ], pbWidth[ i ], pbWidth[ i ], 138 pbPixmaps[ i ] ->height() - pbWidth[ i ], pbWidth[ i ], pbWidth[ i ],
139 Qt::CopyROP, false ); 139 Qt::CopyROP, false );
140 tmp.setMask( destMask ); 140 tmp.setMask( destMask );
141 } 141 }
142 pbPixmaps[ i ] ->setBorder( OThemePixmap::BottomRight, tmp ); 142 pbPixmaps[ i ] ->setBorder( OThemePixmap::BottomRight, tmp );
143 143
144 tmp.resize( pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ] ); 144 tmp.resize( pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ] );
145 destMask.resize( pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ] ); 145 destMask.resize( pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ] );
146 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbWidth[ i ], 0, 146 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbWidth[ i ], 0,
147 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false ); 147 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false );
148 if ( srcMask ) { 148 if ( srcMask ) {
149 bitBlt( &destMask, 0, 0, srcMask, pbWidth[ i ], 0, 149 bitBlt( &destMask, 0, 0, srcMask, pbWidth[ i ], 0,
150 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], 150 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ],
151 Qt::CopyROP, false ); 151 Qt::CopyROP, false );
152 tmp.setMask( destMask ); 152 tmp.setMask( destMask );
153 } 153 }
154 pbPixmaps[ i ] ->setBorder( OThemePixmap::Top, tmp ); 154 pbPixmaps[ i ] ->setBorder( OThemePixmap::Top, tmp );
155 155
156 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbWidth[ i ], 156 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbWidth[ i ],
157 pbPixmaps[ i ] ->height() - pbWidth[ i ], 157 pbPixmaps[ i ] ->height() - pbWidth[ i ],
158 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false ); 158 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false );
159 if ( srcMask ) { 159 if ( srcMask ) {
160 bitBlt( &destMask, 0, 0, srcMask, pbWidth[ i ], 160 bitBlt( &destMask, 0, 0, srcMask, pbWidth[ i ],
161 pbPixmaps[ i ] ->height() - pbWidth[ i ], 161 pbPixmaps[ i ] ->height() - pbWidth[ i ],
162 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false ); 162 pbPixmaps[ i ] ->width() - pbWidth[ i ] * 2, pbWidth[ i ], Qt::CopyROP, false );
163 tmp.setMask( destMask ); 163 tmp.setMask( destMask );
164 } 164 }
165 pbPixmaps[ i ] ->setBorder( OThemePixmap::Bottom, tmp ); 165 pbPixmaps[ i ] ->setBorder( OThemePixmap::Bottom, tmp );
166 166
167 tmp.resize( pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2 ); 167 tmp.resize( pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2 );
168 destMask.resize( pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2 ); 168 destMask.resize( pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2 );
169 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, pbWidth[ i ], pbWidth[ i ], 169 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], 0, pbWidth[ i ], pbWidth[ i ],
170 pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, Qt::CopyROP, false ); 170 pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, Qt::CopyROP, false );
171 if ( srcMask ) { 171 if ( srcMask ) {
172 bitBlt( &destMask, 0, 0, srcMask, 0, pbWidth[ i ], pbWidth[ i ], 172 bitBlt( &destMask, 0, 0, srcMask, 0, pbWidth[ i ], pbWidth[ i ],
173 pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, Qt::CopyROP, false ); 173 pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, Qt::CopyROP, false );
174 tmp.setMask( destMask ); 174 tmp.setMask( destMask );
175 } 175 }
176 176
177 pbPixmaps[ i ] ->setBorder( OThemePixmap::Left, tmp ); 177 pbPixmaps[ i ] ->setBorder( OThemePixmap::Left, tmp );
178 178
179 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ], 179 bitBlt( &tmp, 0, 0, pbPixmaps[ i ], pbPixmaps[ i ] ->width() - pbWidth[ i ],
180 pbWidth[ i ], pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, 180 pbWidth[ i ], pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2,
181 Qt::CopyROP, false ); 181 Qt::CopyROP, false );
182 if ( srcMask ) { 182 if ( srcMask ) {
183 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ], 183 bitBlt( &destMask, 0, 0, srcMask, pbPixmaps[ i ] ->width() - pbWidth[ i ],
184 pbWidth[ i ], pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2, 184 pbWidth[ i ], pbWidth[ i ], pbPixmaps[ i ] ->height() - pbWidth[ i ] * 2,
185 Qt::CopyROP, false ); 185 Qt::CopyROP, false );
186 tmp.setMask( destMask ); 186 tmp.setMask( destMask );
187 } 187 }
188 pbPixmaps[ i ] ->setBorder( OThemePixmap::Right, tmp ); 188 pbPixmaps[ i ] ->setBorder( OThemePixmap::Right, tmp );
189 } 189 }
190 else 190 else
191 qDebug ( "OThemeBase: Tried making border from empty pixmap" ); 191 qDebug ( "OThemeBase: Tried making border from empty pixmap" );
192} 192}
193 193
194 194
195void OThemeBase::copyWidgetConfig( int sourceID, int destID, QString *pixnames, 195void OThemeBase::copyWidgetConfig( int sourceID, int destID, QString *pixnames,
196 QString *brdnames ) 196 QString *brdnames )
197{ 197{
198 scaleHints[ destID ] = scaleHints[ sourceID ]; 198 scaleHints[ destID ] = scaleHints[ sourceID ];
199 gradients[ destID ] = gradients[ sourceID ]; 199 gradients[ destID ] = gradients[ sourceID ];
200 blends[ destID ] = blends[ sourceID ]; 200 blends[ destID ] = blends[ sourceID ];
201 bContrasts[ destID ] = bContrasts[ sourceID ]; 201 bContrasts[ destID ] = bContrasts[ sourceID ];
202 borders[ destID ] = borders[ sourceID ]; 202 borders[ destID ] = borders[ sourceID ];
203 highlights[ destID ] = highlights[ sourceID ]; 203 highlights[ destID ] = highlights[ sourceID ];
204 204
205 if ( grLowColors[ sourceID ] ) 205 if ( grLowColors[ sourceID ] )
206 grLowColors[ destID ] = new QColor( *grLowColors[ sourceID ] ); 206 grLowColors[ destID ] = new QColor( *grLowColors[ sourceID ] );
207 else 207 else
208 grLowColors[ destID ] = NULL; 208 grLowColors[ destID ] = NULL;
209 209
210 if ( grHighColors[ sourceID ] ) 210 if ( grHighColors[ sourceID ] )
211 grHighColors[ destID ] = new QColor( *grHighColors[ sourceID ] ); 211 grHighColors[ destID ] = new QColor( *grHighColors[ sourceID ] );
212 else 212 else
213 grHighColors[ destID ] = NULL; 213 grHighColors[ destID ] = NULL;
214 214
215 if ( colors[ sourceID ] ) 215 if ( colors[ sourceID ] )
216 colors[ destID ] = new QColorGroup( *colors[ sourceID ] ); 216 colors[ destID ] = new QColorGroup( *colors[ sourceID ] );
217 else 217 else
218 colors[ destID ] = NULL; 218 colors[ destID ] = NULL;
219 219
220 // pixmap 220 // pixmap
221 pixnames[ destID ] = pixnames[ sourceID ]; 221 pixnames[ destID ] = pixnames[ sourceID ];
222 duplicate[ destID ] = false; 222 duplicate[ destID ] = false;
223 pixmaps[ destID ] = NULL; 223 pixmaps[ destID ] = NULL;
224 images[ destID ] = NULL; 224 images[ destID ] = NULL;
225 if ( !pixnames[ destID ].isEmpty() ) { 225 if ( !pixnames[ destID ].isEmpty() ) {
226 if ( scaleHints[ sourceID ] == TileScale && blends[ sourceID ] == 0.0 ) { 226 if ( scaleHints[ sourceID ] == TileScale && blends[ sourceID ] == 0.0 ) {
227 pixmaps[ destID ] = pixmaps[ sourceID ]; 227 pixmaps[ destID ] = pixmaps[ sourceID ];
228 duplicate[ destID ] = true; 228 duplicate[ destID ] = true;
229 } 229 }
230 if ( !duplicate[ destID ] ) { 230 if ( !duplicate[ destID ] ) {
231 pixmaps[ destID ] = loadPixmap( pixnames[ destID ] ); 231 pixmaps[ destID ] = loadPixmap( pixnames[ destID ] );
232 if ( scaleHints[ destID ] == TileScale && blends[ destID ] == 0.0 ) 232 if ( scaleHints[ destID ] == TileScale && blends[ destID ] == 0.0 )
233 images[ destID ] = NULL; 233 images[ destID ] = NULL;
234 else 234 else
235 images[ destID ] = loadImage( pixnames[ destID ] ); 235 images[ destID ] = loadImage( pixnames[ destID ] );
236 } 236 }
237 } 237 }
238 238
239 // border pixmap 239 // border pixmap
240 pbDuplicate[ destID ] = false; 240 pbDuplicate[ destID ] = false;
241 pbPixmaps[ destID ] = NULL; 241 pbPixmaps[ destID ] = NULL;
242 pbWidth[ destID ] = pbWidth[ sourceID ]; 242 pbWidth[ destID ] = pbWidth[ sourceID ];
243 brdnames[ destID ] = brdnames[ sourceID ]; 243 brdnames[ destID ] = brdnames[ sourceID ];
244 if ( !brdnames[ destID ].isEmpty() ) { 244 if ( !brdnames[ destID ].isEmpty() ) {
245 pbPixmaps[ destID ] = pbPixmaps[ sourceID ]; 245 pbPixmaps[ destID ] = pbPixmaps[ sourceID ];
246 pbDuplicate[ destID ] = true; 246 pbDuplicate[ destID ] = true;
247 } 247 }
248 248
249 if ( sourceID == ActiveTab && destID == InactiveTab ) 249 if ( sourceID == ActiveTab && destID == InactiveTab )
250 aTabLine = iTabLine; 250 aTabLine = iTabLine;
251 else if ( sourceID == InactiveTab && destID == ActiveTab ) 251 else if ( sourceID == InactiveTab && destID == ActiveTab )
252 iTabLine = aTabLine; 252 iTabLine = aTabLine;
253} 253}
254 254
255void OThemeBase::readConfig( Qt::GUIStyle /*style*/ ) 255void OThemeBase::readConfig( Qt::GUIStyle /*style*/ )
256{ 256{
257#define PREBLEND_ITEMS 12 257#define PREBLEND_ITEMS 12
258 static WidgetType preBlend[] = {Slider, IndicatorOn, IndicatorOff, 258 static WidgetType preBlend[] = {Slider, IndicatorOn, IndicatorOff,
259 ExIndicatorOn, ExIndicatorOff, HScrollDeco, VScrollDeco, HScrollDecoDown, 259 ExIndicatorOn, ExIndicatorOff, HScrollDeco, VScrollDeco, HScrollDecoDown,
260 VScrollDecoDown, ComboDeco, ComboDecoDown, CheckMark}; 260 VScrollDecoDown, ComboDeco, ComboDecoDown, CheckMark};
261 261
262 int i; 262 int i;
263 QString tmpStr; 263 QString tmpStr;
264 QString copyfrom[ WIDGETS ]; 264 QString copyfrom[ WIDGETS ];
265 QString pixnames[ WIDGETS ]; // used for duplicate check 265 QString pixnames[ WIDGETS ]; // used for duplicate check
266 QString brdnames[ WIDGETS ]; 266 QString brdnames[ WIDGETS ];
267 bool loaded[ WIDGETS ]; // used for preloading for CopyWidget 267 bool loaded[ WIDGETS ]; // used for preloading for CopyWidget
268 268
269 if ( configFileName.isEmpty() ) { 269 if ( configFileName.isEmpty() ) {
270 Config cfg ( "qpe" ); 270 Config cfg ( "qpe" );
271 cfg. setGroup ( "Appearance" ); 271 cfg. setGroup ( "Appearance" );
272 272
273 configFileName = cfg. readEntry ( "Theme", "default" ); 273 configFileName = cfg. readEntry ( "Theme", "default" );
274 } 274 }
275 MyConfig config( configFilePath + "/themes/" + configFileName + ".themerc" , Config::File ); 275 MyConfig config( configFilePath + "/themes/" + configFileName + ".themerc" , Config::File );
276 276
277 //printf ( "Opened config file: %s\n", ( configFilePath + "/themes/" + configFileName + ".themerc" ). ascii()); 277 //printf ( "Opened config file: %s\n", ( configFilePath + "/themes/" + configFileName + ".themerc" ). ascii());
278 278
279 // Are we initalized? 279 // Are we initalized?
280 applyMiscResourceGroup( &config );
280 for ( i = 0; i < INHERIT_ITEMS; ++i ) { 281 for ( i = 0; i < INHERIT_ITEMS; ++i ) {
281 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames ); 282 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames );
282 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() ); 283 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() );
283 } 284 }
284 for ( ; i < INHERIT_ITEMS*2; ++i ) { 285 for ( ; i < INHERIT_ITEMS*2; ++i ) {
285 if ( config.hasGroup( QString( widgetEntries[ i ] ) ) ) { 286 if ( config.hasGroup( QString( widgetEntries[ i ] ) ) ) {
286 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames ); 287 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames );
287 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() ); 288 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() );
288 } 289 }
289 else { 290 else {
290 copyfrom [ i ] = widgetEntries[ i - INHERIT_ITEMS ]; 291 copyfrom [ i ] = widgetEntries[ i - INHERIT_ITEMS ];
291 // printf ( "%d [%s]: copy=%s\n", i, widgetEntries [i], copyfrom [i].latin1()); 292 // printf ( "%d [%s]: copy=%s\n", i, widgetEntries [i], copyfrom [i].latin1());
292 } 293 }
293 } 294 }
294 for ( ; i < WIDGETS; ++i ) { 295 for ( ; i < WIDGETS; ++i ) {
295 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames ); 296 applyResourceGroup( &config, i, copyfrom, pixnames, brdnames );
296 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() ); 297 // printf ( "%d [%s]: copy=%s, pix=%s, brd=%s\n", i, widgetEntries [i], copyfrom [i].latin1(), pixnames[i].latin1(),brdnames[i].latin1() );
297 } 298 }
298 applyMiscResourceGroup( &config );
299 299
300 // initalize defaults that may not be read 300 // initalize defaults that may not be read
301 for ( i = 0; i < WIDGETS; ++i ) 301 for ( i = 0; i < WIDGETS; ++i )
302 loaded[ i ] = false; 302 loaded[ i ] = false;
303 btnXShift = btnYShift = focus3DOffset = 0; 303 btnXShift = btnYShift = focus3DOffset = 0;
304 aTabLine = iTabLine = true; 304 aTabLine = iTabLine = true;
305 roundedButton = roundedCombo = roundedSlider = focus3D = false; 305 roundedButton = roundedCombo = roundedSlider = focus3D = false;
306 splitterWidth = 10; 306 splitterWidth = 10;
307 307
308 for ( i = 0; i < WIDGETS; ++i ) { 308 for ( i = 0; i < WIDGETS; ++i ) {
309 readResourceGroup( i, copyfrom, pixnames, brdnames, loaded ); 309 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)" )); 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)" ));
311 } 311 }
312 312
313 // misc items 313 // misc items
314 readMiscResourceGroup(); 314 readMiscResourceGroup();
315 315
316 // Handle preblend items 316 // Handle preblend items
317 for ( i = 0; i < PREBLEND_ITEMS; ++i ) { 317 for ( i = 0; i < PREBLEND_ITEMS; ++i ) {
318 if ( pixmaps[ preBlend[ i ] ] != NULL && blends[ preBlend[ i ] ] != 0.0 ) 318 if ( pixmaps[ preBlend[ i ] ] != NULL && blends[ preBlend[ i ] ] != 0.0 )
319 blend( preBlend[ i ] ); 319 blend( preBlend[ i ] );
320 } 320 }
321} 321}
322 322
323OThemeBase::OThemeBase( const QString & configFile ) 323OThemeBase::OThemeBase( const QString & configFile )
324 : QWindowsStyle() 324 : QWindowsStyle()
325{ 325{
326 configFilePath = QPEApplication::qpeDir ( ) + "/plugins/styles/"; 326 configFilePath = QPEApplication::qpeDir ( ) + "/plugins/styles/";
327 configFileName = configFile; 327 configFileName = configFile;
328 328
329 readConfig( Qt::WindowsStyle ); 329 readConfig( Qt::WindowsStyle );
330 cache = new OThemeCache( cacheSize ); 330 cache = new OThemeCache( cacheSize );
331} 331}
332 332
333void OThemeBase::applyConfigFile( const QString &/*file*/ ) 333void OThemeBase::applyConfigFile( const QString &/*file*/ )
334{ 334{
335#if 0 335#if 0
336 // handle std color scheme 336 // handle std color scheme
337 Config inConfig( file, Config::File ); 337 Config inConfig( file, Config::File );
338 Config globalConfig ( "qpe" ); 338 Config globalConfig ( "qpe" );
339 339
340 globalConfig. setGroup ( "Apperance" ); 340 globalConfig. setGroup ( "Apperance" );
341 inConfig. setGroup( "General" ); 341 inConfig. setGroup( "General" );
342 342
343 if ( inConfig.hasKey( "foreground" ) ) 343 if ( inConfig.hasKey( "foreground" ) )
344 globalConfig.writeEntry( "Text", inConfig.readEntry( "foreground", " " ) ); 344 globalConfig.writeEntry( "Text", inConfig.readEntry( "foreground", " " ) );
345 if ( inConfig.hasKey( "background" ) ) 345 if ( inConfig.hasKey( "background" ) )
346 globalConfig.writeEntry( "Background", inConfig.readEntry( "background", " " ) ); 346 globalConfig.writeEntry( "Background", inConfig.readEntry( "background", " " ) );
347 if ( inConfig.hasKey( "selectForeground" ) ) 347 if ( inConfig.hasKey( "selectForeground" ) )
348 globalConfig.writeEntry( "HighlightedText", inConfig.readEntry( "selectForeground", " " ) ); 348 globalConfig.writeEntry( "HighlightedText", inConfig.readEntry( "selectForeground", " " ) );
349 if ( inConfig.hasKey( "selectBackground" ) ) 349 if ( inConfig.hasKey( "selectBackground" ) )
350 globalConfig.writeEntry( "Highlight", inConfig.readEntry( "selectBackground", " " ) ); 350 globalConfig.writeEntry( "Highlight", inConfig.readEntry( "selectBackground", " " ) );
351 if ( inConfig.hasKey( "windowForeground" ) ) 351 if ( inConfig.hasKey( "windowForeground" ) )
352 globalConfig.writeEntry( "Text", inConfig.readEntry( "windowForeground", " " ) ); 352 globalConfig.writeEntry( "Text", inConfig.readEntry( "windowForeground", " " ) );
353 if ( inConfig.hasKey( "windowBackground" ) ) 353 if ( inConfig.hasKey( "windowBackground" ) )
354 globalConfig.writeEntry( "Base", inConfig.readEntry( "windowBackground", " " ) ); 354 globalConfig.writeEntry( "Base", inConfig.readEntry( "windowBackground", " " ) );
355 355
356 // Keep track of the current theme so that we can select the right one 356 // Keep track of the current theme so that we can select the right one
357 // in the KControl module. 357 // in the KControl module.
358 globalConfig.writeEntry ( "CurrentTheme", file ); 358 globalConfig.writeEntry ( "CurrentTheme", file );
359 359
360 globalConfig.write(); 360 globalConfig.write();
361#endif 361#endif
362} 362}
363 363
364OThemeBase::~OThemeBase() 364OThemeBase::~OThemeBase()
365{ 365{
366 int i; 366 int i;
367 for ( i = 0; i < WIDGETS; ++i ) { 367 for ( i = 0; i < WIDGETS; ++i ) {
368 if ( !duplicate[ i ] ) { 368 if ( !duplicate[ i ] ) {
369 if ( images[ i ] ) 369 if ( images[ i ] )
370 delete images[ i ]; 370 delete images[ i ];
371 if ( pixmaps[ i ] ) 371 if ( pixmaps[ i ] )
372 delete pixmaps[ i ]; 372 delete pixmaps[ i ];
373 } 373 }
374 if ( !pbDuplicate[ i ] && pbPixmaps[ i ] ) 374 if ( !pbDuplicate[ i ] && pbPixmaps[ i ] )
375 delete pbPixmaps[ i ]; 375 delete pbPixmaps[ i ];
376 if ( colors[ i ] ) 376 if ( colors[ i ] )
377 delete( colors[ i ] ); 377 delete( colors[ i ] );
378 if ( grLowColors[ i ] ) 378 if ( grLowColors[ i ] )
379 delete( grLowColors[ i ] ); 379 delete( grLowColors[ i ] );
380 if ( grHighColors[ i ] ) 380 if ( grHighColors[ i ] )
381 delete( grHighColors[ i ] ); 381 delete( grHighColors[ i ] );
382 } 382 }
383 delete cache; 383 delete cache;
384} 384}
385 385
386QImage* OThemeBase::loadImage( QString &name ) 386QImage* OThemeBase::loadImage( QString &name )
387{ 387{
388 QImage * image = new QImage; 388 QImage * image = new QImage;
389 QString path = configFilePath + "/pixmaps/" + name; 389 QString path = configFilePath + "/pixmaps/" + name;
390 image->load( path ); 390 image->load( path );
391 if ( !image->isNull() ) 391 if ( !image->isNull() )
392 return ( image ); 392 return ( image );
393 qDebug ( "OThemeBase: Unable to load image %s\n", name.ascii ( ) ); 393 qDebug ( "OThemeBase: Unable to load image %s\n", name.ascii ( ) );
394 delete image; 394 delete image;
395 return ( NULL ); 395 return ( NULL );
396} 396}
397 397
398OThemePixmap* OThemeBase::loadPixmap( QString &name ) 398OThemePixmap* OThemeBase::loadPixmap( QString &name )
399{ 399{
400 OThemePixmap * pixmap = new OThemePixmap( false ); 400 OThemePixmap * pixmap = new OThemePixmap( false );
401 QString path = configFilePath + "/pixmaps/" + name; 401 QString path = configFilePath + "/pixmaps/" + name;
402 pixmap->load( path ); 402 pixmap->load( path );
403 if ( !pixmap->isNull() ) 403 if ( !pixmap->isNull() )
404 return pixmap; 404 return pixmap;
405 qDebug ( "OThemeBase: Unable to load pixmap %s\n", name.ascii() ); 405 qDebug ( "OThemeBase: Unable to load pixmap %s\n", name.ascii() );
406 delete pixmap; 406 delete pixmap;
407 return ( NULL ); 407 return ( NULL );
408} 408}
409 409
410OThemePixmap* OThemeBase::scale( int w, int h, WidgetType widget ) 410OThemePixmap* OThemeBase::scale( int w, int h, WidgetType widget )
411{ 411{
412 if ( scaleHints[ widget ] == FullScale ) { 412 if ( scaleHints[ widget ] == FullScale ) {
413 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w || 413 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w ||
414 pixmaps[ widget ] ->height() != h ) { 414 pixmaps[ widget ] ->height() != h ) {
415 OThemePixmap * cachePix = cache->pixmap( w, h, widget ); 415 OThemePixmap * cachePix = cache->pixmap( w, h, widget );
416 if ( cachePix ) { 416 if ( cachePix ) {
417 cachePix = new OThemePixmap( *cachePix ); 417 cachePix = new OThemePixmap( *cachePix );
418 if ( pixmaps[ widget ] ) 418 if ( pixmaps[ widget ] )
419 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, 419 cache->insert( pixmaps[ widget ], OThemeCache::FullScale,
420 widget ); 420 widget );
421 else 421 else
422 qDebug( "We would have inserted a null pixmap!\n" ); 422 qDebug( "We would have inserted a null pixmap!\n" );
423 pixmaps[ widget ] = cachePix; 423 pixmaps[ widget ] = cachePix;
424 } 424 }
425 else { 425 else {
426 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget ); 426 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget );
427 QImage tmpImg = images[ widget ] ->smoothScale( w, h ); 427 QImage tmpImg = images[ widget ] ->smoothScale( w, h );
428 pixmaps[ widget ] = new OThemePixmap; 428 pixmaps[ widget ] = new OThemePixmap;
429 pixmaps[ widget ] ->convertFromImage( tmpImg ); 429 pixmaps[ widget ] ->convertFromImage( tmpImg );
430 if ( blends[ widget ] != 0.0 ) 430 if ( blends[ widget ] != 0.0 )
431 blend( widget ); 431 blend( widget );
432 } 432 }
433 } 433 }
434 } 434 }
435 else if ( scaleHints[ widget ] == HorizontalScale ) { 435 else if ( scaleHints[ widget ] == HorizontalScale ) {
436 if ( pixmaps[ widget ] ->width() != w ) { 436 if ( pixmaps[ widget ] ->width() != w ) {
437 OThemePixmap * cachePix = cache->horizontalPixmap( w, widget ); 437 OThemePixmap * cachePix = cache->horizontalPixmap( w, widget );
438 if ( cachePix ) { 438 if ( cachePix ) {
439 cachePix = new OThemePixmap( *cachePix ); 439 cachePix = new OThemePixmap( *cachePix );
440 if ( pixmaps[ widget ] ) 440 if ( pixmaps[ widget ] )
441 cache->insert( pixmaps[ widget ], OThemeCache::HorizontalScale, widget ); 441 cache->insert( pixmaps[ widget ], OThemeCache::HorizontalScale, widget );
442 else 442 else
443 qDebug ( "We would have inserted a null pixmap!\n" ); 443 qDebug ( "We would have inserted a null pixmap!\n" );
444 pixmaps[ widget ] = cachePix; 444 pixmaps[ widget ] = cachePix;
445 } 445 }
446 else { 446 else {
447 cache->insert( pixmaps[ widget ], OThemeCache::HorizontalScale, widget ); 447 cache->insert( pixmaps[ widget ], OThemeCache::HorizontalScale, widget );
448 QImage tmpImg = images[ widget ] -> 448 QImage tmpImg = images[ widget ] ->
449 smoothScale( w, images[ widget ] ->height() ); 449 smoothScale( w, images[ widget ] ->height() );
450 pixmaps[ widget ] = new OThemePixmap; 450 pixmaps[ widget ] = new OThemePixmap;
451 pixmaps[ widget ] ->convertFromImage( tmpImg ); 451 pixmaps[ widget ] ->convertFromImage( tmpImg );
452 if ( blends[ widget ] != 0.0 ) 452 if ( blends[ widget ] != 0.0 )
453 blend( widget ); 453 blend( widget );
454 } 454 }
455 } 455 }
456 } 456 }
457 else if ( scaleHints[ widget ] == VerticalScale ) { 457 else if ( scaleHints[ widget ] == VerticalScale ) {
458 if ( pixmaps[ widget ] ->height() != h ) { 458 if ( pixmaps[ widget ] ->height() != h ) {
459 OThemePixmap * cachePix = cache->verticalPixmap( w, widget ); 459 OThemePixmap * cachePix = cache->verticalPixmap( w, widget );
460 if ( cachePix ) { 460 if ( cachePix ) {
461 cachePix = new OThemePixmap( *cachePix ); 461 cachePix = new OThemePixmap( *cachePix );
462 if ( pixmaps[ widget ] ) 462 if ( pixmaps[ widget ] )
463 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, widget ); 463 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, widget );
464 else 464 else
465 qDebug ( "We would have inserted a null pixmap!\n" ); 465 qDebug ( "We would have inserted a null pixmap!\n" );
466 pixmaps[ widget ] = cachePix; 466 pixmaps[ widget ] = cachePix;
467 } 467 }
468 else { 468 else {
469 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, widget ); 469 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, widget );
470 QImage tmpImg = 470 QImage tmpImg =
471 images[ widget ] ->smoothScale( images[ widget ] ->width(), h ); 471 images[ widget ] ->smoothScale( images[ widget ] ->width(), h );
472 pixmaps[ widget ] = new OThemePixmap; 472 pixmaps[ widget ] = new OThemePixmap;
473 pixmaps[ widget ] ->convertFromImage( tmpImg ); 473 pixmaps[ widget ] ->convertFromImage( tmpImg );
474 if ( blends[ widget ] != 0.0 ) 474 if ( blends[ widget ] != 0.0 )
475 blend( widget ); 475 blend( widget );
476 } 476 }
477 } 477 }
478 } 478 }
479 // If blended tile here so the blend is scaled properly 479 // If blended tile here so the blend is scaled properly
480 else if ( scaleHints[ widget ] == TileScale && blends[ widget ] != 0.0 ) { 480 else if ( scaleHints[ widget ] == TileScale && blends[ widget ] != 0.0 ) {
481 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w || 481 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w ||
482 pixmaps[ widget ] ->height() != h ) { 482 pixmaps[ widget ] ->height() != h ) {
483 OThemePixmap * cachePix = cache->pixmap( w, h, widget ); 483 OThemePixmap * cachePix = cache->pixmap( w, h, widget );
484 if ( cachePix ) { 484 if ( cachePix ) {
485 cachePix = new OThemePixmap( *cachePix ); 485 cachePix = new OThemePixmap( *cachePix );
486 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget ); 486 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget );
487 pixmaps[ widget ] = cachePix; 487 pixmaps[ widget ] = cachePix;
488 } 488 }
489 else { 489 else {
490 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget ); 490 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, widget );
491 QPixmap tile; 491 QPixmap tile;
492 tile.convertFromImage( *images[ widget ] ); 492 tile.convertFromImage( *images[ widget ] );
493 pixmaps[ widget ] = new OThemePixmap; 493 pixmaps[ widget ] = new OThemePixmap;
494 pixmaps[ widget ] ->resize( w, h ); 494 pixmaps[ widget ] ->resize( w, h );
495 QPainter p( pixmaps[ widget ] ); 495 QPainter p( pixmaps[ widget ] );
496 p.drawTiledPixmap( 0, 0, w, h, tile ); 496 p.drawTiledPixmap( 0, 0, w, h, tile );
497 if ( blends[ widget ] != 0.0 ) 497 if ( blends[ widget ] != 0.0 )
498 blend( widget ); 498 blend( widget );
499 } 499 }
500 } 500 }
501 } 501 }
502 return ( pixmaps[ widget ] ); 502 return ( pixmaps[ widget ] );
503} 503}
504 504
505OThemePixmap* OThemeBase::scaleBorder( int w, int h, WidgetType widget ) 505OThemePixmap* OThemeBase::scaleBorder( int w, int h, WidgetType widget )
506{ 506{
507 OThemePixmap * pixmap = NULL; 507 OThemePixmap * pixmap = NULL;
508 if ( !pbPixmaps[ widget ] && !pbWidth[ widget ] ) 508 if ( !pbPixmaps[ widget ] && !pbWidth[ widget ] )
509 return ( NULL ); 509 return ( NULL );
510 pixmap = cache->pixmap( w, h, widget, true ); 510 pixmap = cache->pixmap( w, h, widget, true );
511 if ( pixmap ) { 511 if ( pixmap ) {
512 pixmap = new OThemePixmap( *pixmap ); 512 pixmap = new OThemePixmap( *pixmap );
513 } 513 }
514 else { 514 else {
515 pixmap = new OThemePixmap(); 515 pixmap = new OThemePixmap();
516 pixmap->resize( w, h ); 516 pixmap->resize( w, h );
517 QBitmap mask; 517 QBitmap mask;
518 mask.resize( w, h ); 518 mask.resize( w, h );
519 mask.fill( color0 ); 519 mask.fill( color0 );
520 QPainter mPainter; 520 QPainter mPainter;
521 mPainter.begin( &mask ); 521 mPainter.begin( &mask );
522 522
523 QPixmap *tmp = borderPixmap( widget ) ->border( OThemePixmap::TopLeft ); 523 QPixmap *tmp = borderPixmap( widget ) ->border( OThemePixmap::TopLeft );
524 const QBitmap *srcMask = tmp->mask(); 524 const QBitmap *srcMask = tmp->mask();
525 int bdWidth = tmp->width(); 525 int bdWidth = tmp->width();
526 526
527 bitBlt( pixmap, 0, 0, tmp, 0, 0, bdWidth, bdWidth, 527 bitBlt( pixmap, 0, 0, tmp, 0, 0, bdWidth, bdWidth,
528 Qt::CopyROP, false ); 528 Qt::CopyROP, false );
529 if ( srcMask ) 529 if ( srcMask )
530 bitBlt( &mask, 0, 0, srcMask, 0, 0, bdWidth, bdWidth, 530 bitBlt( &mask, 0, 0, srcMask, 0, 0, bdWidth, bdWidth,
531 Qt::CopyROP, false ); 531 Qt::CopyROP, false );
532 else 532 else
533 mPainter.fillRect( 0, 0, bdWidth, bdWidth, color1 ); 533 mPainter.fillRect( 0, 0, bdWidth, bdWidth, color1 );
534 534
535 535
536 tmp = borderPixmap( widget ) ->border( OThemePixmap::TopRight ); 536 tmp = borderPixmap( widget ) ->border( OThemePixmap::TopRight );
537 srcMask = tmp->mask(); 537 srcMask = tmp->mask();
538 bitBlt( pixmap, w - bdWidth, 0, tmp, 0, 0, bdWidth, 538 bitBlt( pixmap, w - bdWidth, 0, tmp, 0, 0, bdWidth,
539 bdWidth, Qt::CopyROP, false ); 539 bdWidth, Qt::CopyROP, false );
540 if ( srcMask ) 540 if ( srcMask )
541 bitBlt( &mask, w - bdWidth, 0, srcMask, 0, 0, bdWidth, 541 bitBlt( &mask, w - bdWidth, 0, srcMask, 0, 0, bdWidth,
542 bdWidth, Qt::CopyROP, false ); 542 bdWidth, Qt::CopyROP, false );
543 else 543 else
544 mPainter.fillRect( w - bdWidth, 0, bdWidth, bdWidth, color1 ); 544 mPainter.fillRect( w - bdWidth, 0, bdWidth, bdWidth, color1 );
545 545
546 tmp = borderPixmap( widget ) ->border( OThemePixmap::BottomLeft ); 546 tmp = borderPixmap( widget ) ->border( OThemePixmap::BottomLeft );
547 srcMask = tmp->mask(); 547 srcMask = tmp->mask();
548 bitBlt( pixmap, 0, h - bdWidth, tmp, 0, 0, bdWidth, 548 bitBlt( pixmap, 0, h - bdWidth, tmp, 0, 0, bdWidth,
549 bdWidth, Qt::CopyROP, false ); 549 bdWidth, Qt::CopyROP, false );
550 if ( srcMask ) 550 if ( srcMask )
551 bitBlt( &mask, 0, h - bdWidth, srcMask, 0, 0, bdWidth, 551 bitBlt( &mask, 0, h - bdWidth, srcMask, 0, 0, bdWidth,
552 bdWidth, Qt::CopyROP, false ); 552 bdWidth, Qt::CopyROP, false );
553 else 553 else
554 mPainter.fillRect( 0, h - bdWidth, bdWidth, bdWidth, color1 ); 554 mPainter.fillRect( 0, h - bdWidth, bdWidth, bdWidth, color1 );
555 555
556 tmp = borderPixmap( widget ) ->border( OThemePixmap::BottomRight ); 556 tmp = borderPixmap( widget ) ->border( OThemePixmap::BottomRight );
557 srcMask = tmp->mask(); 557 srcMask = tmp->mask();
558 bitBlt( pixmap, w - bdWidth, h - bdWidth, tmp, 0, 0, 558 bitBlt( pixmap, w - bdWidth, h - bdWidth, tmp, 0, 0,
559 bdWidth, bdWidth, Qt::CopyROP, false ); 559 bdWidth, bdWidth, Qt::CopyROP, false );
560 if ( srcMask ) 560 if ( srcMask )
561 bitBlt( &mask, w - bdWidth, h - bdWidth, srcMask, 0, 0, 561 bitBlt( &mask, w - bdWidth, h - bdWidth, srcMask, 0, 0,
562 bdWidth, bdWidth, Qt::CopyROP, false ); 562 bdWidth, bdWidth, Qt::CopyROP, false );
563 else 563 else
564 mPainter.fillRect( w - bdWidth, h - bdWidth, bdWidth, bdWidth, color1 ); 564 mPainter.fillRect( w - bdWidth, h - bdWidth, bdWidth, bdWidth, color1 );
565 565
566 QPainter p; 566 QPainter p;
567 p.begin( pixmap ); 567 p.begin( pixmap );
568 if ( w - bdWidth * 2 > 0 ) { 568 if ( w - bdWidth * 2 > 0 ) {
569 tmp = borderPixmap( widget ) ->border( OThemePixmap::Top ); 569 tmp = borderPixmap( widget ) ->border( OThemePixmap::Top );
570 srcMask = tmp->mask(); 570 srcMask = tmp->mask();
571 p.drawTiledPixmap( bdWidth, 0, w - bdWidth * 2, bdWidth, *tmp ); 571 p.drawTiledPixmap( bdWidth, 0, w - bdWidth * 2, bdWidth, *tmp );
572 if ( srcMask ) 572 if ( srcMask )
573 mPainter.drawTiledPixmap( bdWidth, 0, w - bdWidth * 2, bdWidth, *srcMask ); 573 mPainter.drawTiledPixmap( bdWidth, 0, w - bdWidth * 2, bdWidth, *srcMask );
574 else 574 else
575 mPainter.fillRect( bdWidth, 0, w - bdWidth * 2, bdWidth, color1 ); 575 mPainter.fillRect( bdWidth, 0, w - bdWidth * 2, bdWidth, color1 );
576 576
577 tmp = borderPixmap( widget ) ->border( OThemePixmap::Bottom ); 577 tmp = borderPixmap( widget ) ->border( OThemePixmap::Bottom );
578 srcMask = tmp->mask(); 578 srcMask = tmp->mask();
579 p.drawTiledPixmap( bdWidth, h - bdWidth, w - bdWidth * 2, bdWidth, 579 p.drawTiledPixmap( bdWidth, h - bdWidth, w - bdWidth * 2, bdWidth,
580 *tmp ); 580 *tmp );
581 if ( srcMask ) 581 if ( srcMask )
582 mPainter.drawTiledPixmap( bdWidth, h - bdWidth, w - bdWidth * 2, bdWidth, *srcMask ); 582 mPainter.drawTiledPixmap( bdWidth, h - bdWidth, w - bdWidth * 2, bdWidth, *srcMask );
583 else 583 else
584 mPainter.fillRect( bdWidth, h - bdWidth, w - bdWidth * 2, bdWidth, 584 mPainter.fillRect( bdWidth, h - bdWidth, w - bdWidth * 2, bdWidth,
585 color1 ); 585 color1 );
586 } 586 }
587 if ( h - bdWidth * 2 > 0 ) { 587 if ( h - bdWidth * 2 > 0 ) {
588 tmp = borderPixmap( widget ) ->border( OThemePixmap::Left ); 588 tmp = borderPixmap( widget ) ->border( OThemePixmap::Left );
589 srcMask = tmp->mask(); 589 srcMask = tmp->mask();
590 p.drawTiledPixmap( 0, bdWidth, bdWidth, h - bdWidth * 2, *tmp ); 590 p.drawTiledPixmap( 0, bdWidth, bdWidth, h - bdWidth * 2, *tmp );
591 if ( srcMask ) 591 if ( srcMask )
592 mPainter.drawTiledPixmap( 0, bdWidth, bdWidth, h - bdWidth * 2, *srcMask ); 592 mPainter.drawTiledPixmap( 0, bdWidth, bdWidth, h - bdWidth * 2, *srcMask );
593 else 593 else
594 mPainter.fillRect( 0, bdWidth, bdWidth, h - bdWidth * 2, color1 ); 594 mPainter.fillRect( 0, bdWidth, bdWidth, h - bdWidth * 2, color1 );
595 595
596 tmp = borderPixmap( widget ) ->border( OThemePixmap::Right ); 596 tmp = borderPixmap( widget ) ->border( OThemePixmap::Right );
597 srcMask = tmp->mask(); 597 srcMask = tmp->mask();
598 p.drawTiledPixmap( w - bdWidth, bdWidth, bdWidth, h - bdWidth * 2, 598 p.drawTiledPixmap( w - bdWidth, bdWidth, bdWidth, h - bdWidth * 2,
599 *tmp ); 599 *tmp );
600 if ( srcMask ) 600 if ( srcMask )
601 mPainter.drawTiledPixmap( w - bdWidth, bdWidth, bdWidth, h - bdWidth * 2, *srcMask ); 601 mPainter.drawTiledPixmap( w - bdWidth, bdWidth, bdWidth, h - bdWidth * 2, *srcMask );
602 else 602 else
603 mPainter.fillRect( w - bdWidth, bdWidth, bdWidth, h - bdWidth * 2, color1 ); 603 mPainter.fillRect( w - bdWidth, bdWidth, bdWidth, h - bdWidth * 2, color1 );
604 } 604 }
605 p.end(); 605 p.end();
606 mPainter.end(); 606 mPainter.end();
607 pixmap->setMask( mask ); 607 pixmap->setMask( mask );
608 cache->insert( pixmap, OThemeCache::FullScale, widget, true ); 608 cache->insert( pixmap, OThemeCache::FullScale, widget, true );
609 if ( !pixmap->mask() ) 609 if ( !pixmap->mask() )
610 qDebug ( "No mask for border pixmap!\n" ); 610 qDebug ( "No mask for border pixmap!\n" );
611 } 611 }
612 return ( pixmap ); 612 return ( pixmap );
613} 613}
614 614
615 615
616OThemePixmap* OThemeBase::blend( WidgetType widget ) 616OThemePixmap* OThemeBase::blend( WidgetType widget )
617{ 617{
618 OGfxEffect::GradientType g; 618 OGfxEffect::GradientType g;
619 switch ( gradients[ widget ] ) { 619 switch ( gradients[ widget ] ) {
620 case GrHorizontal: 620 case GrHorizontal:
621 g = OGfxEffect::HorizontalGradient; 621 g = OGfxEffect::HorizontalGradient;
622 break; 622 break;
623 case GrVertical: 623 case GrVertical:
624 g = OGfxEffect::VerticalGradient; 624 g = OGfxEffect::VerticalGradient;
625 break; 625 break;
626 case GrPyramid: 626 case GrPyramid:
627 g = OGfxEffect::PyramidGradient; 627 g = OGfxEffect::PyramidGradient;
628 break; 628 break;
629 case GrRectangle: 629 case GrRectangle:
630 g = OGfxEffect::RectangleGradient; 630 g = OGfxEffect::RectangleGradient;
631 break; 631 break;
632 case GrElliptic: 632 case GrElliptic:
633 g = OGfxEffect::EllipticGradient; 633 g = OGfxEffect::EllipticGradient;
634 break; 634 break;
635 default: 635 default:
636 g = OGfxEffect::DiagonalGradient; 636 g = OGfxEffect::DiagonalGradient;
637 break; 637 break;
638 } 638 }
639 OGfxEffect::blend( *pixmaps[ widget ], blends[ widget ], *grLowColors[ widget ], 639 OGfxEffect::blend( *pixmaps[ widget ], blends[ widget ], *grLowColors[ widget ],
640 g, false ); 640 g, false );
641 return ( pixmaps[ widget ] ); 641 return ( pixmaps[ widget ] );
642} 642}
643 643
644OThemePixmap* OThemeBase::gradient( int w, int h, WidgetType widget ) 644OThemePixmap* OThemeBase::gradient( int w, int h, WidgetType widget )
645{ 645{
646 if ( gradients[ widget ] == GrVertical ) { 646 if ( gradients[ widget ] == GrVertical ) {
647 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->height() != h ) { 647 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->height() != h ) {
648 OThemePixmap * cachePix = cache->verticalPixmap( h, widget ); 648 OThemePixmap * cachePix = cache->verticalPixmap( h, widget );
649 if ( cachePix ) { 649 if ( cachePix ) {
650 cachePix = new OThemePixmap( *cachePix ); 650 cachePix = new OThemePixmap( *cachePix );
651 if ( pixmaps[ widget ] ) 651 if ( pixmaps[ widget ] )
652 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, 652 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale,
653 widget ); 653 widget );
654 pixmaps[ widget ] = cachePix; 654 pixmaps[ widget ] = cachePix;
655 } 655 }
656 else { 656 else {
657 if ( pixmaps[ widget ] ) 657 if ( pixmaps[ widget ] )
658 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale, 658 cache->insert( pixmaps[ widget ], OThemeCache::VerticalScale,
659 widget ); 659 widget );
660 pixmaps[ widget ] = new OThemePixmap; 660 pixmaps[ widget ] = new OThemePixmap;
661 pixmaps[ widget ] ->resize( w, h ); 661 pixmaps[ widget ] ->resize( w, h );
662 OGfxEffect::gradient( *pixmaps[ widget ], *grHighColors[ widget ], 662 OGfxEffect::gradient( *pixmaps[ widget ], *grHighColors[ widget ],
663 *grLowColors[ widget ], 663 *grLowColors[ widget ],
664 OGfxEffect::VerticalGradient ); 664 OGfxEffect::VerticalGradient );
665 } 665 }
666 } 666 }
667 } 667 }
668 else if ( gradients[ widget ] == GrHorizontal ) { 668 else if ( gradients[ widget ] == GrHorizontal ) {
669 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w ) { 669 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w ) {
670 OThemePixmap * cachePix = cache->horizontalPixmap( w, widget ); 670 OThemePixmap * cachePix = cache->horizontalPixmap( w, widget );
671 if ( cachePix ) { 671 if ( cachePix ) {
672 cachePix = new OThemePixmap( *cachePix ); 672 cachePix = new OThemePixmap( *cachePix );
673 if ( pixmaps[ widget ] ) 673 if ( pixmaps[ widget ] )
674 cache->insert( pixmaps[ widget ], 674 cache->insert( pixmaps[ widget ],
675 OThemeCache::HorizontalScale, widget ); 675 OThemeCache::HorizontalScale, widget );
676 pixmaps[ widget ] = cachePix; 676 pixmaps[ widget ] = cachePix;
677 } 677 }
678 else { 678 else {
679 if ( pixmaps[ widget ] ) 679 if ( pixmaps[ widget ] )
680 cache->insert( pixmaps[ widget ], 680 cache->insert( pixmaps[ widget ],
681 OThemeCache::HorizontalScale, widget ); 681 OThemeCache::HorizontalScale, widget );
682 pixmaps[ widget ] = new OThemePixmap; 682 pixmaps[ widget ] = new OThemePixmap;
683 pixmaps[ widget ] ->resize( w, h ); 683 pixmaps[ widget ] ->resize( w, h );
684 OGfxEffect::gradient( *pixmaps[ widget ], *grHighColors[ widget ], 684 OGfxEffect::gradient( *pixmaps[ widget ], *grHighColors[ widget ],
685 *grLowColors[ widget ], 685 *grLowColors[ widget ],
686 OGfxEffect::HorizontalGradient ); 686 OGfxEffect::HorizontalGradient );
687 } 687 }
688 } 688 }
689 } 689 }
690 else if ( gradients[ widget ] == GrReverseBevel ) { 690 else if ( gradients[ widget ] == GrReverseBevel ) {
691 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w || 691 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w ||
692 pixmaps[ widget ] ->height() != h ) { 692 pixmaps[ widget ] ->height() != h ) {
693 OThemePixmap * cachePix = cache->pixmap( w, h, widget ); 693 OThemePixmap * cachePix = cache->pixmap( w, h, widget );
694 if ( cachePix ) { 694 if ( cachePix ) {
695 cachePix = new OThemePixmap( *cachePix ); 695 cachePix = new OThemePixmap( *cachePix );
696 if ( pixmaps[ widget ] ) 696 if ( pixmaps[ widget ] )
697 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, 697 cache->insert( pixmaps[ widget ], OThemeCache::FullScale,
698 widget ); 698 widget );
699 pixmaps[ widget ] = cachePix; 699 pixmaps[ widget ] = cachePix;
700 } 700 }
701 else { 701 else {
702 if ( pixmaps[ widget ] ) 702 if ( pixmaps[ widget ] )
703 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, 703 cache->insert( pixmaps[ widget ], OThemeCache::FullScale,
704 widget ); 704 widget );
705 pixmaps[ widget ] = new OThemePixmap; 705 pixmaps[ widget ] = new OThemePixmap;
706 pixmaps[ widget ] ->resize( w, h ); 706 pixmaps[ widget ] ->resize( w, h );
707 707
708 QPixmap s; 708 QPixmap s;
709 int offset = decoWidth( widget ); 709 int offset = decoWidth( widget );
710 s.resize( w - offset * 2, h - offset * 2 ); 710 s.resize( w - offset * 2, h - offset * 2 );
711 QColor lc( *grLowColors[ widget ] ); 711 QColor lc( *grLowColors[ widget ] );
712 QColor hc( *grHighColors[ widget ] ); 712 QColor hc( *grHighColors[ widget ] );
713 if ( bevelContrast( widget ) ) { 713 if ( bevelContrast( widget ) ) {
714 int bc = bevelContrast( widget ); 714 int bc = bevelContrast( widget );
715 // want single increments, not factors like light()/dark() 715 // want single increments, not factors like light()/dark()
716 lc.setRgb( lc.red() - bc, lc.green() - bc, lc.blue() - bc ); 716 lc.setRgb( lc.red() - bc, lc.green() - bc, lc.blue() - bc );
717 hc.setRgb( hc.red() + bc, hc.green() + bc, hc.blue() + bc ); 717 hc.setRgb( hc.red() + bc, hc.green() + bc, hc.blue() + bc );
718 } 718 }
719 OGfxEffect::gradient( *pixmaps[ widget ], 719 OGfxEffect::gradient( *pixmaps[ widget ],
720 lc, hc, 720 lc, hc,
721 OGfxEffect::DiagonalGradient ); 721 OGfxEffect::DiagonalGradient );
722 OGfxEffect::gradient( s, *grHighColors[ widget ], 722 OGfxEffect::gradient( s, *grHighColors[ widget ],
723 *grLowColors[ widget ], 723 *grLowColors[ widget ],
724 OGfxEffect::DiagonalGradient ); 724 OGfxEffect::DiagonalGradient );
725 bitBlt( pixmaps[ widget ], offset, offset, &s, 0, 0, w - offset * 2, 725 bitBlt( pixmaps[ widget ], offset, offset, &s, 0, 0, w - offset * 2,
726 h - offset * 2, Qt::CopyROP ); 726 h - offset * 2, Qt::CopyROP );
727 } 727 }
728 } 728 }
729 } 729 }
730 else { 730 else {
731 OGfxEffect::GradientType g; 731 OGfxEffect::GradientType g;
732 switch ( gradients[ widget ] ) { 732 switch ( gradients[ widget ] ) {
733 case GrPyramid: 733 case GrPyramid:
734 g = OGfxEffect::PyramidGradient; 734 g = OGfxEffect::PyramidGradient;
735 break; 735 break;
736 case GrRectangle: 736 case GrRectangle:
737 g = OGfxEffect::RectangleGradient; 737 g = OGfxEffect::RectangleGradient;
738 break; 738 break;
739 case GrElliptic: 739 case GrElliptic:
740 g = OGfxEffect::EllipticGradient; 740 g = OGfxEffect::EllipticGradient;
741 break; 741 break;
742 default: 742 default:
743 g = OGfxEffect::DiagonalGradient; 743 g = OGfxEffect::DiagonalGradient;
744 break; 744 break;
745 } 745 }
746 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w || 746 if ( !pixmaps[ widget ] || pixmaps[ widget ] ->width() != w ||
747 pixmaps[ widget ] ->height() != h ) { 747 pixmaps[ widget ] ->height() != h ) {
748 OThemePixmap * cachePix = cache->pixmap( w, h, widget ); 748 OThemePixmap * cachePix = cache->pixmap( w, h, widget );
749 if ( cachePix ) { 749 if ( cachePix ) {
750 cachePix = new OThemePixmap( *cachePix ); 750 cachePix = new OThemePixmap( *cachePix );
751 if ( pixmaps[ widget ] ) 751 if ( pixmaps[ widget ] )
752 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, 752 cache->insert( pixmaps[ widget ], OThemeCache::FullScale,
753 widget ); 753 widget );
754 pixmaps[ widget ] = cachePix; 754 pixmaps[ widget ] = cachePix;
755 } 755 }
756 else { 756 else {
757 if ( pixmaps[ widget ] ) 757 if ( pixmaps[ widget ] )
758 cache->insert( pixmaps[ widget ], OThemeCache::FullScale, 758 cache->insert( pixmaps[ widget ], OThemeCache::FullScale,
759 widget ); 759 widget );
760 pixmaps[ widget ] = new OThemePixmap; 760 pixmaps[ widget ] = new OThemePixmap;
761 pixmaps[ widget ] ->resize( w, h ); 761 pixmaps[ widget ] ->resize( w, h );
762 OGfxEffect::gradient( *pixmaps[ widget ], *grHighColors[ widget ], 762 OGfxEffect::gradient( *pixmaps[ widget ], *grHighColors[ widget ],
763 *grLowColors[ widget ], g ); 763 *grLowColors[ widget ], g );
764 } 764 }
765 } 765 }
766 } 766 }
767 return ( pixmaps[ widget ] ); 767 return ( pixmaps[ widget ] );
768} 768}
769 769
770OThemePixmap* OThemeBase::scalePixmap( int w, int h, WidgetType widget ) 770OThemePixmap* OThemeBase::scalePixmap( int w, int h, WidgetType widget )
771{ 771{
772 772
773 if ( gradients[ widget ] && blends[ widget ] == 0.0 ) 773 if ( gradients[ widget ] && blends[ widget ] == 0.0 )
774 return ( gradient( w, h, widget ) ); 774 return ( gradient( w, h, widget ) );
775 775
776 return ( scale( w, h, widget ) ); 776 return ( scale( w, h, widget ) );
777} 777}
778 778
779QColorGroup* OThemeBase::makeColorGroup( QColor &fg, QColor &bg, 779QColorGroup* OThemeBase::makeColorGroup( QColor &fg, QColor &bg,
780 Qt::GUIStyle ) 780 Qt::GUIStyle )
781{ 781{
782 if ( shading == Motif ) { 782 if ( shading == Motif ) {
783 int highlightVal, lowlightVal; 783 int highlightVal, lowlightVal;
784 highlightVal = 100 + ( 2* /*KGlobalSettings::contrast()*/ 3 + 4 ) * 16 / 10; 784 highlightVal = 100 + ( 2* /*KGlobalSettings::contrast()*/ 3 + 4 ) * 16 / 10;
785 lowlightVal = 100 + ( ( 2* /*KGlobalSettings::contrast()*/ 3 + 4 ) * 10 ); 785 lowlightVal = 100 + ( ( 2* /*KGlobalSettings::contrast()*/ 3 + 4 ) * 10 );
786 return ( new QColorGroup( fg, bg, bg.light( highlightVal ), 786 return ( new QColorGroup( fg, bg, bg.light( highlightVal ),
787 bg.dark( lowlightVal ), bg.dark( 120 ), 787 bg.dark( lowlightVal ), bg.dark( 120 ),
788 fg, qApp->palette().normal().base() ) ); 788 fg, qApp->palette().normal().base() ) );
789 } 789 }
790 else 790 else
791 return ( new QColorGroup( fg, bg, bg.light( 150 ), bg.dark(), 791 return ( new QColorGroup( fg, bg, bg.light( 150 ), bg.dark(),
792 bg.dark( 120 ), fg, 792 bg.dark( 120 ), fg,
793 qApp->palette().normal().base() ) ); 793 qApp->palette().normal().base() ) );
794} 794}
795 795
796static QColor strToColor ( const QString &str ) 796static QColor strToColor ( const QString &str )
797{ 797{
798 QString str2 = str. stripWhiteSpace ( ); 798 QString str2 = str. stripWhiteSpace ( );
799 799
800 if ( str2 [0] == '#' ) 800 if ( str2 [0] == '#' )
801 return QColor ( str2 ); 801 return QColor ( str2 );
802 else { 802 else {
803 QStringList sl = QStringList::split ( ',', str2 ); 803 QStringList sl = QStringList::split ( ',', str2 );
804 804
805 if ( sl. count ( ) >= 3 ) 805 if ( sl. count ( ) >= 3 )
806 return QColor ( sl [0]. toInt ( ), sl [1]. toInt ( ), sl [2]. toInt ( )); 806 return QColor ( sl [0]. toInt ( ), sl [1]. toInt ( ), sl [2]. toInt ( ));
807 } 807 }
808 return QColor ( 0, 0, 0 ); 808 return QColor ( 0, 0, 0 );
809} 809}
810 810
811 811
812 812
813void OThemeBase::applyMiscResourceGroup( Config *config ) 813void OThemeBase::applyMiscResourceGroup( Config *config )
814{ 814{
815 config-> setGroup ( "Misc" ); 815 config-> setGroup ( "Misc" );
816 QString tmpStr; 816 QString tmpStr;
817 817
818 tmpStr = config->readEntry( "SButtonPosition" ); 818 tmpStr = config->readEntry( "SButtonPosition" );
819 if ( tmpStr == "BottomLeft" ) 819 if ( tmpStr == "BottomLeft" )
820 sbPlacement = SBBottomLeft; 820 sbPlacement = SBBottomLeft;
821 else if ( tmpStr == "BottomRight" ) 821 else if ( tmpStr == "BottomRight" )
822 sbPlacement = SBBottomRight; 822 sbPlacement = SBBottomRight;
823 else { 823 else {
824 if ( tmpStr != "Opposite" && !tmpStr.isEmpty() ) 824 if ( tmpStr != "Opposite" && !tmpStr.isEmpty() )
825 qDebug ( "OThemeBase: Unrecognized sb button option %s, using Opposite.\n", tmpStr.ascii() ); 825 qDebug ( "OThemeBase: Unrecognized sb button option %s, using Opposite.\n", tmpStr.ascii() );
826 sbPlacement = SBOpposite; 826 sbPlacement = SBOpposite;
827 } 827 }
828 tmpStr = config->readEntry( "ArrowType" ); 828 tmpStr = config->readEntry( "ArrowType" );
829 if ( tmpStr == "Small" ) 829 if ( tmpStr == "Small" )
830 arrowStyle = SmallArrow; 830 arrowStyle = SmallArrow;
831 else if ( tmpStr == "3D" ) 831 else if ( tmpStr == "3D" )
832 arrowStyle = MotifArrow; 832 arrowStyle = MotifArrow;
833 else { 833 else {
834 if ( tmpStr != "Normal" && !tmpStr.isEmpty() ) 834 if ( tmpStr != "Normal" && !tmpStr.isEmpty() )
835 qDebug ( "OThemeBase: Unrecognized arrow option %s, using Normal.\n", tmpStr.ascii() ); 835 qDebug ( "OThemeBase: Unrecognized arrow option %s, using Normal.\n", tmpStr.ascii() );
836 arrowStyle = LargeArrow; 836 arrowStyle = LargeArrow;
837 } 837 }
838 tmpStr = config->readEntry( "ShadeStyle" ); 838 tmpStr = config->readEntry( "ShadeStyle" );
839 if ( tmpStr == "Motif" ) 839 if ( tmpStr == "Motif" )
840 shading = Motif; 840 shading = Motif;
841 else if ( tmpStr == "Next" ) 841 else if ( tmpStr == "Next" )
842 shading = Next; 842 shading = Next;
843 else if ( tmpStr == "KDE" ) 843 else if ( tmpStr == "KDE" )
844 shading = KDE; 844 shading = KDE;
845 else 845 else
846 shading = Windows; 846 shading = Windows;
847 847
848 defaultFrame = config->readNumEntry( "FrameWidth", 2 ); 848 defaultFrame = config->readNumEntry( "FrameWidth", 2 );
849 cacheSize = config->readNumEntry( "Cache", 1024 ); 849 cacheSize = config->readNumEntry( "Cache", 1024 );
850 sbExtent = config->readNumEntry( "ScrollBarExtent", 16 ); 850 sbExtent = config->readNumEntry( "ScrollBarExtent", 16 );
851 851
852 config-> setGroup ( "General" ); 852 config-> setGroup ( "General" );
853 853
854 if ( config-> hasKey ( "foreground" )) fgcolor = strToColor ( config-> readEntry ( "foreground" )); 854 if ( config-> hasKey ( "foreground" )) fgcolor = strToColor ( config-> readEntry ( "foreground" ));
855 if ( config-> hasKey ( "background" )) bgcolor = strToColor ( config-> readEntry ( "background" )); 855 if ( config-> hasKey ( "background" )) bgcolor = strToColor ( config-> readEntry ( "background" ));
856 if ( config-> hasKey ( "selectForeground" )) selfgcolor = strToColor ( config-> readEntry ( "selectForeground" )); 856 if ( config-> hasKey ( "selectForeground" )) selfgcolor = strToColor ( config-> readEntry ( "selectForeground" ));
857 if ( config-> hasKey ( "selectBackground" )) selbgcolor = strToColor ( config-> readEntry ( "selectBackground" )); 857 if ( config-> hasKey ( "selectBackground" )) selbgcolor = strToColor ( config-> readEntry ( "selectBackground" ));
858 if ( config-> hasKey ( "windowForeground" )) winfgcolor = strToColor ( config-> readEntry ( "windowForeground" )); 858 if ( config-> hasKey ( "windowForeground" )) winfgcolor = strToColor ( config-> readEntry ( "windowForeground" ));
859 if ( config-> hasKey ( "windowBackground" )) winbgcolor = strToColor ( config-> readEntry ( "windowBackground" )); 859 if ( config-> hasKey ( "windowBackground" )) winbgcolor = strToColor ( config-> readEntry ( "windowBackground" ));
860} 860}
861 861
862void OThemeBase::readMiscResourceGroup() 862void OThemeBase::readMiscResourceGroup()
863{} 863{}
864 864
865void OThemeBase::applyResourceGroup( Config *config, int i, QString *copyfrom, QString *pixnames, QString *brdnames ) 865void OThemeBase::applyResourceGroup( Config *config, int i, QString *copyfrom, QString *pixnames, QString *brdnames )
866{ 866{
867 QString tmpStr; 867 QString tmpStr;
868 868
869 config-> setGroup ( widgetEntries [ i ] ); 869 config-> setGroup ( widgetEntries [ i ] );
870 870
871 tmpStr = config->readEntry( "CopyWidget", "" ); 871 tmpStr = config->readEntry( "CopyWidget", "" );
872 copyfrom [ i ] = tmpStr; 872 copyfrom [ i ] = tmpStr;
873 if ( !tmpStr.isEmpty() ) 873 if ( !tmpStr.isEmpty() )
874 return ; 874 return ;
875 875
876 // Scale hint 876 // Scale hint
877 tmpStr = config->readEntry( "Scale" ); 877 tmpStr = config->readEntry( "Scale" );
878 if ( tmpStr == "Full" ) 878 if ( tmpStr == "Full" )
879 scaleHints [ i ] = FullScale; 879 scaleHints [ i ] = FullScale;
880 else if ( tmpStr == "Horizontal" ) 880 else if ( tmpStr == "Horizontal" )
881 scaleHints [ i ] = HorizontalScale; 881 scaleHints [ i ] = HorizontalScale;
882 else if ( tmpStr == "Vertical" ) 882 else if ( tmpStr == "Vertical" )
883 scaleHints [ i ] = VerticalScale; 883 scaleHints [ i ] = VerticalScale;
884 else { 884 else {
885 if ( tmpStr != "Tile" && !tmpStr.isEmpty() ) 885 if ( tmpStr != "Tile" && !tmpStr.isEmpty() )
886 qDebug ( "OThemeBase: Unrecognized scale option %s, using Tile.\n", tmpStr.ascii() ); 886 qDebug ( "OThemeBase: Unrecognized scale option %s, using Tile.\n", tmpStr.ascii() );
887 scaleHints [ i ] = TileScale; 887 scaleHints [ i ] = TileScale;
888 } 888 }
889 889
890 890
891 // Gradient type 891 // Gradient type
892 tmpStr = config->readEntry( "Gradient" ); 892 tmpStr = config->readEntry( "Gradient" );
893 if ( tmpStr == "Diagonal" ) 893 if ( tmpStr == "Diagonal" )
894 gradients [ i ] = GrDiagonal; 894 gradients [ i ] = GrDiagonal;
895 else if ( tmpStr == "Horizontal" ) 895 else if ( tmpStr == "Horizontal" )
896 gradients [ i ] = GrHorizontal; 896 gradients [ i ] = GrHorizontal;
897 else if ( tmpStr == "Vertical" ) 897 else if ( tmpStr == "Vertical" )
898 gradients [ i ] = GrVertical; 898 gradients [ i ] = GrVertical;
899 else if ( tmpStr == "Pyramid" ) 899 else if ( tmpStr == "Pyramid" )
900 gradients [ i ] = GrPyramid; 900 gradients [ i ] = GrPyramid;
901 else if ( tmpStr == "Rectangle" ) 901 else if ( tmpStr == "Rectangle" )
902 gradients [ i ] = GrRectangle; 902 gradients [ i ] = GrRectangle;
903 else if ( tmpStr == "Elliptic" ) 903 else if ( tmpStr == "Elliptic" )
904 gradients [ i ] = GrElliptic; 904 gradients [ i ] = GrElliptic;
905 else if ( tmpStr == "ReverseBevel" ) 905 else if ( tmpStr == "ReverseBevel" )
906 gradients [ i ] = GrReverseBevel; 906 gradients [ i ] = GrReverseBevel;
907 else { 907 else {
908 if ( tmpStr != "None" && !tmpStr.isEmpty() ) 908 if ( tmpStr != "None" && !tmpStr.isEmpty() )
909 qDebug ( "OThemeBase: Unrecognized gradient option %s, using None.\n", tmpStr.ascii() ); 909 qDebug ( "OThemeBase: Unrecognized gradient option %s, using None.\n", tmpStr.ascii() );
910 gradients [ i ] = GrNone; 910 gradients [ i ] = GrNone;
911 } 911 }
912 912
913 // Blend intensity 913 // Blend intensity
914 blends[ i ] = config->readEntry( "BlendIntensity", "0.0" ).toDouble(); 914 blends[ i ] = config->readEntry( "BlendIntensity", "0.0" ).toDouble();
915 915
916 // Bevel contrast 916 // Bevel contrast
917 bContrasts[ i ] = config->readNumEntry( "BevelContrast", 0 ); 917 bContrasts[ i ] = config->readNumEntry( "BevelContrast", 0 );
918 918
919 // Border width 919 // Border width
920 borders [ i ] = config->readNumEntry( "Border", 1 ); 920 borders [ i ] = config->readNumEntry( "Border", 1 );
921 921
922 // Highlight width 922 // Highlight width
923 highlights [ i ] = config->readNumEntry( "Highlight", 1 ); 923 highlights [ i ] = config->readNumEntry( "Highlight", 1 );
924 924
925 // Gradient low color or blend background 925 // Gradient low color or blend background
926 if ( config->hasKey( "GradientLow" ) && ( gradients[ i ] != GrNone || blends[ i ] != 0.0 )) 926 if ( config->hasKey( "GradientLow" ) && ( gradients[ i ] != GrNone || blends[ i ] != 0.0 ))
927 grLowColors[ i ] = new QColor( strToColor ( config->readEntry( "GradientLow", qApp->palette().normal().background().name() ))); 927 grLowColors[ i ] = new QColor( strToColor ( config->readEntry( "GradientLow", qApp->palette().normal().background().name() )));
928 else 928 else
929 grLowColors[ i ] = NULL; 929 grLowColors[ i ] = NULL;
930 930
931 931
932 // Gradient high color 932 // Gradient high color
933 if ( config->hasKey( "GradientHigh" ) && ( gradients[ i ] != GrNone )) 933 if ( config->hasKey( "GradientHigh" ) && ( gradients[ i ] != GrNone ))
934 grHighColors[ i ] = new QColor( strToColor ( config->readEntry( "GradientHigh", qApp->palette().normal().background().name() ))); 934 grHighColors[ i ] = new QColor( strToColor ( config->readEntry( "GradientHigh", qApp->palette().normal().background().name() )));
935 else 935 else
936 grHighColors[ i ] = NULL; 936 grHighColors[ i ] = NULL;
937 937
938 // Extended color attributes 938 // Extended color attributes
939 if ( config->hasKey( "Foreground" ) || config->hasKey( "Background" ) ) { 939 if ( config->hasKey( "Foreground" ) || config->hasKey( "Background" ) ) {
940 QColor bg = strToColor( config->readEntry( "Background", qApp->palette().normal().background().name() )); 940 QColor bg = strToColor( config->readEntry( "Background", qApp->palette().normal().background().name() ));
941 QColor fg = strToColor( config->readEntry( "Foreground", qApp->palette().normal().foreground().name() )); 941 QColor fg = strToColor( config->readEntry( "Foreground", qApp->palette().normal().foreground().name() ));
942 942
943 colors[ i ] = makeColorGroup( fg, bg, Qt::WindowsStyle ); 943 colors[ i ] = makeColorGroup( fg, bg, Qt::WindowsStyle );
944 } 944 }
945 else 945 else
946 colors[ i ] = NULL; 946 colors[ i ] = NULL;
947 947
948 // Pixmap 948 // Pixmap
949 tmpStr = config->readEntry( "Pixmap", "" ); 949 tmpStr = config->readEntry( "Pixmap", "" );
950 pixnames[ i ] = tmpStr; 950 pixnames[ i ] = tmpStr;
951 duplicate[ i ] = false; 951 duplicate[ i ] = false;
952 pixmaps[ i ] = NULL; 952 pixmaps[ i ] = NULL;
953 images[ i ] = NULL; 953 images[ i ] = NULL;
954 954
955 955
956 // Pixmap border 956 // Pixmap border
957 tmpStr = config->readEntry( "PixmapBorder", "" ); 957 tmpStr = config->readEntry( "PixmapBorder", "" );
958 brdnames[ i ] = tmpStr; 958 brdnames[ i ] = tmpStr;
959 pbDuplicate[ i ] = false; 959 pbDuplicate[ i ] = false;
960 pbPixmaps[ i ] = NULL; 960 pbPixmaps[ i ] = NULL;
961 pbWidth[ i ] = 0; 961 pbWidth[ i ] = 0;
962 if ( !tmpStr.isEmpty() ) { 962 if ( !tmpStr.isEmpty() ) {
963 pbWidth[ i ] = config->readNumEntry( "PixmapBWidth", 0 ); 963 pbWidth[ i ] = config->readNumEntry( "PixmapBWidth", 0 );
964 if ( pbWidth[ i ] == 0 ) { 964 if ( pbWidth[ i ] == 0 ) {
965 qDebug ( "OThemeBase: No border width specified for pixmapped border widget %s\n", widgetEntries[ i ] ); 965 qDebug ( "OThemeBase: No border width specified for pixmapped border widget %s\n", widgetEntries[ i ] );
966 qDebug ( "OThemeBase: Using default of 2.\n" ); 966 qDebug ( "OThemeBase: Using default of 2.\n" );
967 pbWidth[ i ] = 2; 967 pbWidth[ i ] = 2;
968 } 968 }
969 } 969 }
970 970
971 971
972 // Various widget specific settings. This was more efficent when bunched 972 // Various widget specific settings. This was more efficent when bunched
973 // together in the misc group, but this makes an easier to read config. 973 // together in the misc group, but this makes an easier to read config.
974 if ( i == SliderGroove ) 974 if ( i == SliderGroove )
975 roundedSlider = config->readBoolEntry( "SmallGroove", false ); 975 roundedSlider = config->readBoolEntry( "SmallGroove", false );
976 else if ( i == ActiveTab ) { 976 else if ( i == ActiveTab ) {
977 aTabLine = config->readBoolEntry( "BottomLine", true ); 977 aTabLine = config->readBoolEntry( "BottomLine", true );
978 } 978 }
979 else if ( i == InactiveTab ) { 979 else if ( i == InactiveTab ) {
980 iTabLine = config->readBoolEntry( "BottomLine", true ); 980 iTabLine = config->readBoolEntry( "BottomLine", true );
981 } 981 }
982 else if ( i == Splitter ) 982 else if ( i == Splitter )
983 splitterWidth = config->readNumEntry( "Width", 10 ); 983 splitterWidth = config->readNumEntry( "Width", 10 );
984 else if ( i == ComboBox || i == ComboBoxDown ) { 984 else if ( i == ComboBox || i == ComboBoxDown ) {
985 roundedCombo = config->readBoolEntry( "Round", false ); 985 roundedCombo = config->readBoolEntry( "Round", false );
986 } 986 }
987 else if ( i == PushButton || i == PushButtonDown ) { 987 else if ( i == PushButton || i == PushButtonDown ) {
988 btnXShift = config->readNumEntry( "XShift", 0 ); 988 btnXShift = config->readNumEntry( "XShift", 0 );
989 btnYShift = config->readNumEntry( "YShift", 0 ); 989 btnYShift = config->readNumEntry( "YShift", 0 );
990 focus3D = config->readBoolEntry( "3DFocusRect", false ); 990 focus3D = config->readBoolEntry( "3DFocusRect", false );
991 focus3DOffset = config->readBoolEntry( "3DFocusOffset", 0 ); 991 focus3DOffset = config->readBoolEntry( "3DFocusOffset", 0 );
992 roundedButton = config->readBoolEntry( "Round", false ); 992 roundedButton = config->readBoolEntry( "Round", false );
993 } 993 }
994} 994}
995 995
996 996
997void OThemeBase::readResourceGroup( int i, QString *copyfrom, QString *pixnames, QString *brdnames, 997void OThemeBase::readResourceGroup( int i, QString *copyfrom, QString *pixnames, QString *brdnames,
998 bool *loadArray ) 998 bool *loadArray )
999{ 999{
1000 if ( loadArray[ i ] == true ) { 1000 if ( loadArray[ i ] == true ) {
1001 return ; // already been preloaded. 1001 return ; // already been preloaded.
1002 } 1002 }
1003 1003
1004 int tmpVal; 1004 int tmpVal;
1005 QString tmpStr; 1005 QString tmpStr;
1006 1006
1007 tmpStr = copyfrom [ i ]; 1007 tmpStr = copyfrom [ i ];
1008 if ( !tmpStr.isEmpty() ) { // Duplicate another widget's config 1008 if ( !tmpStr.isEmpty() ) { // Duplicate another widget's config
1009 int sIndex; 1009 int sIndex;
1010 loadArray[ i ] = true; 1010 loadArray[ i ] = true;
1011 for ( sIndex = 0; sIndex < WIDGETS; ++sIndex ) { 1011 for ( sIndex = 0; sIndex < WIDGETS; ++sIndex ) {
1012 if ( tmpStr == widgetEntries[ sIndex ] ) { 1012 if ( tmpStr == widgetEntries[ sIndex ] ) {
1013 if ( !loadArray[ sIndex ] ) // hasn't been loaded yet 1013 if ( !loadArray[ sIndex ] ) // hasn't been loaded yet
1014 readResourceGroup( sIndex, copyfrom, pixnames, brdnames, 1014 readResourceGroup( sIndex, copyfrom, pixnames, brdnames,
1015 loadArray ); 1015 loadArray );
1016 break; 1016 break;
1017 } 1017 }
1018 } 1018 }
1019 if ( loadArray[ sIndex ] ) { 1019 if ( loadArray[ sIndex ] ) {
1020 copyWidgetConfig( sIndex, i, pixnames, brdnames ); 1020 copyWidgetConfig( sIndex, i, pixnames, brdnames );
1021 } 1021 }
1022 else 1022 else
1023 qDebug ( "OThemeBase: Unable to identify source widget for %s\n", widgetEntries[ i ] ); 1023 qDebug ( "OThemeBase: Unable to identify source widget for %s\n", widgetEntries[ i ] );
1024 return ; 1024 return ;
1025 } 1025 }
1026 // special inheritance for disabled arrows (these are tri-state unlike 1026 // special inheritance for disabled arrows (these are tri-state unlike
1027 // the rest of what we handle). 1027 // the rest of what we handle).
1028 for ( tmpVal = DisArrowUp; tmpVal <= DisArrowRight; ++tmpVal ) { 1028 for ( tmpVal = DisArrowUp; tmpVal <= DisArrowRight; ++tmpVal ) {
1029 if ( tmpVal == i ) { 1029 if ( tmpVal == i ) {
1030 tmpStr = pixnames [ i ]; 1030 tmpStr = pixnames [ i ];
1031 if ( tmpStr.isEmpty() ) { 1031 if ( tmpStr.isEmpty() ) {
1032 copyWidgetConfig( ArrowUp + ( tmpVal - DisArrowUp ), i, pixnames, 1032 copyWidgetConfig( ArrowUp + ( tmpVal - DisArrowUp ), i, pixnames,
1033 brdnames ); 1033 brdnames );
1034 return ; 1034 return ;
1035 } 1035 }
1036 } 1036 }
1037 } 1037 }
1038 1038
1039 // Pixmap 1039 // Pixmap
1040 int existing; 1040 int existing;
1041 // Scan for duplicate pixmaps(two identical pixmaps, tile scale, no blend, 1041 // Scan for duplicate pixmaps(two identical pixmaps, tile scale, no blend,
1042 // no pixmapped border) 1042 // no pixmapped border)
1043 if ( !pixnames [ i ].isEmpty() ) { 1043 if ( !pixnames [ i ].isEmpty() ) {
1044 for ( existing = 0; existing < i; ++existing ) { 1044 for ( existing = 0; existing < i; ++existing ) {
1045 if ( pixnames[ i ] == pixnames[ existing ] && scaleHints[ i ] == TileScale && 1045 if ( pixnames[ i ] == pixnames[ existing ] && scaleHints[ i ] == TileScale &&
1046 scaleHints[ existing ] == TileScale && blends[ existing ] == 0.0 && 1046 scaleHints[ existing ] == TileScale && blends[ existing ] == 0.0 &&
1047 blends[ i ] == 0.0 ) { 1047 blends[ i ] == 0.0 ) {
1048 pixmaps[ i ] = pixmaps[ existing ]; 1048 pixmaps[ i ] = pixmaps[ existing ];
1049 duplicate[ i ] = true; 1049 duplicate[ i ] = true;
1050 break; 1050 break;
1051 } 1051 }
1052 } 1052 }
1053 } 1053 }
1054 // load 1054 // load
1055 if ( !duplicate[ i ] && !pixnames[ i ].isEmpty() ) { 1055 if ( !duplicate[ i ] && !pixnames[ i ].isEmpty() ) {
1056 pixmaps[ i ] = loadPixmap( pixnames[ i ] ); 1056 pixmaps[ i ] = loadPixmap( pixnames[ i ] );
1057 // load and save images for scaled/blended widgets for speed. 1057 // load and save images for scaled/blended widgets for speed.
1058 if ( scaleHints[ i ] == TileScale && blends[ i ] == 0.0 ) 1058 if ( scaleHints[ i ] == TileScale && blends[ i ] == 0.0 )
1059 images[ i ] = NULL; 1059 images[ i ] = NULL;
1060 else 1060 else
1061 images[ i ] = loadImage( pixnames[ i ] ); 1061 images[ i ] = loadImage( pixnames[ i ] );
1062 } 1062 }
1063 1063
1064 // Pixmap border 1064 // Pixmap border
1065 if ( !brdnames [ i ]. isEmpty () ) { 1065 if ( !brdnames [ i ]. isEmpty () ) {
1066 // duplicate check 1066 // duplicate check