X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=lib%2Fmodules%2Fswfbits.c;h=66b61f44153905dd6f5f08d9e5e66c0b199a6b89;hb=80441849b14435c7699602f1f093d102fa664c07;hp=837550f4e6c8695587103462212dea2c1fc70cc7;hpb=afc42626170144fefc4e25f2a52b8cf43445d759;p=swftools.git diff --git a/lib/modules/swfbits.c b/lib/modules/swfbits.c index 837550f..66b61f4 100644 --- a/lib/modules/swfbits.c +++ b/lib/modules/swfbits.c @@ -36,37 +36,112 @@ int swf_ImageHasAlpha(RGBA*img, int width, int height) } return hasalpha; } - -int swf_ImageGetNumberOfPaletteEntries(RGBA*img, int width, int height, RGBA*palette) + +/*int swf_ImageGetNumberOfPaletteEntries(RGBA*img, int width, int height, RGBA*palette) { int len = width*height; int t; int palsize = 0; - RGBA pal[256]; + RGBA pal[512]; + U32*pal32=(U32*)pal; int palette_overflow = 0; - for(t=0;t> 17) ^ col32; + hash ^= ((hash>>8) + 1) ^ hash; + hash &= 255; + + int csize = size[hash]; + U32* cpal = &pal[hash*256]; + for(i=0;ilen < tag2->len) { + /* use the zlib version- it's smaller */ + tag1->prev = tag; + if(tag) tag->next = tag1; + tag = tag1; + swf_DeleteTag(tag2); + } else { + /* use the jpeg version- it's smaller */ + tag2->prev = tag; + if(tag) tag->next = tag2; + tag = tag2; + swf_DeleteTag(tag1); + } + return tag; +} + #endif RGBA *swf_ExtractImage(TAG * tag, int *dwidth, int *dheight) @@ -900,8 +1013,9 @@ void swf_RemoveJPEGTables(SWF * swf) void *data = rfx_alloc(tag->len); swf_GetBlock(tag, data, tag->len); swf_ResetTag(tag, ST_DEFINEBITSJPEG2); + swf_SetBlock(tag, &((U8*)data)[0], 2); //id swf_SetBlock(tag, tables_tag->data, tables_tag->len); - swf_SetBlock(tag, data, tag->len); + swf_SetBlock(tag, &((U8*)data)[2], tag->len-2); free(data); } tag = tag->next; @@ -977,7 +1091,7 @@ static scale_lookup_t**make_scale_lookup(int width, int newwidth) RGBA* swf_ImageScale(RGBA*data, int width, int height, int newwidth, int newheight) { - if(newwidth<2 || newheight<2) + if(newwidth<1 || newheight<1) return 0; int x,y; RGBA* newdata= (RGBA*)malloc(newwidth*newheight*sizeof(RGBA));