]> Dogcows Code - chaz/openbox/blob - otk/rendercolor.hh
offsets in planar surfaces
[chaz/openbox] / otk / rendercolor.hh
1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
2 #ifndef __rendercolor_hh
3 #define __rendercolor_hh
4
5 extern "C" {
6 #include <X11/Xlib.h>
7 }
8
9 #include <map>
10
11 namespace otk {
12
13 struct RGB {
14 int r;
15 int g;
16 int b;
17 RGB(int red, int green, int blue) : r(red), g(green), b(blue) {}
18 // color is in ARGB format
19 RGB(unsigned long color)
20 : r((color >> 16) & 0xff),
21 g((color >> 8) & 0xff),
22 b((color) & 0xff) {}
23 };
24
25 class RenderColor {
26 private:
27 struct CacheItem {
28 GC gc;
29 unsigned long pixel;
30 int count;
31 CacheItem(GC g, unsigned long p) : gc(g), pixel(p), count(0) {}
32 };
33 static std::map<unsigned long, CacheItem*> *_cache;
34
35 int _screen;
36 unsigned char _red;
37 unsigned char _green;
38 unsigned char _blue;
39
40 unsigned long _pixel;
41 GC _gc;
42
43 void create();
44
45 public:
46 static void initialize();
47 static void destroy();
48
49 RenderColor(int screen, unsigned char red,
50 unsigned char green, unsigned char blue);
51 RenderColor(int screen, RGB rgb);
52 virtual ~RenderColor();
53
54 inline int screen() const { return _screen; }
55 inline unsigned char red() const { return _red; }
56 inline unsigned char green() const { return _green; }
57 inline unsigned char blue() const { return _blue; }
58 unsigned long pixel() const { return _pixel; }
59 GC gc() const { return _gc; }
60 };
61
62 }
63
64 #endif // __rendercolor_hh
This page took 0.039773 seconds and 4 git commands to generate.