From 6a9d7aa0e653497298fc8b0a793e4e324f4b0fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Tue, 27 Oct 2015 23:47:30 +0100 Subject: [PATCH] #1068 MorphShape with focal gradient fix ImageFormat correct extension Logging exception on FLA export FLA XML formatting fix --- .../flash/tags/enums/ImageFormat.java | 13 ++++++- .../flash/types/MORPHFOCALGRADIENT.java | 35 ++++++++++++++++++- .../decompiler/flash/types/MORPHGRADIENT.java | 6 ++++ .../decompiler/flash/xfl/XFLConverter.java | 18 +++++----- .../jpexs/decompiler/flash/gui/MainPanel.java | 1 + 5 files changed, 63 insertions(+), 10 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/enums/ImageFormat.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/enums/ImageFormat.java index 39c6a7c58..247b4b7b6 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/enums/ImageFormat.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/enums/ImageFormat.java @@ -22,5 +22,16 @@ package com.jpexs.decompiler.flash.tags.enums; */ public enum ImageFormat { - UNKNOWN, JPEG, GIF, PNG, BMP + UNKNOWN(""), JPEG(".jpg"), GIF(".gif"), PNG(".png"), BMP(".bmp"); + + private final String extension; + + private ImageFormat(String extension) { + this.extension = extension; + } + + public String getExtension() { + return extension; + } + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/MORPHFOCALGRADIENT.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/MORPHFOCALGRADIENT.java index 71b2c9bae..cb6965c50 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/MORPHFOCALGRADIENT.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/MORPHFOCALGRADIENT.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.types; import com.jpexs.decompiler.flash.types.annotations.SWFType; @@ -31,9 +32,41 @@ public class MORPHFOCALGRADIENT extends MORPHGRADIENT implements Serializable { @SWFType(BasicType.FIXED8) public float endFocalPoint; + @Override + public GRADIENT getEndGradient() { + FOCALGRADIENT ret = new FOCALGRADIENT(); + ret.spreadMode = spreadMode; + ret.interpolationMode = interPolationMode; + ret.gradientRecords = new GRADRECORD[gradientRecords.length]; + for (int m = 0; m < gradientRecords.length; m++) { + ret.gradientRecords[m] = gradientRecords[m].getEndRecord(); + } + ret.focalPoint = endFocalPoint; + + return ret; + + } + + @Override + public GRADIENT getStartGradient() { + FOCALGRADIENT ret = new FOCALGRADIENT(); + ret.spreadMode = spreadMode; + ret.interpolationMode = interPolationMode; + ret.gradientRecords = new GRADRECORD[gradientRecords.length]; + for (int m = 0; m < gradientRecords.length; m++) { + ret.gradientRecords[m] = gradientRecords[m].getStartRecord(); + } + ret.focalPoint = startFocalPoint; + + return ret; + + } + @Override public GRADIENT getGradientAt(int ratio) { FOCALGRADIENT ret = new FOCALGRADIENT(); + ret.spreadMode = spreadMode; + ret.interpolationMode = interPolationMode; ret.gradientRecords = new GRADRECORD[gradientRecords.length]; for (int m = 0; m < gradientRecords.length; m++) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/MORPHGRADIENT.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/MORPHGRADIENT.java index ed819aa94..3d3475b82 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/MORPHGRADIENT.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/MORPHGRADIENT.java @@ -61,6 +61,8 @@ public class MORPHGRADIENT implements Serializable { public GRADIENT getGradientAt(int ratio) { GRADIENT ret = new GRADIENT(); + ret.spreadMode = spreadMode; + ret.interpolationMode = interPolationMode; ret.gradientRecords = new GRADRECORD[gradientRecords.length]; for (int m = 0; m < gradientRecords.length; m++) { @@ -74,6 +76,8 @@ public class MORPHGRADIENT implements Serializable { public GRADIENT getStartGradient() { GRADIENT ret = new GRADIENT(); + ret.spreadMode = spreadMode; + ret.interpolationMode = interPolationMode; ret.gradientRecords = new GRADRECORD[gradientRecords.length]; for (int m = 0; m < gradientRecords.length; m++) { ret.gradientRecords[m] = gradientRecords[m].getStartRecord(); @@ -83,6 +87,8 @@ public class MORPHGRADIENT implements Serializable { public GRADIENT getEndGradient() { GRADIENT ret = new GRADIENT(); + ret.spreadMode = spreadMode; + ret.interpolationMode = interPolationMode; ret.gradientRecords = new GRADRECORD[gradientRecords.length]; for (int m = 0; m < gradientRecords.length; m++) { ret.gradientRecords[m] = gradientRecords[m].getEndRecord(); 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 6caa83d38..15b4350cb 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 @@ -103,6 +103,7 @@ import com.jpexs.decompiler.flash.types.shaperecords.StyleChangeRecord; import com.jpexs.decompiler.flash.types.sound.MP3FRAME; import com.jpexs.decompiler.flash.types.sound.MP3SOUNDDATA; import com.jpexs.decompiler.flash.types.sound.SoundFormat; +import com.jpexs.helpers.Helper; import com.jpexs.helpers.Path; import com.jpexs.helpers.SerializableImage; import com.jpexs.helpers.utf8.Utf8Helper; @@ -303,7 +304,7 @@ public class XFLConverter { ImageTag it = (ImageTag) bitmapCh; ret.append(" 0) { currentLayer.append(""); currentLayer.append(""); - String currentLayerString = currentLayer.toString(); - if (!currentLayerString.contains("")) { //no empty layers, TODO:handle this better - layers.add(currentLayerString); - } - currentLayer.setLength(0); } - + String currentLayerString = currentLayer.toString(); + if (!currentLayerString.contains("")) { //no empty layers, TODO:handle this better + layers.add(currentLayerString); + } + currentLayer.setLength(0); currentLayer.append(""); //ret += convertShape(characters, null, shape); for (int f = 0; f < scr.fillStyles.fillStyles.length; f++) { @@ -1342,7 +1344,7 @@ public class XFLConverter { SerializableImage image = imageTag.getImage(false); ImageFormat format = imageTag.getImageFormat(); ImageHelper.write(image.getBufferedImage(), format, baos); - String symbolFile = "bitmap" + symbol.getCharacterId() + "." + imageTag.getImageFormat(); + String symbolFile = "bitmap" + symbol.getCharacterId() + imageTag.getImageFormat().getExtension(); files.put(symbolFile, baos.toByteArray()); String mediaLinkStr = "