#include "Texture.hh"
-BImage::BImage(BImageControl *c, unsigned int w, unsigned int h) {
+BImage::BImage(BImageControl *c, int w, 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];
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;
}
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);
}
+ if (texture.texture() & BTexture::FlatBorder) {
+ BPen penborder(texture.colorTo());
+ XDrawRectangle(display, pixmap, penborder.gc(), 0, 0, width-1, height-1);
+ }
+
if (texture.texture() & BTexture::Bevel1) {
if (texture.texture() & BTexture::Raised) {
XDrawLine(display, pixmap, penshadow.gc(),
Pixmap BImage::render_gradient(const BTexture &texture) {
- int inverted = 0;
+ bool inverted = False;
interlaced = texture.texture() & BTexture::Interlaced;
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);
if (inverted) invert();
- Pixmap pixmap = renderPixmap();
-
- return pixmap;
+ return renderPixmap();
}
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:
}
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]];
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;
}
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;