--- /dev/null
+<?php
+
+if ($argc != 2) {
+ fprintf(STDERR, "Usage: swfconvertbitmapdatatojpegtag.php <swf_file>\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);
+}
+
+$ret = $obj->convertBitmapDataToJpegTag();
+
+if ($ret == false) {
+ fprintf(STDERR, "replaceBitmapData($image_id, ...) failed\n");
+ exit(1);
+}
+
+echo $obj->output();
PHP_ME(swfed, replacePNGData, NULL, 0)
PHP_ME(swfed, replaceGIFData, NULL, 0)
PHP_ME(swfed, replaceBitmapData, NULL, 0)
+ PHP_ME(swfed, convertBitmapDataToJpegTag, NULL, 0)
PHP_ME(swfed, applyShapeMatrixFactor, NULL, 0)
PHP_ME(swfed, applyShapeRectFactor, NULL, 0)
PHP_ME(swfed, getSoundData, NULL, 0)
RETURN_TRUE;
}
+PHP_METHOD(swfed, convertBitmapDataToJpegTag) {
+ swf_object_t *swf = NULL;
+ int ret;
+ swf = get_swf_object(getThis() TSRMLS_CC);
+ ret = swf_object_convert_bitmapdata_tojpegtag(swf);
+ if (ret) {
+ RETURN_FALSE;
+ }
+ RETURN_TRUE;
+}
+
PHP_METHOD(swfed, applyShapeMatrixFactor) {
long shape_id = 0;
double scale_x = 1, scale_y = 1, rotate_rad = 0;
PHP_METHOD(swfed, replacePNGData);
PHP_METHOD(swfed, replaceGIFData);
PHP_METHOD(swfed, replaceBitmapData);
+PHP_METHOD(swfed, convertBitmapDataToJpegTag);
PHP_METHOD(swfed, applyShapeMatrixFactor);
PHP_METHOD(swfed, applyShapeRectFactor);
PHP_METHOD(swfed, getSoundData);
#endif /* HAVE_GIF */
+int
+swf_object_convert_bitmapdata_tojpegtag(swf_object_t *swf) {
+ swf_tag_t *tag;
+ if (swf == NULL) {
+ fprintf(stderr, "swf_object_convert_bitmapdata_tojpegtag: swf == NULL\n");
+ return 1;
+ }
+ for (tag=swf->tag_head ; tag ; tag=tag->next) {
+ swf_tag_convert_bitmap_data_tojpegtag(tag);
+ }
+ return 0;
+}
+
unsigned char *
swf_object_get_sounddata(swf_object_t *swf, unsigned long *length, int sound_id) {
swf_tag_t *tag;
extern int swf_object_replace_gifdata(swf_object_t *swf, int image_id,
unsigned char *gif_data,
unsigned long gif_data_len);
+extern int swf_object_convert_bitmapdata_tojpegtag(swf_object_t *swf);
+
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,
#endif /* HAVE_GIF */
+int
+swf_tag_convert_bitmap_data_tojpegtag(swf_tag_t *tag) {
+ int tag_code;
+ int image_id;
+ unsigned char *bitmap_data;
+ unsigned long bitmap_data_len;
+ swf_tag_lossless_detail_t *swf_tag_lossless;
+ int ret;
+ if (tag == NULL) {
+ fprintf(stderr, "swf_object_convert_bitmap_data_tojpegtag: tag == NULL\n");
+ return 1;
+ }
+ tag_code = tag->code;
+ if ((tag_code != 20) && (tag_code != 36)) {
+ return 1;
+ }
+ if (tag->detail == NULL) {
+ swf_tag_lossless = (swf_tag_lossless_detail_t *) swf_tag_create_input_detail(tag, NULL);
+ } else {
+ swf_tag_lossless = (swf_tag_lossless_detail_t *) tag->detail;
+ }
+ image_id= swf_tag_lossless->image_id;
+ bitmap_data = swf_tag_lossless_get_png_data(swf_tag_lossless, &bitmap_data_len, image_id, tag);
+ if (bitmap_data == NULL) {
+ fprintf(stderr, "swf_object_convert_bitmap_data_tojpegtag: failed to swf_tag_get_png_data image_id=%d\n", image_id);
+ return 1;
+ }
+ ret = swf_tag_replace_jpeg_data(tag, image_id,
+ bitmap_data, bitmap_data_len, NULL, 0, 1);
+ free(bitmap_data);
+ if (ret) {
+ fprintf(stderr, "swf_object_convert_bitmap_data_tojpegtag: failed to swf_tag_replace_jpeg_data image_id=%d\n", image_id);
+ return ret;
+ }
+ return 0;
+}
+
/*
* DefineSound
*/
extern int swf_tag_replace_gif_data(swf_tag_t *tag, int image_id,
unsigned char *gif_data,
unsigned long gif_data_len);
+extern int swf_tag_convert_bitmap_data_tojpegtag(swf_tag_t *tag);
+
/* sound */
extern unsigned char *swf_tag_get_sound_data(swf_tag_t *tag,
unsigned long *length,