1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
5 #include "renderstyle.hh"
7 #include "screeninfo.hh"
13 RenderStyle **RenderStyle::_styles = 0;
14 std::list<StyleNotify*> *RenderStyle::_notifies = 0;
16 void RenderStyle::initialize()
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];
25 void RenderStyle::destroy()
27 int screens = ScreenCount(**display);
28 for (int i = 0; i < screens; ++i)
34 void RenderStyle::registerNotify(int screen, StyleNotify *n)
36 assert(screen >= 0 && screen < ScreenCount(**display));
37 _notifies[screen].push_back(n);
40 void RenderStyle::unregisterNotify(int screen, StyleNotify *n)
42 assert(screen >= 0 && screen < ScreenCount(**display));
43 _notifies[screen].remove(n);
46 RenderStyle *RenderStyle::style(int screen)
48 assert(screen >= 0 && screen < ScreenCount(**display));
49 return _styles[screen];
52 RenderStyle::RenderStyle(int screen, const std::string &stylefile)
61 _root_color = new RenderColor(_screen, 0x272a2f);
63 _text_color_focus = new RenderColor(_screen, 0x272a2f);
64 _text_color_unfocus = new RenderColor(_screen, 0x676869);
66 _button_color_focus = new RenderColor(_screen, 0x96ba86);
67 _button_color_unfocus = new RenderColor(_screen, 0x676869);
69 _frame_border_color = new RenderColor(_screen, 0x181f24);
70 _frame_border_width = 1;
72 _client_border_color_focus = new RenderColor(_screen, 0x858687);
73 _client_border_color_unfocus = new RenderColor(_screen, 0x555657);
74 _client_border_width = 1;
76 _titlebar_focus = new RenderTexture(_screen,
79 RenderTexture::Bevel1,
81 RenderTexture::Vertical,
87 _titlebar_unfocus = new RenderTexture(_screen,
90 RenderTexture::Bevel1,
92 RenderTexture::Vertical,
99 _label_focus = new RenderTexture(_screen,
102 RenderTexture::Bevel1,
104 RenderTexture::Vertical,
110 _label_unfocus = new RenderTexture(_screen,
112 RenderTexture::Sunken,
113 RenderTexture::Bevel1,
115 RenderTexture::CrossDiagonal,
123 _handle_focus = new RenderTexture(_screen,
126 RenderTexture::Bevel1,
128 RenderTexture::Vertical,
134 _handle_unfocus = new RenderTexture(_screen,
137 RenderTexture::Bevel1,
139 RenderTexture::Vertical,
147 _button_unpress_focus = new RenderTexture(_screen,
149 RenderTexture::Raised,
150 RenderTexture::Bevel2,
152 RenderTexture::CrossDiagonal,
158 _button_unpress_unfocus = new RenderTexture(_screen,
160 RenderTexture::Raised,
161 RenderTexture::Bevel2,
163 RenderTexture::CrossDiagonal,
170 _button_press_focus = new RenderTexture(_screen,
172 RenderTexture::Sunken,
173 RenderTexture::Bevel2,
175 RenderTexture::CrossDiagonal,
181 _button_press_unfocus = new RenderTexture(_screen,
183 RenderTexture::Sunken,
184 RenderTexture::Bevel2,
186 RenderTexture::CrossDiagonal,
193 _grip_focus = new RenderTexture(_screen,
196 RenderTexture::Bevel1,
198 RenderTexture::Vertical,
204 _grip_unfocus = new RenderTexture(_screen,
207 RenderTexture::Bevel1,
209 RenderTexture::Vertical,
216 _label_font = new Font(_screen, "Arial,Sans-9:bold", true, 1, 0x40);
217 _label_justify = RightBottomJustify;
219 _max_mask = new PixmapMask();
220 _max_mask->w = _max_mask->h = 8;
222 //char data[] = { 0x7e, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0x7e };
223 char data [] = {0x00, 0x00, 0x18, 0x3c, 0x66, 0x42, 0x00, 0x00 };
225 XCreateBitmapFromData(**display,
226 display->screenInfo(_screen)->rootWindow(),
230 _icon_mask = new PixmapMask();
231 _icon_mask->w = _icon_mask->h = 8;
233 //char data[] = { 0x00, 0x00, 0xc3, 0xe7, 0x7e, 0x3c, 0x18, 0x00 };
234 char data[] = { 0x00, 0x00, 0x42, 0x66, 0x3c, 0x18, 0x00, 0x00 };
236 XCreateBitmapFromData(**display,
237 display->screenInfo(_screen)->rootWindow(),
241 _alldesk_mask = new PixmapMask();
242 _alldesk_mask->w = _alldesk_mask->h = 8;
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(),
252 _close_mask = new PixmapMask();
253 _close_mask->w = _close_mask->h = 8;
255 //char data[] = { 0xc3, 0xe7, 0x7e, 0x3c, 0x3c, 0x7e, 0xe7, 0xc3 };
256 char data[] = { 0x00, 0xc3, 0x66, 0x3c, 0x3c, 0x66, 0xc3, 0x00 };
258 XCreateBitmapFromData(**display,
259 display->screenInfo(_screen)->rootWindow(),
267 _root_color = new RenderColor(_screen, 0x7b756a);
269 _text_color_focus = new RenderColor(_screen, 0xffffff);
270 _text_color_unfocus = new RenderColor(_screen, 0xffffff);
272 _button_color_focus = new RenderColor(_screen, 0x222222);
273 _button_color_unfocus = new RenderColor(_screen, 0x333333);
275 _frame_border_color = new RenderColor(_screen, 0x222222);
276 _frame_border_width = 1;
278 _client_border_color_focus = new RenderColor(_screen, 0x858687);
279 _client_border_color_unfocus = new RenderColor(_screen, 0x555657);
280 _client_border_width = 0;
282 _titlebar_focus = new RenderTexture(_screen,
285 RenderTexture::Bevel1,
287 RenderTexture::Solid,
293 _titlebar_unfocus = new RenderTexture(_screen,
296 RenderTexture::Bevel1,
298 RenderTexture::Vertical,
305 _label_focus = new RenderTexture(_screen,
308 RenderTexture::Bevel1,
310 RenderTexture::Vertical,
318 //urg this ain't so hot
319 _label_unfocus = new RenderTexture(_screen,
322 RenderTexture::Bevel1,
324 RenderTexture::Vertical,
332 _handle_focus = new RenderTexture(_screen,
335 RenderTexture::Bevel1,
337 RenderTexture::Vertical,
343 _handle_unfocus = new RenderTexture(_screen,
346 RenderTexture::Bevel1,
348 RenderTexture::Solid,
356 _button_unpress_focus = new RenderTexture(_screen,
359 RenderTexture::Bevel1,
361 RenderTexture::Solid,
367 _button_unpress_unfocus = new RenderTexture(_screen,
370 RenderTexture::Bevel1,
372 RenderTexture::Solid,
379 _button_press_focus = new RenderTexture(_screen,
381 RenderTexture::Sunken,
382 RenderTexture::Bevel2,
384 RenderTexture::Vertical,
390 _button_press_unfocus = new RenderTexture(_screen,
392 RenderTexture::Sunken,
393 RenderTexture::Bevel2,
395 RenderTexture::Vertical,
402 _grip_focus = new RenderTexture(_screen,
405 RenderTexture::Bevel1,
407 RenderTexture::Vertical,
413 _grip_unfocus = new RenderTexture(_screen,
416 RenderTexture::Bevel1,
418 RenderTexture::Solid,
425 _label_font = new Font(_screen, "Arial,Sans-8", true, 1, 0x3e);
426 _label_justify = CenterJustify;
428 _max_mask = new PixmapMask();
429 _max_mask->w = _max_mask->h = 7;
431 char data [] = {0x7c, 0x44, 0x47, 0x47, 0x7f, 0x1f, 0x1f };
433 XCreateBitmapFromData(**display,
434 display->screenInfo(_screen)->rootWindow(),
438 _icon_mask = new PixmapMask();
439 _icon_mask->w = _icon_mask->h = 7;
441 char data[] = {0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e };
443 XCreateBitmapFromData(**display,
444 display->screenInfo(_screen)->rootWindow(),
448 _alldesk_mask = new PixmapMask();
449 _alldesk_mask->w = _alldesk_mask->h = 7;
451 char data[] = {0x00, 0x36, 0x36, 0x00, 0x36, 0x36, 0x00 };
452 _alldesk_mask->mask =
453 XCreateBitmapFromData(**display,
454 display->screenInfo(_screen)->rootWindow(),
458 _close_mask = new PixmapMask();
459 _close_mask->w = _close_mask->h = 7;
461 char data[] = { 0x22, 0x77, 0x3e, 0x1c, 0x3e, 0x77, 0x22 };
463 XCreateBitmapFromData(**display,
464 display->screenInfo(_screen)->rootWindow(),
476 RenderStyle::~RenderStyle()
480 delete _text_color_focus;
481 delete _text_color_unfocus;
483 delete _button_color_focus;
484 delete _button_color_unfocus;
486 delete _frame_border_color;
488 delete _client_border_color_focus;
489 delete _client_border_color_unfocus;
491 delete _titlebar_focus;
492 delete _titlebar_unfocus;
495 delete _label_unfocus;
497 delete _handle_focus;
498 delete _handle_unfocus;
500 delete _button_unpress_focus;
501 delete _button_unpress_unfocus;
502 delete _button_press_focus;
503 delete _button_press_unfocus;
506 delete _grip_unfocus;
512 delete _alldesk_mask;