From 473e6e72940dc474ff98307532a098556ac6fa30 Mon Sep 17 00:00:00 2001 From: lecoanet Date: Fri, 9 May 2003 15:00:27 +0000 Subject: * (ZnImageTex): in perl/Tk, alpha need to be set to 255 everywhere in the image due to limitation in Tk 8.0. --- generic/Image.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'generic') 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++; -- cgit v1.1