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 bae8d5805..38a38aa45 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -870,6 +870,11 @@ public final class SWF implements SWFContainerItem, Timelined { compress(new ByteArrayInputStream(uncompressedData), os, compression, lzmaProperties); } + public void saveTo(OutputStream os, boolean gfx) throws IOException { + byte[] uncompressedData = saveToByteArray(gfx); + compress(new ByteArrayInputStream(uncompressedData), os, compression, lzmaProperties); + } + public byte[] getHeaderBytes() { return getHeaderBytes(compression, gfx); } @@ -903,6 +908,10 @@ public final class SWF implements SWFContainerItem, Timelined { } private byte[] saveToByteArray() throws IOException { + return saveToByteArray(gfx); + } + + private byte[] saveToByteArray(boolean gfx) throws IOException { fixCharactersOrder(false); byte[] data; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/BitmapExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/BitmapExporter.java index d57e608be..0f242649d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/BitmapExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/BitmapExporter.java @@ -318,8 +318,13 @@ public class BitmapExporter extends ShapeExporterBase { fillPaint = new TexturePaint(img.getBufferedImage(), new java.awt.Rectangle(img.getWidth(), img.getHeight())); fillTransform = matrix.toTransform(); + return; } } + + // fill with red in case any error + fillPaint = Color.RED; + fillTransform = matrix.toTransform(); } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/CanvasShapeExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/CanvasShapeExporter.java index bdbd7d0e1..4319317a0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/CanvasShapeExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/CanvasShapeExporter.java @@ -31,6 +31,7 @@ import com.jpexs.decompiler.flash.types.RGBA; import com.jpexs.decompiler.flash.types.SHAPE; import com.jpexs.helpers.Helper; import com.jpexs.helpers.SerializableImage; +import java.awt.Color; /** * @@ -272,8 +273,11 @@ public class CanvasShapeExporter extends ShapeExporterBase { fillData.append("\tvar fimg = ctrans.applyToImage(imageObj").append(bitmapId).append(");\r\n"); fillData.append("\tvar pat=ctx.createPattern(fimg,\"repeat\");\r\n"); fillData.append("\tctx.fillStyle = pat;\r\n"); + return; } } + + fillData.append("\tctx.fillStyle=").append(color(Color.RED.getRGB())).append(";\r\n"); } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/SVGShapeExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/SVGShapeExporter.java index 222be202f..7d8539dcb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/SVGShapeExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/SVGShapeExporter.java @@ -133,8 +133,11 @@ public class SVGShapeExporter extends DefaultSVGShapeExporter { imageElement.setAttribute("xlink:href", "data:image/" + format + ";base64," + base64ImgData); pattern.appendChild(imageElement); exporter.addToGroup(pattern); + return; } } + + path.setAttribute("fill", "#ff0000"); } @Override diff --git a/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java b/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java index 76848ceaa..b87786298 100644 --- a/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java @@ -1135,7 +1135,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel try { tempFile = File.createTempFile("ffdec_view_", ".swf"); try (OutputStream fos = new BufferedOutputStream(new FileOutputStream(tempFile))) { - swf.saveTo(fos); + swf.saveTo(fos, false); } //Inject Loader if (swf.isAS3() && Configuration.autoOpenLoadedSWFs.get() && !Configuration.internalFlashViewer.get() && !DebuggerTools.hasDebugger(swf)) {