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
;