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