From d44f6ef4de27c3186d00ef909a142c2122d20d67 Mon Sep 17 00:00:00 2001 From: Honfika Date: Sun, 2 Feb 2014 09:23:38 +0100 Subject: [PATCH] common function for detecting nested frame tags --- .../decompiler/flash/SWFInputStream.java | 13 +---------- .../flash/gui/MainFrameStatusPanel.java | 1 - .../decompiler/flash/gui/TagTreeModel.java | 15 ++----------- .../decompiler/flash/tags/ShowFrameTag.java | 22 +++++++++++++++++++ 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java b/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java index 274f09df1..9cf56318d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java @@ -298,17 +298,6 @@ public class SWFInputStream extends InputStream { private ByteArrayOutputStream buffer; private List tagPositionsInFrame = new ArrayList<>(); public Map> tagPositionsInFrames = new HashMap<>(); - private List frameTagTypeIds = new ArrayList() { - { - add(PlaceObjectTag.ID); - add(PlaceObject2Tag.ID); - add(PlaceObject3Tag.ID); - add(PlaceObject4Tag.ID); - add(RemoveObjectTag.ID); - add(RemoveObject2Tag.ID); - add(FrameLabelTag.ID); - } - }; public int getVersion() { return version; @@ -876,7 +865,7 @@ public class SWFInputStream extends InputStream { tag.previousTag = previousTag; previousTag = tag; - if (frameTagTypeIds.contains(tag.getId())) { + if (ShowFrameTag.isNestedTagType(tag.getId())) { tagPositionsInFrame.add(pos); } else if (tag.getId() == ShowFrameTag.ID) { tagPositionsInFrames.put(pos, tagPositionsInFrame); diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/MainFrameStatusPanel.java b/trunk/src/com/jpexs/decompiler/flash/gui/MainFrameStatusPanel.java index 2f300288f..812f2cffb 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/MainFrameStatusPanel.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/MainFrameStatusPanel.java @@ -16,7 +16,6 @@ */ package com.jpexs.decompiler.flash.gui; -import static com.jpexs.decompiler.flash.gui.ErrorState.WARNING; import com.jpexs.helpers.CancellableWorker; import java.awt.BorderLayout; import java.awt.Cursor; diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/TagTreeModel.java b/trunk/src/com/jpexs/decompiler/flash/gui/TagTreeModel.java index 7724cc110..0f177e739 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/TagTreeModel.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/TagTreeModel.java @@ -148,7 +148,7 @@ public class TagTreeModel implements TreeModel { binaryData.add(new TagNode(t)); break; default: - if (!actionScriptTags.contains(t) && !isFrameInnerTag(t)) { + if (!actionScriptTags.contains(t) && !ShowFrameTag.isNestedTagType(t.getId())) { others.add(new TagNode(t)); } break; @@ -274,7 +274,7 @@ public class TagTreeModel implements TreeModel { frames.add(new FrameNode(new FrameNodeItem(t.getSwf(), ++frameCnt, parent, true), showFrameTag.innerTags)); break; default: - if (!actionScriptTags.contains(t) && !isFrameInnerTag(t)) { + if (!actionScriptTags.contains(t) && !ShowFrameTag.isNestedTagType(t.getId())) { others.add(new TagNode(t)); } break; @@ -292,17 +292,6 @@ public class TagTreeModel implements TreeModel { return ret; } - private boolean isFrameInnerTag(Tag t) { - return t instanceof PlaceObjectTypeTag - || t instanceof RemoveTag - || t instanceof FrameLabelTag - || t instanceof StartSoundTag - || t instanceof StartSound2Tag - || t instanceof VideoFrameTag - || t instanceof SoundStreamBlockTag - || t instanceof SoundStreamHeadTypeTag; - } - private List searchTag(TreeItem obj, TreeNode parent, List path) { List ret = null; int cnt = getChildCount(parent); diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/ShowFrameTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/ShowFrameTag.java index acdf1d5e0..c83e2a35c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/ShowFrameTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/ShowFrameTag.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.SWF; +import java.util.ArrayList; import java.util.List; /** @@ -28,6 +29,23 @@ public class ShowFrameTag extends Tag { public static final int ID = 1; + private static List nestedTagTypeIds = new ArrayList() { + { + add(PlaceObjectTag.ID); + add(PlaceObject2Tag.ID); + add(PlaceObject3Tag.ID); + add(PlaceObject4Tag.ID); + add(RemoveObjectTag.ID); + add(RemoveObject2Tag.ID); + add(FrameLabelTag.ID); + add(StartSoundTag.ID); + add(StartSound2Tag.ID); + add(VideoFrameTag.ID); + add(SoundStreamBlockTag.ID); + add(SoundStreamHeadTag.ID); + add(SoundStreamHead2Tag.ID); + } + }; public List innerTags; /** @@ -54,4 +72,8 @@ public class ShowFrameTag extends Tag { public byte[] getData(int version) { return super.getData(version); } + + public static boolean isNestedTagType(int tagTypeId) { + return nestedTagTypeIds.contains(tagTypeId); + } }