diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-02-14 19:18:19 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-02-14 19:18:19 +0000 |
| commit | e3f6e0ff8195e73f2fa8c9db431941e171dd0041 (patch) | |
| tree | 138b580fd1d5d831f22554e9338e1ee9fbec051b /otk/pseudorendercontrol.cc | |
| parent | 53b5c60a5e8bbf2942ef174c2db64db6cdac3e26 (diff) | |
make reduceDepth set the im->data member, with newly allocated data, so the pixelData in the surface isn't reduced
Diffstat (limited to 'otk/pseudorendercontrol.cc')
| -rw-r--r-- | otk/pseudorendercontrol.cc | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/otk/pseudorendercontrol.cc b/otk/pseudorendercontrol.cc index 990a60dd..7af57192 100644 --- a/otk/pseudorendercontrol.cc +++ b/otk/pseudorendercontrol.cc @@ -124,18 +124,19 @@ inline const XColor *PseudoRenderControl::pickColor(int r, int g, int b) const void PseudoRenderControl::reduceDepth(Surface &sf, XImage *im) const { pixel32 *data = sf.pixelData(); - char *p = (char *)data; + pixel32 *ret = (pixel32*)malloc(im->width * im->height * 4); + char *p = (char *)ret; int x, y; - for (y = 0; y < im->height; y++) { - for (x = 0; x < im->width; x++) { - p[x] = pickColor(data[x] >> default_red_shift, - data[x] >> default_green_shift, - data[x] >> default_blue_shift)->pixel; - } - data += im->width; - p += im->bytes_per_line; + for (y = 0; y < im->height; y++) { + for (x = 0; x < im->width; x++) { + p[x] = pickColor(data[x] >> default_red_shift, + data[x] >> default_green_shift, + data[x] >> default_blue_shift)->pixel; } - + data += im->width; + p += im->bytes_per_line; + } + im->data = (char*)ret; } void PseudoRenderControl::allocateColor(XColor *color) const |
