diff options
author | lecoanet | 2003-05-09 15:00:27 +0000 |
---|---|---|
committer | lecoanet | 2003-05-09 15:00:27 +0000 |
commit | 473e6e72940dc474ff98307532a098556ac6fa30 (patch) | |
tree | fd453689b6240b3c3fcbc4745fdbfbfd723e6774 | |
parent | 12ce9de1285895372eff22393660049b6f3e86ef (diff) | |
download | tkzinc-473e6e72940dc474ff98307532a098556ac6fa30.zip tkzinc-473e6e72940dc474ff98307532a098556ac6fa30.tar.gz tkzinc-473e6e72940dc474ff98307532a098556ac6fa30.tar.bz2 tkzinc-473e6e72940dc474ff98307532a098556ac6fa30.tar.xz |
* (ZnImageTex): in perl/Tk, alpha need to be set to 255 everywhere in
the image due to limitation in Tk 8.0.
-rw-r--r-- | generic/Image.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/generic/Image.c b/generic/Image.c index 9b2bfff..87a9456 100644 --- a/generic/Image.c +++ b/generic/Image.c @@ -574,8 +574,6 @@ ZnImageTex(ZnImage image, ImageBits *bits = this->bits; ZnBool is_bmap = ZnImageIsBitmap(image); unsigned int t_size, width, height; - Tk_PhotoImageBlock block; - int green_off, blue_off, alpha_off; if (!this->for_gl) { printf("Bogus use of an image, it was created for X11 and used in a GL context\n"); @@ -608,8 +606,10 @@ ZnImageTex(ZnImage image, } } else { - unsigned int x, y, t_stride; - unsigned char *obptr, *bptr, *bp2, *pixels; + unsigned int x, y, t_stride; + unsigned char *obptr, *bptr, *bp2, *pixels; + int green_off, blue_off, alpha_off; + Tk_PhotoImageBlock block; t_stride = bits->t_width * 4; t_size = t_stride * bits->t_height; @@ -617,7 +617,14 @@ ZnImageTex(ZnImage image, Tk_PhotoGetImage(bits->tkphoto, &block); green_off = block.offset[1] - block.offset[0]; blue_off = block.offset[2] - block.offset[0]; +#ifdef PTK + alpha_off = 3; +#else alpha_off = block.offset[3] - block.offset[0]; +#endif + /*printf("width %d, height: %d redoff: %d, greenoff: %d, blueoff: %d, alphaoff: %d\n", + block.width, block.height, block.offset[0], block.offset[1], block.offset[2], + block.offset[3]);*/ pixels = block.pixelPtr; bptr = bits->t_bits; @@ -628,8 +635,12 @@ ZnImageTex(ZnImage image, *bp2++ = obptr[0]; /* r */ *bp2++ = obptr[green_off]; /* g */ *bp2++ = obptr[blue_off]; /* b */ +#ifdef PTK *bp2++ = obptr[alpha_off]; /* alpha */ - obptr += 4; +#else + *bp2++ = 255; +#endif + obptr += block.pixelSize; } /*for (x = width; x < t_width; x++) { *bp2 = 0; bp2++; |