if(col.a!=255) {
int ainv = 255-col.a;
- col.r = (col.r*col.a)>>8;
- col.g = (col.g*col.a)>>8;
- col.b = (col.b*col.a)>>8;
+ col.r = (col.r*col.a)/255;
+ col.g = (col.g*col.a)/255;
+ col.b = (col.b*col.a)/255;
do {
if(z[bitpos]&bit) {
- line[x].r = ((line[x].r*ainv)>>8)+col.r;
- line[x].g = ((line[x].g*ainv)>>8)+col.g;
- line[x].b = ((line[x].b*ainv)>>8)+col.b;
+ line[x].r = ((line[x].r*ainv)/255)+col.r;
+ line[x].g = ((line[x].g*ainv)/255)+col.g;
+ line[x].b = ((line[x].b*ainv)/255)+col.b;
//line[x].a = 255;
- line[x].a = ((line[x].a*ainv)>>8)+col.a;
+ line[x].a = ((line[x].a*ainv)/255)+col.a;
}
bit <<= 1;
if(!bit) {
ainv = 255-col.a;
/* needs bitmap with premultiplied alpha */
- line[x].r = ((line[x].r*ainv)>>8)+col.r;
- line[x].g = ((line[x].g*ainv)>>8)+col.g;
- line[x].b = ((line[x].b*ainv)>>8)+col.b;
+ line[x].r = ((line[x].r*ainv)/255)+col.r;
+ line[x].g = ((line[x].g*ainv)/255)+col.g;
+ line[x].b = ((line[x].b*ainv)/255)+col.b;
line[x].a = 255;
}
bit <<= 1;
int d= 256/depth;
char*str = (char*)malloc(img->width*img->height*4 + 500 + 16*depth*depth*depth);
char*p = str;
- p+= sprintf(p, "static char *noname[] = {\n\"%d %d 262144 3\",\n");
+ p+= sprintf(p, "static char *noname[] = {\n\"%d %d 262144 3\",\n", img->width, img->height);
int r,g,b;
for(r=0;r<depth;r++)
for(g=0;g<depth;g++)