From 5fab2a3d313d7fb7558c67f197f19272c8d14b5e Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Sat, 19 Mar 2016 21:45:09 +0100 Subject: [PATCH] #1208 SWF preview for some DefineSprite bug (white screen) with both type of viewers: internal viewer fix --- .../decompiler/flash/importers/ImageImporter.java | 1 - .../decompiler/flash/tags/DefineSpriteTag.java | 14 ++++++++------ src/com/jpexs/decompiler/flash/gui/MainPanel.java | 10 +++------- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/ImageImporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/ImageImporter.java index 7adc8bbd3..aa60e1707 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/ImageImporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/ImageImporter.java @@ -117,7 +117,6 @@ public class ImageImporter extends TagImporter { int alpha = (imgData[y * width + x] >> 24) & 0xff; data[y * width + x] = (byte) alpha; } - } newData = data; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java index 32f7c4849..6a5d128dc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java @@ -187,11 +187,13 @@ public class DefineSpriteTag extends CharacterTag implements DrawableTag, Timeli } } if (r != null) { - foundSomething = true; - ret.Xmin = Math.min(r.Xmin, ret.Xmin); - ret.Ymin = Math.min(r.Ymin, ret.Ymin); - ret.Xmax = Math.max(r.Xmax, ret.Xmax); - ret.Ymax = Math.max(r.Ymax, ret.Ymax); + if (r.Xmin < r.Xmax && r.Ymin < r.Ymax) { + foundSomething = true; + ret.Xmin = Math.min(r.Xmin, ret.Xmin); + ret.Ymin = Math.min(r.Ymin, ret.Ymin); + ret.Xmax = Math.max(r.Xmax, ret.Xmax); + ret.Ymax = Math.max(r.Ymax, ret.Ymax); + } } } if (!foundSomething) { @@ -256,8 +258,8 @@ public class DefineSpriteTag extends CharacterTag implements DrawableTag, Timeli r.Ymin = (int) Math.min(Math.min(Math.min(topleft.y, topright.y), bottomleft.y), bottomright.y); r.Xmax = (int) Math.max(Math.max(Math.max(topleft.x, topright.x), bottomleft.x), bottomright.x); r.Ymax = (int) Math.max(Math.max(Math.max(topleft.y, topright.y), bottomleft.y), bottomright.y); - } + ret.Xmin = Math.min(r.Xmin, ret.Xmin); ret.Ymin = Math.min(r.Ymin, ret.Ymin); ret.Xmax = Math.max(r.Xmax, ret.Xmax); diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 122048984..d32057e40 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -3048,6 +3048,8 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } if (item instanceof Timelined) { timelineViewPanel.setTimelined((Timelined) item); + } else if (item instanceof Frame) { + timelineViewPanel.setTimelined(((Frame) item).timeline.timelined); } else { timelineViewPanel.setTimelined(swf); } @@ -3172,13 +3174,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } else if (treeItem instanceof Frame && internalViewer) { Frame fn = (Frame) treeItem; SWF swf = fn.getSwf(); - Timelined timelined = swf; - if (fn.timeline.timelined instanceof DefineSpriteTag) { - DefineSpriteTag parentSprite = (DefineSpriteTag) fn.timeline.timelined; - timelined = parentSprite; - } - - previewPanel.showImagePanel(timelined, swf, fn.frame); + previewPanel.showImagePanel(fn.timeline.timelined, swf, fn.frame); } else if ((treeItem instanceof SoundTag)) { //&& isInternalFlashViewerSelected() && (Arrays.asList("mp3", "wav").contains(((SoundTag) tagObj).getExportFormat())))) { previewPanel.showImagePanel(new SerializableImage(View.loadImage("sound32"))); previewPanel.setImageReplaceButtonVisible(((Tag) treeItem).isReadOnly() && (treeItem instanceof DefineSoundTag), false);