]> Dogcows Code - chaz/openbox/blob - otk/renderstyle.cc
store the pixel32 data in the surface so it can be reused
[chaz/openbox] / otk / renderstyle.cc
1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
2
3 #include "config.h"
4
5 #include "renderstyle.hh"
6 #include "display.hh"
7 #include "screeninfo.hh"
8
9 #include <cassert>
10
11 namespace otk {
12
13 RenderStyle **RenderStyle::_styles = 0;
14 std::list<StyleNotify*> *RenderStyle::_notifies = 0;
15
16 void RenderStyle::initialize()
17 {
18 int screens = ScreenCount(**display);
19 _styles = new RenderStyle*[screens];
20 for (int i = 0; i < screens; ++i)
21 _styles[i] = new RenderStyle(i, ""); // XXX get a path
22 _notifies = new std::list<StyleNotify*>[screens];
23 }
24
25 void RenderStyle::destroy()
26 {
27 int screens = ScreenCount(**display);
28 for (int i = 0; i < screens; ++i)
29 delete _styles[i];
30 delete [] _styles;
31 delete [] _notifies;
32 }
33
34 void RenderStyle::registerNotify(int screen, StyleNotify *n)
35 {
36 assert(screen >= 0 && screen < ScreenCount(**display));
37 _notifies[screen].push_back(n);
38 }
39
40 void RenderStyle::unregisterNotify(int screen, StyleNotify *n)
41 {
42 assert(screen >= 0 && screen < ScreenCount(**display));
43 _notifies[screen].remove(n);
44 }
45
46 RenderStyle *RenderStyle::style(int screen)
47 {
48 assert(screen >= 0 && screen < ScreenCount(**display));
49 return _styles[screen];
50 }
51
52 RenderStyle::RenderStyle(int screen, const std::string &stylefile)
53 : _screen(screen),
54 _file(stylefile)
55 {
56 // pick one..
57 #define FIERON
58 //#define MERRY
59
60 #ifdef FIERON
61 _root_color = new RenderColor(_screen, 0x272a2f);
62
63 _text_color_focus = new RenderColor(_screen, 0x272a2f);
64 _text_color_unfocus = new RenderColor(_screen, 0x676869);
65
66 _button_color_focus = new RenderColor(_screen, 0x96ba86);
67 _button_color_unfocus = new RenderColor(_screen, 0x676869);
68
69 _frame_border_color = new RenderColor(_screen, 0x181f24);
70 _frame_border_width = 1;
71
72 _client_border_color_focus = new RenderColor(_screen, 0x858687);
73 _client_border_color_unfocus = new RenderColor(_screen, 0x555657);
74 _client_border_width = 1;
75
76 _titlebar_focus = new RenderTexture(_screen,
77 false,
78 RenderTexture::Flat,
79 RenderTexture::Bevel1,
80 false,
81 RenderTexture::Vertical,
82 false,
83 0x858687,
84 0x373a3f,
85 0x0,
86 0x0);
87 _titlebar_unfocus = new RenderTexture(_screen,
88 false,
89 RenderTexture::Flat,
90 RenderTexture::Bevel1,
91 false,
92 RenderTexture::Vertical,
93 false,
94 0x555657,
95 0x171a1f,
96 0x0,
97 0x0);
98
99 _label_focus = new RenderTexture(_screen,
100 false,
101 RenderTexture::Flat,
102 RenderTexture::Bevel1,
103 true,
104 RenderTexture::Vertical,
105 false,
106 0x96ba86,
107 0x5a724c,
108 0x181f24,
109 0x0);
110 _label_unfocus = new RenderTexture(_screen,
111 false,
112 RenderTexture::Sunken,
113 RenderTexture::Bevel1,
114 false,
115 RenderTexture::CrossDiagonal,
116 false,
117 0x555657,
118 0x272a2f,
119 0x0,
120 0x0);
121
122
123 _handle_focus = new RenderTexture(_screen,
124 false,
125 RenderTexture::Flat,
126 RenderTexture::Bevel1,
127 false,
128 RenderTexture::Vertical,
129 false,
130 0x858687,
131 0x373a3f,
132 0x0,
133 0x0);
134 _handle_unfocus = new RenderTexture(_screen,
135 false,
136 RenderTexture::Flat,
137 RenderTexture::Bevel1,
138 false,
139 RenderTexture::Vertical,
140 false,
141 0x555657,
142 0x171a1f,
143 0x0,
144 0x0);
145
146
147 _button_unpress_focus = new RenderTexture(_screen,
148 false,
149 RenderTexture::Raised,
150 RenderTexture::Bevel2,
151 false,
152 RenderTexture::CrossDiagonal,
153 false,
154 0x858687,
155 0x272a2f,
156 0x0,
157 0x0);
158 _button_unpress_unfocus = new RenderTexture(_screen,
159 false,
160 RenderTexture::Raised,
161 RenderTexture::Bevel2,
162 false,
163 RenderTexture::CrossDiagonal,
164 false,
165 0x555657,
166 0x171a1f,
167 0x0,
168 0x0);
169
170 _button_press_focus = new RenderTexture(_screen,
171 false,
172 RenderTexture::Sunken,
173 RenderTexture::Bevel2,
174 false,
175 RenderTexture::CrossDiagonal,
176 false,
177 0x96ba86,
178 0x5a724c,
179 0x0,
180 0x0);
181 _button_press_unfocus = new RenderTexture(_screen,
182 false,
183 RenderTexture::Sunken,
184 RenderTexture::Bevel2,
185 false,
186 RenderTexture::CrossDiagonal,
187 false,
188 0x555657,
189 0x171a1f,
190 0x0,
191 0x0);
192
193 _grip_focus = new RenderTexture(_screen,
194 false,
195 RenderTexture::Flat,
196 RenderTexture::Bevel1,
197 false,
198 RenderTexture::Vertical,
199 false,
200 0x96ba86,
201 0x5a724c,
202 0x0,
203 0x0);
204 _grip_unfocus = new RenderTexture(_screen,
205 false,
206 RenderTexture::Flat,
207 RenderTexture::Bevel1,
208 false,
209 RenderTexture::Vertical,
210 false,
211 0x555657,
212 0x171a1f,
213 0x0,
214 0x0);
215
216 _label_font = new Font(_screen, "Arial,Sans-9:bold", true, 1, 0x40);
217 _label_justify = RightBottomJustify;
218
219 _max_mask = new PixmapMask();
220 _max_mask->w = _max_mask->h = 8;
221 {
222 //char data[] = { 0x7e, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0x7e };
223 char data [] = {0x00, 0x00, 0x18, 0x3c, 0x66, 0x42, 0x00, 0x00 };
224 _max_mask->mask =
225 XCreateBitmapFromData(**display,
226 display->screenInfo(_screen)->rootWindow(),
227 data, 8, 8);
228 }
229
230 _icon_mask = new PixmapMask();
231 _icon_mask->w = _icon_mask->h = 8;
232 {
233 //char data[] = { 0x00, 0x00, 0xc3, 0xe7, 0x7e, 0x3c, 0x18, 0x00 };
234 char data[] = { 0x00, 0x00, 0x42, 0x66, 0x3c, 0x18, 0x00, 0x00 };
235 _icon_mask->mask =
236 XCreateBitmapFromData(**display,
237 display->screenInfo(_screen)->rootWindow(),
238 data, 8, 8);
239 }
240
241 _alldesk_mask = new PixmapMask();
242 _alldesk_mask->w = _alldesk_mask->h = 8;
243 {
244 //char data[] = { 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00 };
245 char data[] = { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00 };
246 _alldesk_mask->mask =
247 XCreateBitmapFromData(**display,
248 display->screenInfo(_screen)->rootWindow(),
249 data, 8, 8);
250 }
251
252 _close_mask = new PixmapMask();
253 _close_mask->w = _close_mask->h = 8;
254 {
255 //char data[] = { 0xc3, 0xe7, 0x7e, 0x3c, 0x3c, 0x7e, 0xe7, 0xc3 };
256 char data[] = { 0x00, 0xc3, 0x66, 0x3c, 0x3c, 0x66, 0xc3, 0x00 };
257 _close_mask->mask =
258 XCreateBitmapFromData(**display,
259 display->screenInfo(_screen)->rootWindow(),
260 data, 8, 8);
261 }
262
263 _bevel_width = 1;
264 _handle_width = 4;
265 #else
266 # ifdef MERRY
267 _root_color = new RenderColor(_screen, 0x7b756a);
268
269 _text_color_focus = new RenderColor(_screen, 0xffffff);
270 _text_color_unfocus = new RenderColor(_screen, 0xffffff);
271
272 _button_color_focus = new RenderColor(_screen, 0x222222);
273 _button_color_unfocus = new RenderColor(_screen, 0x333333);
274
275 _frame_border_color = new RenderColor(_screen, 0x222222);
276 _frame_border_width = 1;
277
278 _client_border_color_focus = new RenderColor(_screen, 0x858687);
279 _client_border_color_unfocus = new RenderColor(_screen, 0x555657);
280 _client_border_width = 0;
281
282 _titlebar_focus = new RenderTexture(_screen,
283 false,
284 RenderTexture::Flat,
285 RenderTexture::Bevel1,
286 false,
287 RenderTexture::Solid,
288 false,
289 0xe6e6e6,
290 0xe6e6e6,
291 0x0,
292 0x0);
293 _titlebar_unfocus = new RenderTexture(_screen,
294 false,
295 RenderTexture::Flat,
296 RenderTexture::Bevel1,
297 false,
298 RenderTexture::Vertical,
299 false,
300 0xe6e6e6,
301 0xd9d9d9,
302 0x0,
303 0x0);
304
305 _label_focus = new RenderTexture(_screen,
306 false,
307 RenderTexture::Flat,
308 RenderTexture::Bevel1,
309 true,
310 RenderTexture::Vertical,
311 false,
312 //0x6a6973,
313 //0x6a6973,
314 0x4c59a6,
315 0x5a6dbd,
316 0x222222,
317 0x0);
318 //urg this ain't so hot
319 _label_unfocus = new RenderTexture(_screen,
320 false,
321 RenderTexture::Flat,
322 RenderTexture::Bevel1,
323 true,
324 RenderTexture::Vertical,
325 false,
326 0xb4b2ad,
327 0xc3c1bc,
328 0x6a696a,
329 0x0);
330
331
332 _handle_focus = new RenderTexture(_screen,
333 false,
334 RenderTexture::Flat,
335 RenderTexture::Bevel1,
336 false,
337 RenderTexture::Vertical,
338 false,
339 0xe6e6e6,
340 0xd9d9d9,
341 0x0,
342 0x0);
343 _handle_unfocus = new RenderTexture(_screen,
344 false,
345 RenderTexture::Flat,
346 RenderTexture::Bevel1,
347 false,
348 RenderTexture::Solid,
349 false,
350 0xe6e6e6,
351 0xe6e6e6,
352 0x0,
353 0x0);
354
355
356 _button_unpress_focus = new RenderTexture(_screen,
357 false,
358 RenderTexture::Flat,
359 RenderTexture::Bevel1,
360 false,
361 RenderTexture::Solid,
362 false,
363 0xe6e6e6,
364 0xe6e6e6,
365 0x0,
366 0x0);
367 _button_unpress_unfocus = new RenderTexture(_screen,
368 false,
369 RenderTexture::Flat,
370 RenderTexture::Bevel1,
371 false,
372 RenderTexture::Solid,
373 false,
374 0xe6e6e6,
375 0xe6e6e6,
376 0x0,
377 0x0);
378
379 _button_press_focus = new RenderTexture(_screen,
380 false,
381 RenderTexture::Sunken,
382 RenderTexture::Bevel2,
383 false,
384 RenderTexture::Vertical,
385 false,
386 0xe6e6e6,
387 0xe6e6e6,
388 0x0,
389 0x0);
390 _button_press_unfocus = new RenderTexture(_screen,
391 false,
392 RenderTexture::Sunken,
393 RenderTexture::Bevel2,
394 false,
395 RenderTexture::Vertical,
396 false,
397 0xe6e6e6,
398 0xe6e6e6,
399 0x0,
400 0x0);
401
402 _grip_focus = new RenderTexture(_screen,
403 false,
404 RenderTexture::Flat,
405 RenderTexture::Bevel1,
406 false,
407 RenderTexture::Vertical,
408 false,
409 0xe6e6e6,
410 0xd9d9d9,
411 0x0,
412 0x0);
413 _grip_unfocus = new RenderTexture(_screen,
414 false,
415 RenderTexture::Flat,
416 RenderTexture::Bevel1,
417 false,
418 RenderTexture::Solid,
419 false,
420 0xe6e6e6,
421 0xe6e6e6,
422 0x0,
423 0x0);
424
425 _label_font = new Font(_screen, "Arial,Sans-8", true, 1, 0x3e);
426 _label_justify = CenterJustify;
427
428 _max_mask = new PixmapMask();
429 _max_mask->w = _max_mask->h = 7;
430 {
431 char data [] = {0x7c, 0x44, 0x47, 0x47, 0x7f, 0x1f, 0x1f };
432 _max_mask->mask =
433 XCreateBitmapFromData(**display,
434 display->screenInfo(_screen)->rootWindow(),
435 data, 7, 7);
436 }
437
438 _icon_mask = new PixmapMask();
439 _icon_mask->w = _icon_mask->h = 7;
440 {
441 char data[] = {0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e };
442 _icon_mask->mask =
443 XCreateBitmapFromData(**display,
444 display->screenInfo(_screen)->rootWindow(),
445 data, 7, 7);
446 }
447
448 _alldesk_mask = new PixmapMask();
449 _alldesk_mask->w = _alldesk_mask->h = 7;
450 {
451 char data[] = {0x00, 0x36, 0x36, 0x00, 0x36, 0x36, 0x00 };
452 _alldesk_mask->mask =
453 XCreateBitmapFromData(**display,
454 display->screenInfo(_screen)->rootWindow(),
455 data, 7, 7);
456 }
457
458 _close_mask = new PixmapMask();
459 _close_mask->w = _close_mask->h = 7;
460 {
461 char data[] = { 0x22, 0x77, 0x3e, 0x1c, 0x3e, 0x77, 0x22 };
462 _close_mask->mask =
463 XCreateBitmapFromData(**display,
464 display->screenInfo(_screen)->rootWindow(),
465 data, 7, 7);
466 }
467
468 _bevel_width = 1;
469 _handle_width = 3;
470 # else
471 # error 1
472 # endif
473 #endif
474 }
475
476 RenderStyle::~RenderStyle()
477 {
478 delete _root_color;
479
480 delete _text_color_focus;
481 delete _text_color_unfocus;
482
483 delete _button_color_focus;
484 delete _button_color_unfocus;
485
486 delete _frame_border_color;
487
488 delete _client_border_color_focus;
489 delete _client_border_color_unfocus;
490
491 delete _titlebar_focus;
492 delete _titlebar_unfocus;
493
494 delete _label_focus;
495 delete _label_unfocus;
496
497 delete _handle_focus;
498 delete _handle_unfocus;
499
500 delete _button_unpress_focus;
501 delete _button_unpress_unfocus;
502 delete _button_press_focus;
503 delete _button_press_unfocus;
504
505 delete _grip_focus;
506 delete _grip_unfocus;
507
508 delete _label_font;
509
510 delete _max_mask;
511 delete _icon_mask;
512 delete _alldesk_mask;
513 delete _close_mask;
514 }
515
516 }
This page took 0.064498 seconds and 5 git commands to generate.