From ddd1c7da7e2f9da099cc09171955e242c922e061 Mon Sep 17 00:00:00 2001 From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org> Date: Thu, 8 Jan 1998 17:04:54 +0100 Subject: [PATCH] might actually work Rev: src/modules/Image/encodings/x.c:1.2 --- src/modules/Image/encodings/x.c | 40 +++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/modules/Image/encodings/x.c b/src/modules/Image/encodings/x.c index 57269c69f4..a26b6ff108 100644 --- a/src/modules/Image/encodings/x.c +++ b/src/modules/Image/encodings/x.c @@ -1,9 +1,9 @@ -/* $Id: x.c,v 1.1 1998/01/07 03:08:39 mirar Exp $ */ +/* $Id: x.c,v 1.2 1998/01/08 16:04:54 mirar Exp $ */ /* **! module Image **! note -**! $Id: x.c,v 1.1 1998/01/07 03:08:39 mirar Exp $ +**! $Id: x.c,v 1.2 1998/01/08 16:04:54 mirar Exp $ **! submodule X **! **! This submodule handles encoding and decoding of @@ -29,7 +29,7 @@ #include <winsock.h> #endif -RCSID("$Id: x.c,v 1.1 1998/01/07 03:08:39 mirar Exp $"); +RCSID("$Id: x.c,v 1.2 1998/01/08 16:04:54 mirar Exp $"); #include "pike_macros.h" #include "object.h" #include "constants.h" @@ -266,12 +266,12 @@ THREADS_ALLOW(); bp = bpp; while (bp>8-bit) { - *d|=(unsigned char)((b>>24)&(((1<<(8-bit))-1)<<bit)); + *d|=(unsigned char)(b>>(24+bit)); b<<=8-bit; bp-=8-bit; *(++d)=0; bit=0; } - *d|=b>>(24-(8-bp)+bit); + *d|=b>>24; bit+=bp; if (bit==8) *(++d)=0,bit=0; s++; @@ -459,7 +459,8 @@ static void x_encode_pseudocolor_1byte(INT32 args, INT32 blinemod=(alignbits-((img->xsize*bpp+alignbits-1)%alignbits)-1); unsigned char *d; unsigned char *s; - INT32 y,x,bit,bp,b; + INT32 y,x,bit,bp; + unsigned long b; struct pike_string *dest2; dest=begin_shared_string(img->xsize*img->ysize); @@ -491,12 +492,12 @@ static void x_encode_pseudocolor_1byte(INT32 args, bp = bpp; while (bp>8-bit) { - *d|=(unsigned char)((b>>24)&(((1<<(8-bit))-1)<<bit)); + *d|=(unsigned char)(b>>(24+bit)); b<<=8-bit; bp-=8-bit; *(++d)=0; bit=0; } - *d|=b>>(24-(8-bp)+bit); + *d|=b>>24; bit+=bp; if (bit==8) *(++d)=0,bit=0; } @@ -506,18 +507,22 @@ static void x_encode_pseudocolor_1byte(INT32 args, x=img->xsize; while (x--) { - b=(*(s++))<<(32-vbpp); + b=(*(s++))<<(32-bpp); bp = bpp; while (bp>8-bit) { - *d|=(unsigned char)((b>>24)&(((1<<(8-bit))-1)<<bit)); +/*fprintf(stderr," b=%08x *d=%02x bp=%d bit=%d\n",b,*d,bp,bit);*/ + *d|=(unsigned char)(b>>(24+bit)); b<<=8-bit; bp-=8-bit; +/*fprintf(stderr,"> b=%08x *d=%02x bp=%d bit=%d\n",b,*d,bp,bit);*/ *(++d)=0; bit=0; } - *d|=b>>(24-(8-bp)+bit); +/*fprintf(stderr," - b=%08x *d=%02x bp=%d bit=%d\n",b,*d,bp,bit);*/ + *d|=b>>24; bit+=bp; if (bit==8) *(++d)=0,bit=0; +/*fprintf(stderr,"^- b=%08x *d=%02x bp=%d bit=%d\n",b,*d,bp,bit);*/ } } bp=blinemod; @@ -541,7 +546,8 @@ static void x_encode_pseudocolor_2byte(INT32 args, INT32 blinemod=(alignbits-((img->xsize*bpp+alignbits-1)%alignbits)-1); unsigned char *d; unsigned char *s; - INT32 y,x,bit,bp,b; + unsigned long b; + INT32 y,x,bit,bp; struct pike_string *dest2; dest=begin_shared_string(img->xsize*img->ysize); @@ -573,12 +579,12 @@ static void x_encode_pseudocolor_2byte(INT32 args, bp = bpp; while (bp>8-bit) { - *d|=(unsigned char)((b>>24)&(((1<<(8-bit))-1)<<bit)); + *d|=(unsigned char)(b>>(24+bit)); b<<=8-bit; bp-=8-bit; *(++d)=0; bit=0; } - *d|=b>>(24-(8-bp)+bit); + *d|=b>>24; bit+=bp; if (bit==8) *(++d)=0,bit=0; } @@ -588,16 +594,16 @@ static void x_encode_pseudocolor_2byte(INT32 args, x=img->xsize; while (x--) { - b=(*(s++))<<(32-vbpp); + b=(*(s++))<<(32-bpp); bp = bpp; while (bp>8-bit) { - *d|=(unsigned char)((b>>24)&(((1<<(8-bit))-1)<<bit)); + *d|=(unsigned char)(b>>(24+bit)); b<<=8-bit; bp-=8-bit; *(++d)=0; bit=0; } - *d|=b>>(24-(8-bp)+bit); + *d|=b>>24; bit+=bp; if (bit==8) *(++d)=0,bit=0; } -- GitLab