From fe469f0d824bf2969423d495caf4c332b35775fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 28 Sep 2025 12:08:43 +0200 Subject: [PATCH] Added: #2534] Create new GFX tags of type DefineExternalGradient, DefineGradientMap, ExporterInfo, FontTextureInfo, DefineExternalStreamSound --- CHANGELOG.md | 3 +++ .../flash/tags/gfx/FontTextureInfo.java | 12 ++++----- .../flash/gui/tagtree/AbstractTagTree.java | 3 ++- .../decompiler/flash/gui/tagtree/TagTree.java | 27 +++++++++++++++---- 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb91181de..bb785bbe0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,6 +49,8 @@ All notable changes to this project will be documented in this file. - fixes zero/1unit spaces font glyph advance - fixes zero last glyph advance in texts - [PR222] Replace fonts from commandline +- [#2534] Create new GFX tags of type DefineExternalGradient, DefineGradientMap, + ExporterInfo, FontTextureInfo, DefineExternalStreamSound ### Fixed - [#2474] Gotos incorrectly decompiled @@ -4015,6 +4017,7 @@ Major version of SWF to XML export changed to 2. [#2497]: https://www.free-decompiler.com/flash/issues/2497 [#2529]: https://www.free-decompiler.com/flash/issues/2529 [#2471]: https://www.free-decompiler.com/flash/issues/2471 +[#2534]: https://www.free-decompiler.com/flash/issues/2534 [#2474]: https://www.free-decompiler.com/flash/issues/2474 [#2480]: https://www.free-decompiler.com/flash/issues/2480 [#2338]: https://www.free-decompiler.com/flash/issues/2338 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/gfx/FontTextureInfo.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/gfx/FontTextureInfo.java index 28f92b655..bc02e34e0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/gfx/FontTextureInfo.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/gfx/FontTextureInfo.java @@ -49,7 +49,7 @@ public class FontTextureInfo extends Tag { public int textureFormat; - public String fileName; + public String fileName = ""; public int textureWidth; @@ -59,9 +59,9 @@ public class FontTextureInfo extends Tag { public int nominalGlyphSz; - public TEXGLYPH[] texGlyphs; + public TEXGLYPH[] texGlyphs = new TEXGLYPH[0]; - public FONTINFO[] fonts; + public FONTINFO[] fonts = new FONTINFO[0]; /** * Gets data bytes @@ -142,15 +142,15 @@ public class FontTextureInfo extends Tag { @Override public Map getNameProperties() { Map ret = super.getNameProperties(); - ret.put("chid", "" + getUniqueId()); + ret.put("tid", "" + getUniqueId()); return ret; } @Override public String getUniqueId() { - if (idType == IdType.IDTYPE_NONE) { + /*if (idType == IdType.IDTYPE_NONE) { return super.getUniqueId(); - } + }*/ return "ft" + textureID; } diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTree.java b/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTree.java index 35c975bee..d735d5e20 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTree.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTree.java @@ -921,7 +921,8 @@ public abstract class AbstractTagTree extends JTree { SetTabIndexTag.ID, PlaceImagePrivateTag.ID, GenCommandTag.ID, FreeCharacterTag.ID, - SyncFrameTag.ID + SyncFrameTag.ID, + DefineExternalStreamSound.ID ); } diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java index 5dd14dd73..d1df29356 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java @@ -90,9 +90,15 @@ import com.jpexs.decompiler.flash.tags.SyncFrameTag; import com.jpexs.decompiler.flash.tags.Tag; import com.jpexs.decompiler.flash.tags.VideoFrameTag; import com.jpexs.decompiler.flash.tags.gfx.DefineCompactedFont; +import com.jpexs.decompiler.flash.tags.gfx.DefineExternalGradient; import com.jpexs.decompiler.flash.tags.gfx.DefineExternalImage; import com.jpexs.decompiler.flash.tags.gfx.DefineExternalImage2; +import com.jpexs.decompiler.flash.tags.gfx.DefineExternalSound; +import com.jpexs.decompiler.flash.tags.gfx.DefineExternalStreamSound; +import com.jpexs.decompiler.flash.tags.gfx.DefineGradientMap; import com.jpexs.decompiler.flash.tags.gfx.DefineSubImage; +import com.jpexs.decompiler.flash.tags.gfx.ExporterInfo; +import com.jpexs.decompiler.flash.tags.gfx.FontTextureInfo; import com.jpexs.decompiler.flash.treeitems.AS3ClassTreeItem; import com.jpexs.decompiler.flash.treeitems.Openable; import com.jpexs.decompiler.flash.treeitems.OpenableList; @@ -266,12 +272,11 @@ public class TagTree extends AbstractTagTree { ret = Arrays.asList(DefineTextTag.ID, DefineText2Tag.ID, DefineEditTextTag.ID); break; case TagTreeModel.FOLDER_IMAGES: + ret = Arrays.asList(DefineBitsTag.ID, DefineBitsJPEG2Tag.ID, DefineBitsJPEG3Tag.ID, DefineBitsJPEG4Tag.ID, DefineBitsLosslessTag.ID, DefineBitsLossless2Tag.ID); + if (gfx) { - ret = Arrays.asList(DefineBitsTag.ID, DefineBitsJPEG2Tag.ID, DefineBitsJPEG3Tag.ID, DefineBitsJPEG4Tag.ID, DefineBitsLosslessTag.ID, DefineBitsLossless2Tag.ID, - DefineExternalImage.ID, DefineExternalImage2.ID, DefineSubImage.ID - ); - } else { - ret = Arrays.asList(DefineBitsTag.ID, DefineBitsJPEG2Tag.ID, DefineBitsJPEG3Tag.ID, DefineBitsJPEG4Tag.ID, DefineBitsLosslessTag.ID, DefineBitsLossless2Tag.ID); + ret = new ArrayList<>(ret); + ret.addAll(Arrays.asList(DefineExternalImage.ID, DefineExternalImage2.ID, DefineSubImage.ID)); } break; case TagTreeModel.FOLDER_MOVIES: @@ -279,6 +284,10 @@ public class TagTree extends AbstractTagTree { break; case TagTreeModel.FOLDER_SOUNDS: ret = Arrays.asList(DefineSoundTag.ID); + if (gfx) { + ret = new ArrayList<>(ret); + ret.add(DefineExternalSound.ID); + } break; case TagTreeModel.FOLDER_BUTTONS: ret = Arrays.asList(DefineButtonTag.ID, DefineButton2Tag.ID); @@ -304,6 +313,10 @@ public class TagTree extends AbstractTagTree { FreeCharacterTag.ID, SyncFrameTag.ID ); + if (gfx) { + ret = new ArrayList<>(ret); + ret.add(DefineExternalStreamSound.ID); + } break; case TagTreeModel.FOLDER_OTHERS: ret = Arrays.asList( @@ -321,6 +334,10 @@ public class TagTree extends AbstractTagTree { SymbolClassTag.ID, CharacterSetTag.ID ); + if (gfx) { + ret = new ArrayList<>(ret); + ret.addAll(Arrays.asList(DefineExternalGradient.ID, DefineGradientMap.ID, ExporterInfo.ID, FontTextureInfo.ID)); + } break; }