diff --git a/trunk/src/com/jpexs/decompiler/flash/SWF.java b/trunk/src/com/jpexs/decompiler/flash/SWF.java index 518dfd371..a66e79c13 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWF.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWF.java @@ -2238,7 +2238,6 @@ public final class SWF implements TreeItem { return image; } - @SuppressWarnings("unchecked") private static List getFrameInfo(int startFrame, int stopFrame, List allTags, List controlTags, int totalFrameCount) { List ret = new ArrayList<>(); if (startFrame > stopFrame) { @@ -2354,7 +2353,7 @@ public final class SWF implements TreeItem { fi.frame = f; ret.add(fi); if (f < stopFrame) { - layers = (Map) Helper.deepCopy(layers); + layers = Helper.deepCopy(layers); } } f++; @@ -2437,7 +2436,7 @@ public final class SWF implements TreeItem { colorTransform = new ColorTransform(); } - ColorTransform clrTrans = (ColorTransform) Helper.deepCopy(colorTransform); + ColorTransform clrTrans = Helper.deepCopy(colorTransform); if (layer.colorTransForm != null && layer.blendMode <= 1) { //Normal blend mode clrTrans = colorTransform.merge(layer.colorTransForm); } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java b/trunk/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java index 8f1eadebe..888e42801 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java @@ -189,7 +189,7 @@ public class MethodBody implements Cloneable, Serializable { } public MethodBody convertMethodBody(String path, boolean isStatic, int scriptIndex, int classIndex, ABC abc, Trait trait, ConstantPool constants, MethodInfo[] method_info, Stack scopeStack, boolean isStaticInitializer, List fullyQualifiedNames, Traits initTraits) throws InterruptedException { - MethodBody b = (MethodBody) Helper.deepCopy(this); + MethodBody b = Helper.deepCopy(this); AVM2Code deobfuscated = b.code; deobfuscated.markMappedOffsets(); if (Configuration.autoDeobfuscate.get()) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/Action.java b/trunk/src/com/jpexs/decompiler/flash/action/Action.java index a3a613d76..dfc749966 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/Action.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/Action.java @@ -886,8 +886,7 @@ public class Action implements GraphSourceItem { long endAddr = action.getAddress() + cnt.getHeaderSize(); String cntName = cnt.getName(); List> outs = new ArrayList<>(); - @SuppressWarnings("unchecked") - HashMap variables2 = (HashMap) Helper.deepCopy(variables); + HashMap variables2 = Helper.deepCopy(variables); if (cnt instanceof ActionDefineFunction || cnt instanceof ActionDefineFunction2) { for (int r = 0; r < 256; r++) { if (variables2.containsKey("__register" + r)) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java index 6e78b4d2e..9c29da8e7 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/FunctionActionItem.java @@ -159,8 +159,7 @@ public class FunctionActionItem extends ActionItem { List ret = new ArrayList<>(); ActionSourceGenerator asGenerator = (ActionSourceGenerator) generator; List paramRegs = new ArrayList<>(); - @SuppressWarnings("unchecked") - SourceGeneratorLocalData localDataCopy = (SourceGeneratorLocalData) Helper.deepCopy(localData); + SourceGeneratorLocalData localDataCopy = Helper.deepCopy(localData); localDataCopy.inFunction++; boolean preloadParentFlag = false; boolean preloadRootFlag = false; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java index b48ad7ef0..a8557bfc8 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/ClassActionItem.java @@ -213,8 +213,7 @@ public class ClassActionItem extends ActionItem implements Block { public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) { List ret = new ArrayList<>(); ActionSourceGenerator asGenerator = (ActionSourceGenerator) generator; - @SuppressWarnings("unchecked") - SourceGeneratorLocalData localData2 = (SourceGeneratorLocalData) Helper.deepCopy(localData); + SourceGeneratorLocalData localData2 = Helper.deepCopy(localData); asGenerator.setInMethod(localData2, true); ret.addAll(asGenerator.generateTraits(localData2, false, className, extendsOp, implementsOp, constructor, functions, vars, staticFunctions, staticVars)); return ret; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionSourceGenerator.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionSourceGenerator.java index fc0832046..b09d16192 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionSourceGenerator.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionSourceGenerator.java @@ -539,7 +539,7 @@ public class ActionSourceGenerator implements SourceGenerator { } private GraphTargetItem removeVarLast(GraphTargetItem item, int cnt) { - item = (GraphTargetItem) Helper.deepCopy(item); + item = Helper.deepCopy(item); for (int i = 0; i < cnt; i++) { if (item instanceof GetMemberActionItem) { @@ -551,7 +551,7 @@ public class ActionSourceGenerator implements SourceGenerator { } private GraphTargetItem addGlobalPrefix(GraphTargetItem item) { - item = (GraphTargetItem) Helper.deepCopy(item); + item = Helper.deepCopy(item); GraphTargetItem first = item; GetMemberActionItem mem = null; do { diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/GenericTagPanel.java b/trunk/src/com/jpexs/decompiler/flash/gui/GenericTagPanel.java index 77835f626..62ea6ee94 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/GenericTagPanel.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/GenericTagPanel.java @@ -128,7 +128,7 @@ public class GenericTagPanel extends JPanel implements ChangeListener { } this.tag = tag; - this.editedTag = (Tag) Helper.deepCopy(tag); + this.editedTag = Helper.deepCopy(tag); generateEditControls(editedTag, !edit); if (edit) { diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 084acfe2f..9e094fbc9 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -2614,7 +2614,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec if (mat == null) { mat = new MATRIX(); } - mat = (MATRIX) Helper.deepCopy(mat); + mat = Helper.deepCopy(mat); if (parent instanceof BoundedTag) { RECT r = ((BoundedTag) parent).getRect(swf.characters, new Stack()); mat.translateX = mat.translateX + width / 2 - r.getWidth() / 2; diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java b/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java index 9300332a1..9a0e93479 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java @@ -344,7 +344,7 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag { ret.numLineBits = 0; List recs = new ArrayList<>(); for (SHAPERECORD r : shp.shapeRecords) { - SHAPERECORD c = (SHAPERECORD) Helper.deepCopy(r); + SHAPERECORD c = Helper.deepCopy(r); if (c instanceof StyleChangeRecord) { StyleChangeRecord scr = (StyleChangeRecord) c; scr.moveDeltaX = resize(scr.moveDeltaX); diff --git a/trunk/src/com/jpexs/decompiler/flash/types/ColorTransform.java b/trunk/src/com/jpexs/decompiler/flash/types/ColorTransform.java index 46eec9471..93f29b908 100644 --- a/trunk/src/com/jpexs/decompiler/flash/types/ColorTransform.java +++ b/trunk/src/com/jpexs/decompiler/flash/types/ColorTransform.java @@ -57,8 +57,7 @@ public class ColorTransform implements Serializable { } public GRADRECORD[] apply(GRADRECORD[] gradRecords) { - @SuppressWarnings("unchecked") - GRADRECORD[] ret = (GRADRECORD[]) Helper.deepCopy(gradRecords); + GRADRECORD[] ret = Helper.deepCopy(gradRecords); for (GRADRECORD r : ret) { r.color = apply(r.color); } diff --git a/trunk/src/com/jpexs/decompiler/flash/types/filters/Filtering.java b/trunk/src/com/jpexs/decompiler/flash/types/filters/Filtering.java index 5f14e8d27..4663e916d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/types/filters/Filtering.java +++ b/trunk/src/com/jpexs/decompiler/flash/types/filters/Filtering.java @@ -167,7 +167,7 @@ public class Filtering { } } - public static void premultiply(int[] p) { + private static void premultiply(int[] p) { int length = p.length; int offset = 0; length += offset; @@ -185,7 +185,7 @@ public class Filtering { } } - public static void unpremultiply(int[] p) { + private static void unpremultiply(int[] p) { int length = p.length; int offset = 0; length += offset; @@ -395,7 +395,7 @@ public class Filtering { return retImg; } - public static int[] getRGB(SerializableImage image, int x, int y, int width, int height) { + private static int[] getRGB(SerializableImage image, int x, int y, int width, int height) { int type = image.getType(); if (type == SerializableImage.TYPE_INT_ARGB || type == SerializableImage.TYPE_INT_RGB) { return (int[]) image.getRaster().getDataElements(x, y, width, height, null); @@ -403,7 +403,7 @@ public class Filtering { return image.getRGB(x, y, width, height, null, 0, width); } - public static void setRGB(SerializableImage image, int x, int y, int width, int height, int[] pixels) { + private static void setRGB(SerializableImage image, int x, int y, int width, int height, int[] pixels) { int type = image.getType(); if (type == SerializableImage.TYPE_INT_ARGB || type == SerializableImage.TYPE_INT_RGB) { image.getRaster().setDataElements(x, y, width, height, pixels); diff --git a/trunk/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java b/trunk/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java index 4d0d82041..e9c0d6ab1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java +++ b/trunk/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java @@ -391,7 +391,7 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali ret.numLineBits = shp.numLineBits; List recs = new ArrayList<>(); for (SHAPERECORD r : shp.shapeRecords) { - SHAPERECORD c = (SHAPERECORD) Helper.deepCopy(r); + SHAPERECORD c = Helper.deepCopy(r); if (c instanceof StyleChangeRecord) { StyleChangeRecord scr = (StyleChangeRecord) c; scr.moveDeltaX = (int) (multiplier * scr.moveDeltaX); diff --git a/trunk/src/com/jpexs/helpers/Helper.java b/trunk/src/com/jpexs/helpers/Helper.java index 6070817f5..f05f41983 100644 --- a/trunk/src/com/jpexs/helpers/Helper.java +++ b/trunk/src/com/jpexs/helpers/Helper.java @@ -362,16 +362,17 @@ public class Helper { return ret; } - public static Object deepCopy(Object o) { + @SuppressWarnings("unchecked") + public static E deepCopy(E o) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { oos.writeObject(o); oos.flush(); } - Object copy; + E copy; try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()))) { - copy = ois.readObject(); + copy = (E) ois.readObject(); } return copy; } catch (IOException | ClassNotFoundException ex) {