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::Solid
,
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
;