namespace otk {
-class RenderColor {
-public:
- struct RGB {
- int r;
- int g;
- int b;
- RGB(int red, int green, int blue) : r(red), g(green), b(blue) {}
- // color is in ARGB format
- RGB(unsigned long color)
- : r((color >> 16) & 0xff),
- g((color >> 8) & 0xff),
- b((color) & 0xff) {}
- };
+struct RGB {
+ int r;
+ int g;
+ int b;
+ RGB(int red, int green, int blue) : r(red), g(green), b(blue) {}
+ // color is in ARGB format
+ RGB(unsigned long color)
+ : r((color >> 16) & 0xff),
+ g((color >> 8) & 0xff),
+ b((color) & 0xff) {}
+};
+class RenderColor {
private:
struct CacheItem {
GC gc;
+ unsigned long pixel;
int count;
- CacheItem(GC g) : gc(g), count(0) {}
+ CacheItem(GC g, unsigned long p) : gc(g), pixel(p), count(0) {}
};
static std::map<unsigned long, CacheItem*> *_cache;
unsigned char _red;
unsigned char _green;
unsigned char _blue;
- unsigned long _pixel;
- GC _gc;
+ mutable unsigned long _pixel;
+ mutable GC _gc;
+
+ mutable bool _allocated;
+ mutable bool _created;
- void create();
+ void create() const;
public:
static void initialize();
inline unsigned char red() const { return _red; }
inline unsigned char green() const { return _green; }
inline unsigned char blue() const { return _blue; }
- inline unsigned long pixel() const { return _pixel; }
- inline GC gc() const { return _gc; }
+ unsigned long pixel() const;
+ GC gc() const;
};
}