diff --git a/trunk/src/com/jpexs/asdec/SWFInputStream.java b/trunk/src/com/jpexs/asdec/SWFInputStream.java index d5712bcf7..f65008d42 100644 --- a/trunk/src/com/jpexs/asdec/SWFInputStream.java +++ b/trunk/src/com/jpexs/asdec/SWFInputStream.java @@ -461,6 +461,78 @@ public class SWFInputStream extends InputStream { case 34: ret = new DefineButton2Tag(data, version); break; + case 69: + ret = new FileAttributes(data); + break; + case 77: + ret = new Metadata(data); + break; + case 65: + ret = new ScriptLimits(data, version); + break; + case 9: + ret = new SetBackgroundColor(data); + break; + case 41: + ret = new ProductInfo(data, version); + break; + case 43: + ret = new FrameLabel(data, version); + break; + case 36: + ret = new DefineBitsLossless2(data, version); + break; + case 76: + ret = new SymbolClass(data, version); + break; + case 32: + ret = new DefineShape3(data, version); + break; + case 28: + ret = new RemoveObject2(data, version); + break; + case 78: + ret = new DefineScalingGrid(data, version); + break; + case 2: + ret = new DefineShape(data, version); + break; + case 22: + ret = new DefineShape2(data, version); + break; + case 83: + ret = new DefineShape4(data, version); + break; + case 20: + ret = new DefineBitsLossless(data, version); + break; + case 35: + ret = new DefineBitsJPEG3(data, version); + break; + case 87: + ret = new DefineBinaryData(data, version); + break; + case 8: + ret = new JPEGTables(data); + break; + case 6: + ret = new DefineBits(data, version); + break; + case 21: + ret = new DefineBitsJPEG2(data, version); + break; + case 75: + ret = new DefineFont3(data, version); + break; + case 73: + ret = new DefineFontAlignZones(data, version); + break; + case 88: + ret = new DefineFontName(data, version); + break; + case 91: + ret = new DefineFont4(data, version); + break; default: ret = new Tag(tagID, data); } diff --git a/trunk/src/com/jpexs/asdec/tags/DefineBinaryData.java b/trunk/src/com/jpexs/asdec/tags/DefineBinaryData.java new file mode 100644 index 000000000..7323e4139 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineBinaryData.java @@ -0,0 +1,14 @@ +package com.jpexs.asdec.tags; + +public class DefineBinaryData extends Tag { + + public DefineBinaryData(byte[] data, int version) { + super(87, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineBinaryData"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineBits.java b/trunk/src/com/jpexs/asdec/tags/DefineBits.java new file mode 100644 index 000000000..16a0439b7 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineBits.java @@ -0,0 +1,14 @@ +package com.jpexs.asdec.tags; + +public class DefineBits extends Tag { + + public DefineBits(byte[] data, int version) { + super(6, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineBits"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineBitsJPEG2.java b/trunk/src/com/jpexs/asdec/tags/DefineBitsJPEG2.java new file mode 100644 index 000000000..db83e653e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineBitsJPEG2.java @@ -0,0 +1,14 @@ +package com.jpexs.asdec.tags; + +public class DefineBitsJPEG2 extends Tag { + + public DefineBitsJPEG2(byte[] data, int version) { + super(21, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineBitsJPEG2"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineBitsJPEG3.java b/trunk/src/com/jpexs/asdec/tags/DefineBitsJPEG3.java new file mode 100644 index 000000000..00b5948c8 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineBitsJPEG3.java @@ -0,0 +1,14 @@ +package com.jpexs.asdec.tags; + +public class DefineBitsJPEG3 extends Tag { + + public DefineBitsJPEG3(byte[] data, int version) { + super(35, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineBitsJPEG3"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineBitsLossless.java b/trunk/src/com/jpexs/asdec/tags/DefineBitsLossless.java new file mode 100644 index 000000000..afdb42c00 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineBitsLossless.java @@ -0,0 +1,14 @@ +package com.jpexs.asdec.tags; + +public class DefineBitsLossless extends Tag { + + public DefineBitsLossless(byte[] data, int version) { + super(20, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineBitsLossless"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineBitsLossless2.java b/trunk/src/com/jpexs/asdec/tags/DefineBitsLossless2.java new file mode 100644 index 000000000..6e79ea66d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineBitsLossless2.java @@ -0,0 +1,16 @@ +package com.jpexs.asdec.tags; + +import java.io.IOException; + +public class DefineBitsLossless2 extends Tag { + + public DefineBitsLossless2(byte[] data, int version) throws IOException { + super(36, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineBitsLossless2"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineFont3.java b/trunk/src/com/jpexs/asdec/tags/DefineFont3.java new file mode 100644 index 000000000..982a0126a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineFont3.java @@ -0,0 +1,14 @@ +package com.jpexs.asdec.tags; + +public class DefineFont3 extends Tag { + + public DefineFont3(byte[] data, int version) { + super(75, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineFont3"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineFont4.java b/trunk/src/com/jpexs/asdec/tags/DefineFont4.java new file mode 100644 index 000000000..d029720f0 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineFont4.java @@ -0,0 +1,14 @@ +package com.jpexs.asdec.tags; + +public class DefineFont4 extends Tag { + + public DefineFont4(byte[] data, int version) { + super(91, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineFont4"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineFontAlignZones.java b/trunk/src/com/jpexs/asdec/tags/DefineFontAlignZones.java new file mode 100644 index 000000000..0c6250711 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineFontAlignZones.java @@ -0,0 +1,14 @@ +package com.jpexs.asdec.tags; + +public class DefineFontAlignZones extends Tag { + + public DefineFontAlignZones(byte[] data, int version) { + super(73, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineFontAlignZones"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineFontName.java b/trunk/src/com/jpexs/asdec/tags/DefineFontName.java new file mode 100644 index 000000000..0b3a50a3c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineFontName.java @@ -0,0 +1,27 @@ +package com.jpexs.asdec.tags; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import com.jpexs.asdec.SWFInputStream; + +public class DefineFontName extends Tag { + + private int fontId; + private String fontName; + private String fontCopyright; + + public DefineFontName(byte[] data, int version) throws IOException { + super(88, data); + SWFInputStream sis = new SWFInputStream(new ByteArrayInputStream(data), version); + fontId = sis.readUI16(); + fontName = sis.readString(); + fontCopyright = sis.readString(); + } + + @Override + public String toString() { + return "DefineFontName"; + } + +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineScalingGrid.java b/trunk/src/com/jpexs/asdec/tags/DefineScalingGrid.java new file mode 100644 index 000000000..0cd34e767 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineScalingGrid.java @@ -0,0 +1,26 @@ +package com.jpexs.asdec.tags; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import com.jpexs.asdec.SWFInputStream; +import com.jpexs.asdec.types.RECT; + +public class DefineScalingGrid extends Tag { + + private int characterId; + private RECT splitter; + + public DefineScalingGrid(byte[] data, int version) throws IOException { + super(78, data); + SWFInputStream sis = new SWFInputStream(new ByteArrayInputStream(data), version); + characterId = sis.readUI16(); + splitter = sis.readRECT(); + } + + @Override + public String toString() { + return "DefineScalingGrid"; + } + +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineShape.java b/trunk/src/com/jpexs/asdec/tags/DefineShape.java new file mode 100644 index 000000000..883a98c8a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineShape.java @@ -0,0 +1,16 @@ +package com.jpexs.asdec.tags; + +import java.io.IOException; + +public class DefineShape extends Tag { + + public DefineShape(byte[] data, int version) throws IOException { + super(2, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineShape"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineShape2.java b/trunk/src/com/jpexs/asdec/tags/DefineShape2.java new file mode 100644 index 000000000..815f12c5a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineShape2.java @@ -0,0 +1,16 @@ +package com.jpexs.asdec.tags; + +import java.io.IOException; + +public class DefineShape2 extends Tag { + + public DefineShape2(byte[] data, int version) throws IOException { + super(22, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineShape2"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineShape3.java b/trunk/src/com/jpexs/asdec/tags/DefineShape3.java new file mode 100644 index 000000000..88433a2fe --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineShape3.java @@ -0,0 +1,16 @@ +package com.jpexs.asdec.tags; + +import java.io.IOException; + +public class DefineShape3 extends Tag { + + public DefineShape3(byte[] data, int version) throws IOException { + super(32, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "DefineShape3"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/DefineShape4.java b/trunk/src/com/jpexs/asdec/tags/DefineShape4.java new file mode 100644 index 000000000..38ca749d3 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/DefineShape4.java @@ -0,0 +1,13 @@ +package com.jpexs.asdec.tags; + +public class DefineShape4 extends Tag { + + public DefineShape4(byte[] data, int version) { + super(83, data); + } + + @Override + public String toString() { + return "DefineShape4"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/FileAttributes.java b/trunk/src/com/jpexs/asdec/tags/FileAttributes.java new file mode 100644 index 000000000..2a014516a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/FileAttributes.java @@ -0,0 +1,27 @@ +package com.jpexs.asdec.tags; + +public class FileAttributes extends Tag { + + private boolean useDirectBlit; + private boolean useGPU; + private boolean hasMetadata; + private boolean actionScript3; + private boolean useNetwork; + + public FileAttributes(byte[] data) { + super(69, data); + // UB[1] == 0 (reserved) + useDirectBlit = (data[0] & 0x40) != 0; + useGPU = (data[0] & 0x20) != 0; + hasMetadata = (data[0] & 0x10) != 0; + actionScript3 = (data[0] & 0x08) != 0; + // UB[2] == 0 (reserved) + useNetwork = (data[0] & 0x01) != 0; + // UB[24] == 0 (reserved) + } + + @Override + public String toString() { + return "FileAttributes"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/FrameLabel.java b/trunk/src/com/jpexs/asdec/tags/FrameLabel.java new file mode 100644 index 000000000..d5a096306 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/FrameLabel.java @@ -0,0 +1,22 @@ +package com.jpexs.asdec.tags; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import com.jpexs.asdec.SWFInputStream; + +public class FrameLabel extends Tag { + + private String name; + + public FrameLabel(byte[] data, int version) throws IOException { + super(43, data); + SWFInputStream sis = new SWFInputStream(new ByteArrayInputStream(data), version); + name = sis.readString(); + } + + @Override + public String toString() { + return "FrameLabel"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/JPEGTables.java b/trunk/src/com/jpexs/asdec/tags/JPEGTables.java new file mode 100644 index 000000000..b4b656252 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/JPEGTables.java @@ -0,0 +1,16 @@ +package com.jpexs.asdec.tags; + +import java.io.IOException; + +public class JPEGTables extends Tag { + + public JPEGTables(byte[] data) throws IOException { + super(8, data); + // TODO Auto-generated constructor stub + } + + @Override + public String toString() { + return "JPEGTables"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/Metadata.java b/trunk/src/com/jpexs/asdec/tags/Metadata.java new file mode 100644 index 000000000..fb8f01890 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/Metadata.java @@ -0,0 +1,23 @@ +package com.jpexs.asdec.tags; + +import java.io.UnsupportedEncodingException; + +public class Metadata extends Tag { + + private String xmlMetadata; + + public Metadata(byte[] data) { + super(77, data); + try { + xmlMetadata = new String(data, "UTF-8"); + } catch (UnsupportedEncodingException e) { + // cannot get here + e.printStackTrace(); + } + } + + @Override + public String toString() { + return "Metadata"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/ProductInfo.java b/trunk/src/com/jpexs/asdec/tags/ProductInfo.java new file mode 100644 index 000000000..a1d8acb1e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/ProductInfo.java @@ -0,0 +1,51 @@ +package com.jpexs.asdec.tags; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import com.jpexs.asdec.SWFInputStream; + +public class ProductInfo extends Tag { + + private long productID; + private long edition; + private int majorVersion; + private int minorVersion; + private long buildLow; + private long buildHigh; + private long compilationDate; + + public ProductInfo(byte[] data, int version) throws IOException { + super(41, data); + SWFInputStream sis = new SWFInputStream(new ByteArrayInputStream(data), version); + /* + * 0: Unknown + * 1: Macromedia Flex for J2EE + * 2: Macromedia Flex for .NET + * 3: Adobe Flex + */ + productID = sis.readUI32(); + + /* + * 0: Developer Edition + * 1: Full Commercial Edition + * 2: Non Commercial Edition + * 3: Educational Edition + * 4: Not For Resale (NFR) Edition + * 5: Trial Edition + * 6: None + */ + edition = sis.readUI32(); + majorVersion = sis.readUI8(); + minorVersion = sis.readUI8(); + buildLow = sis.readUI32(); + buildHigh = sis.readUI32(); + compilationDate = sis.readUI32() & 0xffffffffL; + compilationDate |= sis.readUI32() << 32; + } + + @Override + public String toString() { + return "ProductInfo"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/RemoveObject2.java b/trunk/src/com/jpexs/asdec/tags/RemoveObject2.java new file mode 100644 index 000000000..9533419dc --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/RemoveObject2.java @@ -0,0 +1,23 @@ +package com.jpexs.asdec.tags; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import com.jpexs.asdec.SWFInputStream; + +public class RemoveObject2 extends Tag { + + private int depth; + + public RemoveObject2(byte[] data, int version) throws IOException { + super(28, data); + ByteArrayInputStream bais = new ByteArrayInputStream(data); + SWFInputStream sis = new SWFInputStream(bais, version); + depth = sis.readUI16(); + } + + @Override + public String toString() { + return "RemoveObject2"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/ScriptLimits.java b/trunk/src/com/jpexs/asdec/tags/ScriptLimits.java new file mode 100644 index 000000000..69372ec39 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/ScriptLimits.java @@ -0,0 +1,24 @@ +package com.jpexs.asdec.tags; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import com.jpexs.asdec.SWFInputStream; + +public class ScriptLimits extends Tag { + + private int maxRecursionDepth; + private int scriptTimeoutSeconds; + + public ScriptLimits(byte[] data, int version) throws IOException { + super(65, data); + SWFInputStream sis = new SWFInputStream(new ByteArrayInputStream(data), version); + maxRecursionDepth = sis.readUI16(); + scriptTimeoutSeconds = sis.readUI16(); + } + + @Override + public String toString() { + return "ScriptLimits"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/SetBackgroundColor.java b/trunk/src/com/jpexs/asdec/tags/SetBackgroundColor.java new file mode 100644 index 000000000..29024bffb --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/SetBackgroundColor.java @@ -0,0 +1,21 @@ +package com.jpexs.asdec.tags; + +import com.jpexs.asdec.types.RGB; + +public class SetBackgroundColor extends Tag { + + private RGB backgroundColor; + + public SetBackgroundColor(byte[] data) { + super(9, data); + backgroundColor = new RGB(); + backgroundColor.red = data[0] & 0xff; + backgroundColor.green = data[1] & 0xff; + backgroundColor.blue = data[2] & 0xff; + } + + @Override + public String toString() { + return "SetBackgroundColor"; + } +} diff --git a/trunk/src/com/jpexs/asdec/tags/SymbolClass.java b/trunk/src/com/jpexs/asdec/tags/SymbolClass.java new file mode 100644 index 000000000..a85c22d9b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/tags/SymbolClass.java @@ -0,0 +1,30 @@ +package com.jpexs.asdec.tags; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import com.jpexs.asdec.SWFInputStream; + +public class SymbolClass extends Tag { + private int tagIDs[]; + private String classNames[]; + + public SymbolClass(byte[] data, int version) throws IOException { + super(76, data); + SWFInputStream sis = new SWFInputStream(new ByteArrayInputStream(data), version); + int numSymbols = sis.readUI16(); + tagIDs = new int[numSymbols]; + classNames = new String[numSymbols]; + for (int ii = 0; ii < numSymbols; ii++) { + int tagID = sis.readUI16(); + String className = sis.readString(); + tagIDs[ii] = tagID; + classNames[ii] = className; + } + } + + @Override + public String toString() { + return "SymbolClass"; + } +} diff --git a/trunk/src/com/jpexs/asdec/types/RGB.java b/trunk/src/com/jpexs/asdec/types/RGB.java new file mode 100644 index 000000000..1b349579d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/types/RGB.java @@ -0,0 +1,21 @@ +package com.jpexs.asdec.types; + +/** + * Represents 24-bit red, green, blue value + * + * @author JPEXS + */ +public class RGB { + /** + * Red color value + */ + public int red; + /** + * Green color value + */ + public int green; + /** + * Blue color value + */ + public int blue; +}