From ab4a7bfbdb6a5340d8c4fa60b53bf2e4f63324c8 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Sun, 7 Feb 2016 10:23:29 +0100 Subject: [PATCH] do not apply color transform when it has the default values --- .../src/com/jpexs/decompiler/flash/SWF.java | 17 ++++--------- .../flash/exporters/FontExporter.java | 3 +-- .../flash/exporters/FrameExporter.java | 15 ++++-------- .../morphshape/CanvasMorphShapeExporter.java | 5 +++- .../morphshape/MorphShapeExporterBase.java | 14 +++++++---- .../morphshape/SVGMorphShapeExporter.java | 5 +++- .../flash/exporters/shape/BitmapExporter.java | 5 +++- .../exporters/shape/CanvasShapeExporter.java | 5 +++- .../flash/exporters/shape/PathExporter.java | 2 +- .../exporters/shape/SVGShapeExporter.java | 5 +++- .../exporters/shape/ShapeExporterBase.java | 6 ++--- .../flash/importers/svg/SvgImporter.java | 3 +-- .../flash/tags/DefineEditTextTag.java | 2 +- .../decompiler/flash/tags/base/FontTag.java | 2 +- .../decompiler/flash/tags/base/ImageTag.java | 2 +- .../flash/tags/base/MorphShapeTag.java | 2 +- .../decompiler/flash/tags/base/ShapeTag.java | 2 +- .../flash/tags/base/StaticTextTag.java | 2 +- .../decompiler/flash/tags/base/TextTag.java | 24 ++++++++++++++----- .../decompiler/flash/timeline/Timeline.java | 2 +- .../console/CommandLineArgumentParser.java | 3 +-- .../flash/gui/FolderPreviewPanel.java | 5 ++-- .../decompiler/flash/gui/ImagePanel.java | 3 +-- 23 files changed, 74 insertions(+), 60 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 d5a8df9de..660a89675 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -2690,13 +2690,10 @@ public final class SWF implements SWFContainerItem, Timelined { } CharacterTag character = timeline.swf.getCharacter(layer.characterId); - if (colorTransform == null) { - colorTransform = new ColorTransform(); - } - ColorTransform clrTrans = colorTransform.clone(); + ColorTransform clrTrans = colorTransform; if (layer.colorTransForm != null && layer.blendMode <= 1) { // Normal blend mode - clrTrans = colorTransform.merge(layer.colorTransForm); + clrTrans = clrTrans == null ? layer.colorTransForm : colorTransform.merge(layer.colorTransForm); } if (character instanceof DrawableTag) { @@ -2847,13 +2844,9 @@ public final class SWF implements SWFContainerItem, Timelined { Matrix mat = transformation.concatenate(layerMatrix); Matrix absMat = absoluteTransformation.concatenate(layerMatrix); - if (colorTransform == null) { - colorTransform = new ColorTransform(); - } - - ColorTransform clrTrans = colorTransform.clone(); + ColorTransform clrTrans = colorTransform; if (layer.colorTransForm != null && layer.blendMode <= 1) { // Normal blend mode - clrTrans = colorTransform.merge(layer.colorTransForm); + clrTrans = clrTrans == null ? layer.colorTransForm : colorTransform.merge(layer.colorTransForm); } boolean showPlaceholder = false; @@ -2907,7 +2900,7 @@ public final class SWF implements SWFContainerItem, Timelined { SerializableImage img = null; String cacheKey = null; if (drawable instanceof ShapeTag) { - cacheKey = ((ShapeTag) drawable).getCharacterId() + m.toString() + clrTrans.toString(); + cacheKey = ((ShapeTag) drawable).getCharacterId() + m.toString() + (clrTrans == null ? "" : clrTrans.toString()); img = renderContext.shapeCache.get(cacheKey); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java index fe752b938..811f49581 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java @@ -33,7 +33,6 @@ import com.jpexs.decompiler.flash.exporters.settings.FontExportSettings; import com.jpexs.decompiler.flash.exporters.shape.PathExporter; import com.jpexs.decompiler.flash.tags.Tag; import com.jpexs.decompiler.flash.tags.base.FontTag; -import com.jpexs.decompiler.flash.types.ColorTransform; import com.jpexs.decompiler.flash.types.SHAPE; import com.jpexs.helpers.Helper; import com.jpexs.helpers.Path; @@ -181,7 +180,7 @@ public class FontExporter { for (int i = 0; i < shapes.size(); i++) { SHAPE s = shapes.get(i); final List contours = new ArrayList<>(); - PathExporter seb = new PathExporter(swf, s, new ColorTransform()) { + PathExporter seb = new PathExporter(swf, s, null) { private double transformX(double x) { return Math.ceil((double) (x / divider)); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java index 16acfd50f..826d6645b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java @@ -200,7 +200,7 @@ public class FrameExporter { if (fbackgroundColor != null) { exporter.setBackGroundColor(fbackgroundColor); } - SWF.frameToSvg(tim, frame, 0, null, 0, exporter, new ColorTransform(), 0, settings.zoom); + SWF.frameToSvg(tim, frame, 0, null, 0, exporter, null, 0, settings.zoom); fos.write(Utf8Helper.getBytes(exporter.getSVG())); } ret.add(f); @@ -246,7 +246,7 @@ public class FrameExporter { sb.append("function ").append(currentName).append("(ctx,ctrans,frame,ratio,time){\r\n"); sb.append("\tctx.save();\r\n"); sb.append("\tctx.transform(1,0,0,1,").append(-ftim.displayRect.Xmin * settings.zoom / SWF.unitDivisor).append(",").append(-ftim.displayRect.Ymin * settings.zoom / SWF.unitDivisor).append(");\r\n"); - framesToHtmlCanvas(sb, SWF.unitDivisor / settings.zoom, ftim, fframes, 0, null, 0, ftim.displayRect, new ColorTransform(), fbackgroundColor); + framesToHtmlCanvas(sb, SWF.unitDivisor / settings.zoom, ftim, fframes, 0, null, 0, ftim.displayRect, null, fbackgroundColor); sb.append("\tctx.restore();\r\n"); sb.append("}\r\n\r\n"); @@ -359,7 +359,7 @@ public class FrameExporter { } int fframe = fframes.get(pos++); - BufferedImage result = SWF.frameToImageGet(ftim, fframe, fframe, null, 0, ftim.displayRect, new Matrix(), new Matrix(), new ColorTransform(), fbackgroundColor, false, settings.zoom).getBufferedImage(); + BufferedImage result = SWF.frameToImageGet(ftim, fframe, fframe, null, 0, ftim.displayRect, new Matrix(), new Matrix(), null, fbackgroundColor, false, settings.zoom).getBufferedImage(); if (evl != null) { evl.handleExportedEvent("frame", pos, fframes.size(), tagName); @@ -535,9 +535,6 @@ public class FrameExporter { } CharacterTag character = timeline.swf.getCharacter(layer.characterId); - if (colorTransform == null) { - colorTransform = new ColorTransform(); - } Matrix placeMatrix = new Matrix(layer.matrix); placeMatrix.scaleX /= unitDivisor; @@ -578,11 +575,9 @@ public class FrameExporter { result.append("\t\t\tctx = fctx;\r\n"); } - ColorTransform ctrans = layer.colorTransForm; + ColorTransform ctrans = layer.colorTransForm; // todo: colorTransform from parameter is not used? why? String ctrans_str = "ctrans"; - if (ctrans == null) { - ctrans = new ColorTransform(); - } else { + if (ctrans != null) { ctrans_str = "ctrans.merge(new cxform(" + ctrans.getRedAdd() + "," + ctrans.getGreenAdd() + "," + ctrans.getBlueAdd() + "," + ctrans.getAlphaAdd() + "," + ctrans.getRedMulti() + "," + ctrans.getGreenMulti() + "," + ctrans.getBlueMulti() + "," + ctrans.getAlphaMulti() diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/CanvasMorphShapeExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/CanvasMorphShapeExporter.java index 6923ec75a..00b46969e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/CanvasMorphShapeExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/CanvasMorphShapeExporter.java @@ -226,7 +226,10 @@ public class CanvasMorphShapeExporter extends MorphShapeExporterBase { if (img != null) { fillWidth = img.getWidth(); fillHeight = img.getHeight(); - colorTransform.apply(img); + if (colorTransform != null) { + colorTransform.apply(img); + } + if (matrix != null) { fillMatrix = matrix; fillMatrixEnd = matrixEnd; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/MorphShapeExporterBase.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/MorphShapeExporterBase.java index 7279418e8..e77322f73 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/MorphShapeExporterBase.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/MorphShapeExporterBase.java @@ -305,7 +305,11 @@ public abstract class MorphShapeExporterBase implements IMorphShapeExporter { switch (fillStyle.fillStyleType) { case FILLSTYLE.SOLID: // Solid fill - beginFill(colorTransform.apply(fillStyle.color), colorTransform.apply(fillStyleEnd.color)); + if (colorTransform == null) { + beginFill(fillStyle.color, fillStyleEnd.color); + } else { + beginFill(colorTransform.apply(fillStyle.color), colorTransform.apply(fillStyleEnd.color)); + } break; case FILLSTYLE.LINEAR_GRADIENT: case FILLSTYLE.RADIAL_GRADIENT: @@ -315,8 +319,8 @@ public abstract class MorphShapeExporterBase implements IMorphShapeExporter { matrixEnd = new Matrix(fillStyleEnd.gradientMatrix); beginGradientFill( fillStyle.fillStyleType, - colorTransform.apply(fillStyle.gradient.gradientRecords), - colorTransform.apply(fillStyleEnd.gradient.gradientRecords), + colorTransform == null ? fillStyle.gradient.gradientRecords : colorTransform.apply(fillStyle.gradient.gradientRecords), + colorTransform == null ? fillStyleEnd.gradient.gradientRecords : colorTransform.apply(fillStyleEnd.gradient.gradientRecords), matrix, matrixEnd, fillStyle.gradient.spreadMode, @@ -414,8 +418,8 @@ public abstract class MorphShapeExporterBase implements IMorphShapeExporter { lineStyle( lineStyle.width, lineStyleEnd.width, - colorTransform.apply(lineStyle.color), - colorTransform.apply(lineStyleEnd.color), + colorTransform == null ? lineStyle.color : colorTransform.apply(lineStyle.color), + colorTransform == null ? lineStyleEnd.color : colorTransform.apply(lineStyleEnd.color), pixelHintingFlag, scaleMode, startCapStyle, diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/SVGMorphShapeExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/SVGMorphShapeExporter.java index 5b07ad99e..f832ec746 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/SVGMorphShapeExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/morphshape/SVGMorphShapeExporter.java @@ -107,7 +107,10 @@ public class SVGMorphShapeExporter extends DefaultSVGMorphShapeExporter { if (image != null) { SerializableImage img = image.getImage(); if (img != null) { - colorTransform.apply(img); + if (colorTransform != null) { + colorTransform.apply(img); + } + int width = img.getWidth(); int height = img.getHeight(); lastPatternId++; 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 c2a635374..852cb94bc 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 @@ -306,7 +306,10 @@ public class BitmapExporter extends ShapeExporterBase { if (imageTag != null) { SerializableImage img = imageTag.getImage(); if (img != null) { - img = colorTransform.apply(img); + if (colorTransform != null) { + img = colorTransform.apply(img); + } + fillPaint = new TexturePaint(img.getBufferedImage(), new java.awt.Rectangle(img.getWidth(), img.getHeight())); fillTransform = matrix.toTransform(); } 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 e4c33e3bf..46add5969 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 @@ -261,7 +261,10 @@ public class CanvasShapeExporter extends ShapeExporterBase { if (img != null) { fillWidth = img.getWidth(); fillHeight = img.getHeight(); - colorTransform.apply(img); + if (colorTransform != null) { + colorTransform.apply(img); + } + if (matrix != null) { fillMatrix = matrix; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/PathExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/PathExporter.java index 4ccb3cb68..c5036c778 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/PathExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/PathExporter.java @@ -37,7 +37,7 @@ public class PathExporter extends ShapeExporterBase { private GeneralPath path = new GeneralPath(GeneralPath.WIND_EVEN_ODD); public static List export(SWF swf, SHAPE shape) { - PathExporter exporter = new PathExporter(swf, shape, new ColorTransform()); + PathExporter exporter = new PathExporter(swf, shape, null); exporter.export(); return exporter.paths; } 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 43be18419..ecb5621cb 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 @@ -104,7 +104,10 @@ public class SVGShapeExporter extends DefaultSVGShapeExporter { if (image != null) { SerializableImage img = image.getImage(); if (img != null) { - colorTransform.apply(img); + if (colorTransform != null) { + colorTransform.apply(img); + } + int width = img.getWidth(); int height = img.getHeight(); lastPatternId++; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/ShapeExporterBase.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/ShapeExporterBase.java index 67b750f9d..4678f9c5e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/ShapeExporterBase.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/ShapeExporterBase.java @@ -267,7 +267,7 @@ public abstract class ShapeExporterBase implements IShapeExporter { switch (fillStyle.fillStyleType) { case FILLSTYLE.SOLID: // Solid fill - beginFill(colorTransform.apply(fillStyle.color)); + beginFill(colorTransform == null ? fillStyle.color : colorTransform.apply(fillStyle.color)); break; case FILLSTYLE.LINEAR_GRADIENT: case FILLSTYLE.RADIAL_GRADIENT: @@ -275,7 +275,7 @@ public abstract class ShapeExporterBase implements IShapeExporter { // Gradient fill beginGradientFill( fillStyle.fillStyleType, - colorTransform.apply(fillStyle.gradient.gradientRecords), + colorTransform == null ? fillStyle.gradient.gradientRecords : colorTransform.apply(fillStyle.gradient.gradientRecords), fillStyle.gradientMatrix, fillStyle.gradient.spreadMode, fillStyle.gradient.interpolationMode, @@ -368,7 +368,7 @@ public abstract class ShapeExporterBase implements IShapeExporter { } lineStyle( lineStyle.width, - colorTransform.apply(lineStyle.color), + colorTransform == null ? lineStyle.color : colorTransform.apply(lineStyle.color), pixelHintingFlag, scaleMode, startCapStyle, diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/svg/SvgImporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/svg/SvgImporter.java index 8971a8f64..f51ba5b53 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/svg/SvgImporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/svg/SvgImporter.java @@ -29,7 +29,6 @@ import com.jpexs.decompiler.flash.tags.DefineShape4Tag; import com.jpexs.decompiler.flash.tags.ExportAssetsTag; import com.jpexs.decompiler.flash.tags.Tag; import com.jpexs.decompiler.flash.tags.base.ShapeTag; -import com.jpexs.decompiler.flash.types.ColorTransform; import com.jpexs.decompiler.flash.types.FILLSTYLE; import com.jpexs.decompiler.flash.types.FILLSTYLEARRAY; import com.jpexs.decompiler.flash.types.FOCALGRADIENT; @@ -1041,7 +1040,7 @@ public class SvgImporter { st = (DefineShape4Tag) (new SvgImporter().importSvg(st, svgDataS)); swf.addTag(st); SerializableImage si = new SerializableImage(480, 360, BufferedImage.TYPE_4BYTE_ABGR); - BitmapExporter.export(swf, st.shapes, Color.yellow, si, new Matrix(), new ColorTransform()); + BitmapExporter.export(swf, st.shapes, Color.yellow, si, new Matrix(), null); List li = new ArrayList<>(); li.add(st); ImageIO.write(si.getBufferedImage(), "PNG", new File(name + ".imported.png")); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java index 342bd4d21..ba945e712 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java @@ -927,7 +927,7 @@ public class DefineEditTextTag extends TextTag { @Override public void toHtmlCanvas(StringBuilder result, double unitDivisor) { - render(TextRenderMode.HTML5_CANVAS, null, null, result, new Matrix(), new ColorTransform(), unitDivisor); + render(TextRenderMode.HTML5_CANVAS, null, null, result, new Matrix(), null, unitDivisor); } private void render(TextRenderMode renderMode, SerializableImage image, SVGExporter svgExporter, StringBuilder htmlCanvasBuilder, Matrix transformation, ColorTransform colorTransform, double zoom) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/FontTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/FontTag.java index c4e8e46b0..44675b52d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/FontTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/FontTag.java @@ -341,7 +341,7 @@ public abstract class FontTag extends CharacterTag implements AloneTag, Drawable String cs = "" + c; cs = cs.replace("\\", "\\\\").replace("\"", "\\\""); result.append("\t\tcase \"").append(cs).append("\":\r\n"); - CanvasShapeExporter exporter = new CanvasShapeExporter(null, unitDivisor, swf, shapes.get(i), new ColorTransform(), 0, 0); + CanvasShapeExporter exporter = new CanvasShapeExporter(null, unitDivisor, swf, shapes.get(i), null, 0, 0); exporter.export(); result.append("\t\t").append(exporter.getShapeData().replaceAll("\r\n", "\r\n\t\t")); result.append("\tbreak;\r\n"); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ImageTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ImageTag.java index 2359d4a22..8b9d2fc91 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ImageTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ImageTag.java @@ -295,7 +295,7 @@ public abstract class ImageTag extends CharacterTag implements DrawableTag { @Override public void toHtmlCanvas(StringBuilder result, double unitDivisor) { - CanvasShapeExporter cse = new CanvasShapeExporter(null, unitDivisor, swf, getShape(), new ColorTransform(), 0, 0); + CanvasShapeExporter cse = new CanvasShapeExporter(null, unitDivisor, swf, getShape(), null, 0, 0); cse.export(); result.append(cse.getShapeData()); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/MorphShapeTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/MorphShapeTag.java index 4d822b8b7..800d5194f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/MorphShapeTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/MorphShapeTag.java @@ -320,7 +320,7 @@ public abstract class MorphShapeTag extends CharacterTag implements DrawableTag @Override public void toHtmlCanvas(StringBuilder result, double unitDivisor) { - CanvasMorphShapeExporter cmse = new CanvasMorphShapeExporter(swf, getShapeAtRatio(0), getShapeAtRatio(MAX_RATIO), new ColorTransform(), unitDivisor, 0, 0); + CanvasMorphShapeExporter cmse = new CanvasMorphShapeExporter(swf, getShapeAtRatio(0), getShapeAtRatio(MAX_RATIO), null, unitDivisor, 0, 0); cmse.export(); result.append(cmse.getShapeData()); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ShapeTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ShapeTag.java index 5a74afa49..159e8fd89 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ShapeTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ShapeTag.java @@ -183,7 +183,7 @@ public abstract class ShapeTag extends CharacterTag implements DrawableTag, Lazy @Override public void toHtmlCanvas(StringBuilder result, double unitDivisor) { - CanvasShapeExporter cse = new CanvasShapeExporter(null, unitDivisor, swf, getShapes(), new ColorTransform(), 0, 0); + CanvasShapeExporter cse = new CanvasShapeExporter(null, unitDivisor, swf, getShapes(), null, 0, 0); cse.export(); result.append(cse.getShapeData()); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/StaticTextTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/StaticTextTag.java index 310ea21cd..12e6da07d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/StaticTextTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/StaticTextTag.java @@ -674,6 +674,6 @@ public abstract class StaticTextTag extends TextTag { @Override public void toHtmlCanvas(StringBuilder result, double unitDivisor) { - staticTextToHtmlCanvas(unitDivisor, swf, textRecords, getTextNum(), result, textBounds, textMatrix, new ColorTransform()); + staticTextToHtmlCanvas(unitDivisor, swf, textRecords, getTextNum(), result, textBounds, textMatrix, null); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/TextTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/TextTag.java index 582e8cbae..bbfd715c1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/TextTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/TextTag.java @@ -424,9 +424,13 @@ public abstract class TextTag extends CharacterTag implements DrawableTag { for (TEXTRECORD rec : textRecords) { if (rec.styleFlagsHasColor) { if (numText == 2) { - textColor = colorTransform.apply(rec.textColorA.toInt()); + textColor = rec.textColorA.toInt(); } else { - textColor = colorTransform.apply(rec.textColor.toInt()); + textColor = rec.textColor.toInt(); + } + + if (colorTransform != null) { + textColor = colorTransform.apply(textColor); } } if (rec.styleFlagsHasFont) { @@ -574,9 +578,13 @@ public abstract class TextTag extends CharacterTag implements DrawableTag { for (TEXTRECORD rec : textRecords) { if (rec.styleFlagsHasColor) { if (numText == 2) { - textColor = colorTransform.apply(rec.textColorA.toInt()); + textColor = rec.textColorA.toInt(); } else { - textColor = colorTransform.apply(rec.textColor.toInt()); + textColor = rec.textColor.toInt(); + } + + if (colorTransform != null) { + textColor = colorTransform.apply(textColor); } } if (rec.styleFlagsHasFont) { @@ -619,9 +627,13 @@ public abstract class TextTag extends CharacterTag implements DrawableTag { for (TEXTRECORD rec : textRecords) { if (rec.styleFlagsHasColor) { if (numText == 2) { - textColor = colorTransform.apply(rec.textColorA.toInt()); + textColor = rec.textColorA.toInt(); } else { - textColor = colorTransform.apply(rec.textColor.toInt()); + textColor = rec.textColor.toInt(); + } + + if (colorTransform != null) { + textColor = colorTransform.apply(textColor); } } if (rec.styleFlagsHasFont) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java index ae33ebdb1..48d3fedf0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java @@ -535,7 +535,7 @@ public class Timeline { } public void toHtmlCanvas(StringBuilder result, double unitDivisor, List frames) { - FrameExporter.framesToHtmlCanvas(result, unitDivisor, this, frames, 0, null, 0, displayRect, new ColorTransform(), null); + FrameExporter.framesToHtmlCanvas(result, unitDivisor, this, frames, 0, null, 0, displayRect, null, null); } public void getSounds(int frame, int time, DepthState stateUnderCursor, int mouseButton, List sounds, List soundClasses) { diff --git a/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java b/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java index ba6c3ab44..938dcfd0e 100644 --- a/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java +++ b/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java @@ -114,7 +114,6 @@ import com.jpexs.decompiler.flash.tags.base.SoundTag; import com.jpexs.decompiler.flash.tags.base.TextImportErrorHandler; import com.jpexs.decompiler.flash.tags.base.TextTag; import com.jpexs.decompiler.flash.treeitems.SWFList; -import com.jpexs.decompiler.flash.types.ColorTransform; import com.jpexs.decompiler.flash.types.RECT; import com.jpexs.decompiler.flash.types.sound.SoundFormat; import com.jpexs.decompiler.flash.xfl.FLAVersion; @@ -1931,7 +1930,7 @@ public class CommandLineArgumentParser { //displayRect.Ymax *= zoom; Matrix m = new Matrix(); //m.scale(zoom); - BufferedImage img = SWF.frameToImageGet(ds.getTimeline(), 0, 0, null, 0, displayRect, m, m, new ColorTransform(), Color.white, false, zoom).getBufferedImage(); + BufferedImage img = SWF.frameToImageGet(ds.getTimeline(), 0, 0, null, 0, displayRect, m, m, null, Color.white, false, zoom).getBufferedImage(); PageFormat pf = new PageFormat(); pf.setOrientation(PageFormat.PORTRAIT); Paper p = new Paper(); diff --git a/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java b/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java index d15ec74c8..10d39caf4 100644 --- a/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java @@ -27,7 +27,6 @@ import com.jpexs.decompiler.flash.tags.base.ImageTag; import com.jpexs.decompiler.flash.tags.base.RenderContext; import com.jpexs.decompiler.flash.timeline.Frame; import com.jpexs.decompiler.flash.treeitems.TreeItem; -import com.jpexs.decompiler.flash.types.ColorTransform; import com.jpexs.decompiler.flash.types.RECT; import com.jpexs.helpers.Cache; import com.jpexs.helpers.SerializableImage; @@ -308,7 +307,7 @@ public class FolderPreviewPanel extends JPanel { zoom = ratio; } } - imgSrc = SWF.frameToImageGet(swf.getTimeline(), fn.frame, fn.frame, null, 0, rect, new Matrix(), new Matrix(), new ColorTransform(), null, true, zoom); + imgSrc = SWF.frameToImageGet(swf.getTimeline(), fn.frame, fn.frame, null, 0, rect, new Matrix(), new Matrix(), null, null, true, zoom); width = imgSrc.getWidth(); height = imgSrc.getHeight(); } else if (treeItem instanceof ImageTag) { @@ -356,7 +355,7 @@ public class FolderPreviewPanel extends JPanel { image.fillTransparent(); if (imgSrc == null) { DrawableTag drawable = (DrawableTag) treeItem; - drawable.toImage(0, 0, 0, new RenderContext(), image, false, m, m, new ColorTransform()); + drawable.toImage(0, 0, 0, new RenderContext(), image, false, m, m, null); } else { Graphics2D g = (Graphics2D) image.getGraphics(); g.setTransform(m.toTransform()); diff --git a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java index 577409fbe..03719a461 100644 --- a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java +++ b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java @@ -40,7 +40,6 @@ import com.jpexs.decompiler.flash.timeline.DepthState; import com.jpexs.decompiler.flash.timeline.Frame; import com.jpexs.decompiler.flash.timeline.Timeline; import com.jpexs.decompiler.flash.timeline.Timelined; -import com.jpexs.decompiler.flash.types.ColorTransform; import com.jpexs.decompiler.flash.types.ConstantColorColorTransform; import com.jpexs.decompiler.flash.types.RECT; import com.jpexs.helpers.ByteArrayRange; @@ -778,7 +777,7 @@ public final class ImagePanel extends JPanel implements MediaDisplay { Matrix m = new Matrix(); m.translate(-rect.Xmin * zoom, -rect.Ymin * zoom); m.scale(zoom); - timeline.toImage(frame, time, frame, renderContext, image, false, m, m, new ColorTransform()); + timeline.toImage(frame, time, frame, renderContext, image, false, m, m, null); Graphics2D gg = (Graphics2D) image.getGraphics(); gg.setStroke(new BasicStroke(3));