aboutsummaryrefslogtreecommitdiff
path: root/generic/Image.c
diff options
context:
space:
mode:
authorlecoanet2003-05-09 15:00:27 +0000
committerlecoanet2003-05-09 15:00:27 +0000
commit473e6e72940dc474ff98307532a098556ac6fa30 (patch)
treefd453689b6240b3c3fcbc4745fdbfbfd723e6774 /generic/Image.c
parent12ce9de1285895372eff22393660049b6f3e86ef (diff)
downloadtkzinc-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.
Diffstat (limited to 'generic/Image.c')
-rw-r--r--generic/Image.c21
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++;