From fbef91c3e82f5e6d4050e3cdcd212afd28fdd694 Mon Sep 17 00:00:00 2001 From: yoya Date: Thu, 12 Dec 2013 02:22:51 +0900 Subject: [PATCH] swf_tac_button replace action string. --- src/swf_object.c | 6 +++--- src/swf_tag.c | 17 +++++++++++++---- src/swf_tag_button.c | 23 +++++++++++++++++++++++ src/swf_tag_button.h | 3 +++ 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/swf_object.c b/src/swf_object.c index ddf6793..e1f0c65 100644 --- a/src/swf_object.c +++ b/src/swf_object.c @@ -1267,7 +1267,7 @@ swf_object_replace_action_strings(swf_object_t *swf, y_keyvalue_t *kv) { return 1; // NG } for (tag=swf->tag_head ; tag ; tag=tag->next) { - if (isActionTag(tag->code)) { + if (isActionTag(tag->code) || isButtonTag(tag->code)) { ret = swf_tag_replace_action_strings(tag, kv, &m, swf); if (ret) { fprintf(stderr, "swf_object_replace_action_strings: swf_tag_replace_action_string failed\n"); @@ -1286,7 +1286,7 @@ swf_object_replace_action_strings(swf_object_t *swf, y_keyvalue_t *kv) { int modified = 0; swf_tag_t *t; for (t = tag_sprite->tag ; t ; t = t->next) { - if (isActionTag(t->code)) { + if (isActionTag(t->code) || isButtonTag(tag->code)) { ret = swf_tag_replace_action_strings(t, kv, &m, swf); if (ret) { fprintf(stderr, "swf_object_replace_action_strings: replace_action_string failed\n"); @@ -1297,7 +1297,7 @@ swf_object_replace_action_strings(swf_object_t *swf, y_keyvalue_t *kv) { t->data = NULL; } modified = 1; // action tag modified - } + } } if (modified) { // sprite tag rebuild if (tag->data) { diff --git a/src/swf_tag.c b/src/swf_tag.c index e44444d..4faa0e4 100644 --- a/src/swf_tag.c +++ b/src/swf_tag.c @@ -1142,7 +1142,7 @@ swf_tag_put_action_setvariables(swf_tag_t *tag, y_keyvalue_t *kv, int swf_tag_replace_action_strings(swf_tag_t *tag, y_keyvalue_t *kv, int *modified, struct swf_object_ *swf) { - int ret; + int ret = 1; if (tag == NULL) { fprintf(stderr, "swf_tag_replace_action_string: tag == NULL\n"); return 1; // NG @@ -1159,9 +1159,18 @@ swf_tag_replace_action_strings(swf_tag_t *tag, y_keyvalue_t *kv, fprintf(stderr, "swf_tag_replace_action_string: swf_tag_create_input_detail failed\n"); return 1; // NG } - ret = swf_tag_action_replace_strings(tag, kv, modified); - if (ret) { - fprintf(stderr, "swf_tag_replace_action_string: swf_tag_action_replace_strings failed\n"); + if (isActionTag(tag->code)) { + ret = swf_tag_action_replace_strings(tag, kv, modified); + if (ret) { + fprintf(stderr, "swf_tag_replace_action_string: swf_tag_action_replace_strings failed\n"); + } + } else if (isButtonTag(tag->code)) { + ret = swf_tag_button_replace_strings(tag, kv, modified); + if (ret) { + fprintf(stderr, "swf_tag_replace_action_string: swf_tag_button_replace_strings failed\n"); + } + } else { + fprintf(stderr, "swf_tag_replace_action_string: action or button tag needed.\n"); } return ret; } diff --git a/src/swf_tag_button.c b/src/swf_tag_button.c index e32f2c8..39981a5 100644 --- a/src/swf_tag_button.c +++ b/src/swf_tag_button.c @@ -257,3 +257,26 @@ swf_tag_button_destroy_detail(swf_tag_t *tag) { } return ; } + +int +swf_tag_button_replace_strings(swf_tag_t *tag, y_keyvalue_t *kv, + int *modified) { + int ret = 1; + swf_tag_button_detail_t *swf_tag_button = (swf_tag_button_detail_t *) tag->detail; + if ((tag->code == 7) && swf_tag_button->actions) { // DefineButton + ret = swf_action_list_replace_strings(swf_tag_button->actions, modified, kv); + } + if ((tag->code == 34) && swf_tag_button->condactions) { // DebineButton2 + swf_button_condaction_t *button_condaction; + for (button_condaction = swf_tag_button->condactions->head ; button_condaction ; button_condaction = button_condaction->next) { + if (button_condaction->actions) { + ret = swf_action_list_replace_strings(button_condaction->actions, modified, kv); + if (ret) { + fprintf(stderr, "swf_tag_button_replace_strings: swf_action_list_replace_strings failed:\n"); + return ret; + } + } + } + } + return 0; +} diff --git a/src/swf_tag_button.h b/src/swf_tag_button.h index 3da76d3..8a0d193 100644 --- a/src/swf_tag_button.h +++ b/src/swf_tag_button.h @@ -36,4 +36,7 @@ extern void swf_tag_button_print_detail(swf_tag_t *tag, int indent_depth); extern void swf_tag_button_destroy_detail(swf_tag_t *tag); +extern int swf_tag_button_replace_strings(swf_tag_t *tag, y_keyvalue_t *kv, + int *modified); + #endif /* __SWF_TAG_BUTTON__H__ */ -- 2.11.0