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