}
lastcol32 = col32;
}
- if(palette_overflow)
+ if(palette_overflow) {
+ free(pal);
return width*height;
+ }
if(palette) {
int i = 0;
for(t=0;t<256;t++) {
struct jpeg_source_mgr mgr;
RGBA *dest;
int y;
- *width = 0;
- *height = 0;
int offset = 0;
int oldtaglen = 0;
+ *width = 0;
+ *height = 0;
if (tag->id == ST_DEFINEBITSJPEG) {
fprintf(stderr, "rfxswf: extracting from definebitsjpeg not yet supported\n");
dest[pos2].r = data[pos + 1];
dest[pos2].g = data[pos + 2];
dest[pos2].b = data[pos + 3];*/
- dest[pos2].r = ((int)data[pos + 1]*255)/(int)data[pos+0];
- dest[pos2].g = ((int)data[pos + 2]*255)/(int)data[pos+0];
- dest[pos2].b = ((int)data[pos + 3]*255)/(int)data[pos+0];
+ int alpha = data[pos+0];
+ if(alpha) {
+ dest[pos2].r = ((int)data[pos + 1]*255)/alpha;
+ dest[pos2].g = ((int)data[pos + 2]*255)/alpha;
+ dest[pos2].b = ((int)data[pos + 3]*255)/alpha;
+ } else {
+ dest[pos2].r = data[pos + 1];
+ dest[pos2].g = data[pos + 2];
+ dest[pos2].b = data[pos + 3];
+ }
dest[pos2].a = data[pos + 0]; //alpha
pos2++;
pos += 4;
lblockx[newwidth] = p_x;
return lblockx;
}
+static int monochrome_warning = 0;
RGBA* swf_ImageScale(RGBA*data, int width, int height, int newwidth, int newheight)
{
int x,y;
/* this is bad because this scaler doesn't yet handle monochrome
images with 2 colors in a way that the final image hasn't more
than 256 colors */
- if(swf_ImageGetNumberOfPaletteEntries2(data, width, height) == 2)
- fprintf(stderr, "Warning: scaling monochrome image\n");
+ if(swf_ImageGetNumberOfPaletteEntries2(data, width, height) == 2) {
+ if(!monochrome_warning) {
+ fprintf(stderr, "Warning: scaling monochrome image\n");
+ monochrome_warning = 1;
+ }
+ }
tmpline = (rgba_int_t*)malloc(width*sizeof(rgba_int_t));
newdata = (RGBA*)malloc(newwidth*newheight*sizeof(RGBA));