From 0913af752020aa0f88805d4b2f250d4a6aa1c2b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 20 Apr 2025 23:24:31 +0200 Subject: [PATCH] Added: #1826 Extending fill area by half pixel to fix antialias conflation artifacts --- CHANGELOG.md | 3 + .../flash/configuration/Configuration.java | 2 +- .../flash/exporters/shape/BitmapExporter.java | 29 ++----- .../exporters/shape/CanvasShapeExporter.java | 5 -- .../shape/DefaultSVGShapeExporter.java | 6 -- .../flash/exporters/shape/IShapeExporter.java | 5 -- .../flash/exporters/shape/PathExporter.java | 5 -- .../exporters/shape/ShapeExportData.java | 5 -- .../exporters/shape/ShapeExporterBase.java | 77 ++++--------------- .../morphshape/ShapeForMorphExporter.java | 5 -- .../locales/AdvancedSettingsDialog.properties | 4 +- .../AdvancedSettingsDialog_cs.properties | 4 +- .../AdvancedSettingsDialog_pt_BR.properties | 4 +- .../AdvancedSettingsDialog_tr.properties | 4 +- .../AdvancedSettingsDialog_zh.properties | 4 +- 15 files changed, 38 insertions(+), 124 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f5e8493a..502eac31c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file. ### Added - [#2427] Commandline export with use of imported SWFs (importAssets tag) - Auto detect scale factor on Hi-dpi displays +- [#1826] Extending fill area by half pixel to fix antialias conflation artifacts + (Can be turned off in advanced settings) ### Fixed - [#2424] DefineEditText handling of letterSpacing, font size on incorrect values @@ -3717,6 +3719,7 @@ Major version of SWF to XML export changed to 2. [alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8 [alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7 [#2427]: https://www.free-decompiler.com/flash/issues/2427 +[#1826]: https://www.free-decompiler.com/flash/issues/1826 [#2424]: https://www.free-decompiler.com/flash/issues/2424 [#2391]: https://www.free-decompiler.com/flash/issues/2391 [#2436]: https://www.free-decompiler.com/flash/issues/2436 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java index 7c800c36c..57cc0f744 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java @@ -836,7 +836,7 @@ public final class Configuration { @ConfigurationCategory("display") public static ConfigurationItem playFrameSounds = null; - @ConfigurationDefaultBoolean(false) + @ConfigurationDefaultBoolean(true) @ConfigurationCategory("display") public static ConfigurationItem fixAntialiasConflation = null; 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 ade45cda8..890a02453 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 @@ -17,6 +17,7 @@ package com.jpexs.decompiler.flash.exporters.shape; import com.jpexs.decompiler.flash.SWF; +import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.exporters.ImageTagBufferedImage; import com.jpexs.decompiler.flash.exporters.commonshape.ExportRectangle; import com.jpexs.decompiler.flash.exporters.commonshape.Matrix; @@ -76,8 +77,6 @@ public class BitmapExporter extends ShapeExporterBase { private final GeneralPath path; - private Shape aliasedShape; - private Paint fillPaint; private boolean fillRepeat; @@ -108,13 +107,6 @@ public class BitmapExporter extends ShapeExporterBase { private boolean scaleStrokes; - private boolean aliasedFill = false; - - @Override - public void beginAliasedFills() { - aliasedFill = true; - } - private class TransformedStroke implements Stroke { /** @@ -241,8 +233,7 @@ public class BitmapExporter extends ShapeExporterBase { } @Override - public void beginFills() { - aliasedFill = false; + public void beginFills() { } @Override @@ -553,21 +544,13 @@ public class BitmapExporter extends ShapeExporterBase { public void curveTo(double controlX, double controlY, double anchorX, double anchorY) { path.quadTo(controlX, controlY, anchorX, anchorY); } - + /** * Finalizes the path. */ protected void finalizePath() { if (fillPaint != null) { Shape shp = path; - if (aliasedFill) { - aliasedShape = new BasicStroke((float) (SWF.unitDivisor / unzoom / 2), BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND).createStrokedShape(shp); - return; - } else if (aliasedShape != null) { - Area a = new Area(shp); - a.add(new Area(aliasedShape)); - shp = a; - } graphics.setComposite(AlphaComposite.SrcOver); if (fillPaint instanceof MultipleGradientPaint) { AffineTransform oldAf = graphics.getTransform(); @@ -704,7 +687,11 @@ public class BitmapExporter extends ShapeExporterBase { } else { graphics.setPaint(fillPaint); graphics.fill(shp); - } + if (Configuration.fixAntialiasConflation.get()) { + Shape strokeShape = new BasicStroke((float) (1 * SWF.unitDivisor / unzoom), BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND).createStrokedShape(shp); + graphics.fill(strokeShape); + } + } } if (linePaint != null && lineStroke != null) { if (true) { 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 d68934be6..5033b39ab 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 @@ -650,9 +650,4 @@ public class CanvasShapeExporter extends ShapeExporterBase { fillWidth = 0; fillHeight = 0; } - - @Override - public void beginAliasedFills() { - aliasedFill = true; - } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/DefaultSVGShapeExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/DefaultSVGShapeExporter.java index 341cad152..eece521ed 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/DefaultSVGShapeExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/DefaultSVGShapeExporter.java @@ -193,10 +193,4 @@ public abstract class DefaultSVGShapeExporter extends ShapeExporterBase { protected double roundPixels20(double pixels) { return Math.round(pixels * 100) / 100.0; } - - @Override - public void beginAliasedFills() { - aliasedFill = true; - } - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/IShapeExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/IShapeExporter.java index 21f37e4e1..88d7eed33 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/IShapeExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/IShapeExporter.java @@ -38,11 +38,6 @@ public interface IShapeExporter { */ public void endShape(); - /** - * Begins aliased fills. - */ - public void beginAliasedFills(); - /** * Begins fills. */ 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 703dac662..bcb8b5041 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 @@ -182,9 +182,4 @@ public class PathExporter extends ShapeExporterBase { paths.add(path); path = new GeneralPath(GeneralPath.WIND_EVEN_ODD); //For correct intersections display } - - @Override - public void beginAliasedFills() { - aliasedFill = true; - } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/ShapeExportData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/ShapeExportData.java index 876476112..a1f8e2de3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/ShapeExportData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/ShapeExportData.java @@ -42,11 +42,6 @@ public class ShapeExportData { */ public List> fillPaths; - /** - * Aliased fill paths - */ - public List> aliasedFillPaths; - /** * Line paths */ 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 8b2b6e67c..1ba7eff8b 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 @@ -17,7 +17,6 @@ package com.jpexs.decompiler.flash.exporters.shape; import com.jpexs.decompiler.flash.SWF; -import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.exporters.commonshape.FillStyle; import com.jpexs.decompiler.flash.exporters.commonshape.LineStyle; import com.jpexs.decompiler.flash.types.ColorTransform; @@ -58,8 +57,6 @@ public abstract class ShapeExporterBase implements IShapeExporter { private final List> _fillPaths; - private final List> _aliasedFillPaths; - private final List> _linePaths; private final ColorTransform colorTransform; @@ -109,26 +106,22 @@ public abstract class ShapeExporterBase implements IShapeExporter { // Create edge maps List>> fillEdgeMaps = new ArrayList<>(); - List>> aliasedFillEdgeMaps = new ArrayList<>(); List>> lineEdgeMaps = new ArrayList<>(); try { - createEdgeMaps(shapeNum, shape, fillStyles, lineStyles, fillEdgeMaps, aliasedFillEdgeMaps, lineEdgeMaps); + createEdgeMaps(shapeNum, shape, fillStyles, lineStyles, fillEdgeMaps, lineEdgeMaps); } catch (Throwable t) { t.printStackTrace(); } int count = lineEdgeMaps.size(); List> fillPaths = new ArrayList<>(count); - List> aliasedFillPaths = new ArrayList<>(count); List> linePaths = new ArrayList<>(count); for (int i = 0; i < count; i++) { fillPaths.add(createPathFromEdgeMap(fillEdgeMaps.get(i))); - aliasedFillPaths.add(createPathFromEdgeMap(aliasedFillEdgeMaps.get(i))); linePaths.add(createPathFromEdgeMap(lineEdgeMaps.get(i))); } - + cachedData = new ShapeExportData(); cachedData.fillPaths = fillPaths; - cachedData.aliasedFillPaths = aliasedFillPaths; cachedData.linePaths = linePaths; cachedData.fillStyles = fillStyles; cachedData.lineStyles = lineStyles; @@ -138,7 +131,6 @@ public abstract class ShapeExporterBase implements IShapeExporter { _fillStyles = cachedData.fillStyles; _lineStyles = cachedData.lineStyles; _fillPaths = cachedData.fillPaths; - _aliasedFillPaths = cachedData.aliasedFillPaths; _linePaths = cachedData.linePaths; } @@ -158,12 +150,8 @@ public abstract class ShapeExporterBase implements IShapeExporter { beginShape(); // Export fills and strokes for each group separately for (int i = 0; i < _linePaths.size(); i++) { - - if (Configuration.fixAntialiasConflation.get()) { - exportFillPath(_aliasedFillPaths.get(i), true); - } // Export fills first - exportFillPath(_fillPaths.get(i), false); + exportFillPath(_fillPaths.get(i)); // Export strokes last exportLinePath(_linePaths.get(i)); } @@ -172,7 +160,7 @@ public abstract class ShapeExporterBase implements IShapeExporter { } private void createEdgeMaps(int shapeNum, SHAPE shape, List fillStyles, List lineStyles, - List>> fillEdgeMaps, List>> aliasedFillEdgeMaps, List>> lineEdgeMaps) { + List>> fillEdgeMaps, List>> lineEdgeMaps) { int xPos = 0; int yPos = 0; int fillStyleIdxOffset = 0; @@ -183,14 +171,13 @@ public abstract class ShapeExporterBase implements IShapeExporter { List subPath = new ArrayList<>(); Map> currentFillEdgeMap = new HashMap<>(); Map> currentLineEdgeMap = new HashMap<>(); - Map> currentAliasedFillEdgeMap = new HashMap<>(); List records = shape.shapeRecords; for (int i = 0; i < records.size(); i++) { SHAPERECORD shapeRecord = records.get(i); if (shapeRecord instanceof StyleChangeRecord) { StyleChangeRecord styleChangeRecord = (StyleChangeRecord) shapeRecord; if (styleChangeRecord.stateLineStyle || styleChangeRecord.stateFillStyle0 || styleChangeRecord.stateFillStyle1) { - processSubPath(subPath, currentLineStyleIdx, currentFillStyleIdx0, currentFillStyleIdx1, currentFillEdgeMap, currentLineEdgeMap, currentAliasedFillEdgeMap); + processSubPath(subPath, currentLineStyleIdx, currentFillStyleIdx0, currentFillStyleIdx1, currentFillEdgeMap, currentLineEdgeMap); subPath = new ArrayList<>(); } if (styleChangeRecord.stateNewStyles) { @@ -209,13 +196,10 @@ public abstract class ShapeExporterBase implements IShapeExporter { && styleChangeRecord.stateFillStyle0 && styleChangeRecord.fillStyle0 == 0 && styleChangeRecord.stateFillStyle1 && styleChangeRecord.fillStyle1 == 0) { cleanEdgeMap(currentFillEdgeMap); - cleanEdgeMap(currentAliasedFillEdgeMap); cleanEdgeMap(currentLineEdgeMap); fillEdgeMaps.add(currentFillEdgeMap); - aliasedFillEdgeMaps.add(currentAliasedFillEdgeMap); lineEdgeMaps.add(currentLineEdgeMap); currentFillEdgeMap = new HashMap<>(); - currentAliasedFillEdgeMap = new HashMap<>(); currentLineEdgeMap = new HashMap<>(); currentLineStyleIdx = 0; currentFillStyleIdx0 = 0; @@ -268,62 +252,37 @@ public abstract class ShapeExporterBase implements IShapeExporter { subPath.add(new CurvedEdge(xPosFrom, yPosFrom, xPosControl, yPosControl, xPos, yPos, currentLineStyleIdx, currentFillStyleIdx1)); } else if (shapeRecord instanceof EndShapeRecord) { // We're done. Process the last subpath, if any - processSubPath(subPath, currentLineStyleIdx, currentFillStyleIdx0, currentFillStyleIdx1, currentFillEdgeMap, currentLineEdgeMap, currentAliasedFillEdgeMap); + processSubPath(subPath, currentLineStyleIdx, currentFillStyleIdx0, currentFillStyleIdx1, currentFillEdgeMap, currentLineEdgeMap); cleanEdgeMap(currentFillEdgeMap); - cleanEdgeMap(currentAliasedFillEdgeMap); cleanEdgeMap(currentLineEdgeMap); fillEdgeMaps.add(currentFillEdgeMap); - aliasedFillEdgeMaps.add(currentAliasedFillEdgeMap); lineEdgeMaps.add(currentLineEdgeMap); } } } private void processSubPath(List subPath, int lineStyleIdx, int fillStyleIdx0, int fillStyleIdx1, - Map> currentFillEdgeMap, Map> currentLineEdgeMap, Map> currentAliasedFillEdgeMap) { + Map> currentFillEdgeMap, Map> currentLineEdgeMap) { List path; - List apath = null; - boolean bothFillStyles = fillStyleIdx0 != 0 && fillStyleIdx1 != 0; if (fillStyleIdx0 != 0) { - path = currentFillEdgeMap.get(fillStyleIdx0); - if (bothFillStyles) { - apath = currentAliasedFillEdgeMap.get(fillStyleIdx0); - } + path = currentFillEdgeMap.get(fillStyleIdx0); if (path == null) { path = new ArrayList<>(); currentFillEdgeMap.put(fillStyleIdx0, path); } - if (bothFillStyles && apath == null) { - apath = new ArrayList<>(); - currentAliasedFillEdgeMap.put(fillStyleIdx0, apath); - } for (int j = subPath.size() - 1; j >= 0; j--) { IEdge rev = subPath.get(j).reverseWithNewFillStyle(fillStyleIdx0); - //System.err.println("appending reversed " + rev); path.add(rev); - if (bothFillStyles) { - apath.add(rev); - } } } if (fillStyleIdx1 != 0) { - /*if (bothFillStyles) { - apath = currentAliasedFillEdgeMap.get(fillStyleIdx1); - }*/ path = currentFillEdgeMap.get(fillStyleIdx1); if (path == null) { path = new ArrayList<>(); currentFillEdgeMap.put(fillStyleIdx1, path); } - /*if (bothFillStyles && apath == null) { - apath = new ArrayList<>(); - currentAliasedFillEdgeMap.put(fillStyleIdx1, apath); - }*/ - appendEdges(path, subPath); - /*if (bothFillStyles) { - appendEdges(apath, subPath); - }*/ + appendEdges(path, subPath); } if (lineStyleIdx != 0) { path = currentLineEdgeMap.get(lineStyleIdx); @@ -335,16 +294,12 @@ public abstract class ShapeExporterBase implements IShapeExporter { } } - private void exportFillPath(List path, boolean aliased) { + private void exportFillPath(List path) { int posX = Integer.MAX_VALUE; int posY = Integer.MAX_VALUE; int fillStyleIdx = Integer.MAX_VALUE; - if (path.size() > 0) { - if (aliased) { - beginAliasedFills(); - } else { - beginFills(); - } + if (!path.isEmpty()) { + beginFills(); for (int i = 0; i < path.size(); i++) { IEdge e = path.get(i); if (fillStyleIdx != e.getFillStyleIdx()) { @@ -419,7 +374,7 @@ public abstract class ShapeExporterBase implements IShapeExporter { int lastMoveToX = posX; int lastMoveToY = posY; int lineStyleIdx = Integer.MAX_VALUE; - if (path.size() > 0) { + if (!path.isEmpty()) { boolean autoClose = true; beginLines(); for (int i = 0; i < path.size(); i++) { @@ -544,13 +499,13 @@ public abstract class ShapeExporterBase implements IShapeExporter { private void cleanEdgeMap(Map> edgeMap) { for (Integer styleIdx : edgeMap.keySet()) { List subPath = edgeMap.get(styleIdx); - if (subPath != null && subPath.size() > 0) { + if (subPath != null && !subPath.isEmpty()) { int idx; IEdge prevEdge = null; List tmpPath = new ArrayList<>(); Map> coordMap = createCoordMap(subPath); Map> reverseCoordMap = createReverseCoordMap(subPath); - while (subPath.size() > 0) { + while (!subPath.isEmpty()) { idx = 0; while (idx < subPath.size()) { if (prevEdge != null) { @@ -661,7 +616,7 @@ public abstract class ShapeExporterBase implements IShapeExporter { private IEdge findNextEdgeInCoordMap(Map> coordMap, IEdge edge) { long toLong = (((long) edge.getToX()) << 32) | (edge.getToY() & 0xffffffffL); List coordMapArray = coordMap.get(toLong); - if (coordMapArray != null && coordMapArray.size() > 0) { + if (coordMapArray != null && !coordMapArray.isEmpty()) { return coordMapArray.get(0); } return null; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/morphshape/ShapeForMorphExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/morphshape/ShapeForMorphExporter.java index 416b7c1ab..dff14718e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/morphshape/ShapeForMorphExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/morphshape/ShapeForMorphExporter.java @@ -225,11 +225,6 @@ public class ShapeForMorphExporter extends ShapeExporterBase { } } - @Override - public void beginAliasedFills() { - - } - @Override public void beginFills() { diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties index 1b7af2b17..dde4f549f 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties @@ -430,8 +430,8 @@ config.name.warning.video.vlc = Warn on missing VLC config.description.warning.video.vlc = Show warning about VLC media player required when opening SWFs with DefineVideoStream tags when VLC is not available. config.name.playFrameSounds = Play frame sounds config.description.playFrameSounds = Play sounds on displaying frames. -config.name.fixAntialiasConflation = Try to fix antialias conflation (EXPERIMENTAL, SLOW) -config.description.fixAntialiasConflation = Tries fixing conflation artifacts between adjacent shapes caused by antialiasing. This slows down a rendering. Experimental feature. +config.name.fixAntialiasConflation = Extend fill area to fix antialias conflation +config.description.fixAntialiasConflation = Fixes conflation artifacts between adjacent shapes caused by antialiasing by extending contour of shape by half pixel. config.name.autoPlaySounds = Autoplay sounds config.description.autoPlaySounds = Automatically play sounds (DefineSound) on treenode selection. config.name.deobfuscateAs12RemoveInvalidNamesAssignments=AS1/2 deobfuscation: Remove variable declarations with obfuscated names diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties index 0a3835e56..76c265095 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties @@ -428,8 +428,8 @@ config.name.warning.video.vlc = Varovat p\u0159i chyb\u011bj\u00edc\u00edm VLC config.description.warning.video.vlc = Zobrazovat varov\u00e1n\u00ed o vy\u017eadovan\u00e9m VLC media playeru p\u0159i otev\u00edr\u00e1n\u00ed SWF s DefineVideoStream tagy kdy\u017e je VLC nedostupn\u00fd. config.name.playFrameSounds = P\u0159ehr\u00e1vat sn\u00edmkov\u00e9 zvuky config.description.playFrameSounds = P\u0159ehr\u00e1vat zvuky p\u0159i zobrazov\u00e1n\u00ed sn\u00edmk\u016f. -config.name.fixAntialiasConflation = Pokusit se opravit antialiasingovou konflaci (EXPERIMENT\u00c1LN\u00cd, POMAL\u00c9) -config.description.fixAntialiasConflation = Pokus\u00ed se opravit konfla\u010dn\u00ed artefakty mezi p\u0159il\u00e9haj\u00edc\u00edmi tvary zp\u016fsobenou antialiasingem. Toto zpomaluje renderov\u00e1n\u00ed. Experiment\u00e1ln\u00ed. +config.name.fixAntialiasConflation = Roz\u0161\u00ed\u0159it plochu v\u00fdpln\u011b pro opravu konflace antialiasingu +config.description.fixAntialiasConflation = Oprav\u00ed konfla\u010dn\u00ed artefakty mezi soused\u00edc\u00edmi tvary zp\u016fsoben\u00e9 antialiasingem roz\u0161\u00ed\u0159en\u00edm obrysu tvaru o p\u016fl pixelu. config.name.autoPlaySounds = Automaticky p\u0159ehr\u00e1vat zvuky config.description.autoPlaySounds = Automaticky p\u0159ehr\u00e1vat zvuky (DefineSound) p\u0159i v\u00fdb\u011bru polo\u017eky ve stromu. config.name.deobfuscateAs12RemoveInvalidNamesAssignments=AS1/2 deobfuskace: Odstranit deklarace prom\u011bnn\u00fdch s obfuskovan\u00fdmi n\u00e1zvy diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_pt_BR.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_pt_BR.properties index eb1f2a703..59ba40f8d 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_pt_BR.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_pt_BR.properties @@ -430,8 +430,8 @@ config.name.warning.video.vlc = Avisar sobre a aus\u00eancia do VLC config.description.warning.video.vlc = Exibe um aviso sobre a necessidade do VLC Media Player ao abrir SWFs com tags DefineVideoStream quando o VLC n\u00e3o est\u00e1 dispon\u00edvel. config.name.playFrameSounds = Reproduzir sons de quadro config.description.playFrameSounds = Reproduz sons ao exibir quadros. -config.name.fixAntialiasConflation = Tentar corrigir a conflu\u00eancia de antialias (EXPERIMENTAL, LENTO) -config.description.fixAntialiasConflation = Tenta corrigir artefatos de conflu\u00eancia entre formas adjacentes causados pela suaviza\u00e7\u00e3o. Isso diminui a velocidade de renderiza\u00e7\u00e3o. Recurso experimental. +config.name.fixAntialiasConflation = +config.description.fixAntialiasConflation = config.name.autoPlaySounds = Reprodu\u00e7\u00e3o autom\u00e1tica de sons config.description.autoPlaySounds = Reproduz automaticamente os sons (DefineSound) na sele\u00e7\u00e3o do n\u00f3 da \u00e1rvore. config.name.deobfuscateAs12RemoveInvalidNamesAssignments=Desofusca\u00e7\u00e3o de AS1/2: Remover declara\u00e7\u00f5es de vari\u00e1veis com nomes obfuscados diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_tr.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_tr.properties index 2b07b4ba1..44a513d0d 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_tr.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_tr.properties @@ -430,8 +430,8 @@ config.name.warning.video.vlc = Eksik VLC konusunda uyar config.description.warning.video.vlc = VLC mevcut olmad\u0131\u011f\u0131nda DefineVideoStream etiketli SWF'leri a\u00e7arken VLC medya oynat\u0131c\u0131s\u0131n\u0131n gerekli oldu\u011funa dair uyar\u0131 g\u00f6sterin. config.name.playFrameSounds = \u00c7er\u00e7eve seslerini oynat config.description.playFrameSounds = G\u00f6r\u00fcnt\u00fclenen \u00e7er\u00e7evelerde sesler oynat\u0131n. -config.name.fixAntialiasConflation = Kenar yumu\u015fatma birle\u015fimini d\u00fczeltmeye \u00e7al\u0131\u015f\u0131n (DENEYSEL, YAVA\u015e) -config.description.fixAntialiasConflation = Kenar yumu\u015fatman\u0131n neden oldu\u011fu biti\u015fik \u015fekiller aras\u0131ndaki birle\u015ftirme eserlerini d\u00fczeltmeye \u00e7al\u0131\u015f\u0131r. Bu, bir i\u015flemeyi yava\u015flat\u0131r. Deneysel \u00f6zellik. +config.name.fixAntialiasConflation = +config.description.fixAntialiasConflation = config.name.autoPlaySounds = Sesleri otomatik oynat config.description.autoPlaySounds = Treenode se\u00e7iminde sesleri otomatik olarak oynat\u0131n (DefineSound). config.name.deobfuscateAs12RemoveInvalidNamesAssignments=AS1/2 karartma: Karart\u0131lm\u0131\u015f adlara sahip de\u011fi\u015fken bildirimlerini kald\u0131r diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties index 5491f40c7..06de25f44 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties @@ -430,8 +430,8 @@ config.name.warning.video.vlc = VLC\u64ad\u653e\u5668\u63d0\u793a config.description.warning.video.vlc = \u6253\u5f00\u6709DefineVideostream\u6807\u7b7e\u7684SWF\u65f6\uff0c\u663e\u793aVLC media player\u76f8\u5173\u63d0\u793a config.name.playFrameSounds = \u64ad\u653e\u5e27\u58f0\u97f3 config.description.playFrameSounds = \u663e\u793a\u5e27\u65f6\u64ad\u653e\u58f0\u97f3 -config.name.fixAntialiasConflation = \u5c1d\u8bd5\u4fee\u590d\u6297\u952f\u9f7f\u878d\u5408(\u5b9e\u9a8c\u6027,\u6162) -config.description.fixAntialiasConflation = \u5c1d\u8bd5\u4fee\u590d\u6297\u952f\u9f7f\u5bfc\u81f4\u7684\u76f8\u90bb\u5f62\u72b6\u4e4b\u95f4\u7684\u6297\u952f\u9f7f\u878d\u5408.\u8fd9\u5c06\u51cf\u6162\u6e32\u67d3.\u5b9e\u9a8c\u6027\u529f\u80fd. +config.name.fixAntialiasConflation = +config.description.fixAntialiasConflation = config.name.autoPlaySounds = \u81ea\u52a8\u64ad\u653e\u58f0\u97f3 config.description.autoPlaySounds = \u9009\u4e2d\u8282\u70b9\u65f6\u81ea\u52a8\u64ad\u653eDefineSound config.name.deobfuscateAs12RemoveInvalidNamesAssignments = AS1/2\u53cd\u6df7\u6dc6: \u5220\u9664\u5e26\u6df7\u6dc6\u540d\u79f0\u7684\u53d8\u91cf\u58f0\u660e