From 57834e8cf72417dae10b14572ccd7fe10e24e970 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 1 Jan 2024 22:52:24 +0100 Subject: [PATCH] Added Allow zooming fonts --- CHANGELOG.md | 1 + .../com/jpexs/decompiler/flash/tags/base/FontTag.java | 2 +- .../decompiler/flash/types/shaperecords/SHAPERECORD.java | 9 +++++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ecc817e4..6dc78678e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All notable changes to this project will be documented in this file. ### Added - StartSound and StartSound2 show characterId/class in the tag tree - Folder preview for sounds +- Allow zooming fonts ### Fixed - Debugger - getting children of top level variables 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 c932248af..94dd2dbbc 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 @@ -440,7 +440,7 @@ public abstract class FontTag extends DrawableTag implements AloneTag { @Override public synchronized void toImage(int frame, int time, int ratio, RenderContext renderContext, SerializableImage image, SerializableImage fullImage, boolean isClip, Matrix transformation, Matrix strokeTransformation, Matrix absoluteTransformation, Matrix fullTransformation, ColorTransform colorTransform, double unzoom, boolean sameImage, ExportRectangle viewRect, boolean scaleStrokes, int drawMode, int blendMode, boolean canUseSmoothing) { - SHAPERECORD.shapeListToImage(ShapeTag.WIND_EVEN_ODD, 1, swf, getGlyphShapeTable(), image, frame, Color.black, colorTransform); + SHAPERECORD.shapeListToImage(ShapeTag.WIND_EVEN_ODD, 1, swf, getGlyphShapeTable(), image, frame, Color.black, colorTransform, unzoom, transformation); } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java index e6cce3f58..0480a7bd6 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.SWFOutputStream; import com.jpexs.decompiler.flash.exporters.commonshape.Matrix; import com.jpexs.decompiler.flash.exporters.shape.BitmapExporter; import com.jpexs.decompiler.flash.helpers.FontHelper; +import com.jpexs.decompiler.flash.tags.base.FontTag; import com.jpexs.decompiler.flash.tags.base.NeedsCharacters; import com.jpexs.decompiler.flash.tags.base.ShapeTag; import com.jpexs.decompiler.flash.tags.base.TextTag; @@ -199,13 +200,13 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali return ret; } - public static void shapeListToImage(int windingRule, int shapeNum, SWF swf, List shapes, SerializableImage image, int frame, Color color, ColorTransform colorTransform) { + public static void shapeListToImage(int windingRule, int shapeNum, SWF swf, List shapes, SerializableImage image, int frame, Color color, ColorTransform colorTransform, double unzoom, Matrix transformation2) { if (shapes.isEmpty()) { return; } - int prevWidth = image.getWidth(); - int prevHeight = image.getHeight(); + int prevWidth = FontTag.PREVIEWSIZE; + int prevHeight = FontTag.PREVIEWSIZE; int maxw = 0; int maxh = 0; @@ -281,7 +282,7 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali double px = x * w2 + w2 / 2 - w / 2 - minXMin * ratio; double py = y * h2 - minYMin * ratio; - Matrix transformation = Matrix.getTranslateInstance(px, py); + Matrix transformation = transformation2.concatenate(Matrix.getTranslateInstance(px, py)); transformation.scale(ratio); BitmapExporter.export(windingRule, shapeNum, swf, shape, color, image, 1 /*FIXME??*/, transformation, transformation, colorTransform, true, true);