summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-02-12 06:18:28 +0000
committerDana Jansens <danakj@orodu.net>2003-02-12 06:18:28 +0000
commit7a2a461582fe5213c1b24c86c8fef9dc18d5b60f (patch)
tree041fc375ba8c36da750676b5ede0b263f7f2a35b
parentdd89811570e9a8a651821a7d3b175244e3d61f01 (diff)
only store what we need to in the class
-rw-r--r--otk/pseudorendercontrol.cc28
-rw-r--r--otk/pseudorendercontrol.hh14
2 files changed, 14 insertions, 28 deletions
diff --git a/otk/pseudorendercontrol.cc b/otk/pseudorendercontrol.cc
index 25135082..4e2691a2 100644
--- a/otk/pseudorendercontrol.cc
+++ b/otk/pseudorendercontrol.cc
@@ -26,30 +26,26 @@ PseudoRenderControl::PseudoRenderControl(int screen)
const ScreenInfo *info = display->screenInfo(_screen);
int depth = info->depth();
- _bpc = 2; // XXX THIS SHOULD BE A USER OPTION
- assert(_bpc >= 1);
- _ncolors = 1 << (_bpc * 3);
+ // determine the number of colors and the bits-per-color
+ int bpc = 2; // XXX THIS SHOULD BE A USER OPTION
+ assert(bpc >= 1);
+ _ncolors = 1 << (bpc * 3);
if (_ncolors > 1 << depth) {
fprintf(stderr,
_("PseudoRenderControl: Invalid colormap size. Resizing.\n"));
- _bpc = 1 << (depth/3) >> 3;
- _ncolors = 1 << (_bpc * 3);
- }
-
- _cpc = 1 << _bpc;
-
- if (!(_colors = new XColor[_ncolors])) {
- fprintf(stderr,
- _("PseudoRenderControl: error allocating colormap\n"));
- ::exit(1);
+ bpc = 1 << (depth/3) >> 3;
+ _ncolors = 1 << (bpc * 3);
}
// build a color cube
+ _colors = new XColor[_ncolors];
+
+ int cpc = 1 << bpc; // colors per channel
for (int n = _ncolors - 1,
- r = (1 << (_bpc + 1)) -1, i = 0; i < _cpc; r >>= 1, ++i)
- for (int g = (1 << (_bpc + 1)) -1, j = 0; j < _cpc; g >>= 1, ++j)
- for (int b = (1 << (_bpc + 1)) -1, k = 0; k < _cpc; b >>= 1, ++k, --n) {
+ r = (1 << (bpc + 1)) -1, i = 0; i < cpc; r >>= 1, ++i)
+ for (int g = (1 << (bpc + 1)) -1, j = 0; j < cpc; g >>= 1, ++j)
+ for (int b = (1 << (bpc + 1)) -1, k = 0; k < cpc; b >>= 1, ++k, --n) {
_colors[n].red = r | r << 8;
_colors[n].green = g | g << 8;
_colors[n].blue = b | b << 8;
diff --git a/otk/pseudorendercontrol.hh b/otk/pseudorendercontrol.hh
index 603fc4ba..27d06206 100644
--- a/otk/pseudorendercontrol.hh
+++ b/otk/pseudorendercontrol.hh
@@ -8,18 +8,8 @@ namespace otk {
class PseudoRenderControl : public RenderControl {
private:
- // color tables, meaning, 256 (possibly) different shades of each color,
- // based on the number of bits there are available for each color in the
- // visual
- unsigned char _red_color_table[256];
- unsigned char _green_color_table[256];
- unsigned char _blue_color_table[256];
-
- int _cpc; // colors-per-channel: must be a value between [2,6]
- int _bpp; // bits-per-pixel
- int _ncolors; // number of allocated colors, size of the XColor array
-
- XColor *_colors;
+ int _ncolors; // number of allocated colors, size of the XColor array
+ XColor *_colors; // the valid allocated colors
virtual void reduceDepth(Surface &sf, XImage *im) const;