From svnnotify @ sourceforge.jp Sun Feb 1 23:43:57 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Sun, 01 Feb 2009 23:43:57 +0900 Subject: [Swfed-svn] =?utf-8?q?swfed-svn_=5B103=5D__lossless_tag_=E3=81=A8?= =?utf-8?b?IGdpZiDjga7nm7jkupLlpInmj5vjg6vjg7zjg4Hjg7PjgpLlrp/oo4UgKCA=?= =?utf-8?b?44G+44Gg5L2c44KK44GL44GRICk=?= Message-ID: <1233499437.895119.13638.nullmailer@users.sourceforge.jp> Revision: 103 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=103 Author: yoya Date: 2009-02-01 23:43:57 +0900 (Sun, 01 Feb 2009) Log Message: ----------- lossless tag と gif の相互変換ルーチンを実装 (まだ作りかけ) Modified Paths: -------------- trunk/src/config.m4 Added Paths: ----------- trunk/src/swf_gif.c trunk/src/swf_gif.h -------------- next part -------------- Modified: trunk/src/config.m4 =================================================================== --- trunk/src/config.m4 2009-01-18 11:53:44 UTC (rev 102) +++ trunk/src/config.m4 2009-02-01 14:43:57 UTC (rev 103) @@ -59,5 +59,5 @@ dnl dnl PHP_SUBST(SWFED_SHARED_LIBADD) - PHP_NEW_EXTENSION(swfed, swfed.c swf_object.c swf_header.c swf_rect.c swf_tag.c swf_tag_jpeg.c swf_tag_edit.c swf_tag_action.c swf_tag_lossless.c swf_tag_sound.c swf_rgb.c swf_rgba.c swf_argb.c swf_xrgb.c swf_action.c swf_jpeg.c bitstream.c jpeg_segment.c swf_png.c swf_debug.c, $ext_shared) + PHP_NEW_EXTENSION(swfed, swfed.c swf_object.c swf_header.c swf_rect.c swf_tag.c swf_tag_jpeg.c swf_tag_edit.c swf_tag_action.c swf_tag_lossless.c swf_tag_sound.c swf_rgb.c swf_rgba.c swf_argb.c swf_xrgb.c swf_action.c swf_jpeg.c bitstream.c jpeg_segment.c swf_png.c swf_gif.c swf_debug.c, $ext_shared) fi Added: trunk/src/swf_gif.c =================================================================== --- trunk/src/swf_gif.c (rev 0) +++ trunk/src/swf_gif.c 2009-02-01 14:43:57 UTC (rev 103) @@ -0,0 +1,294 @@ +/* + +----------------------------------------------------------------------+ + | Author: yoya @ awm.jp | + +----------------------------------------------------------------------+ +*/ + +#include +#include +#include +#include +#include "bitstream.h" +#include "swf_rgb.h" // Lossless format=3 +#include "swf_rgba.h" // Lossless2 format=3 +#include "swf_xrgb.h" // Lossless format=5 +#include "swf_argb.h" // Lossless2 format=5 +#include "swf_gif.h" + +typedef struct my_gif_buffer_ { + unsigned char *data; + unsigned long data_len; + unsigned long data_offset; +} my_gif_buffer; + +typedef unsigned char gif_byte; +typedef gif_byte * gif_bytep; +typedef gif_bytep * gif_bytepp; +typedef unsigned long gif_uint_32; +typedef struct { + unsigned char red, green, blue; + unsigned char alpha; +} gif_color; +typedef gif_color * gif_colorp; + + +/* + * gif read + */ + +int gif_data_read_func(GifFileType* GifFile, GifByteType* buf, int count) { + my_gif_buffer *gif_buff = (my_gif_buffer *) GifFile->UserData; + if (gif_buff->data_offset + count <= gif_buff->data_len) { + memcpy(buf, gif_buff->data + gif_buff->data_offset, count); + gif_buff->data_offset += count; + } else { + fprintf(stderr, "! gif_buff->data_offset(%lu) + count(%d) <= gif_buff->data_len(%lu)\n", + gif_buff->data_offset, count, gif_buff->data_len); + return 0; + } + return count; +} + +/* + * gif write + */ + +int gif_data_write_func(GifFileType* GifFile, const GifByteType* buf, int count) +{ + my_gif_buffer *gif_buff = (my_gif_buffer *) GifFile->UserData; + unsigned long new_data_len; + if (gif_buff->data_offset + count > gif_buff->data_len) { + new_data_len = 2 * gif_buff->data_len; + if (gif_buff->data_offset + count > new_data_len) { + new_data_len = gif_buff->data_offset + count; + } + gif_buff->data = realloc(gif_buff->data, new_data_len); + if (gif_buff->data == NULL) { + fprintf(stderr, "gif_data_write_func: can't realloc: new_data_len(%lu), data_len(%lu)\n", + new_data_len, gif_buff->data_len); + return 0; + } + gif_buff->data_len = new_data_len; + } + memcpy(gif_buff->data + gif_buff->data_offset, buf, count); + gif_buff->data_offset += count; + return count; +} + +/* + * getTransparentIndex + */ +int getTransparentIndex(SavedImage Image) { + int i; + unsigned char transparent_index = -1; + if ((Image.ExtensionBlockCount == 0) || (Image.ExtensionBlocks == NULL)) { + return -1; + } + for (i = 0 ; i < Image.ExtensionBlockCount ; i++ ) { + ExtensionBlock Block = Image.ExtensionBlocks[i]; + if (Block.Function == GRAPHICS_EXT_FUNC_CODE){ + int gcntl_flag = Block.Bytes[0]; + if (gcntl_flag & 0x01) { + transparent_index = Block.Bytes[3]; + return transparent_index; + } + } + } + return transparent_index; +} + +/* + * + */ + +void * +gifconv_gif2lossless(unsigned char *gif_data, unsigned long gif_data_len, + int *tag_no, int *format, + unsigned short *width, unsigned short *height, + void **colormap, int *colormap_count) { + GifFileType *GifFile = NULL; + ColorMapObject *ColorMap = NULL; + my_gif_buffer gif_buff; + int bpp; // , color_type; + gif_uint_32 gif_width = 0, gif_height = 0; + gif_bytep gif_image_data_ref = NULL; + gif_uint_32 x, y; + + void *image_data = NULL; + gif_colorp palette = NULL; + int palette_num = 0; +// gif_bytep trans = NULL; +// int num_trans = 0; + int trans_index = -1; + + SavedImage Image; + + gif_buff.data = gif_data; + gif_buff.data_len = gif_data_len; + gif_buff.data_offset = 0; + GifFile = DGifOpen(& gif_buff, gif_data_read_func); + if (GifFile == NULL) { + fprintf(stderr, "gifconv_gif2lossless: can't open GIFFile\n"); + return NULL; + } + if (DGifSlurp(GifFile) == GIF_ERROR) { + fprintf(stderr, "gifconv_gif2lossless: DGifSlurp failed\n"); + return NULL; + } + Image = GifFile->SavedImages[0]; + ColorMap = GifFile->SColorMap; + if (ColorMap == NULL) { + ColorMap = Image.ImageDesc.ColorMap; + } + gif_width = GifFile->SWidth; + gif_height = GifFile->SHeight; + bpp = ColorMap->BitsPerPixel; + trans_index = getTransparentIndex(Image); + + *width = (unsigned short) gif_width; + *height = (unsigned short) gif_height; + *format = 3; + + if (trans_index != -1) { + *tag_no = 36; // DefineBitsLossless2 + } else { + *tag_no = 20; // DefineBitsLossless + } + + if (bpp != 8) { + fprintf(stderr, "gifconv_gif2lossless: bpp=%d not implemented yet. accept only bpp=8\n", bpp); + if (GifFile) { + DGifCloseFile(GifFile); + } + return NULL; + } + + /* + * image copy + */ + int i; +// *colormap_count = palette_num; + *colormap_count = 256; // XXX + if (trans_index == 0) { + swf_rgb_t *result_colormap = malloc(sizeof(swf_rgb_t) * palette_num); // Lossless + for (i=0 ; i < palette_num ; i++) { + result_colormap[i].red = palette[i].red; + result_colormap[i].green = palette[i].green; + result_colormap[i].blue = palette[i].blue; + } + *colormap = result_colormap; + } else { + swf_rgba_t *result_colormap = malloc(sizeof(swf_rgba_t) * palette_num); // Lossless2 + for (i=0 ; i < palette_num ; i++) { + result_colormap[i].red = palette[i].red; + result_colormap[i].green = palette[i].green; + result_colormap[i].blue = palette[i].blue; + if (i == trans_index) { + result_colormap[i].alpha = 0x0; + } else { + result_colormap[i].alpha = 0xff; + } + } + *colormap = result_colormap; + } + unsigned char *indices_data = malloc(((gif_width+ 3) & -4) * gif_height); + gif_image_data_ref = Image.RasterBits; + i = 0; + for (y=0 ; y < gif_height ; y++) { + for (x=0 ; x < gif_width ; x++) { + indices_data[x+y*((gif_width + 3) & -4)] = gif_image_data_ref[i]; + i++; + } + } + image_data = indices_data; + /* + * destruct + */ + if (GifFile) { + DGifCloseFile(GifFile); + } + return image_data; +} + +unsigned char * +gifconv_lossless2gif(void *image_data, + unsigned short width, unsigned short height, + void *index_data, + unsigned short index_data_count, + int tag_no, int format, + unsigned long *length) { + GifFileType *GifFile = NULL; + GifColorType *Colors = NULL; + int ColorCount; + my_gif_buffer gif_buff; + gif_uint_32 gif_width = 0, gif_height = 0; + int bpp; + gif_bytep gif_image_data = NULL; + gif_uint_32 x, y; + gif_colorp gif_palette = NULL; +// int trans_index = -1; + int i; + if (format != 3) { + fprintf(stderr, "jpegconv_lossless2gif: format=%d not implemented yes.\n", format); + return NULL; + } + bpp = 8; + gif_width = width; + gif_height = height; + ColorCount = 256; + Colors = calloc(sizeof(GifColorType), ColorCount); + + gif_buff.data = NULL; + gif_buff.data_len = 0; + gif_buff.data_offset = 0; + GifFile = EGifOpen(& gif_buff, gif_data_write_func); + if (GifFile == NULL) { + fprintf(stderr, "gifconv_lossless2gif: can't open GIFFile\n"); + return NULL; + } + GifFile->SWidth = gif_width; + GifFile->SHeight = gif_height; + GifFile->SColorResolution = bpp; + + gif_palette = (gif_colorp) malloc(sizeof(gif_color)*index_data_count); + + if (tag_no == 20) { + swf_rgb_t *rgb_list = index_data; + for (i=0 ; i < index_data_count ; i++) { + Colors[i].Red = rgb_list[i].red; + Colors[i].Green = rgb_list[i].green; + Colors[i].Blue = rgb_list[i].blue; + } + } else { + swf_rgba_t *rgba_list = index_data; + for (i=0 ; i < index_data_count ; i++) { +// if (rgba_list[i].alpha) + Colors[i].Red = rgba_list[i].red; + Colors[i].Green = rgba_list[i].green; + Colors[i].Blue = rgba_list[i].blue; +// gif_palette[i].alpha = ; + } + } + GifFile->SBackGroundColor = 0; // XXX + gif_image_data = (gif_bytep) calloc(sizeof(unsigned char), gif_width * gif_height); + i = 0; + for (y=0 ; y < gif_height ; y++) { + for (x=0 ; x < gif_width ; x++) { + unsigned char *data = image_data; + gif_image_data[i] = data[x + y*((gif_width +3) & -4)]; + i++; + } + } + + GifFile->SavedImages[0].RasterBits = gif_image_data; + GifFile->SColorMap = MakeMapObject(ColorCount, Colors); + EGifSpew(GifFile); // XXX + + free(gif_image_data); + + if (GifFile) { + EGifCloseFile(GifFile); + } + *length = gif_buff.data_offset; + return gif_buff.data; +} Added: trunk/src/swf_gif.h =================================================================== --- trunk/src/swf_gif.h (rev 0) +++ trunk/src/swf_gif.h 2009-02-01 14:43:57 UTC (rev 103) @@ -0,0 +1,19 @@ +/* + +----------------------------------------------------------------------+ + | Author: yoya @ awm.jp | + +----------------------------------------------------------------------+ +*/ + +extern void * +gifconv_gif2lossless(unsigned char *gif_data, unsigned long gif_data_len, + int *tag, int *format, + unsigned short *width, unsigned short *height, + void **colormap, int *colormap_count); + +extern unsigned char * +gifconv_lossless2gif(void *image_data, + unsigned short width, unsigned short height, + void *index_data, + unsigned short index_data_count, + int tag, int format, + unsigned long *length); From svnnotify @ sourceforge.jp Mon Feb 2 22:52:33 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Mon, 02 Feb 2009 22:52:33 +0900 Subject: [Swfed-svn] =?utf-8?q?swfed-svn_=5B104=5D__-Lossless=E7=94=A8?= =?utf-8?b?44Kr44Op44O844Oe44OD44OX55Sf5oiQ5pmC44Gu6YCP5piO5bqm5pyJ54Sh?= =?utf-8?b?5Yik5a6a44KS6ZaT6YGV44GI44Gm44GE44Gf44Gu44Gn5L+u5q2j?= Message-ID: <1233582753.372984.6688.nullmailer@users.sourceforge.jp> Revision: 104 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=104 Author: yoya Date: 2009-02-02 22:52:33 +0900 (Mon, 02 Feb 2009) Log Message: ----------- -Lossless用カラーマップ生成時の透明度有無判定を間違えていたので修正 - コードの整理 (動作が変わらない範囲で) Modified Paths: -------------- trunk/src/swf_gif.c -------------- next part -------------- Modified: trunk/src/swf_gif.c =================================================================== --- trunk/src/swf_gif.c 2009-02-01 14:43:57 UTC (rev 103) +++ trunk/src/swf_gif.c 2009-02-02 13:52:33 UTC (rev 104) @@ -109,7 +109,7 @@ GifFileType *GifFile = NULL; ColorMapObject *ColorMap = NULL; my_gif_buffer gif_buff; - int bpp; // , color_type; + int bpp; gif_uint_32 gif_width = 0, gif_height = 0; gif_bytep gif_image_data_ref = NULL; gif_uint_32 x, y; @@ -117,8 +117,6 @@ void *image_data = NULL; gif_colorp palette = NULL; int palette_num = 0; -// gif_bytep trans = NULL; -// int num_trans = 0; int trans_index = -1; SavedImage Image; @@ -167,18 +165,17 @@ * image copy */ int i; -// *colormap_count = palette_num; *colormap_count = 256; // XXX - if (trans_index == 0) { - swf_rgb_t *result_colormap = malloc(sizeof(swf_rgb_t) * palette_num); // Lossless + if (trans_index == -1) { // Lossless + swf_rgb_t *result_colormap = malloc(sizeof(swf_rgb_t) * palette_num); for (i=0 ; i < palette_num ; i++) { result_colormap[i].red = palette[i].red; result_colormap[i].green = palette[i].green; result_colormap[i].blue = palette[i].blue; } *colormap = result_colormap; - } else { - swf_rgba_t *result_colormap = malloc(sizeof(swf_rgba_t) * palette_num); // Lossless2 + } else { // Lossless2 + swf_rgba_t *result_colormap = malloc(sizeof(swf_rgba_t) * palette_num); for (i=0 ; i < palette_num ; i++) { result_colormap[i].red = palette[i].red; result_colormap[i].green = palette[i].green; From svnnotify @ sourceforge.jp Mon Feb 2 23:01:40 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Mon, 02 Feb 2009 23:01:40 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMDVdICBQSFAg44GL44KJIHN3?= =?utf-8?b?Zl90YWdfbG9zc2xlc3NfcmVwbGFjZV9naWZfZGF0YSDjgbjjga7nuYvjgY4=?= =?utf-8?b?44GT44G/44KS5a6f6KOF?= Message-ID: <1233583300.506628.16545.nullmailer@users.sourceforge.jp> Revision: 105 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=105 Author: yoya Date: 2009-02-02 23:01:40 +0900 (Mon, 02 Feb 2009) Log Message: ----------- PHP から swf_tag_lossless_replace_gif_data への繋ぎこみを実装 Modified Paths: -------------- trunk/src/php_swfed.h trunk/src/swf_object.c trunk/src/swf_object.h trunk/src/swf_tag.c trunk/src/swf_tag.h trunk/src/swf_tag_lossless.c trunk/src/swf_tag_lossless.h trunk/src/swfed.c -------------- next part -------------- Modified: trunk/src/php_swfed.h =================================================================== --- trunk/src/php_swfed.h 2009-02-02 13:52:33 UTC (rev 104) +++ trunk/src/php_swfed.h 2009-02-02 14:01:40 UTC (rev 105) @@ -58,6 +58,7 @@ PHP_METHOD(swfed, replaceJpegData); PHP_METHOD(swfed, getPNGData); PHP_METHOD(swfed, replacePNGData); +PHP_METHOD(swfed, replaceGIFData); PHP_METHOD(swfed, getSoundData); PHP_METHOD(swfed, replaceMLDData); PHP_METHOD(swfed, getEditString); Modified: trunk/src/swf_object.c =================================================================== --- trunk/src/swf_object.c 2009-02-02 13:52:33 UTC (rev 104) +++ trunk/src/swf_object.c 2009-02-02 14:01:40 UTC (rev 105) @@ -299,6 +299,26 @@ return result; } +int +swf_object_replace_gifdata(swf_object_t *swf, int image_id, + unsigned char *gif_data, + unsigned long gif_data_len) { + int result = 1; + swf_tag_t *tag; + if (swf == NULL) { + fprintf(stderr, "swf_object_replace_gifdata: swf == NULL\n"); + return 1; + } + for (tag=swf->tag ; tag ; tag=tag->next) { + result = swf_tag_replace_gif_data(tag, image_id, + gif_data, gif_data_len); + if (! result) { + break; + } + } + return result; +} + unsigned char * swf_object_get_sounddata(swf_object_t *swf, unsigned long *length, int sound_id) { swf_tag_t *tag; Modified: trunk/src/swf_object.h =================================================================== --- trunk/src/swf_object.h 2009-02-02 13:52:33 UTC (rev 104) +++ trunk/src/swf_object.h 2009-02-02 14:01:40 UTC (rev 105) @@ -36,6 +36,9 @@ extern int swf_object_replace_pngdata(swf_object_t *swf, int image_id, unsigned char *png_data, unsigned long png_data_len); +extern int swf_object_replace_gifdata(swf_object_t *swf, int image_id, + unsigned char *gif_data, + unsigned long gif_data_len); extern unsigned char *swf_object_get_sounddata(swf_object_t *swf, unsigned long *length, int sound_id); extern int swf_object_replace_melodata(swf_object_t *swf, int sound_id, unsigned char *melo_data, Modified: trunk/src/swf_tag.c =================================================================== --- trunk/src/swf_tag.c 2009-02-02 13:52:33 UTC (rev 104) +++ trunk/src/swf_tag.c 2009-02-02 14:01:40 UTC (rev 105) @@ -436,6 +436,54 @@ return result; } +int +swf_tag_replace_gif_data(swf_tag_t *tag, int image_id, + unsigned char *gif_data, + unsigned long gif_data_len) { + swf_tag_info_t *tag_info; + swf_tag_detail_handler_t *detail_handler; + int result; + if (tag == NULL) { + fprintf(stderr, "swf_tag_replace_gif_data: tag == NULL\n"); + return 1; + } + // DefineBitsJPEG or 2 or 3 + // BitsLossless or 2 + if ((tag->tag != 6) && (tag->tag != 21) && (tag->tag != 35) && + (tag->tag != 20) && (tag->tag != 36)) { + return 1; + } + tag_info = get_swf_tag_info(tag->tag); + detail_handler = tag_info->detail_handler(); + if (detail_handler->identity(tag, image_id)) { + return 1; + } + if (tag->detail) { + detail_handler->destroy(tag); + tag->detail = NULL; + } + if (tag->tag == 20) { + tag->tag = 20; + } else { + tag->tag = 36; + } + + tag_info = get_swf_tag_info(tag->tag); + detail_handler = tag_info->detail_handler(); + tag->detail = detail_handler->create(); + result= swf_tag_lossless_replace_gif_data(tag->detail, image_id, + gif_data, gif_data_len, tag); + if (result == 0) { + free(tag->data); + tag->data = NULL; + tag->length = 0; + } else { + detail_handler->destroy(tag); + tag->detail = NULL; + } + return result; +} + /* * DefineSound */ Modified: trunk/src/swf_tag.h =================================================================== --- trunk/src/swf_tag.h 2009-02-02 13:52:33 UTC (rev 104) +++ trunk/src/swf_tag.h 2009-02-02 14:01:40 UTC (rev 105) @@ -58,6 +58,9 @@ extern int swf_tag_replace_png_data(swf_tag_t *tag, int image_id, unsigned char *png_data, unsigned long png_data_len); +extern int swf_tag_replace_gif_data(swf_tag_t *tag, int image_id, + unsigned char *gif_data, + unsigned long gif_data_len); /* sound */ extern unsigned char *swf_tag_get_sound_data(swf_tag_t *tag, unsigned long *length, Modified: trunk/src/swf_tag_lossless.c =================================================================== --- trunk/src/swf_tag_lossless.c 2009-02-02 13:52:33 UTC (rev 104) +++ trunk/src/swf_tag_lossless.c 2009-02-02 14:01:40 UTC (rev 105) @@ -12,6 +12,7 @@ #include "swf_define.h" #include "swf_tag_lossless.h" #include "swf_png.h" +#include "swf_gif.h" swf_tag_detail_handler_t lossless_detail_handler; @@ -444,3 +445,59 @@ } return 0; } + +int +swf_tag_lossless_replace_gif_data(void *detail, int image_id, + unsigned char *gif_data, + unsigned long gif_data_len, swf_tag_t *tag) { + int tag_no, format; + unsigned short width, height; + unsigned char *result_data; + void *colormap = NULL; + int colormap_count = 0; + swf_tag_lossless_detail_t *swf_tag_lossless = (swf_tag_lossless_detail_t *) detail; + if (detail == NULL) { + fprintf(stderr, "swf_tag_lossless_replace_lossless_data: detail == NULL at line(%d)\n", __LINE__); + return 1; + } + swf_tag_lossless->image_id = image_id; + result_data = gifconv_gif2lossless(gif_data, gif_data_len, + &tag_no, &format, + &width, &height, + &colormap, &colormap_count); + + if (result_data == NULL) { + fprintf(stderr, "swf_tag_lossless_replace_lossless_data: gifconv_gif2lossless failed at line(%d)\n", __LINE__); + return 1; + } + tag->tag = tag_no; + swf_tag_lossless->format = format; + swf_tag_lossless->width = width; + swf_tag_lossless->height = height; + if (format == 3) { + free(swf_tag_lossless->colormap); + free(swf_tag_lossless->colormap2); + free(swf_tag_lossless->indices); + free(swf_tag_lossless->bitmap); + free(swf_tag_lossless->bitmap2); + swf_tag_lossless->colormap = NULL; + swf_tag_lossless->colormap2 = NULL; + swf_tag_lossless->indices = NULL; + swf_tag_lossless->bitmap = NULL; + swf_tag_lossless->bitmap2 = NULL; + if (tag_no == 20) { + swf_tag_lossless->colormap = (swf_rgb_t*) colormap; + } else if (tag_no == 36) { + swf_tag_lossless->colormap2 = (swf_rgba_t*) colormap; + } else { + fprintf(stderr, "swf_tag_lossless_replace_lossless_data: internal error tag_no(%d) at line(%d).\n", tag_no, __LINE__); + return 1; + } + swf_tag_lossless->colormap_count = colormap_count; + swf_tag_lossless->indices = (unsigned char *) result_data; + } else { + fprintf(stderr, "swf_tag_lossless_replace_lossless_data: format(%d) not implemented yet. at line(%d)\n", format, __LINE__); + return 1; + } + return 0; +} Modified: trunk/src/swf_tag_lossless.h =================================================================== --- trunk/src/swf_tag_lossless.h 2009-02-02 13:52:33 UTC (rev 104) +++ trunk/src/swf_tag_lossless.h 2009-02-02 14:01:40 UTC (rev 105) @@ -50,5 +50,9 @@ unsigned char *png_data, unsigned long png_data_len, swf_tag_t *tag); +extern int swf_tag_lossless_replace_gif_data(void *detail, int image_id, + unsigned char *gif_data, + unsigned long gif_data_len, + swf_tag_t *tag); #endif /* __SWF_TAG_LOSSLESS__H__ */ Modified: trunk/src/swfed.c =================================================================== --- trunk/src/swfed.c 2009-02-02 13:52:33 UTC (rev 104) +++ trunk/src/swfed.c 2009-02-02 14:01:40 UTC (rev 105) @@ -61,6 +61,7 @@ PHP_ME(swfed, replaceJpegData, NULL, 0) PHP_ME(swfed, getPNGData, NULL, 0) PHP_ME(swfed, replacePNGData, NULL, 0) + PHP_ME(swfed, replaceGIFData, NULL, 0) PHP_ME(swfed, getSoundData, NULL, 0) PHP_ME(swfed, replaceMLDData, NULL, 0) PHP_ME(swfed, getEditString, NULL, 0) @@ -586,6 +587,32 @@ RETURN_TRUE; } +PHP_METHOD(swfed, replaceGIFData) { + char *data = NULL; + int data_len = 0; + int image_id; + swf_object_t *swf; + int result = 0; + switch (ZEND_NUM_ARGS()) { + default: + WRONG_PARAM_COUNT; + RETURN_FALSE; /* XXX */ + case 2: + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls", &image_id, &data, &data_len) == FAILURE) { + RETURN_FALSE; + } + break; + } + swf = get_swf_object(getThis() TSRMLS_CC); + result = swf_object_replace_gifdata(swf, image_id, + (unsigned char *)data, + (unsigned long) data_len); + if (result) { + RETURN_FALSE; + } + RETURN_TRUE; +} + PHP_METHOD(swfed, getSoundData) { unsigned long sound_id = 0; unsigned long len = 0; From svnnotify @ sourceforge.jp Mon Feb 2 23:07:05 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Mon, 02 Feb 2009 23:07:05 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMDZdICBpZmRlZiDjgafjga4=?= =?utf-8?b?5LqM6YeNIGluY2x1ZGUg6Ziy5q2i?= Message-ID: <1233583625.436031.22150.nullmailer@users.sourceforge.jp> Revision: 106 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=106 Author: yoya Date: 2009-02-02 23:07:05 +0900 (Mon, 02 Feb 2009) Log Message: ----------- ifdef での二重 include 防止 Modified Paths: -------------- trunk/src/swf_gif.h trunk/src/swf_png.h -------------- next part -------------- Modified: trunk/src/swf_gif.h =================================================================== --- trunk/src/swf_gif.h 2009-02-02 14:01:40 UTC (rev 105) +++ trunk/src/swf_gif.h 2009-02-02 14:07:05 UTC (rev 106) @@ -4,6 +4,9 @@ +----------------------------------------------------------------------+ */ +#ifndef __SWF_GIF_H__ +#define __SWF_GIF_H__ + extern void * gifconv_gif2lossless(unsigned char *gif_data, unsigned long gif_data_len, int *tag, int *format, @@ -17,3 +20,5 @@ unsigned short index_data_count, int tag, int format, unsigned long *length); + +#endif /* __SWF_GIF_H__ */ Modified: trunk/src/swf_png.h =================================================================== --- trunk/src/swf_png.h 2009-02-02 14:01:40 UTC (rev 105) +++ trunk/src/swf_png.h 2009-02-02 14:07:05 UTC (rev 106) @@ -4,6 +4,9 @@ +----------------------------------------------------------------------+ */ +#ifndef __SWF_PNG_H__ +#define __SWF_PNG_H__ + extern void * pngconv_png2lossless(unsigned char *png_data, unsigned long png_data_len, int *tag, int *format, @@ -17,3 +20,5 @@ unsigned short index_data_count, int tag, int format, unsigned long *length); + +#endif /* __SWF_PNG_H__ */ From svnnotify @ sourceforge.jp Tue Feb 10 01:56:09 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Tue, 10 Feb 2009 01:56:09 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMDddICBTV0Yg5YaF55S75YOP?= =?utf-8?b?44GuIEdJRiDlt67jgZfmm7/jgYjjgrPjg57jg7Pjg4njg4Tjg7zjg6s=?= Message-ID: <1234198569.222843.27436.nullmailer@users.sourceforge.jp> Revision: 107 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=107 Author: yoya Date: 2009-02-10 01:56:08 +0900 (Tue, 10 Feb 2009) Log Message: ----------- SWF 内画像の GIF 差し替えコマンドツール Added Paths: ----------- trunk/sample/swfreplacegifdata.phps -------------- next part -------------- Added: trunk/sample/swfreplacegifdata.phps =================================================================== --- trunk/sample/swfreplacegifdata.phps (rev 0) +++ trunk/sample/swfreplacegifdata.phps 2009-02-09 16:56:08 UTC (rev 107) @@ -0,0 +1,27 @@ + [ [...]]\n"); + exit(1); +} + +$swf_filename = $argv[1]; + +$swfdata = file_get_contents($swf_filename); +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit (1); +} + +for ($i=2 ; $i < $argc ; $i+=2) { + $image_id = $argv[$i]; + $gif_filename = $argv[$i+1]; + $gifdata = file_get_contents($gif_filename); + if ($obj->replaceGIFData($image_id, $gifdata) == false) { + fprintf(STDERR, "replaceGIFdata($image_id, ...) failed\n"); + exit (1); + } +} + +echo $obj->output(); From svnnotify @ sourceforge.jp Tue Feb 10 07:57:44 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Tue, 10 Feb 2009 07:57:44 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMDhdICDjgqjjg6njg7zjga4=?= =?utf-8?b?5paH6KiA6Kqk44KK5L+u5q2jICgg5Y+k44GE6Zai5pWw5ZCN44GM5q6L44Gj?= =?utf-8?b?44Gm44GE44GfICk=?= Message-ID: <1234220264.845951.25902.nullmailer@users.sourceforge.jp> Revision: 108 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=108 Author: yoya Date: 2009-02-10 07:57:44 +0900 (Tue, 10 Feb 2009) Log Message: ----------- エラーの文言誤り修正 (古い関数名が残っていた) Modified Paths: -------------- trunk/src/swf_tag_lossless.c -------------- next part -------------- Modified: trunk/src/swf_tag_lossless.c =================================================================== --- trunk/src/swf_tag_lossless.c 2009-02-09 16:56:08 UTC (rev 107) +++ trunk/src/swf_tag_lossless.c 2009-02-09 22:57:44 UTC (rev 108) @@ -382,7 +382,7 @@ int colormap_count = 0; swf_tag_lossless_detail_t *swf_tag_lossless = (swf_tag_lossless_detail_t *) detail; if (detail == NULL) { - fprintf(stderr, "swf_tag_lossless_replace_lossless_data: detail == NULL at line(%d)\n", __LINE__); + fprintf(stderr, "swf_tag_lossess_replace_png_data: detail == NULL at line(%d)\n", __LINE__); return 1; } swf_tag_lossless->image_id = image_id; @@ -392,7 +392,7 @@ &colormap, &colormap_count); if (result_data == NULL) { - fprintf(stderr, "swf_tag_lossless_replace_lossless_data: pngconv_png2lossless failed at line(%d)\n", __LINE__); + fprintf(stderr, "swf_tag_lossess_replace_png_data: pngconv_png2lossless failed at line(%d)\n", __LINE__); return 1; } tag->tag = tag_no; @@ -415,7 +415,7 @@ } else if (tag_no == 36) { swf_tag_lossless->colormap2 = (swf_rgba_t*) colormap; } else { - fprintf(stderr, "swf_tag_lossless_replace_lossless_data: internal error tag_no(%d) at line(%d).\n", tag_no, __LINE__); + fprintf(stderr, "swf_tag_lossess_replace_png_data: internal error tag_no(%d) at line(%d).\n", tag_no, __LINE__); return 1; } swf_tag_lossless->colormap_count = colormap_count; @@ -436,11 +436,11 @@ } else if (tag_no == 36) { swf_tag_lossless->bitmap2 = (swf_argb_t*) result_data; } else { - fprintf(stderr, "swf_tag_lossless_replace_lossless_data: internal error tag_no(%d) at line(%d).\n", tag_no, __LINE__); + fprintf(stderr, "swf_tag_lossless_replace_png_data: internal error tag_no(%d) at line(%d).\n", tag_no, __LINE__); return 1; } } else { - fprintf(stderr, "swf_tag_lossless_replace_lossless_data: format(%d) not implemented yet. at line(%d)\n", format, __LINE__); + fprintf(stderr, "swf_tag_lossless_replace_png_data: format(%d) not implemented yet. at line(%d)\n", format, __LINE__); return 1; } return 0; @@ -457,7 +457,7 @@ int colormap_count = 0; swf_tag_lossless_detail_t *swf_tag_lossless = (swf_tag_lossless_detail_t *) detail; if (detail == NULL) { - fprintf(stderr, "swf_tag_lossless_replace_lossless_data: detail == NULL at line(%d)\n", __LINE__); + fprintf(stderr, "swf_tag_lossless_replace_gif_data: detail == NULL at line(%d)\n", __LINE__); return 1; } swf_tag_lossless->image_id = image_id; @@ -467,7 +467,7 @@ &colormap, &colormap_count); if (result_data == NULL) { - fprintf(stderr, "swf_tag_lossless_replace_lossless_data: gifconv_gif2lossless failed at line(%d)\n", __LINE__); + fprintf(stderr, "swf_tag_lossless_replace_gif_data: gifconv_gif2lossless failed at line(%d)\n", __LINE__); return 1; } tag->tag = tag_no; @@ -490,13 +490,13 @@ } else if (tag_no == 36) { swf_tag_lossless->colormap2 = (swf_rgba_t*) colormap; } else { - fprintf(stderr, "swf_tag_lossless_replace_lossless_data: internal error tag_no(%d) at line(%d).\n", tag_no, __LINE__); + fprintf(stderr, "swf_tag_lossless_replace_gif_data: internal error tag_no(%d) at line(%d).\n", tag_no, __LINE__); return 1; } swf_tag_lossless->colormap_count = colormap_count; swf_tag_lossless->indices = (unsigned char *) result_data; } else { - fprintf(stderr, "swf_tag_lossless_replace_lossless_data: format(%d) not implemented yet. at line(%d)\n", format, __LINE__); + fprintf(stderr, "swf_tag_lossless_replace_gif_data: format(%d) not implemented yet. at line(%d)\n", format, __LINE__); return 1; } return 0; From svnnotify @ sourceforge.jp Tue Feb 10 10:31:36 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Tue, 10 Feb 2009 10:31:36 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMDldICBHSUYg44GL44KJ5oq9?= =?utf-8?b?5Ye644GX44Gf44OR44Os44OD44OI44KS5Yip55So44GZ44KL44KI44GG44Gr?= =?utf-8?b?5L+u5q2jICgg44K044Of44OH44O844K/44KS6KaL44Gm44G+44GX44GfICk=?= Message-ID: <1234229496.353741.17402.nullmailer@users.sourceforge.jp> Revision: 109 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=109 Author: yoya Date: 2009-02-10 10:31:36 +0900 (Tue, 10 Feb 2009) Log Message: ----------- GIF から抽出したパレットを利用するように修正 (ゴミデータを見てました) Modified Paths: -------------- trunk/src/swf_gif.c -------------- next part -------------- Modified: trunk/src/swf_gif.c =================================================================== --- trunk/src/swf_gif.c 2009-02-09 22:57:44 UTC (rev 108) +++ trunk/src/swf_gif.c 2009-02-10 01:31:36 UTC (rev 109) @@ -142,6 +142,7 @@ gif_height = GifFile->SHeight; bpp = ColorMap->BitsPerPixel; trans_index = getTransparentIndex(Image); + palette_num = ColorMap->ColorCount; *width = (unsigned short) gif_width; *height = (unsigned short) gif_height; @@ -165,21 +166,21 @@ * image copy */ int i; - *colormap_count = 256; // XXX + *colormap_count = palette_num; if (trans_index == -1) { // Lossless swf_rgb_t *result_colormap = malloc(sizeof(swf_rgb_t) * palette_num); for (i=0 ; i < palette_num ; i++) { - result_colormap[i].red = palette[i].red; - result_colormap[i].green = palette[i].green; - result_colormap[i].blue = palette[i].blue; + result_colormap[i].red = ColorMap->Colors[i].Red; + result_colormap[i].green = ColorMap->Colors[i].Green; + result_colormap[i].blue = ColorMap->Colors[i].Blue; } *colormap = result_colormap; } else { // Lossless2 swf_rgba_t *result_colormap = malloc(sizeof(swf_rgba_t) * palette_num); for (i=0 ; i < palette_num ; i++) { - result_colormap[i].red = palette[i].red; - result_colormap[i].green = palette[i].green; - result_colormap[i].blue = palette[i].blue; + result_colormap[i].red = ColorMap->Colors[i].Red; + result_colormap[i].green = ColorMap->Colors[i].Green; + result_colormap[i].blue = ColorMap->Colors[i].Blue; if (i == trans_index) { result_colormap[i].alpha = 0x0; } else { From svnnotify @ sourceforge.jp Wed Feb 11 14:47:01 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Wed, 11 Feb 2009 14:47:01 +0900 Subject: [Swfed-svn] =?utf-8?q?swfed-svn_=5B110=5D__Lossless=E3=83=87?= =?utf-8?b?44O844K/5L2c5oiQ5pmC44Gu5aSJ5pWw44Gu5Yid5pyf5YyW5ryP44KM44KS?= =?utf-8?b?5L+u5q2jICggY29tcHJlc3Mg44Gn5qC857SN5YWIYnVmZiDjga7jg4fjg7w=?= =?utf-8?b?44K/6ZW35oyH5a6aICk=?= Message-ID: <1234331221.175780.19349.nullmailer@users.sourceforge.jp> Revision: 110 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=110 Author: yoya Date: 2009-02-11 14:47:01 +0900 (Wed, 11 Feb 2009) Log Message: ----------- Losslessデータ作成時の変数の初期化漏れを修正 (compress で格納先buff のデータ長指定) Modified Paths: -------------- trunk/src/swf_tag_lossless.c -------------- next part -------------- Modified: trunk/src/swf_tag_lossless.c =================================================================== --- trunk/src/swf_tag_lossless.c 2009-02-10 01:31:36 UTC (rev 109) +++ trunk/src/swf_tag_lossless.c 2009-02-11 05:47:01 UTC (rev 110) @@ -233,7 +233,8 @@ indices_len); old_buff_ref = bitstream_buffer(bs2, 0); old_size = bitstream_length(bs2); - tmp_buff = malloc(old_size); // too enough size + compsize = old_size; + tmp_buff = malloc(compsize); compress(tmp_buff, &compsize, old_buff_ref, old_size); bitstream_putstring(bs, tmp_buff, compsize); bitstream_close(bs2); @@ -256,7 +257,7 @@ } old_buff_ref = bitstream_buffer(bs2, 0); old_size = bitstream_length(bs2); - compsize = old_size; // too enough size + compsize = old_size; tmp_buff = malloc(compsize); compress(tmp_buff, &compsize, old_buff_ref, old_size); bitstream_putstring(bs, tmp_buff, compsize); From svnnotify @ sourceforge.jp Wed Feb 11 15:12:28 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Wed, 11 Feb 2009 15:12:28 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMTFdICDlpInmlbDjga7liJ0=?= =?utf-8?b?5pyf5YyW5ryP44KM44KS5L+u5q2jICggY29tcHJlc3Mg5qC857SN5YWIYnVm?= =?utf-8?b?ZiDjga7jg4fjg7zjgr/plbfmjIflrpogKQ==?= Message-ID: <1234332748.515569.20567.nullmailer@users.sourceforge.jp> Revision: 111 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=111 Author: yoya Date: 2009-02-11 15:12:28 +0900 (Wed, 11 Feb 2009) Log Message: ----------- 変数の初期化漏れを修正 (compress 格納先buff のデータ長指定) Modified Paths: -------------- trunk/src/swf_object.c trunk/src/swf_tag_jpeg.c -------------- next part -------------- Modified: trunk/src/swf_object.c =================================================================== --- trunk/src/swf_object.c 2009-02-11 05:47:01 UTC (rev 110) +++ trunk/src/swf_object.c 2009-02-11 06:12:28 UTC (rev 111) @@ -130,13 +130,14 @@ ; // OK } else if (memcmp(swf->header.magic, "CWS", SWF_MAGIC_SIZE) == 0) { int result; - unsigned long compsize; + unsigned long compsize, old_size; unsigned char *new_buff, *old_buff_ref; bitstream_setpos(bs, SWF_HEADER_SIZE, 0); old_buff_ref = bitstream_buffer(bs, SWF_HEADER_SIZE); - new_buff = malloc(swf->header.file_length - SWF_HEADER_SIZE); - result = compress(new_buff, &compsize, old_buff_ref, - bs->data_len - SWF_HEADER_SIZE); + old_size = bs->data_len - SWF_HEADER_SIZE; + compsize = old_size; + new_buff = malloc(compsize); + result = compress(new_buff, &compsize, old_buff_ref, old_size); if (result != Z_OK) { if (result == Z_MEM_ERROR) { fprintf(stderr, "swf_object_output: compress Z_MEM_ERROR: can't malloc\n"); Modified: trunk/src/swf_tag_jpeg.c =================================================================== --- trunk/src/swf_tag_jpeg.c 2009-02-11 05:47:01 UTC (rev 110) +++ trunk/src/swf_tag_jpeg.c 2009-02-11 06:12:28 UTC (rev 111) @@ -178,7 +178,7 @@ bitstream_t *bs; unsigned char *data, *new_buff; unsigned long offset_to_alpha; - unsigned long compsize; + unsigned long compsize, old_size; (void) swf; *length = 0; bs = bitstream_open(); @@ -186,8 +186,10 @@ bitstream_putbytesLE(bs, swf_tag_jpeg->jpeg_data_len, 4); bitstream_putstring(bs, swf_tag_jpeg->jpeg_data, swf_tag_jpeg->jpeg_data_len); offset_to_alpha = swf_tag_jpeg->jpeg_data_len; - new_buff = malloc(swf_tag_jpeg->alpha_data_len); // too enough memory - compress(new_buff, &compsize, swf_tag_jpeg->alpha_data, swf_tag_jpeg->alpha_data_len); + old_size = swf_tag_jpeg->alpha_data_len; + compsize = old_size; + new_buff = malloc(compsize); // too enough memory + compress(new_buff, &compsize, swf_tag_jpeg->alpha_data, old_size); bitstream_putstring(bs, new_buff, compsize); free(new_buff); data = bitstream_steal(bs, length); From svnnotify @ sourceforge.jp Wed Feb 11 15:14:34 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Wed, 11 Feb 2009 15:14:34 +0900 Subject: [Swfed-svn] =?utf-8?q?swfed-svn_=5B112=5D__compress_=E3=81=AE?= =?utf-8?b?44Ko44Op44O844KS44OB44Kn44OD44Kv44GZ44KL5Yem55CG44KS6L+95Yqg?= Message-ID: <1234332874.095114.22205.nullmailer@users.sourceforge.jp> Revision: 112 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=112 Author: yoya Date: 2009-02-11 15:14:34 +0900 (Wed, 11 Feb 2009) Log Message: ----------- compress のエラーをチェックする処理を追加 Modified Paths: -------------- trunk/src/swf_tag_jpeg.c trunk/src/swf_tag_lossless.c -------------- next part -------------- Modified: trunk/src/swf_tag_jpeg.c =================================================================== --- trunk/src/swf_tag_jpeg.c 2009-02-11 06:12:28 UTC (rev 111) +++ trunk/src/swf_tag_jpeg.c 2009-02-11 06:14:34 UTC (rev 112) @@ -179,6 +179,7 @@ unsigned char *data, *new_buff; unsigned long offset_to_alpha; unsigned long compsize, old_size; + int result; (void) swf; *length = 0; bs = bitstream_open(); @@ -189,7 +190,19 @@ old_size = swf_tag_jpeg->alpha_data_len; compsize = old_size; new_buff = malloc(compsize); // too enough memory - compress(new_buff, &compsize, swf_tag_jpeg->alpha_data, old_size); + result = compress(new_buff, &compsize, swf_tag_jpeg->alpha_data, old_size); + if (result != Z_OK) { + if (result == Z_MEM_ERROR) { + fprintf(stderr, "swf_tag_jpeg_output_detail: compress Z_MEM_ERROR: can't malloc\n"); + } else if (result == Z_BUF_ERROR) { + fprintf(stderr, "swf_tag_jpeg_output_detail: compress Z_BUF_ERROR: not enough buff size\n"); + } else { + fprintf(stderr, "swf_tag_jpeg_output_detail: compress failed by unknown reason\n"); + } + free(new_buff); + bitstream_close(bs); + return NULL; // FAILURE + } bitstream_putstring(bs, new_buff, compsize); free(new_buff); data = bitstream_steal(bs, length); Modified: trunk/src/swf_tag_lossless.c =================================================================== --- trunk/src/swf_tag_lossless.c 2009-02-11 06:12:28 UTC (rev 111) +++ trunk/src/swf_tag_lossless.c 2009-02-11 06:14:34 UTC (rev 112) @@ -206,6 +206,7 @@ unsigned long i; unsigned char *tmp_buff, *old_buff_ref; unsigned long compsize, old_size; + int result; (void) swf; *length = 0; bs = bitstream_open(); @@ -235,7 +236,20 @@ old_size = bitstream_length(bs2); compsize = old_size; tmp_buff = malloc(compsize); - compress(tmp_buff, &compsize, old_buff_ref, old_size); + result = compress(tmp_buff, &compsize, old_buff_ref, old_size); + if (result != Z_OK) { + if (result == Z_MEM_ERROR) { + fprintf(stderr, "swf_tag_lossless_output_detail: compress Z_MEM_ERROR: can't malloc\n"); + } else if (result == Z_BUF_ERROR) { + fprintf(stderr, "swf_tag_lossless_output_detail: compress Z_BUF_ERROR: not enough buff size\n"); + } else { + fprintf(stderr, "swf_tag_lossless_output_detail: compress failed by unknown reason\n"); + } + bitstream_close(bs2); + bitstream_close(bs); + free(tmp_buff); + return NULL; // FAILURE + } bitstream_putstring(bs, tmp_buff, compsize); bitstream_close(bs2); free(tmp_buff); @@ -259,7 +273,20 @@ old_size = bitstream_length(bs2); compsize = old_size; tmp_buff = malloc(compsize); - compress(tmp_buff, &compsize, old_buff_ref, old_size); + result = compress(tmp_buff, &compsize, old_buff_ref, old_size); + if (result != Z_OK) { + if (result == Z_MEM_ERROR) { + fprintf(stderr, "swf_tag_lossless_output_detail: compress Z_MEM_ERROR: can't malloc\n"); + } else if (result == Z_BUF_ERROR) { + fprintf(stderr, "swf_tag_lossless_output_detail: compress Z_BUF_ERROR: not enough buff size\n"); + } else { + fprintf(stderr, "swf_tag_lossless_output_detail: compress failed by unknown reason\n"); + } + bitstream_close(bs2); + bitstream_close(bs); + free(tmp_buff); + return NULL; // FAILURE + } bitstream_putstring(bs, tmp_buff, compsize); bitstream_close(bs2); free(tmp_buff); From svnnotify @ sourceforge.jp Wed Feb 11 21:32:46 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Wed, 11 Feb 2009 21:32:46 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMTNdICBHSUYg5a++5b+c?= Message-ID: <1234355566.528650.12820.nullmailer@users.sourceforge.jp> Revision: 113 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=113 Author: yoya Date: 2009-02-11 21:32:46 +0900 (Wed, 11 Feb 2009) Log Message: ----------- GIF 対応 Modified Paths: -------------- trunk/www/swfimagereplace.php -------------- next part -------------- Modified: trunk/www/swfimagereplace.php =================================================================== --- trunk/www/swfimagereplace.php 2009-02-11 06:14:34 UTC (rev 112) +++ trunk/www/swfimagereplace.php 2009-02-11 12:32:46 UTC (rev 113) @@ -55,6 +55,7 @@ + ファイルを指定してください。(64MBytes 以内に限定してます) @@ -67,7 +68,8 @@ $image_id = $_REQUEST['image_id']; $id_image = $_REQUEST['id_image']; $ext = $_REQUEST['ext']; -if (($ext != '.png') && ($ext != '.jpg')) { +if (($ext != '.png') && ($ext != '.jpg') && ($ext != '.gif')) { + echo "unknown ext($ext)\n"; exit(1); } $swf_filename = "$tmp_prefix$id.swf"; @@ -78,10 +80,19 @@ $swf = new SWFEditor(); $swf->input($swfdata); -if ($ext == '.jpg') { +switch ($ext) { + case '.jpg': $swf->replaceJpegData(intval($image_id), $imagedata); -} else { + break; + case '.png': $swf->replacePNGData(intval($image_id), $imagedata); + break; + case '.gif': + $swf->replaceGIFData(intval($image_id), $imagedata); + break; + default: + echo "unknown ext($ext)\n"; + exit(1); } header('Content-type: application/x-shockwave-flash'); From svnnotify @ sourceforge.jp Wed Feb 11 21:55:59 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Wed, 11 Feb 2009 21:55:59 +0900 Subject: [Swfed-svn] =?utf-8?q?swfed-svn_=5B114=5D__-_input_=E3=81=AE?= =?utf-8?b?44Ko44Op44O844OB44Kn44OD44Kv44KS6L+95Yqg?= Message-ID: <1234356959.923338.12638.nullmailer@users.sourceforge.jp> Revision: 114 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=114 Author: yoya Date: 2009-02-11 21:55:59 +0900 (Wed, 11 Feb 2009) Log Message: ----------- - input のエラーチェックを追加 - replace 系でエラーチェックの抜けがあったので修正 - 4 tab に揃えた(つもり) Modified Paths: -------------- trunk/sample/swfcompress.phps trunk/sample/swfdump.phps trunk/sample/swfgeteditstring.phps trunk/sample/swfgetjpegalphadata.phps trunk/sample/swfgetjpegdata.phps trunk/sample/swfgetpngdata.phps trunk/sample/swfgetsounddata.phps trunk/sample/swfreplaceeditstring.phps trunk/sample/swfreplacegifdata.phps trunk/sample/swfreplacejpegdata.phps trunk/sample/swfreplacemlddata.phps trunk/sample/swfreplacepngdata.phps -------------- next part -------------- Modified: trunk/sample/swfcompress.phps =================================================================== --- trunk/sample/swfcompress.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfcompress.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -3,24 +3,28 @@ $compress = true; switch($argc) { - case 2: - $swf_filename = $argv[1]; - break; - case 3: - if ($argv[1] == '-u') { - $compress = false; - $swf_filename = $argv[2]; - break; - } - default: - fprintf(STDERR, "Usage: php swfcompress.phps [-u] \n"); - exit(1); + case 2: + $swf_filename = $argv[1]; + break; + case 3: + if ($argv[1] == '-u') { + $compress = false; + $swf_filename = $argv[2]; + break; + } + default: + fprintf(STDERR, "Usage: php swfcompress.phps [-u] \n"); + exit(1); } $swf_data = file_get_contents($swf_filename); $swf = new SWFEditor(); -$swf->input($swf_data); +if ($swf->input($swf_data) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + $info = array('compress' => $compress); $swf->setHeaderInfo($info); Modified: trunk/sample/swfdump.phps =================================================================== --- trunk/sample/swfdump.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfdump.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -9,5 +9,9 @@ $swfdata = file_get_contents($swf_filename); $obj = new SWFEditor(); -$obj->input($swfdata); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + $obj->swfInfo(); Modified: trunk/sample/swfgeteditstring.phps =================================================================== --- trunk/sample/swfgeteditstring.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfgeteditstring.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -10,6 +10,9 @@ $swfdata = file_get_contents($swf_filename); $obj = new SWFEditor(); -$obj->input($swfdata); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} echo $obj->getEditString($var_name) . "\n"; Modified: trunk/sample/swfgetjpegalphadata.phps =================================================================== --- trunk/sample/swfgetjpegalphadata.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfgetjpegalphadata.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -7,6 +7,10 @@ $swf_filename = $argv[1]; $image_id = $argv[2]; $swfdata = file_get_contents($swf_filename); + $obj = new SWFEditor(); -$obj->input($swfdata); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} echo $obj->getJpegAlpha($image_id); Modified: trunk/sample/swfgetjpegdata.phps =================================================================== --- trunk/sample/swfgetjpegdata.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfgetjpegdata.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -10,6 +10,9 @@ $swfdata = file_get_contents($swf_filename); $obj = new SWFEditor(); -$obj->input($swfdata); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} echo $obj->getJpegData($image_id); Modified: trunk/sample/swfgetpngdata.phps =================================================================== --- trunk/sample/swfgetpngdata.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfgetpngdata.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -10,6 +10,9 @@ $swfdata = file_get_contents($swf_filename); $obj = new SWFEditor(); -$obj->input($swfdata); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} echo $obj->getPNGData($image_id); Modified: trunk/sample/swfgetsounddata.phps =================================================================== --- trunk/sample/swfgetsounddata.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfgetsounddata.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -10,6 +10,9 @@ $swfdata = file_get_contents($swf_filename); $obj = new SWFEditor(); -$obj->input($swfdata); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} echo $obj->getSoundData($sound_id); Modified: trunk/sample/swfreplaceeditstring.phps =================================================================== --- trunk/sample/swfreplaceeditstring.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfreplaceeditstring.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -1,8 +1,8 @@ \n"); - exit(1); + fprintf(STDERR, "Usage: swfreplaceeditstring \n"); + exit(1); } $swf_filename = $argv[1]; @@ -12,13 +12,12 @@ $obj = new SWFEditor(); if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit (1); + fprintf(STDERR, "input failed\n"); + exit(1); } if ($obj->replaceEditString($variable_name, $initial_text) == false) { - fprintf(STDERR, "replaceEditString($variable_name, ...) failed\n"); - exit (1); - + fprintf(STDERR, "replaceEditString($variable_name, ...) failed\n"); + exit(1); } echo $obj->output(); Modified: trunk/sample/swfreplacegifdata.phps =================================================================== --- trunk/sample/swfreplacegifdata.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfreplacegifdata.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -1,8 +1,8 @@ [ [...]]\n"); - exit(1); + fprintf(STDERR, "Usage: swfreplacegifdata [ [...]]\n"); + exit(1); } $swf_filename = $argv[1]; @@ -10,18 +10,18 @@ $swfdata = file_get_contents($swf_filename); $obj = new SWFEditor(); if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit (1); + fprintf(STDERR, "input failed\n"); + exit(1); } for ($i=2 ; $i < $argc ; $i+=2) { - $image_id = $argv[$i]; - $gif_filename = $argv[$i+1]; - $gifdata = file_get_contents($gif_filename); - if ($obj->replaceGIFData($image_id, $gifdata) == false) { - fprintf(STDERR, "replaceGIFdata($image_id, ...) failed\n"); - exit (1); - } + $image_id = $argv[$i]; + $gif_filename = $argv[$i+1]; + $gifdata = file_get_contents($gif_filename); + if ($obj->replaceGIFData($image_id, $gifdata) == false) { + fprintf(STDERR, "replaceGIFdata($image_id, ...) failed\n"); + exit(1); + } } echo $obj->output(); Modified: trunk/sample/swfreplacejpegdata.phps =================================================================== --- trunk/sample/swfreplacejpegdata.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfreplacejpegdata.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -23,8 +23,8 @@ $obj = new SWFEditor(); if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit (1); + fprintf(STDERR, "input failed\n"); + exit(1); } if (empty($alphadata)) { @@ -34,8 +34,8 @@ } if ($result == false) { - fprintf(STDERR, "replaceJpegdata($image_id, ...) failed\n"); - exit (1); + fprintf(STDERR, "replaceJpegdata($image_id, ...) failed\n"); + exit(1); } echo $obj->output(); Modified: trunk/sample/swfreplacemlddata.phps =================================================================== --- trunk/sample/swfreplacemlddata.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfreplacemlddata.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -9,13 +9,19 @@ $swfdata = file_get_contents($swf_filename); $obj = new SWFEditor(); -$obj->input($swfdata); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} for ($i=2 ; $i < $argc ; $i+=2) { - $sound_id = $argv[$i]; - $mld_filename = $argv[$i+1]; - $mlddata = file_get_contents($mld_filename); - $obj->replaceMLDData($sound_id, $mlddata); + $sound_id = $argv[$i]; + $mld_filename = $argv[$i+1]; + $mlddata = file_get_contents($mld_filename); + if ($obj->replaceMLDData($sound_id, $mlddata) == false) { + fprintf(STDERR, "replaceMLDdata($sound_id, ...) failed\n"); + exit(1); + } } echo $obj->output(); Modified: trunk/sample/swfreplacepngdata.phps =================================================================== --- trunk/sample/swfreplacepngdata.phps 2009-02-11 12:32:46 UTC (rev 113) +++ trunk/sample/swfreplacepngdata.phps 2009-02-11 12:55:59 UTC (rev 114) @@ -11,7 +11,7 @@ $obj = new SWFEditor(); if ($obj->input($swfdata) == false) { fprintf(STDERR, "input failed\n"); - exit (1); + exit(1); } for ($i=2 ; $i < $argc ; $i+=2) { @@ -20,7 +20,7 @@ $pngdata = file_get_contents($png_filename); if ($obj->replacePNGData($image_id, $pngdata) == false) { fprintf(STDERR, "replacePNGdata($image_id, ...) failed\n"); - exit (1); + exit(1); } } From svnnotify @ sourceforge.jp Wed Feb 11 21:58:58 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Wed, 11 Feb 2009 21:58:58 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMTVdICDmi6HlvLXlrZDjgpIg?= =?utf-8?b?cGhwcyDjgYvjgokgcGhwIOOBq+WkieabtA==?= Message-ID: <1234357138.249986.16794.nullmailer@users.sourceforge.jp> Revision: 115 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=115 Author: yoya Date: 2009-02-11 21:58:58 +0900 (Wed, 11 Feb 2009) Log Message: ----------- 拡張子を phps から php に変更 Added Paths: ----------- trunk/sample/swfcompress.php trunk/sample/swfdump.php trunk/sample/swfgeteditstring.php trunk/sample/swfgetjpegalphadata.php trunk/sample/swfgetjpegdata.php trunk/sample/swfgetpngdata.php trunk/sample/swfgetsounddata.php trunk/sample/swfreplaceeditstring.php trunk/sample/swfreplacegifdata.php trunk/sample/swfreplacejpegdata.php trunk/sample/swfreplacemlddata.php trunk/sample/swfreplacepngdata.php Removed Paths: ------------- trunk/sample/swfcompress.phps trunk/sample/swfdump.phps trunk/sample/swfgeteditstring.phps trunk/sample/swfgetjpegalphadata.phps trunk/sample/swfgetjpegdata.phps trunk/sample/swfgetpngdata.phps trunk/sample/swfgetsounddata.phps trunk/sample/swfreplaceeditstring.phps trunk/sample/swfreplacegifdata.phps trunk/sample/swfreplacejpegdata.phps trunk/sample/swfreplacemlddata.phps trunk/sample/swfreplacepngdata.phps -------------- next part -------------- Copied: trunk/sample/swfcompress.php (from rev 114, trunk/sample/swfcompress.phps) =================================================================== --- trunk/sample/swfcompress.php (rev 0) +++ trunk/sample/swfcompress.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,31 @@ +\n"); + exit(1); +} + +$swf_data = file_get_contents($swf_filename); + +$swf = new SWFEditor(); +if ($swf->input($swf_data) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +$info = array('compress' => $compress); +$swf->setHeaderInfo($info); + +echo $swf->output(); Deleted: trunk/sample/swfcompress.phps =================================================================== --- trunk/sample/swfcompress.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfcompress.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,31 +0,0 @@ -\n"); - exit(1); -} - -$swf_data = file_get_contents($swf_filename); - -$swf = new SWFEditor(); -if ($swf->input($swf_data) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -$info = array('compress' => $compress); -$swf->setHeaderInfo($info); - -echo $swf->output(); Copied: trunk/sample/swfdump.php (from rev 114, trunk/sample/swfdump.phps) =================================================================== --- trunk/sample/swfdump.php (rev 0) +++ trunk/sample/swfdump.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,17 @@ +\n"); + exit(1); +} + +$swf_filename = $argv[1]; +$swfdata = file_get_contents($swf_filename); + +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +$obj->swfInfo(); Deleted: trunk/sample/swfdump.phps =================================================================== --- trunk/sample/swfdump.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfdump.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,17 +0,0 @@ -\n"); - exit(1); -} - -$swf_filename = $argv[1]; -$swfdata = file_get_contents($swf_filename); - -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -$obj->swfInfo(); Copied: trunk/sample/swfgeteditstring.php (from rev 114, trunk/sample/swfgeteditstring.phps) =================================================================== --- trunk/sample/swfgeteditstring.php (rev 0) +++ trunk/sample/swfgeteditstring.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,18 @@ + \n"); + exit(1); +} + +$swf_filename = $argv[1]; +$var_name = $argv[2]; +$swfdata = file_get_contents($swf_filename); + +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +echo $obj->getEditString($var_name) . "\n"; Deleted: trunk/sample/swfgeteditstring.phps =================================================================== --- trunk/sample/swfgeteditstring.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfgeteditstring.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,18 +0,0 @@ - \n"); - exit(1); -} - -$swf_filename = $argv[1]; -$var_name = $argv[2]; -$swfdata = file_get_contents($swf_filename); - -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -echo $obj->getEditString($var_name) . "\n"; Copied: trunk/sample/swfgetjpegalphadata.php (from rev 114, trunk/sample/swfgetjpegalphadata.phps) =================================================================== --- trunk/sample/swfgetjpegalphadata.php (rev 0) +++ trunk/sample/swfgetjpegalphadata.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,16 @@ + \n"); + exit(1); +} +$swf_filename = $argv[1]; +$image_id = $argv[2]; +$swfdata = file_get_contents($swf_filename); + +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} +echo $obj->getJpegAlpha($image_id); Deleted: trunk/sample/swfgetjpegalphadata.phps =================================================================== --- trunk/sample/swfgetjpegalphadata.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfgetjpegalphadata.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,16 +0,0 @@ - \n"); - exit(1); -} -$swf_filename = $argv[1]; -$image_id = $argv[2]; -$swfdata = file_get_contents($swf_filename); - -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} -echo $obj->getJpegAlpha($image_id); Copied: trunk/sample/swfgetjpegdata.php (from rev 114, trunk/sample/swfgetjpegdata.phps) =================================================================== --- trunk/sample/swfgetjpegdata.php (rev 0) +++ trunk/sample/swfgetjpegdata.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,18 @@ + \n"); + exit(1); +} + +$swf_filename = $argv[1]; +$image_id = $argv[2]; +$swfdata = file_get_contents($swf_filename); + +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +echo $obj->getJpegData($image_id); Deleted: trunk/sample/swfgetjpegdata.phps =================================================================== --- trunk/sample/swfgetjpegdata.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfgetjpegdata.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,18 +0,0 @@ - \n"); - exit(1); -} - -$swf_filename = $argv[1]; -$image_id = $argv[2]; -$swfdata = file_get_contents($swf_filename); - -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -echo $obj->getJpegData($image_id); Copied: trunk/sample/swfgetpngdata.php (from rev 114, trunk/sample/swfgetpngdata.phps) =================================================================== --- trunk/sample/swfgetpngdata.php (rev 0) +++ trunk/sample/swfgetpngdata.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,18 @@ + \n"); + exit(1); +} + +$swf_filename = $argv[1]; +$image_id = $argv[2]; +$swfdata = file_get_contents($swf_filename); + +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +echo $obj->getPNGData($image_id); Deleted: trunk/sample/swfgetpngdata.phps =================================================================== --- trunk/sample/swfgetpngdata.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfgetpngdata.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,18 +0,0 @@ - \n"); - exit(1); -} - -$swf_filename = $argv[1]; -$image_id = $argv[2]; -$swfdata = file_get_contents($swf_filename); - -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -echo $obj->getPNGData($image_id); Copied: trunk/sample/swfgetsounddata.php (from rev 114, trunk/sample/swfgetsounddata.phps) =================================================================== --- trunk/sample/swfgetsounddata.php (rev 0) +++ trunk/sample/swfgetsounddata.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,18 @@ + \n"); + exit(1); +} + +$swf_filename = $argv[1]; +$sound_id = $argv[2]; +$swfdata = file_get_contents($swf_filename); + +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +echo $obj->getSoundData($sound_id); Deleted: trunk/sample/swfgetsounddata.phps =================================================================== --- trunk/sample/swfgetsounddata.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfgetsounddata.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,18 +0,0 @@ - \n"); - exit(1); -} - -$swf_filename = $argv[1]; -$sound_id = $argv[2]; -$swfdata = file_get_contents($swf_filename); - -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -echo $obj->getSoundData($sound_id); Copied: trunk/sample/swfreplaceeditstring.php (from rev 114, trunk/sample/swfreplaceeditstring.phps) =================================================================== --- trunk/sample/swfreplaceeditstring.php (rev 0) +++ trunk/sample/swfreplaceeditstring.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,23 @@ + \n"); + exit(1); +} + +$swf_filename = $argv[1]; +$variable_name = $argv[2]; +$initial_text = $argv[3]; +$swfdata = file_get_contents($swf_filename); + +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} +if ($obj->replaceEditString($variable_name, $initial_text) == false) { + fprintf(STDERR, "replaceEditString($variable_name, ...) failed\n"); + exit(1); +} + +echo $obj->output(); Deleted: trunk/sample/swfreplaceeditstring.phps =================================================================== --- trunk/sample/swfreplaceeditstring.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfreplaceeditstring.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,23 +0,0 @@ - \n"); - exit(1); -} - -$swf_filename = $argv[1]; -$variable_name = $argv[2]; -$initial_text = $argv[3]; -$swfdata = file_get_contents($swf_filename); - -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} -if ($obj->replaceEditString($variable_name, $initial_text) == false) { - fprintf(STDERR, "replaceEditString($variable_name, ...) failed\n"); - exit(1); -} - -echo $obj->output(); Copied: trunk/sample/swfreplacegifdata.php (from rev 114, trunk/sample/swfreplacegifdata.phps) =================================================================== --- trunk/sample/swfreplacegifdata.php (rev 0) +++ trunk/sample/swfreplacegifdata.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,27 @@ + [ [...]]\n"); + exit(1); +} + +$swf_filename = $argv[1]; + +$swfdata = file_get_contents($swf_filename); +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +for ($i=2 ; $i < $argc ; $i+=2) { + $image_id = $argv[$i]; + $gif_filename = $argv[$i+1]; + $gifdata = file_get_contents($gif_filename); + if ($obj->replaceGIFData($image_id, $gifdata) == false) { + fprintf(STDERR, "replaceGIFdata($image_id, ...) failed\n"); + exit(1); + } +} + +echo $obj->output(); Deleted: trunk/sample/swfreplacegifdata.phps =================================================================== --- trunk/sample/swfreplacegifdata.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfreplacegifdata.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,27 +0,0 @@ - [ [...]]\n"); - exit(1); -} - -$swf_filename = $argv[1]; - -$swfdata = file_get_contents($swf_filename); -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -for ($i=2 ; $i < $argc ; $i+=2) { - $image_id = $argv[$i]; - $gif_filename = $argv[$i+1]; - $gifdata = file_get_contents($gif_filename); - if ($obj->replaceGIFData($image_id, $gifdata) == false) { - fprintf(STDERR, "replaceGIFdata($image_id, ...) failed\n"); - exit(1); - } -} - -echo $obj->output(); Copied: trunk/sample/swfreplacejpegdata.php (from rev 114, trunk/sample/swfreplacejpegdata.phps) =================================================================== --- trunk/sample/swfreplacejpegdata.php (rev 0) +++ trunk/sample/swfreplacejpegdata.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,41 @@ + [alpha_file]\n"); + exit(1); +} + +if ($argc > 3) { + $swf_filename = $argv[1]; + $image_id = $argv[2]; + $jpeg_filename = $argv[3]; + if ($argc > 4) { + $alpha_filename = $argv[4]; + } +} + +$swfdata = file_get_contents($swf_filename); +$jpegdata = file_get_contents($jpeg_filename); + +if (! empty($alpha_filename)) { + $alphadata = file_get_contents($alpha_filename); +} + +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +if (empty($alphadata)) { + $result = $obj->replaceJpegData($image_id, $jpegdata); +} else { + $result = $obj->replaceJpegData($image_id, $jpegdata, $alphadata); +} + +if ($result == false) { + fprintf(STDERR, "replaceJpegdata($image_id, ...) failed\n"); + exit(1); +} + +echo $obj->output(); Deleted: trunk/sample/swfreplacejpegdata.phps =================================================================== --- trunk/sample/swfreplacejpegdata.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfreplacejpegdata.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,41 +0,0 @@ - [alpha_file]\n"); - exit(1); -} - -if ($argc > 3) { - $swf_filename = $argv[1]; - $image_id = $argv[2]; - $jpeg_filename = $argv[3]; - if ($argc > 4) { - $alpha_filename = $argv[4]; - } -} - -$swfdata = file_get_contents($swf_filename); -$jpegdata = file_get_contents($jpeg_filename); - -if (! empty($alpha_filename)) { - $alphadata = file_get_contents($alpha_filename); -} - -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -if (empty($alphadata)) { - $result = $obj->replaceJpegData($image_id, $jpegdata); -} else { - $result = $obj->replaceJpegData($image_id, $jpegdata, $alphadata); -} - -if ($result == false) { - fprintf(STDERR, "replaceJpegdata($image_id, ...) failed\n"); - exit(1); -} - -echo $obj->output(); Copied: trunk/sample/swfreplacemlddata.php (from rev 114, trunk/sample/swfreplacemlddata.phps) =================================================================== --- trunk/sample/swfreplacemlddata.php (rev 0) +++ trunk/sample/swfreplacemlddata.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,27 @@ + [ [...]]\n"); + exit(1); +} + +$swf_filename = $argv[1]; + +$swfdata = file_get_contents($swf_filename); +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +for ($i=2 ; $i < $argc ; $i+=2) { + $sound_id = $argv[$i]; + $mld_filename = $argv[$i+1]; + $mlddata = file_get_contents($mld_filename); + if ($obj->replaceMLDData($sound_id, $mlddata) == false) { + fprintf(STDERR, "replaceMLDdata($sound_id, ...) failed\n"); + exit(1); + } +} + +echo $obj->output(); Deleted: trunk/sample/swfreplacemlddata.phps =================================================================== --- trunk/sample/swfreplacemlddata.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfreplacemlddata.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,27 +0,0 @@ - [ [...]]\n"); - exit(1); -} - -$swf_filename = $argv[1]; - -$swfdata = file_get_contents($swf_filename); -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -for ($i=2 ; $i < $argc ; $i+=2) { - $sound_id = $argv[$i]; - $mld_filename = $argv[$i+1]; - $mlddata = file_get_contents($mld_filename); - if ($obj->replaceMLDData($sound_id, $mlddata) == false) { - fprintf(STDERR, "replaceMLDdata($sound_id, ...) failed\n"); - exit(1); - } -} - -echo $obj->output(); Copied: trunk/sample/swfreplacepngdata.php (from rev 114, trunk/sample/swfreplacepngdata.phps) =================================================================== --- trunk/sample/swfreplacepngdata.php (rev 0) +++ trunk/sample/swfreplacepngdata.php 2009-02-11 12:58:58 UTC (rev 115) @@ -0,0 +1,27 @@ + [ [...]]\n"); + exit(1); +} + +$swf_filename = $argv[1]; + +$swfdata = file_get_contents($swf_filename); +$obj = new SWFEditor(); +if ($obj->input($swfdata) == false) { + fprintf(STDERR, "input failed\n"); + exit(1); +} + +for ($i=2 ; $i < $argc ; $i+=2) { + $image_id = $argv[$i]; + $png_filename = $argv[$i+1]; + $pngdata = file_get_contents($png_filename); + if ($obj->replacePNGData($image_id, $pngdata) == false) { + fprintf(STDERR, "replacePNGdata($image_id, ...) failed\n"); + exit(1); + } +} + +echo $obj->output(); Deleted: trunk/sample/swfreplacepngdata.phps =================================================================== --- trunk/sample/swfreplacepngdata.phps 2009-02-11 12:55:59 UTC (rev 114) +++ trunk/sample/swfreplacepngdata.phps 2009-02-11 12:58:58 UTC (rev 115) @@ -1,27 +0,0 @@ - [ [...]]\n"); - exit(1); -} - -$swf_filename = $argv[1]; - -$swfdata = file_get_contents($swf_filename); -$obj = new SWFEditor(); -if ($obj->input($swfdata) == false) { - fprintf(STDERR, "input failed\n"); - exit(1); -} - -for ($i=2 ; $i < $argc ; $i+=2) { - $image_id = $argv[$i]; - $png_filename = $argv[$i+1]; - $pngdata = file_get_contents($png_filename); - if ($obj->replacePNGData($image_id, $pngdata) == false) { - fprintf(STDERR, "replacePNGdata($image_id, ...) failed\n"); - exit(1); - } -} - -echo $obj->output(); From svnnotify @ sourceforge.jp Wed Feb 11 23:10:46 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Wed, 11 Feb 2009 23:10:46 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMTZdICDnlLvlg4/jg5Xjgqk=?= =?utf-8?b?44O844Oe44OD44OI44KS6Ieq5YuV5Yik5a6a44GZ44KL44KI44GG44Gr5pS5?= =?utf-8?b?6YCg?= Message-ID: <1234361446.162646.20019.nullmailer@users.sourceforge.jp> Revision: 116 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=116 Author: yoya Date: 2009-02-11 23:10:46 +0900 (Wed, 11 Feb 2009) Log Message: ----------- 画像フォーマットを自動判定するように改造 Modified Paths: -------------- trunk/www/swfimagereplace.php -------------- next part -------------- Modified: trunk/www/swfimagereplace.php =================================================================== --- trunk/www/swfimagereplace.php 2009-02-11 12:58:58 UTC (rev 115) +++ trunk/www/swfimagereplace.php 2009-02-11 14:10:46 UTC (rev 116) @@ -2,6 +2,20 @@ require_once('define.php'); +function detect_image_ext(&$imagedata) { + $image_sig = substr($imagedata, 0, 0x10); + if (strpos($image_sig, 'JFIF') === 6) { + $ext = '.jpg'; + } elseif (strpos($image_sig, 'PNG') === 1) { + $ext = '.png'; + } elseif (strpos($image_sig, 'GIF') === 0) { + $ext = '.gif'; + } else { + $ext = false; + } + return $ext; +} + if (! empty($_FILES['imagefile']['tmp_name'])) { $filename = $_FILES['imagefile']['tmp_name']; $imagedata = file_get_contents($filename); @@ -12,7 +26,12 @@ $tmp_name = sha1($imagedata, false); $id = $_REQUEST['id']; $image_id = $_REQUEST['image_id']; - $ext = $_REQUEST['ext']; + $ext = detect_image_ext($imagedata); + if ($ext == false) { + $image_sig = substr($imagedata, 0, 8); + echo "unknown image signature: ".bin2hex($image_sig)."\n"; + exit(1); + } $id_image = substr($tmp_name, 0, 16); // XXX $tmp_filename = "$tmp_prefix$id_image$ext"; if ((! is_readable($tmp_filename)) && @@ -53,9 +72,7 @@ 画像ファイルをアップロード: - - - + ファイルを指定してください。(64MBytes 以内に限定してます) @@ -68,33 +85,44 @@ $image_id = $_REQUEST['image_id']; $id_image = $_REQUEST['id_image']; $ext = $_REQUEST['ext']; -if (($ext != '.png') && ($ext != '.jpg') && ($ext != '.gif')) { - echo "unknown ext($ext)\n"; + +if (($ext != '.jpg') && ($ext != '.png') && ($ext != '.gif')) { + echo "unknown ext=($ext)..\n"; exit(1); } + $swf_filename = "$tmp_prefix$id.swf"; $swfdata = file_get_contents($swf_filename); $image_filename = "$tmp_prefix$id_image$ext"; $imagedata = file_get_contents($image_filename); $swf = new SWFEditor(); -$swf->input($swfdata); +if ($swf->input($swfdata) == false) { + echo "input failed\n"; + exit(1); +} + switch ($ext) { case '.jpg': - $swf->replaceJpegData(intval($image_id), $imagedata); + $result = $swf->replaceJpegData(intval($image_id), $imagedata); break; case '.png': - $swf->replacePNGData(intval($image_id), $imagedata); + $result = $swf->replacePNGData(intval($image_id), $imagedata); break; case '.gif': - $swf->replaceGIFData(intval($image_id), $imagedata); + $result = $swf->replaceGIFData(intval($image_id), $imagedata); break; default: - echo "unknown ext($ext)\n"; + echo "unknown ext($ext)...\n"; exit(1); } +if ($result == false) { + echo "replace failed ext=$ext\n"; + exit(0); +} + header('Content-type: application/x-shockwave-flash'); // header('Content-type: application/octet-stream'); echo $swf->output(); From svnnotify @ sourceforge.jp Wed Feb 11 23:15:28 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Wed, 11 Feb 2009 23:15:28 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMTddICDjgrPjg7zjg4nmlbQ=?= =?utf-8?b?55CG?= Message-ID: <1234361728.768057.24786.nullmailer@users.sourceforge.jp> Revision: 117 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=117 Author: yoya Date: 2009-02-11 23:15:28 +0900 (Wed, 11 Feb 2009) Log Message: ----------- コード整理 Modified Paths: -------------- trunk/src/swf_gif.c -------------- next part -------------- Modified: trunk/src/swf_gif.c =================================================================== --- trunk/src/swf_gif.c 2009-02-11 14:10:46 UTC (rev 116) +++ trunk/src/swf_gif.c 2009-02-11 14:15:28 UTC (rev 117) @@ -31,7 +31,6 @@ } gif_color; typedef gif_color * gif_colorp; - /* * gif read */ @@ -115,11 +114,11 @@ gif_uint_32 x, y; void *image_data = NULL; - gif_colorp palette = NULL; int palette_num = 0; int trans_index = -1; - SavedImage Image; + int i; + unsigned char *indices_data; gif_buff.data = gif_data; gif_buff.data_len = gif_data_len; @@ -141,9 +140,10 @@ gif_width = GifFile->SWidth; gif_height = GifFile->SHeight; bpp = ColorMap->BitsPerPixel; - trans_index = getTransparentIndex(Image); palette_num = ColorMap->ColorCount; + trans_index = getTransparentIndex(Image); + *width = (unsigned short) gif_width; *height = (unsigned short) gif_height; *format = 3; @@ -165,7 +165,6 @@ /* * image copy */ - int i; *colormap_count = palette_num; if (trans_index == -1) { // Lossless swf_rgb_t *result_colormap = malloc(sizeof(swf_rgb_t) * palette_num); @@ -176,7 +175,7 @@ } *colormap = result_colormap; } else { // Lossless2 - swf_rgba_t *result_colormap = malloc(sizeof(swf_rgba_t) * palette_num); + swf_rgba_t *result_colormap = malloc(sizeof(swf_rgba_t) * palette_num); for (i=0 ; i < palette_num ; i++) { result_colormap[i].red = ColorMap->Colors[i].Red; result_colormap[i].green = ColorMap->Colors[i].Green; @@ -189,7 +188,7 @@ } *colormap = result_colormap; } - unsigned char *indices_data = malloc(((gif_width+ 3) & -4) * gif_height); + indices_data = malloc(((gif_width+ 3) & -4) * gif_height); gif_image_data_ref = Image.RasterBits; i = 0; for (y=0 ; y < gif_height ; y++) { From svnnotify @ sourceforge.jp Sun Feb 15 00:55:25 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Sun, 15 Feb 2009 00:55:25 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMThdIEJQUD0gOCDjgavpmZA=?= =?utf-8?b?5a6a44GZ44KL5Yem55CG44KS5aSW44GX44Gf?= Message-ID: <1234626925.598656.2652.nullmailer@users.sourceforge.jp> Revision: 118 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=118 Author: yoya Date: 2009-02-15 00:55:25 +0900 (Sun, 15 Feb 2009) Log Message: ----------- BPP=8 に限定する処理を外した Modified Paths: -------------- trunk/src/swf_gif.c -------------- next part -------------- Modified: trunk/src/swf_gif.c =================================================================== --- trunk/src/swf_gif.c 2009-02-11 14:15:28 UTC (rev 117) +++ trunk/src/swf_gif.c 2009-02-14 15:55:25 UTC (rev 118) @@ -153,14 +153,6 @@ } else { *tag_no = 20; // DefineBitsLossless } - - if (bpp != 8) { - fprintf(stderr, "gifconv_gif2lossless: bpp=%d not implemented yet. accept only bpp=8\n", bpp); - if (GifFile) { - DGifCloseFile(GifFile); - } - return NULL; - } /* * image copy From svnnotify @ sourceforge.jp Mon Feb 16 01:55:22 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Mon, 16 Feb 2009 01:55:22 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMTldICBhbHBoYSDlgKQgKCA=?= =?utf-8?b?5LiN6YCP5piO5bqmICkg44GMIDAgLCAgMjU1IOS7peWkluOBruaZguOBqw==?= =?utf-8?b?6KGo56S644GV44KM44KL6Imy44GM44GK44GL44GX44GP44Gq44KL5LiN5YW3?= =?utf-8?b?5ZCI44KS5L+u5q2j?= Message-ID: <1234716922.465140.8528.nullmailer@users.sourceforge.jp> Revision: 119 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=119 Author: yoya Date: 2009-02-16 01:55:22 +0900 (Mon, 16 Feb 2009) Log Message: ----------- alpha 値(不透明度)が 0, 255 以外の時に表示される色がおかしくなる不具合を修正 - PNG の (R, G, B, A) を (R*A/255, G*A/255, B*A/255, A) に変換し Lossless2 タグに保存するように修正。 - GIF は透明度 pixel を (0, 0, 0, 0) で保存するように修正 Modified Paths: -------------- trunk/src/swf_gif.c trunk/src/swf_png.c -------------- next part -------------- Modified: trunk/src/swf_gif.c =================================================================== --- trunk/src/swf_gif.c 2009-02-14 15:55:25 UTC (rev 118) +++ trunk/src/swf_gif.c 2009-02-15 16:55:22 UTC (rev 119) @@ -173,9 +173,12 @@ result_colormap[i].green = ColorMap->Colors[i].Green; result_colormap[i].blue = ColorMap->Colors[i].Blue; if (i == trans_index) { - result_colormap[i].alpha = 0x0; + result_colormap[i].red = 0x0; + result_colormap[i].green = 0x0; + result_colormap[i].blue = 0x0; + result_colormap[i].alpha = 0x0; } else { - result_colormap[i].alpha = 0xff; + result_colormap[i].alpha = 0xff; } } *colormap = result_colormap; Modified: trunk/src/swf_png.c =================================================================== --- trunk/src/swf_png.c 2009-02-14 15:55:25 UTC (rev 118) +++ trunk/src/swf_png.c 2009-02-15 16:55:22 UTC (rev 119) @@ -191,13 +191,17 @@ } else { swf_rgba_t *result_colormap = malloc(sizeof(swf_rgba_t) * palette_num); // Lossless2 for (i=0 ; i < palette_num ; i++) { - result_colormap[i].red = palette[i].red; - result_colormap[i].green = palette[i].green; - result_colormap[i].blue = palette[i].blue; if (i <= num_trans) { - result_colormap[i].alpha = trans[i]; + int alpha_value = trans[i]; + result_colormap[i].red = palette[i].red * alpha_value / 0xff; + result_colormap[i].green = palette[i].green * alpha_value / 0xff; + result_colormap[i].blue = palette[i].blue * alpha_value / 0xff; + result_colormap[i].alpha = alpha_value; } else { - result_colormap[i].alpha = 0xff; // XXX + result_colormap[i].red = palette[i].red; + result_colormap[i].green = palette[i].green; + result_colormap[i].blue = palette[i].blue; + result_colormap[i].alpha = 0xff; // opaque } } *colormap = result_colormap; @@ -225,10 +229,11 @@ argb_list = malloc(sizeof(swf_argb_t) * png_width * png_height); for (y=0 ; y < png_height ; y++) { for (x=0 ; x < png_width ; x++) { - argb_list[x+y*png_width].red = png_image_data[y][4*x + 0]; - argb_list[x+y*png_width].green = png_image_data[y][4*x + 1]; - argb_list[x+y*png_width].blue = png_image_data[y][4*x + 2]; - argb_list[x+y*png_width].alpha = png_image_data[y][4*x + 3]; + int alpha_value = png_image_data[y][4*x + 3]; + argb_list[x+y*png_width].red = png_image_data[y][4*x + 0] * alpha_value / 0xff; + argb_list[x+y*png_width].green = png_image_data[y][4*x + 1] * alpha_value / 0xff; + argb_list[x+y*png_width].blue = png_image_data[y][4*x + 2] * alpha_value / 0xff; + argb_list[x+y*png_width].alpha = alpha_value; } } image_data = argb_list; From svnnotify @ sourceforge.jp Sun Feb 22 04:11:48 2009 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Sun, 22 Feb 2009 04:11:48 +0900 Subject: [Swfed-svn] =?utf-8?b?c3dmZWQtc3ZuIFsxMjBdICDpgI/pgY5HSUYgPT4g?= =?utf-8?b?TG9zc2xlc3PlpInmj5vjga7pmpvjgavpgI/pgY5pbmRleOOBpyBSR0Ig44KS?= =?utf-8?b?5LqM5bqm5Luj5YWl44GX44Gm44GE44Gf44Gu44Gn5LiA5bqm44Gn5riI44KA?= =?utf-8?b?44KI44GG44Gr5pS55ZaE?= Message-ID: <1235243508.792916.4959.nullmailer@users.sourceforge.jp> Revision: 120 http://svn.sourceforge.jp/view?root=swfed&view=rev&rev=120 Author: yoya Date: 2009-02-22 04:11:48 +0900 (Sun, 22 Feb 2009) Log Message: ----------- 透過GIF=>Lossless変換の際に透過indexで RGB を二度代入していたので一度で済むように改善 Modified Paths: -------------- trunk/src/swf_gif.c -------------- next part -------------- Modified: trunk/src/swf_gif.c =================================================================== --- trunk/src/swf_gif.c 2009-02-15 16:55:22 UTC (rev 119) +++ trunk/src/swf_gif.c 2009-02-21 19:11:48 UTC (rev 120) @@ -169,15 +169,15 @@ } else { // Lossless2 swf_rgba_t *result_colormap = malloc(sizeof(swf_rgba_t) * palette_num); for (i=0 ; i < palette_num ; i++) { - result_colormap[i].red = ColorMap->Colors[i].Red; - result_colormap[i].green = ColorMap->Colors[i].Green; - result_colormap[i].blue = ColorMap->Colors[i].Blue; if (i == trans_index) { result_colormap[i].red = 0x0; result_colormap[i].green = 0x0; result_colormap[i].blue = 0x0; result_colormap[i].alpha = 0x0; } else { + result_colormap[i].red = ColorMap->Colors[i].Red; + result_colormap[i].green = ColorMap->Colors[i].Green; + result_colormap[i].blue = ColorMap->Colors[i].Blue; result_colormap[i].alpha = 0xff; } }