Fixed Raw edit of fonts - shape table was not visible

This commit is contained in:
Jindra Petřík
2024-03-17 17:26:09 +01:00
parent f51fee7064
commit 290ebda3d2
2 changed files with 12 additions and 6 deletions

View File

@@ -32,6 +32,7 @@ All notable changes to this project will be documented in this file.
- [#2203] GFX - DefineSubImage with TGA bitmapFormat
- [#2207] AS - Index -2 out of bounds for some of the switches
- [#2190] AS1/2 - for..in inside switch before break
- Raw edit of fonts - shape table was not visible
### Changed
- [#2185] MochiCrypt no longer offered for auto decrypt, user needs to choose variant from "Use unpacker" menu

View File

@@ -1186,7 +1186,7 @@ public class GenericTagTreePanel extends GenericTagPanel {
private Object getChild(Object parent, int index, boolean limited) {
if (parent == mtroot) {
return new FieldNode(null, this, mtroot, mtroot, filterFields(this, mtroot.getClass().getSimpleName(), mtroot.getClass(), limited, mtroot.getId()).get(index), -1);
return new FieldNode(null, this, mtroot, mtroot, filterFields(mtroot.getSwf(), this, mtroot.getClass().getSimpleName(), mtroot.getClass(), limited, mtroot.getId()).get(index), -1);
}
FieldNode fnode = (FieldNode) parent;
Field field = fnode.fieldSet.get(FIELD_INDEX);
@@ -1194,7 +1194,7 @@ public class GenericTagTreePanel extends GenericTagPanel {
return new FieldNode(parent, this, mtroot, fnode.obj, fnode.fieldSet, index);
}
parent = fnode.getValue(FIELD_INDEX);
return new FieldNode(parent, this, mtroot, parent, filterFields(this, getNodePathName(fnode), parent.getClass(), limited, mtroot.getId()).get(index), -1);
return new FieldNode(parent, this, mtroot, parent, filterFields(mtroot.getSwf(), this, getNodePathName(fnode), parent.getClass(), limited, mtroot.getId()).get(index), -1);
}
@Override
@@ -1209,7 +1209,7 @@ public class GenericTagTreePanel extends GenericTagPanel {
private int getChildCount(Object parent, boolean limited) {
if (parent == mtroot) {
return filterFields(this, mtroot.getClass().getSimpleName(), mtroot.getClass(), limited, mtroot.getId()).size();
return filterFields(mtroot.getSwf(), this, mtroot.getClass().getSimpleName(), mtroot.getClass(), limited, mtroot.getId()).size();
}
FieldNode fnode = (FieldNode) parent;
@@ -1236,7 +1236,7 @@ public class GenericTagTreePanel extends GenericTagPanel {
}
parent = fnode.getValue(FIELD_INDEX);
return filterFields(this, getNodePathName(fnode), parent.getClass(), limited, mtroot.getId()).size();
return filterFields(mtroot.getSwf(), this, getNodePathName(fnode), parent.getClass(), limited, mtroot.getId()).size();
}
@Override
@@ -1435,7 +1435,7 @@ public class GenericTagTreePanel extends GenericTagPanel {
}
}
private static List<FieldSet> filterFields(MyTreeModel mod, String parentPath, Class<?> cls, boolean limited, int parentTagId) {
private static List<FieldSet> filterFields(SWF swf, MyTreeModel mod, String parentPath, Class<?> cls, boolean limited, int parentTagId) {
List<FieldSet> ret = new ArrayList<>();
List<Field> fields = getAvailableFields(cls);
Map<String, List<Field>> tables = new HashMap<>();
@@ -1465,7 +1465,12 @@ public class GenericTagTreePanel extends GenericTagPanel {
fieldMap.put(sf, found);
}
} else {
fieldMap.put(sf, true);
//Hack - the field is internal in fonts and thus cannot be accessed via getNodeByPath
if ("strippedShapes".equals(sf)) {
fieldMap.put(sf, swf.hasStrippedShapesFromFonts());
} else {
fieldMap.put(sf, true);
}
}
}
if (!ev.eval(fieldMap, parentTagId)) {