Added: Basic support for PlaceImagePrivate tag

Changed: CSMTextSettings tag renamed to CSMSettings
This commit is contained in:
Jindra Petřík
2025-08-24 18:55:19 +02:00
parent de2b174165
commit 9983c682ef
18 changed files with 131 additions and 29 deletions
@@ -28,7 +28,7 @@ public enum TreeNodeType {
FONT_INFO,
FONT_NAME,
TEXT,
CSM_TEXT_SETTINGS,
CSM_SETTINGS,
IMAGE,
SHAPE,
MORPH_SHAPE,
@@ -88,5 +88,6 @@ public enum TreeNodeType {
SET_TABINDEX,
SYMBOL_CLASS,
SCENE_AND_FRAME_LABEL_DATA,
DEBUG_ID
DEBUG_ID,
PLACE_IMAGE_PRIVATE
}
@@ -33,7 +33,7 @@ import com.jpexs.decompiler.flash.gui.MainPanel;
import com.jpexs.decompiler.flash.gui.TreeNodeType;
import com.jpexs.decompiler.flash.gui.View;
import com.jpexs.decompiler.flash.gui.tagtree.TagTree;
import com.jpexs.decompiler.flash.tags.CSMTextSettingsTag;
import com.jpexs.decompiler.flash.tags.CSMSettingsTag;
import com.jpexs.decompiler.flash.tags.DebugIDTag;
import com.jpexs.decompiler.flash.tags.DefineBinaryDataTag;
import com.jpexs.decompiler.flash.tags.DefineBitsJPEG2Tag;
@@ -81,6 +81,7 @@ import com.jpexs.decompiler.flash.tags.ImportAssets2Tag;
import com.jpexs.decompiler.flash.tags.ImportAssetsTag;
import com.jpexs.decompiler.flash.tags.JPEGTablesTag;
import com.jpexs.decompiler.flash.tags.MetadataTag;
import com.jpexs.decompiler.flash.tags.PlaceImagePrivateTag;
import com.jpexs.decompiler.flash.tags.PlaceObject2Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject3Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject4Tag;
@@ -255,6 +256,9 @@ public class DumpTree extends JTree {
case PlaceObject4Tag.NAME:
nodeType = TreeNodeType.PLACE_OBJECT;
break;
case PlaceImagePrivateTag.NAME:
nodeType = TreeNodeType.PLACE_IMAGE_PRIVATE;
break;
case RemoveObjectTag.NAME:
case RemoveObject2Tag.NAME:
nodeType = TreeNodeType.REMOVE_OBJECT;
@@ -269,8 +273,8 @@ public class DumpTree extends JTree {
case DefineFontNameTag.NAME:
nodeType = TreeNodeType.FONT_NAME;
break;
case CSMTextSettingsTag.NAME:
nodeType = TreeNodeType.CSM_TEXT_SETTINGS;
case CSMSettingsTag.NAME:
nodeType = TreeNodeType.CSM_SETTINGS;
break;
case DefineButtonCxformTag.NAME:
nodeType = TreeNodeType.BUTTON_CXFORM;
@@ -323,7 +327,7 @@ public class DumpTree extends JTree {
break;
case DebugIDTag.NAME:
nodeType = TreeNodeType.DEBUG_ID;
break;
break;
default:
nodeType = TreeNodeType.OTHER_TAG;
}

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -34,7 +34,7 @@ import com.jpexs.decompiler.flash.gui.abc.ClassesListTreeModel;
import com.jpexs.decompiler.flash.gui.soleditor.Cookie;
import com.jpexs.decompiler.flash.iggy.conversion.IggySwfBundle;
import com.jpexs.decompiler.flash.tags.ABCContainerTag;
import com.jpexs.decompiler.flash.tags.CSMTextSettingsTag;
import com.jpexs.decompiler.flash.tags.CSMSettingsTag;
import com.jpexs.decompiler.flash.tags.DebugIDTag;
import com.jpexs.decompiler.flash.tags.DefineBinaryDataTag;
import com.jpexs.decompiler.flash.tags.DefineButton2Tag;
@@ -67,6 +67,7 @@ import com.jpexs.decompiler.flash.tags.ImportAssets2Tag;
import com.jpexs.decompiler.flash.tags.ImportAssetsTag;
import com.jpexs.decompiler.flash.tags.JPEGTablesTag;
import com.jpexs.decompiler.flash.tags.MetadataTag;
import com.jpexs.decompiler.flash.tags.PlaceImagePrivateTag;
import com.jpexs.decompiler.flash.tags.PlaceObject2Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject3Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject4Tag;
@@ -326,8 +327,8 @@ public abstract class AbstractTagTree extends JTree {
return TreeNodeType.TEXT;
}
if (t instanceof CSMTextSettingsTag) {
return TreeNodeType.CSM_TEXT_SETTINGS;
if (t instanceof CSMSettingsTag) {
return TreeNodeType.CSM_SETTINGS;
}
// DefineBits, DefineBitsJPEG2, DefineBitsJPEG3, DefineBitsJPEG4, DefineBitsLossless, DefineBitsLossless2
@@ -519,6 +520,9 @@ public abstract class AbstractTagTree extends JTree {
if (t instanceof PlaceObjectTypeTag) {
return TreeNodeType.PLACE_OBJECT;
}
if (t instanceof PlaceImagePrivateTag) {
return TreeNodeType.PLACE_IMAGE_PRIVATE;
}
if (t instanceof RemoveTag) {
return TreeNodeType.REMOVE_OBJECT;
}
@@ -869,7 +873,7 @@ public abstract class AbstractTagTree extends JTree {
RemoveObjectTag.ID, RemoveObject2Tag.ID, ShowFrameTag.ID, FrameLabelTag.ID,
StartSoundTag.ID, StartSound2Tag.ID, VideoFrameTag.ID,
SoundStreamBlockTag.ID, SoundStreamHeadTag.ID, SoundStreamHead2Tag.ID,
SetTabIndexTag.ID
SetTabIndexTag.ID, PlaceImagePrivateTag.ID
);
}
@@ -945,8 +949,8 @@ public abstract class AbstractTagTree extends JTree {
return TreeNodeType.TEXT;
}
if (cl == CSMTextSettingsTag.class) {
return TreeNodeType.CSM_TEXT_SETTINGS;
if (cl == CSMSettingsTag.class) {
return TreeNodeType.CSM_SETTINGS;
}
// DefineBits, DefineBitsJPEG2, DefineBitsJPEG3, DefineBitsJPEG4, DefineBitsLossless, DefineBitsLossless2
@@ -1036,6 +1040,9 @@ public abstract class AbstractTagTree extends JTree {
if (PlaceObjectTypeTag.class.isAssignableFrom(cl)) {
return TreeNodeType.PLACE_OBJECT;
}
if (cl == PlaceImagePrivateTag.class) {
return TreeNodeType.PLACE_IMAGE_PRIVATE;
}
if (RemoveTag.class.isAssignableFrom(cl)) {
return TreeNodeType.REMOVE_OBJECT;
}
@@ -1110,7 +1117,7 @@ public abstract class AbstractTagTree extends JTree {
return Arrays.asList(DefineFontNameTag.ID, DefineFontAlignZonesTag.ID, DefineFontInfoTag.ID, DefineFontInfo2Tag.ID);
}
if (TextTag.class.isAssignableFrom(cls)) {
return Arrays.asList(CSMTextSettingsTag.ID);
return Arrays.asList(CSMSettingsTag.ID);
}
if (cls == DefineButtonTag.class) {
return Arrays.asList(DefineButtonCxformTag.ID, DefineButtonSoundTag.ID, DefineScalingGridTag.ID);
@@ -16,7 +16,7 @@
*/
package com.jpexs.decompiler.flash.gui.tagtree;
import com.jpexs.decompiler.flash.tags.CSMTextSettingsTag;
import com.jpexs.decompiler.flash.tags.CSMSettingsTag;
import com.jpexs.decompiler.flash.tags.DebugIDTag;
import com.jpexs.decompiler.flash.tags.DefineBinaryDataTag;
import com.jpexs.decompiler.flash.tags.DefineBitsJPEG2Tag;
@@ -66,6 +66,7 @@ import com.jpexs.decompiler.flash.tags.ImportAssets2Tag;
import com.jpexs.decompiler.flash.tags.ImportAssetsTag;
import com.jpexs.decompiler.flash.tags.JPEGTablesTag;
import com.jpexs.decompiler.flash.tags.MetadataTag;
import com.jpexs.decompiler.flash.tags.PlaceImagePrivateTag;
import com.jpexs.decompiler.flash.tags.PlaceObject2Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject3Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject4Tag;
@@ -108,7 +109,7 @@ public class TagIdClassMap {
private static final Map<Class, Integer> classTagIdMap = new HashMap<>();
static {
addTag(CSMTextSettingsTag.ID, CSMTextSettingsTag.class);
addTag(CSMSettingsTag.ID, CSMSettingsTag.class);
addTag(DebugIDTag.ID, DebugIDTag.class);
addTag(DefineBinaryDataTag.ID, DefineBinaryDataTag.class);
addTag(DefineBitsJPEG2Tag.ID, DefineBitsJPEG2Tag.class);
@@ -162,6 +163,7 @@ public class TagIdClassMap {
addTag(PlaceObject3Tag.ID, PlaceObject3Tag.class);
addTag(PlaceObject4Tag.ID, PlaceObject4Tag.class);
addTag(PlaceObjectTag.ID, PlaceObjectTag.class);
addTag(PlaceImagePrivateTag.ID, PlaceImagePrivateTag.class);
addTag(ProductInfoTag.ID, ProductInfoTag.class);
addTag(ProtectTag.ID, ProtectTag.class);
addTag(RemoveObject2Tag.ID, RemoveObject2Tag.class);
@@ -62,6 +62,7 @@ import com.jpexs.decompiler.flash.tags.ImportAssets2Tag;
import com.jpexs.decompiler.flash.tags.ImportAssetsTag;
import com.jpexs.decompiler.flash.tags.JPEGTablesTag;
import com.jpexs.decompiler.flash.tags.MetadataTag;
import com.jpexs.decompiler.flash.tags.PlaceImagePrivateTag;
import com.jpexs.decompiler.flash.tags.PlaceObject2Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject3Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject4Tag;
@@ -292,7 +293,7 @@ public class TagTree extends AbstractTagTree {
RemoveObjectTag.ID, RemoveObject2Tag.ID, ShowFrameTag.ID, FrameLabelTag.ID,
StartSoundTag.ID, StartSound2Tag.ID, VideoFrameTag.ID,
SoundStreamBlockTag.ID, SoundStreamHeadTag.ID, SoundStreamHead2Tag.ID,
SetTabIndexTag.ID);
SetTabIndexTag.ID, PlaceImagePrivateTag.ID);
break;
case TagTreeModel.FOLDER_OTHERS:
ret = Arrays.asList(
@@ -81,6 +81,7 @@ import com.jpexs.decompiler.flash.tags.ExportAssetsTag;
import com.jpexs.decompiler.flash.tags.FileAttributesTag;
import com.jpexs.decompiler.flash.tags.FrameLabelTag;
import com.jpexs.decompiler.flash.tags.MetadataTag;
import com.jpexs.decompiler.flash.tags.PlaceImagePrivateTag;
import com.jpexs.decompiler.flash.tags.PlaceObject2Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject3Tag;
import com.jpexs.decompiler.flash.tags.PlaceObject4Tag;
@@ -5848,6 +5849,7 @@ public class TagTreeContextMenu extends JPopupMenu {
*/
private boolean isFrameTagToDelete(Tag tag) {
return (tag instanceof PlaceObjectTypeTag)
|| (tag instanceof PlaceImagePrivateTag)
|| (tag instanceof RemoveTag)
|| (tag instanceof FrameLabelTag)
|| (tag instanceof StartSoundTag)