1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
4 # include "../config.h"
5 #endif // HAVE_CONFIG_H
7 #include "renderstyle.hh"
9 #include "screeninfo.hh"
15 RenderStyle **RenderStyle::_styles = 0;
16 std::list<StyleNotify*> *RenderStyle::_notifies = 0;
18 void RenderStyle::initialize()
20 int screens = ScreenCount(**display);
21 _styles = new RenderStyle*[screens];
22 for (int i = 0; i < screens; ++i)
23 _styles[i] = new RenderStyle(i, ""); // XXX get a path
24 _notifies = new std::list<StyleNotify*>[screens];
27 void RenderStyle::destroy()
29 int screens = ScreenCount(**display);
30 for (int i = 0; i < screens; ++i)
36 void RenderStyle::registerNotify(int screen, StyleNotify *n)
38 assert(screen >= 0 && screen < ScreenCount(**display));
39 _notifies[screen].push_back(n);
42 void RenderStyle::unregisterNotify(int screen, StyleNotify *n)
44 assert(screen >= 0 && screen < ScreenCount(**display));
45 _notifies[screen].remove(n);
48 RenderStyle *RenderStyle::style(int screen)
50 assert(screen >= 0 && screen < ScreenCount(**display));
51 return _styles[screen];
54 RenderStyle::RenderStyle(int screen, const std::string &stylefile)
63 _root_color = new RenderColor(_screen, 0x272a2f);
65 _text_color_focus = new RenderColor(_screen, 0x272a2f);
66 _text_color_unfocus = new RenderColor(_screen, 0x676869);
68 _button_color_focus = new RenderColor(_screen, 0x96ba86);
69 _button_color_unfocus = new RenderColor(_screen, 0x676869);
71 _frame_border_color = new RenderColor(_screen, 0x181f24);
72 _frame_border_width = 1;
74 _client_border_color_focus = new RenderColor(_screen, 0x858687);
75 _client_border_color_unfocus = new RenderColor(_screen, 0x555657);
76 _client_border_width = 1;
78 _titlebar_focus = new RenderTexture(_screen,
81 RenderTexture::Bevel1,
83 RenderTexture::Vertical,
89 _titlebar_unfocus = new RenderTexture(_screen,
92 RenderTexture::Bevel1,
94 RenderTexture::Vertical,
101 _label_focus = new RenderTexture(_screen,
104 RenderTexture::Bevel1,
106 RenderTexture::Vertical,
112 _label_unfocus = new RenderTexture(_screen,
114 RenderTexture::Sunken,
115 RenderTexture::Bevel1,
117 RenderTexture::CrossDiagonal,
125 _handle_focus = new RenderTexture(_screen,
128 RenderTexture::Bevel1,
130 RenderTexture::Vertical,
136 _handle_unfocus = new RenderTexture(_screen,
139 RenderTexture::Bevel1,
141 RenderTexture::Vertical,
149 _button_unpress_focus = new RenderTexture(_screen,
151 RenderTexture::Raised,
152 RenderTexture::Bevel2,
154 RenderTexture::CrossDiagonal,
160 _button_unpress_unfocus = new RenderTexture(_screen,
162 RenderTexture::Raised,
163 RenderTexture::Bevel2,
165 RenderTexture::CrossDiagonal,
172 _button_press_focus = new RenderTexture(_screen,
174 RenderTexture::Sunken,
175 RenderTexture::Bevel2,
177 RenderTexture::CrossDiagonal,
183 _button_press_unfocus = new RenderTexture(_screen,
185 RenderTexture::Sunken,
186 RenderTexture::Bevel2,
188 RenderTexture::CrossDiagonal,
195 _grip_focus = new RenderTexture(_screen,
198 RenderTexture::Bevel1,
200 RenderTexture::Vertical,
206 _grip_unfocus = new RenderTexture(_screen,
209 RenderTexture::Bevel1,
211 RenderTexture::Vertical,
218 _label_font = new Font(_screen, "Arial,Sans-9:bold", true, 1, 0x40);
219 _label_justify = RightBottomJustify;
221 _max_mask = new PixmapMask();
222 _max_mask->w = _max_mask->h = 8;
224 //char data[] = { 0x7e, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0x7e };
225 char data [] = {0x00, 0x00, 0x18, 0x3c, 0x66, 0x42, 0x00, 0x00 };
227 XCreateBitmapFromData(**display,
228 display->screenInfo(_screen)->rootWindow(),
232 _icon_mask = new PixmapMask();
233 _icon_mask->w = _icon_mask->h = 8;
235 //char data[] = { 0x00, 0x00, 0xc3, 0xe7, 0x7e, 0x3c, 0x18, 0x00 };
236 char data[] = { 0x00, 0x00, 0x42, 0x66, 0x3c, 0x18, 0x00, 0x00 };
238 XCreateBitmapFromData(**display,
239 display->screenInfo(_screen)->rootWindow(),
243 _alldesk_mask = new PixmapMask();
244 _alldesk_mask->w = _alldesk_mask->h = 8;
246 //char data[] = { 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00 };
247 char data[] = { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00 };
248 _alldesk_mask->mask =
249 XCreateBitmapFromData(**display,
250 display->screenInfo(_screen)->rootWindow(),
254 _close_mask = new PixmapMask();
255 _close_mask->w = _close_mask->h = 8;
257 //char data[] = { 0xc3, 0xe7, 0x7e, 0x3c, 0x3c, 0x7e, 0xe7, 0xc3 };
258 char data[] = { 0x00, 0xc3, 0x66, 0x3c, 0x3c, 0x66, 0xc3, 0x00 };
260 XCreateBitmapFromData(**display,
261 display->screenInfo(_screen)->rootWindow(),
269 _root_color = new RenderColor(_screen, 0x7b756a);
271 _text_color_focus = new RenderColor(_screen, 0xffffff);
272 _text_color_unfocus = new RenderColor(_screen, 0xffffff);
274 _button_color_focus = new RenderColor(_screen, 0x222222);
275 _button_color_unfocus = new RenderColor(_screen, 0x333333);
277 _frame_border_color = new RenderColor(_screen, 0x222222);
278 _frame_border_width = 1;
280 _client_border_color_focus = new RenderColor(_screen, 0x858687);
281 _client_border_color_unfocus = new RenderColor(_screen, 0x555657);
282 _client_border_width = 0;
284 _titlebar_focus = new RenderTexture(_screen,
287 RenderTexture::Bevel1,
289 RenderTexture::Solid,
295 _titlebar_unfocus = new RenderTexture(_screen,
298 RenderTexture::Bevel1,
300 RenderTexture::Vertical,
307 _label_focus = new RenderTexture(_screen,
310 RenderTexture::Bevel1,
312 RenderTexture::Vertical,
320 //urg this ain't so hot
321 _label_unfocus = new RenderTexture(_screen,
324 RenderTexture::Bevel1,
326 RenderTexture::Vertical,
334 _handle_focus = new RenderTexture(_screen,
337 RenderTexture::Bevel1,
339 RenderTexture::Vertical,
345 _handle_unfocus = new RenderTexture(_screen,
348 RenderTexture::Bevel1,
350 RenderTexture::Solid,
358 _button_unpress_focus = new RenderTexture(_screen,
361 RenderTexture::Bevel1,
363 RenderTexture::Solid,
369 _button_unpress_unfocus = new RenderTexture(_screen,
372 RenderTexture::Bevel1,
374 RenderTexture::Solid,
381 _button_press_focus = new RenderTexture(_screen,
383 RenderTexture::Sunken,
384 RenderTexture::Bevel2,
386 RenderTexture::Vertical,
392 _button_press_unfocus = new RenderTexture(_screen,
394 RenderTexture::Sunken,
395 RenderTexture::Bevel2,
397 RenderTexture::Vertical,
404 _grip_focus = new RenderTexture(_screen,
407 RenderTexture::Bevel1,
409 RenderTexture::Vertical,
415 _grip_unfocus = new RenderTexture(_screen,
418 RenderTexture::Bevel1,
420 RenderTexture::Solid,
427 _label_font = new Font(_screen, "Arial,Sans-8", true, 1, 0x3e);
428 _label_justify = CenterJustify;
430 _max_mask = new PixmapMask();
431 _max_mask->w = _max_mask->h = 7;
433 char data [] = {0x7c, 0x44, 0x47, 0x47, 0x7f, 0x1f, 0x1f };
435 XCreateBitmapFromData(**display,
436 display->screenInfo(_screen)->rootWindow(),
440 _icon_mask = new PixmapMask();
441 _icon_mask->w = _icon_mask->h = 7;
443 char data[] = {0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e };
445 XCreateBitmapFromData(**display,
446 display->screenInfo(_screen)->rootWindow(),
450 _alldesk_mask = new PixmapMask();
451 _alldesk_mask->w = _alldesk_mask->h = 7;
453 char data[] = {0x00, 0x36, 0x36, 0x00, 0x36, 0x36, 0x00 };
454 _alldesk_mask->mask =
455 XCreateBitmapFromData(**display,
456 display->screenInfo(_screen)->rootWindow(),
460 _close_mask = new PixmapMask();
461 _close_mask->w = _close_mask->h = 7;
463 char data[] = { 0x22, 0x77, 0x3e, 0x1c, 0x3e, 0x77, 0x22 };
465 XCreateBitmapFromData(**display,
466 display->screenInfo(_screen)->rootWindow(),
478 RenderStyle::~RenderStyle()
482 delete _text_color_focus;
483 delete _text_color_unfocus;
485 delete _button_color_focus;
486 delete _button_color_unfocus;
488 delete _frame_border_color;
490 delete _client_border_color_focus;
491 delete _client_border_color_unfocus;
493 delete _titlebar_focus;
494 delete _titlebar_unfocus;
497 delete _label_unfocus;
499 delete _handle_focus;
500 delete _handle_unfocus;
502 delete _button_unpress_focus;
503 delete _button_unpress_unfocus;
504 delete _button_press_focus;
505 delete _button_press_unfocus;
508 delete _grip_unfocus;
514 delete _alldesk_mask;