From b004a6790b045b888e1a69707328eecb22867587 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Tue, 22 Mar 2016 17:20:38 +0100 Subject: [PATCH] small improvements --- .../src/com/jpexs/decompiler/flash/SWF.java | 15 +++++++++++++ .../flash/tags/DefineButtonTag.java | 9 ++------ .../decompiler/flash/tags/base/ButtonTag.java | 14 +------------ .../flash/tags/base/CharacterTag.java | 9 +------- .../decompiler/flash/xfl/XFLConverter.java | 21 ++++++------------- 5 files changed, 25 insertions(+), 43 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java index ae6de761d..9e6b62089 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -440,6 +440,21 @@ public final class SWF implements SWFContainerItem, Timelined { return characterIdTags.get(characterId); } + public CharacterIdTag getCharacterIdTag(int characterId, int tagId) { + List characterIdTags = getCharacterIdTags(characterId); + if (characterIdTags != null) { + for (CharacterIdTag t : characterIdTags) { + if (((Tag) t).getId() == tagId) { + if (t.getCharacterId() == characterId) { + return t; + } + } + } + } + + return null; + } + public Map> getDependentCharacters() { if (dependentCharacters == null) { synchronized (this) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineButtonTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineButtonTag.java index 8903f8d45..771e50995 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineButtonTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineButtonTag.java @@ -233,13 +233,8 @@ public class DefineButtonTag extends ButtonTag implements ASMSourceContainer { @Override protected void initTimeline(Timeline timeline) { - ColorTransform clrTrans = null; - for (Tag t : swf.getTags()) { - if (t instanceof DefineButtonCxformTag) { - DefineButtonCxformTag cx = (DefineButtonCxformTag) t; - clrTrans = cx.buttonColorTransform; - } - } + DefineButtonCxformTag cxformTag = (DefineButtonCxformTag) swf.getCharacterIdTag(buttonId, DefineButtonCxformTag.ID); + ColorTransform clrTrans = cxformTag == null ? null : cxformTag.buttonColorTransform; int maxDepth = 0; Frame frameUp = new Frame(timeline, 0); Frame frameDown = new Frame(timeline, 0); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ButtonTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ButtonTag.java index c2e31acb0..b28bb240e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ButtonTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ButtonTag.java @@ -102,19 +102,7 @@ public abstract class ButtonTag extends CharacterTag implements DrawableTag, Tim } public DefineButtonSoundTag getSounds() { - List characterIdTags = swf.getCharacterIdTags(getCharacterId()); - if (characterIdTags != null) { - for (CharacterIdTag t : characterIdTags) { - if (t instanceof DefineButtonSoundTag) { - DefineButtonSoundTag st = (DefineButtonSoundTag) t; - if (st.buttonId == getCharacterId()) { - return st; - } - } - } - } - - return null; + return (DefineButtonSoundTag) swf.getCharacterIdTag(getCharacterId(), DefineButtonSoundTag.ID); } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/CharacterTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/CharacterTag.java index 173f05b30..89d3d1a0e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/CharacterTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/CharacterTag.java @@ -20,7 +20,6 @@ import com.jpexs.decompiler.flash.SWF; import com.jpexs.decompiler.flash.tags.DefineScalingGridTag; import com.jpexs.decompiler.flash.tags.Tag; import com.jpexs.helpers.ByteArrayRange; -import java.util.List; /** * @@ -78,12 +77,6 @@ public abstract class CharacterTag extends Tag implements CharacterIdTag { } public DefineScalingGridTag getScalingGridTag() { - List mtags = swf.getCharacterIdTags(getCharacterId()); - for (CharacterIdTag ct : mtags) { - if (ct instanceof DefineScalingGridTag) { - return (DefineScalingGridTag) ct; - } - } - return null; + return (DefineScalingGridTag) swf.getCharacterIdTag(getCharacterId(), DefineScalingGridTag.ID); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java index adb15f40e..f98de9c5e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java @@ -1064,13 +1064,9 @@ public class XFLConverter { } if (tag instanceof DefineButtonTag) { DefineButtonTag bt = (DefineButtonTag) tag; - for (Tag t : tags) { - if (t instanceof DefineButtonCxformTag) { - DefineButtonCxformTag bcx = (DefineButtonCxformTag) t; - if (bcx.buttonId == bt.buttonId) { - colorTransform = bcx.buttonColorTransform; - } - } + DefineButtonCxformTag bcx = (DefineButtonCxformTag) bt.getSwf().getCharacterIdTag(bt.buttonId, DefineButtonCxformTag.ID); + if (bcx != null) { + colorTransform = bcx.buttonColorTransform; } } @@ -2098,16 +2094,11 @@ public class XFLConverter { for (Tag t : tags) { if (t instanceof FontTag) { + SWF swf = t.getSwf(); FontTag font = (FontTag) t; int fontId = font.getFontId(); - String fontName = null; - for (Tag t2 : tags) { - if (t2 instanceof DefineFontNameTag) { - if (((DefineFontNameTag) t2).fontId == fontId) { - fontName = ((DefineFontNameTag) t2).fontName; - } - } - } + DefineFontNameTag fontNameTag = (DefineFontNameTag) swf.getCharacterIdTag(fontId, DefineFontNameTag.ID); + String fontName = fontNameTag == null ? null : fontNameTag.fontName; if (fontName == null) { fontName = font.getFontNameIntag(); }