diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-03-21 18:42:39 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-03-21 18:42:39 +0000 |
| commit | a52a6d96d701c993896f276e4198003317632aaf (patch) | |
| tree | be2f51e6a433d1fdf9a7c8248b343cb3f6297212 /otk/rendercolor.cc | |
| parent | a36c7543d4eedaa9e10bfd9f4d9b81279b1bb7e6 (diff) | |
rm the old code including the .pys and the c++ shit
Diffstat (limited to 'otk/rendercolor.cc')
| -rw-r--r-- | otk/rendercolor.cc | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/otk/rendercolor.cc b/otk/rendercolor.cc deleted file mode 100644 index 5da218ea..00000000 --- a/otk/rendercolor.cc +++ /dev/null @@ -1,101 +0,0 @@ -// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- - -#include "config.h" - -#include "rendercolor.hh" -#include "display.hh" -#include "screeninfo.hh" -#include "rendercontrol.hh" - -#include <cstdio> - -namespace otk { - -std::map<unsigned long, RenderColor::CacheItem*> *RenderColor::_cache = 0; - -void RenderColor::initialize() -{ - _cache = new std::map<unsigned long, CacheItem*>[ScreenCount(**display)]; -} - -void RenderColor::destroy() -{ - delete [] _cache; -} - -RenderColor::RenderColor(int screen, unsigned char red, - unsigned char green, unsigned char blue) - : _screen(screen), - _red(red), - _green(green), - _blue(blue) -{ - create(); -} - -RenderColor::RenderColor(int screen, RGB rgb) - : _screen(screen), - _red(rgb.r), - _green(rgb.g), - _blue(rgb.b) -{ - create(); -} - -void RenderColor::create() -{ - unsigned long color = _blue | _green << 8 | _red << 16; - - // try get a gc from the cache - CacheItem *item = _cache[_screen][color]; - - if (item) { - _gc = item->gc; - _pixel = item->pixel; - ++item->count; - } else { - XGCValues gcv; - - // allocate a color and GC from the server - const ScreenInfo *info = display->screenInfo(_screen); - - XColor xcol; // convert from 0-0xff to 0-0xffff - xcol.red = (_red << 8) | _red; - xcol.green = (_green << 8) | _green; - xcol.blue = (_blue << 8) | _blue; - - display->renderControl(_screen)->allocateColor(&xcol); - - _pixel = xcol.pixel; - gcv.foreground = _pixel; - gcv.cap_style = CapProjecting; - _gc = XCreateGC(**display, info->rootWindow(), - GCForeground | GCCapStyle, &gcv); - assert(_gc); - - // insert into the cache - item = new CacheItem(_gc, _pixel); - _cache[_screen][color] = item; - ++item->count; - } -} - -RenderColor::~RenderColor() -{ - unsigned long color = _blue | _green << 8 | _red << 16; - - CacheItem *item = _cache[_screen][color]; - assert(item); // better be... - - if (--item->count <= 0) { - // remove from the cache - XFreeGC(**display, _gc); - _cache[_screen][color] = 0; - delete item; - - const ScreenInfo *info = display->screenInfo(_screen); - XFreeColors(**display, info->colormap(), &_pixel, 1, 0); - } -} - -} |
