diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-08-08 23:07:24 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-08-08 23:07:24 +0000 |
| commit | 01096f867493aed2efc2694c986811404288c1f1 (patch) | |
| tree | 69be448dffccea605007a2c254c22ac6a2ac9d90 /src | |
| parent | 2d5e1c55f132a0a834eb28146fe60c8e2ca8e665 (diff) | |
sync with blackbox-cvs
Diffstat (limited to 'src')
| -rw-r--r-- | src/Image.cc | 63 | ||||
| -rw-r--r-- | src/Image.hh | 16 | ||||
| -rw-r--r-- | src/ImageControl.cc | 21 | ||||
| -rw-r--r-- | src/Texture.cc | 6 |
4 files changed, 43 insertions, 63 deletions
diff --git a/src/Image.cc b/src/Image.cc index c20c4f7c..674fdeac 100644 --- a/src/Image.cc +++ b/src/Image.cc @@ -44,8 +44,8 @@ using std::min; BImage::BImage(BImageControl *c, unsigned int w, unsigned int h) { control = c; - width = ((signed) w > 0) ? w : 1; - height = ((signed) h > 0) ? h : 1; + width = (w > 0) ? w : 1; + height = (h > 0) ? h : 1; red = new unsigned char[width * height]; green = new unsigned char[width * height]; @@ -66,18 +66,18 @@ BImage::BImage(BImageControl *c, unsigned int w, unsigned int h) { BImage::~BImage(void) { - if (red) delete [] red; - if (green) delete [] green; - if (blue) delete [] blue; + delete [] red; + delete [] green; + delete [] blue; } Pixmap BImage::render(const BTexture &texture) { - if ((texture.texture() & BTexture::Parent_Relative)) + if (texture.texture() & BTexture::Parent_Relative) return ParentRelative; - else if ((texture.texture() & BTexture::Solid)) + else if (texture.texture() & BTexture::Solid) return render_solid(texture); - else if ((texture.texture() & BTexture::Gradient)) + else if (texture.texture() & BTexture::Gradient) return render_gradient(texture); return None; } @@ -103,8 +103,7 @@ Pixmap BImage::render_solid(const BTexture &texture) { if (texture.texture() & BTexture::Interlaced) { BPen peninterlace(texture.colorTo()); - register unsigned int i = 0; - for (; i < height; i += 2) + for (unsigned int i = 0; i < height; i += 2) XDrawLine(display, pixmap, peninterlace.gc(), 0, i, width, i); } @@ -159,7 +158,7 @@ Pixmap BImage::render_solid(const BTexture &texture) { Pixmap BImage::render_gradient(const BTexture &texture) { - int inverted = 0; + bool inverted = False; interlaced = texture.texture() & BTexture::Interlaced; @@ -167,12 +166,12 @@ Pixmap BImage::render_gradient(const BTexture &texture) { from = texture.colorTo(); to = texture.color(); - if (! (texture.texture() & BTexture::Invert)) inverted = 1; + if (! (texture.texture() & BTexture::Invert)) inverted = True; } else { from = texture.color(); to = texture.colorTo(); - if (texture.texture() & BTexture::Invert) inverted = 1; + if (texture.texture() & BTexture::Invert) inverted = True; } control->getGradientBuffers(width, height, &xtable, &ytable); @@ -191,9 +190,7 @@ Pixmap BImage::render_gradient(const BTexture &texture) { if (inverted) invert(); - Pixmap pixmap = renderPixmap(); - - return pixmap; + return renderPixmap(); } @@ -461,6 +458,8 @@ XImage *BImage::renderXImage(void) { unsigned int o = image->bits_per_pixel + ((image->byte_order == MSBFirst) ? 1 : 0); + bool unsupported = False; + if (control->doDither() && width > 1 && height > 1) { switch (control->getVisual()->c_class) { case TrueColor: @@ -478,23 +477,18 @@ XImage *BImage::renderXImage(void) { } default: - fprintf(stderr, i18n(ImageSet, ImageUnsupVisual, - "BImage::renderXImage: unsupported visual\n")); - delete [] d; - XDestroyImage(image); - return (XImage *) 0; + unsupported = True; } } else { - register unsigned int x, y, r, g, b, offset; - + unsigned int x, y, r, g, b, offset; unsigned char *pixel_data = d, *ppixel_data = d; unsigned long pixel; switch (control->getVisual()->c_class) { case StaticColor: case PseudoColor: - for (y = 0, offset = 0; y < height; y++) { - for (x = 0; x < width; x++, offset++) { + for (y = 0, offset = 0; y < height; ++y) { + for (x = 0; x < width; ++x, ++offset) { r = red_table[red[offset]]; g = green_table[green[offset]]; b = blue_table[blue[offset]]; @@ -542,15 +536,20 @@ XImage *BImage::renderXImage(void) { break; default: - fprintf(stderr, i18n(ImageSet, ImageUnsupVisual, - "BImage::renderXImage: unsupported visual\n")); - delete [] d; - XDestroyImage(image); - return (XImage *) 0; + unsupported = True; } } + if (unsupported) { + fprintf(stderr, i18n(ImageSet, ImageUnsupVisual, + "BImage::renderXImage: unsupported visual\n")); + delete [] d; + XDestroyImage(image); + return (XImage *) 0; + } + image->data = (char *) d; + return image; } @@ -571,7 +570,9 @@ Pixmap BImage::renderPixmap(void) { if (! image) { XFreePixmap(control->getBaseDisplay()->getXDisplay(), pixmap); return None; - } else if (! image->data) { + } + + if (! image->data) { XDestroyImage(image); XFreePixmap(control->getBaseDisplay()->getXDisplay(), pixmap); return None; diff --git a/src/Image.hh b/src/Image.hh index 4d72bc14..0e82456c 100644 --- a/src/Image.hh +++ b/src/Image.hh @@ -37,7 +37,6 @@ extern "C" { class BImageControl; class BTexture; -class BImageCache; class BImage { private: @@ -59,6 +58,8 @@ private: #endif Pixmap renderPixmap(void); + Pixmap render_solid(const BTexture &texture); + Pixmap render_gradient(const BTexture &texture); XImage *renderXImage(void); @@ -80,19 +81,6 @@ public: ~BImage(void); Pixmap render(const BTexture &texture); - Pixmap render_solid(const BTexture &texture); - Pixmap render_gradient(const BTexture &texture); - - // static methods for the builtin cache - static unsigned long maximumCacheSize(void); - static void setMaximumCacheSize(const unsigned long cache_max); - - static unsigned long cacheTimeout(void); - static void setCacheTimeout(const unsigned long cache_timeout); - -private: - // global image cache - static BImageCache *imagecache; }; diff --git a/src/ImageControl.cc b/src/ImageControl.cc index 9be8cf13..c93a40f9 100644 --- a/src/ImageControl.cc +++ b/src/ImageControl.cc @@ -65,8 +65,7 @@ BImageControl *ctrl = 0; BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn, bool _dither, int _cpc, unsigned long cache_timeout, - unsigned long cmax) -{ + unsigned long cmax) { if (! ctrl) ctrl = this; basedisplay = dpy; @@ -364,8 +363,7 @@ BImageControl::~BImageControl(void) { if (colors) { unsigned long *pixels = new unsigned long [ncolors]; - int i; - for (i = 0; i < ncolors; i++) + for (int i = 0; i < ncolors; i++) *(pixels + i) = (*(colors + i)).pixel; XFreeColors(basedisplay->getXDisplay(), colormap, pixels, ncolors, 0); @@ -381,9 +379,8 @@ BImageControl::~BImageControl(void) { //#endif CacheContainer::iterator it = cache.begin(); const CacheContainer::iterator end = cache.end(); - for (; it != end; ++it) { - XFreePixmap(basedisplay->getXDisplay(), (*it).pixmap); - } + for (; it != end; ++it) + XFreePixmap(basedisplay->getXDisplay(), it->pixmap); } #ifdef TIMEDCACHE if (timer) { @@ -405,8 +402,8 @@ Pixmap BImageControl::searchCache(const unsigned int width, const CacheContainer::iterator end = cache.end(); for (; it != end; ++it) { CachedImage& tmp = *it; - if ((tmp.width == width) && (tmp.height == height) && - (tmp.texture == texture) && (tmp.pixel1 == c1.pixel())) + if (tmp.width == width && tmp.height == height && + tmp.texture == texture && tmp.pixel1 == c1.pixel()) if (texture & BTexture::Gradient) { if (tmp.pixel2 == c2.pixel()) { tmp.count++; @@ -514,9 +511,8 @@ void BImageControl::getGradientBuffers(unsigned int w, unsigned int **ybuf) { if (w > grad_buffer_width) { - if (grad_xbuffer) { + if (grad_xbuffer) delete [] grad_xbuffer; - } grad_buffer_width = w; @@ -524,9 +520,8 @@ void BImageControl::getGradientBuffers(unsigned int w, } if (h > grad_buffer_height) { - if (grad_ybuffer) { + if (grad_ybuffer) delete [] grad_ybuffer; - } grad_buffer_height = h; diff --git a/src/Texture.cc b/src/Texture.cc index caab82e8..8f2731b6 100644 --- a/src/Texture.cc +++ b/src/Texture.cc @@ -116,8 +116,6 @@ void BTexture::setDescription(const string &d) { addTexture(BTexture::PipeCross); else if (descr.find("elliptic") != string::npos) addTexture(BTexture::Elliptic); - else if (descr.find("diagonal") != string::npos) - addTexture(BTexture::Diagonal); else if (descr.find("horizontal") != string::npos) addTexture(BTexture::Horizontal); else if (descr.find("vertical") != string::npos) @@ -128,9 +126,7 @@ void BTexture::setDescription(const string &d) { addTexture(BTexture::Solid); } - if (descr.find("raised") != string::npos) - addTexture(BTexture::Raised); - else if (descr.find("sunken") != string::npos) + if (descr.find("sunken") != string::npos) addTexture(BTexture::Sunken); else if (descr.find("flat") != string::npos) addTexture(BTexture::Flat); |
