From 67ffdde3a96d2b5246ac2dd18c5b659a148137ec Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E3=82=88=E3=82=84?= Date: Mon, 6 Aug 2012 01:57:29 +0900 Subject: [PATCH] replacing font reference id in DefineEditText on replaceMovieClip. --- src/swf_object.c | 9 +++++++++ src/swf_tag.c | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/swf_object.c b/src/swf_object.c index 1b595a7..ddf6793 100644 --- a/src/swf_object.c +++ b/src/swf_object.c @@ -1547,6 +1547,15 @@ swf_object_replace_movieclip(swf_object_t *swf, trans_table_replace_refcid_recursive(s->tag, cid_trans_table); free(tag->data); tag->data = NULL; + } else { + int refcid, to_refcid; + refcid = swf_tag_get_refcid(tag); + if (refcid > 0) { + to_refcid = trans_table_get(cid_trans_table, refcid); + if (refcid != to_refcid) { + swf_tag_replace_refcid(tag, to_refcid); + } + } } // extract tag before SpriteTag prev_sprite_tag->next = swf_tag_move(tag); diff --git a/src/swf_tag.c b/src/swf_tag.c index 0f74d30..e44444d 100644 --- a/src/swf_tag.c +++ b/src/swf_tag.c @@ -417,6 +417,14 @@ swf_tag_get_refcid(swf_tag_t *tag) { return -1; } return swf_tag_place->character_id; + } else if (tag->code == 37) { // DefineEditText + swf_tag_edit_detail_t *swf_tag_edit; + swf_tag_edit = swf_tag_create_input_detail(tag, NULL); + if (swf_tag_edit == NULL) { + fprintf(stderr, "swf_tag_get_refcid: swf_tag_edit swf_tag_create_input_detail failed\n"); + return -1; + } + return swf_tag_edit->edit_font_id_ref; } return -1; // no cid tag } @@ -435,6 +443,14 @@ swf_tag_replace_refcid(swf_tag_t *tag, int cid) { return 1; // failure } swf_tag_place->character_id = cid; + } else if (tag->code == 37) { // DefineEditText + swf_tag_edit_detail_t *swf_tag_edit; + swf_tag_edit = swf_tag_create_input_detail(tag, NULL); + if (swf_tag_edit == NULL) { + fprintf(stderr, "swf_tag_get_refcid: swf_tag_edit swf_tag_create_input_detail failed\n"); + return -1; + } + swf_tag_edit->edit_font_id_ref = cid; } if (tag->data) { free(tag->data); -- 2.11.0