data types refactoring

This commit is contained in:
2016-03-13 22:51:16 +06:00
parent a6cdc79330
commit 2ed2198eb7
41 changed files with 643 additions and 386 deletions

View File

@@ -1,344 +0,0 @@
using UnityEngine;
using System.IO;
using System.Collections.Generic;
using FlashTools.Internal.SwfTools.SwfTags;
namespace FlashTools.Internal.SwfTools {
enum SwfBlendMode : byte {
Normal = 0,
Normal1 = 1,
Layer = 2,
Multiply = 3,
Screen = 4,
Lighten = 5,
Darken = 6,
Difference = 7,
Add = 8,
Subtract = 9,
Invert = 10,
Alpha = 11,
Erase = 12,
Overlay = 13,
Hardlight = 14
}
struct SwfShortHeader {
public string Format;
public byte Version;
public uint FileLength;
public static SwfShortHeader Read(SwfStreamReader reader) {
var header = new SwfShortHeader();
header.Format = new string(reader.ReadChars(3));
header.Version = reader.ReadByte();
header.FileLength = reader.ReadUInt32();
return header;
}
public void Write(Stream stream) {
if ( Format == null || Format.Length != 3 ) {
throw new UnityException("Incorrect SwfShortHeader Format");
}
stream.WriteByte((byte)Format[0]);
stream.WriteByte((byte)Format[1]);
stream.WriteByte((byte)Format[2]);
stream.WriteByte(Version);
stream.WriteByte((byte)((FileLength >> 0) & 0xff));
stream.WriteByte((byte)((FileLength >> 8) & 0xff));
stream.WriteByte((byte)((FileLength >> 16) & 0xff));
stream.WriteByte((byte)((FileLength >> 24) & 0xff));
}
public override string ToString() {
return string.Format(
"Format: {0}, Version: {1}, FileLength: {2}",
Format, Version, FileLength);
}
}
struct SwfLongHeader {
public SwfShortHeader ShortHeader;
public SwfRect FrameSize;
public float FrameRate;
public ushort FrameCount;
public static SwfLongHeader Read(SwfStreamReader reader) {
var header = new SwfLongHeader();
header.ShortHeader = SwfShortHeader.Read(reader);
header.FrameSize = SwfRect.Read(reader);
header.FrameRate = reader.ReadFixedPoint8();
header.FrameCount = reader.ReadUInt16();
return header;
}
public override string ToString() {
return string.Format(
"Format: {0}, Version: {1}, FileLength: {2}, " +
"FrameSize: {3}, FrameRate: {4}, FrameCount: {5}",
ShortHeader.Format, ShortHeader.Version, ShortHeader.FileLength,
FrameSize, FrameRate, FrameCount);
}
}
struct SwfRGB {
public byte R;
public byte G;
public byte B;
public static SwfRGB Read(SwfStreamReader reader) {
var rgb = new SwfRGB();
rgb.R = reader.ReadByte();
rgb.G = reader.ReadByte();
rgb.B = reader.ReadByte();
return rgb;
}
public override string ToString() {
return string.Format(
"R: {0}, G: {1}, B: {2}",
R, G, B);
}
}
struct SwfRGBA {
public byte R;
public byte G;
public byte B;
public byte A;
public static SwfRGBA Read(SwfStreamReader reader) {
var rgba = new SwfRGBA();
rgba.R = reader.ReadByte();
rgba.G = reader.ReadByte();
rgba.B = reader.ReadByte();
rgba.A = reader.ReadByte();
return rgba;
}
public override string ToString() {
return string.Format(
"R: {0}, G: {1}, B: {2}, A: {3}",
R, G, B, A);
}
}
struct SwfShapesWithStyle {
public static SwfShapesWithStyle Read(SwfStreamReader reader) {
return new SwfShapesWithStyle();
}
public override string ToString() {
return "";
}
}
struct SwfRect {
public float XMin;
public float XMax;
public float YMin;
public float YMax;
public static SwfRect Read(SwfStreamReader reader) {
var rect = new SwfRect();
var bits = reader.ReadUnsignedBits(5);
rect.XMin = reader.ReadSignedBits(bits) / 20.0f;
rect.XMax = reader.ReadSignedBits(bits) / 20.0f;
rect.YMin = reader.ReadSignedBits(bits) / 20.0f;
rect.YMax = reader.ReadSignedBits(bits) / 20.0f;
reader.AlignToByte();
return rect;
}
public override string ToString() {
return string.Format(
"XMin: {0}, XMax: {1}, YMin: {2}, YMax: {3}",
XMin, XMax, YMin, YMax);
}
}
struct SwfMatrix {
public float ScaleX;
public float ScaleY;
public float RotateSkew0;
public float RotateSkew1;
public float TranslateX;
public float TranslateY;
public static SwfMatrix Identity {
get {
return new SwfMatrix {
ScaleX = 1,
ScaleY = 1,
RotateSkew0 = 0,
RotateSkew1 = 0,
TranslateX = 0,
TranslateY = 0};
}
}
public static SwfMatrix Read(SwfStreamReader reader) {
var matrix = SwfMatrix.Identity;
var has_scale = reader.ReadBit();
if ( has_scale ) {
var bits = (byte)reader.ReadUnsignedBits(5);
matrix.ScaleX = reader.ReadFixedPoint16(bits);
matrix.ScaleY = reader.ReadFixedPoint16(bits);
}
var has_rotate = reader.ReadBit();
if ( has_rotate ) {
var bits = (byte)reader.ReadUnsignedBits(5);
matrix.RotateSkew0 = reader.ReadFixedPoint16(bits);
matrix.RotateSkew1 = reader.ReadFixedPoint16(bits);
}
var translate_bits = (byte)reader.ReadUnsignedBits(5);
matrix.TranslateX = reader.ReadSignedBits(translate_bits) / 20.0f;
matrix.TranslateY = reader.ReadSignedBits(translate_bits) / 20.0f;
reader.AlignToByte();
return matrix;
}
public override string ToString() {
return string.Format(
"ScaleX: {0}, ScaleY: {1}, RotateSkew0: {2}, RotateSkew1: {3}, TranslateX: {4}, TranslateY: {5}",
ScaleX, ScaleY, RotateSkew0, RotateSkew1, TranslateX, TranslateY);
}
}
struct SwfColorTransformRGB {
public short RMul;
public short GMul;
public short BMul;
public bool HasMul;
public short RAdd;
public short GAdd;
public short BAdd;
public bool HasAdd;
public static SwfColorTransformRGB Identity {
get {
return new SwfColorTransformRGB {
RMul = 1,
GMul = 1,
BMul = 1,
HasMul = false,
RAdd = 0,
GAdd = 0,
BAdd = 0,
HasAdd = false};
}
}
public static SwfColorTransformRGB Read(SwfStreamReader reader) {
var transform = SwfColorTransformRGB.Identity;
var has_add = reader.ReadBit();
var has_mul = reader.ReadBit();
var bits = reader.ReadUnsignedBits(4);
if ( has_mul ) {
transform.RMul = (short)reader.ReadSignedBits(bits);
transform.GMul = (short)reader.ReadSignedBits(bits);
transform.BMul = (short)reader.ReadSignedBits(bits);
transform.HasMul = true;
}
if ( has_add ) {
transform.RAdd = (short)reader.ReadSignedBits(bits);
transform.GAdd = (short)reader.ReadSignedBits(bits);
transform.BAdd = (short)reader.ReadSignedBits(bits);
transform.HasAdd = true;
}
reader.AlignToByte();
return transform;
}
public override string ToString() {
return string.Format(
"RMul: {0}, GMul: {1}, BMul: {2}, HasMul: {3}, RAdd: {4}, GAdd: {5}, BAdd: {6}, HasAdd: {7}",
RMul, GMul, GMul, HasMul, RAdd, GAdd, BAdd, HasAdd);
}
}
struct SwfColorTransformRGBA {
public short RMul;
public short GMul;
public short BMul;
public short AMul;
public bool HasMul;
public short RAdd;
public short GAdd;
public short BAdd;
public short AAdd;
public bool HasAdd;
public static SwfColorTransformRGBA Identity {
get {
return new SwfColorTransformRGBA {
RMul = 1,
GMul = 1,
BMul = 1,
AMul = 1,
HasMul = false,
RAdd = 0,
GAdd = 0,
BAdd = 0,
AAdd = 0,
HasAdd = false};
}
}
public static SwfColorTransformRGBA Read(SwfStreamReader reader) {
var transform = SwfColorTransformRGBA.Identity;
var has_add = reader.ReadBit();
var has_mul = reader.ReadBit();
var bits = reader.ReadUnsignedBits(4);
if ( has_mul ) {
transform.RMul = (short)reader.ReadSignedBits(bits);
transform.GMul = (short)reader.ReadSignedBits(bits);
transform.BMul = (short)reader.ReadSignedBits(bits);
transform.AMul = (short)reader.ReadSignedBits(bits);
transform.HasMul = true;
}
if ( has_add ) {
transform.RAdd = (short)reader.ReadSignedBits(bits);
transform.GAdd = (short)reader.ReadSignedBits(bits);
transform.BAdd = (short)reader.ReadSignedBits(bits);
transform.AAdd = (short)reader.ReadSignedBits(bits);
transform.HasAdd = true;
}
reader.AlignToByte();
return transform;
}
public override string ToString() {
return string.Format(
"RMul: {0}, GMul: {1}, BMul: {2}, AMul: {3}, HasMul: {4}, RAdd: {5}, GAdd: {6}, BAdd: {7}, AAdd: {8}, HasAdd: {9}",
RMul, GMul, GMul, AMul, HasMul, RAdd, GAdd, BAdd, AAdd, HasAdd);
}
}
struct SwfClipActions {
public static SwfClipActions Read(SwfStreamReader reader) {
throw new UnityException("implme!");
}
}
struct SwfSurfaceFilters {
public static SwfSurfaceFilters Read(SwfStreamReader reader) {
throw new UnityException("implme!");
}
}
struct SwfControlTags {
public List<SwfTagBase> Tags;
public static SwfControlTags Read(SwfStreamReader reader) {
var control_tags = new SwfControlTags();
control_tags.Tags = new List<SwfTagBase>();
while ( true ) {
var tag = SwfTagBase.Read(reader);
control_tags.Tags.Add(tag);
if ( tag.TagType == SwfTagType.End ) {
break;
}
}
return control_tags;
}
}
}

View File

@@ -2,6 +2,7 @@
using System.IO;
using System.Collections.Generic;
using FlashTools.Internal.SwfTools.SwfTags;
using FlashTools.Internal.SwfTools.SwfTypes;
using Ionic.Zlib;
namespace FlashTools.Internal.SwfTools {

View File

@@ -29,11 +29,6 @@ namespace FlashTools.Internal.SwfTools {
//
// ---------------------------------------------------------------------
public SwfStreamReader(string path) {
var file_stream = File.OpenRead(path);
_binaryReader = new BinaryReader(file_stream);
}
public SwfStreamReader(byte[] data) {
var memory_stream = new MemoryStream(data);
_binaryReader = new BinaryReader(memory_stream);
@@ -43,11 +38,6 @@ namespace FlashTools.Internal.SwfTools {
_binaryReader = new BinaryReader(stream);
}
public SwfStreamReader SeekToBegin() {
_binaryReader.BaseStream.Position = 0;
return this;
}
public bool IsEOF {
get { return Position >= Length; }
}
@@ -157,28 +147,24 @@ namespace FlashTools.Internal.SwfTools {
if ( (bt & 0x80) == 0 ) {
return val;
}
bt = ReadByte();
val |= (bt & 0x7fu) << 7;
if ( (bt & 0x80) == 0 ) {
return val;
}
bt = ReadByte();
val |= (bt & 0x7fu) << 14;
if ( (bt & 0x80) == 0 ) {
return val;
}
bt = ReadByte();
val |= (bt & 0x7fu) << 21;
if ( (bt & 0x80) == 0 ) {
return val;
}
bt = ReadByte();
val |= (bt & 0x7fu) << 28;
return val;
}
}
}
}

View File

@@ -1,4 +1,6 @@
namespace FlashTools.Internal.SwfTools.SwfTags {
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class DefineScalingGridTag : SwfTagBase {
public ushort CharacterId;
public SwfRect Splitter;

View File

@@ -1,4 +1,6 @@
namespace FlashTools.Internal.SwfTools.SwfTags {
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class DefineShape2Tag : SwfTagBase {
public ushort ShapeId;
public SwfRect ShapeBounds;

View File

@@ -1,4 +1,6 @@
namespace FlashTools.Internal.SwfTools.SwfTags {
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class DefineShape3Tag : SwfTagBase {
public ushort ShapeId;
public SwfRect ShapeBounds;

View File

@@ -1,4 +1,6 @@
namespace FlashTools.Internal.SwfTools.SwfTags {
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class DefineShape4Tag : SwfTagBase {
public ushort ShapeId;
public SwfRect ShapeBounds;

View File

@@ -1,4 +1,6 @@
namespace FlashTools.Internal.SwfTools.SwfTags {
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class DefineShapeTag : SwfTagBase {
public ushort ShapeId;
public SwfRect ShapeBounds;

View File

@@ -1,4 +1,6 @@
namespace FlashTools.Internal.SwfTools.SwfTags {
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class DefineSpriteTag : SwfTagBase {
public ushort SpriteId;
public ushort FrameCount;
@@ -12,7 +14,7 @@
return string.Format(
"DefineSpriteTag. " +
"SpriteId: {0}, FrameCount: {1}, ControlTags: {2}",
SpriteId, FrameCount, ControlTags.Tags.Count);
SpriteId, FrameCount, ControlTags.Tags);
}
public static DefineSpriteTag Create(SwfStreamReader reader) {

View File

@@ -1,4 +1,5 @@
using System.Text;
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class PlaceObject2Tag : SwfTagBase {
@@ -28,25 +29,25 @@ namespace FlashTools.Internal.SwfTools.SwfTags {
sb.Append("PlaceObject2Tag. ");
sb.AppendFormat("Move: {0} Depth: {1}", Move, Depth);
if ( HasCharacter ) {
sb.AppendFormat(" CharacterId: {0}", CharacterId);
sb.AppendFormat(", CharacterId: {0}", CharacterId);
}
if ( HasMatrix ) {
sb.AppendFormat(" Matrix: {0}", Matrix);
sb.AppendFormat(", Matrix: {0}", Matrix);
}
if ( HasColorTransform ) {
sb.AppendFormat(" ColorTransform: {0}", ColorTransform);
sb.AppendFormat(", ColorTransform: {0}", ColorTransform);
}
if ( HasRatio ) {
sb.AppendFormat(" Ratio: {0}", Ratio);
sb.AppendFormat(", Ratio: {0}", Ratio);
}
if ( HasName ) {
sb.AppendFormat(" Name: {0}", Name);
sb.AppendFormat(", Name: {0}", Name);
}
if ( HasClipDepth ) {
sb.AppendFormat(" ClipDepth: {0}", ClipDepth);
sb.AppendFormat(", ClipDepth: {0}", ClipDepth);
}
if ( HasClipActions ) {
sb.AppendFormat(" ClipActions: {0}", HasClipActions);
sb.AppendFormat(", ClipActions: {0}", HasClipActions);
}
return sb.ToString();
}

View File

@@ -1,4 +1,5 @@
using System.Text;
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class PlaceObject3Tag : SwfTagBase {
@@ -41,25 +42,25 @@ namespace FlashTools.Internal.SwfTools.SwfTags {
sb.Append("PlaceObject3Tag. ");
sb.AppendFormat("Move: {0} Depth: {1}", Move, Depth);
if ( HasCharacter ) {
sb.AppendFormat(" CharacterId: {0}", CharacterId);
sb.AppendFormat(", CharacterId: {0}", CharacterId);
}
if ( HasMatrix ) {
sb.AppendFormat(" Matrix: {0}", Matrix);
sb.AppendFormat(", Matrix: {0}", Matrix);
}
if ( HasColorTransform ) {
sb.AppendFormat(" ColorTransform: {0}", ColorTransform);
sb.AppendFormat(", ColorTransform: {0}", ColorTransform);
}
if ( HasRatio ) {
sb.AppendFormat(" Ratio: {0}", Ratio);
sb.AppendFormat(", Ratio: {0}", Ratio);
}
if ( HasName ) {
sb.AppendFormat(" Name: {0}", Name);
sb.AppendFormat(", Name: {0}", Name);
}
if ( HasClipDepth ) {
sb.AppendFormat(" ClipDepth: {0}", ClipDepth);
sb.AppendFormat(", ClipDepth: {0}", ClipDepth);
}
if ( HasClipActions ) {
sb.AppendFormat(" ClipActions: {0}", HasClipActions);
sb.AppendFormat(", ClipActions: {0}", HasClipActions);
}
return sb.ToString();
}
@@ -108,7 +109,7 @@ namespace FlashTools.Internal.SwfTools.SwfTags {
tag.SurfaceFilters = SwfSurfaceFilters.Read(reader);
}
if ( tag.HasBlendMode ) {
tag.BlendMode = (SwfBlendMode)reader.ReadByte();
tag.BlendMode = SwfBlendMode.Read(reader);
}
if ( tag.HasCacheAsBitmap ) {
tag.BitmapCache = reader.ReadByte();

View File

@@ -1,4 +1,6 @@
namespace FlashTools.Internal.SwfTools.SwfTags {
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class PlaceObjectTag : SwfTagBase {
public ushort CharacterId;
public ushort Depth;

View File

@@ -1,4 +1,6 @@
namespace FlashTools.Internal.SwfTools.SwfTags {
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTags {
class SetBackgroundColorTag : SwfTagBase {
public SwfRGB BackgroundColor;

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: c6e637f9f090c4acbb2fecefe412c91c
folderAsset: yes
timeCreated: 1457881315
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,58 @@
using UnityEngine;
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfBlendMode {
public enum Mode {
Normal,
Layer,
Multiply,
Screen,
Lighten,
Darken,
Difference,
Add,
Subtract,
Invert,
Alpha,
Erase,
Overlay,
Hardlight
}
public Mode Type;
public static SwfBlendMode Read(SwfStreamReader reader) {
var mode_id = reader.ReadByte();
var mode = ModeFromByte(mode_id);
return new SwfBlendMode{Type = mode};
}
public override string ToString() {
return string.Format(
"SwfBlendMode. Type: {0}",
Type.ToString());
}
static Mode ModeFromByte(byte mode_id) {
switch ( mode_id ) {
case 0:
case 1: return Mode.Normal;
case 2: return Mode.Layer;
case 3: return Mode.Multiply;
case 4: return Mode.Screen;
case 5: return Mode.Lighten;
case 6: return Mode.Darken;
case 7: return Mode.Difference;
case 8: return Mode.Add;
case 9: return Mode.Subtract;
case 10: return Mode.Invert;
case 11: return Mode.Alpha;
case 12: return Mode.Erase;
case 13: return Mode.Overlay;
case 14: return Mode.Hardlight;
default:
Debug.LogWarningFormat("Incorrect BlendMode Id: {0}", mode_id);
return Mode.Normal;
}
}
}
}

View File

@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 42e458b9c57b64d3f905fbf73ee0547d
timeCreated: 1457819522
guid: 1f87ec74e6af540748af80d4a1cc1b49
timeCreated: 1457882212
licenseType: Free
MonoImporter:
serializedVersion: 2

View File

@@ -0,0 +1,12 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfClipActions {
public static SwfClipActions Read(SwfStreamReader reader) {
//TODO: IMPLME
return new SwfClipActions();
}
public override string ToString() {
return "SwfClipActions.";
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 1daabaaa9d07a4d9184fe8dd1928803f
timeCreated: 1457881505
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,56 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfColorTransformRGB {
public short RMul;
public short GMul;
public short BMul;
public bool HasMul;
public short RAdd;
public short GAdd;
public short BAdd;
public bool HasAdd;
public static SwfColorTransformRGB Read(SwfStreamReader reader) {
var transform = SwfColorTransformRGB.Identity;
var has_add = reader.ReadBit();
var has_mul = reader.ReadBit();
var bits = reader.ReadUnsignedBits(4);
if ( has_mul ) {
transform.RMul = (short)reader.ReadSignedBits(bits);
transform.GMul = (short)reader.ReadSignedBits(bits);
transform.BMul = (short)reader.ReadSignedBits(bits);
transform.HasMul = true;
}
if ( has_add ) {
transform.RAdd = (short)reader.ReadSignedBits(bits);
transform.GAdd = (short)reader.ReadSignedBits(bits);
transform.BAdd = (short)reader.ReadSignedBits(bits);
transform.HasAdd = true;
}
reader.AlignToByte();
return transform;
}
public override string ToString() {
return string.Format(
"SwfColorTransformRGB. " +
"RMul: {0}, GMul: {1}, BMul: {2}, HasMul: {3}, " +
"RAdd: {4}, GAdd: {5}, BAdd: {6}, HasAdd: {7}",
RMul, GMul, GMul, HasMul,
RAdd, GAdd, BAdd, HasAdd);
}
public static SwfColorTransformRGB Identity {
get {
return new SwfColorTransformRGB {
RMul = 1,
GMul = 1,
BMul = 1,
HasMul = false,
RAdd = 0,
GAdd = 0,
BAdd = 0,
HasAdd = false};
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b74e206a586d948f880a7f2bd86cb469
timeCreated: 1457881464
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,62 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfColorTransformRGBA {
public short RMul;
public short GMul;
public short BMul;
public short AMul;
public bool HasMul;
public short RAdd;
public short GAdd;
public short BAdd;
public short AAdd;
public bool HasAdd;
public static SwfColorTransformRGBA Read(SwfStreamReader reader) {
var transform = SwfColorTransformRGBA.Identity;
var has_add = reader.ReadBit();
var has_mul = reader.ReadBit();
var bits = reader.ReadUnsignedBits(4);
if ( has_mul ) {
transform.RMul = (short)reader.ReadSignedBits(bits);
transform.GMul = (short)reader.ReadSignedBits(bits);
transform.BMul = (short)reader.ReadSignedBits(bits);
transform.AMul = (short)reader.ReadSignedBits(bits);
transform.HasMul = true;
}
if ( has_add ) {
transform.RAdd = (short)reader.ReadSignedBits(bits);
transform.GAdd = (short)reader.ReadSignedBits(bits);
transform.BAdd = (short)reader.ReadSignedBits(bits);
transform.AAdd = (short)reader.ReadSignedBits(bits);
transform.HasAdd = true;
}
reader.AlignToByte();
return transform;
}
public override string ToString() {
return string.Format(
"SwfColorTransformRGBA. " +
"RMul: {0}, GMul: {1}, BMul: {2}, AMul: {3}, HasMul: {4}, " +
"RAdd: {5}, GAdd: {6}, BAdd: {7}, AAdd: {8}, HasAdd: {9}",
RMul, GMul, GMul, AMul, HasMul,
RAdd, GAdd, BAdd, AAdd, HasAdd);
}
public static SwfColorTransformRGBA Identity {
get {
return new SwfColorTransformRGBA {
RMul = 1,
GMul = 1,
BMul = 1,
AMul = 1,
HasMul = false,
RAdd = 0,
GAdd = 0,
BAdd = 0,
AAdd = 0,
HasAdd = false};
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f85807ea0dc87404983006ba9b04ebb7
timeCreated: 1457881474
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
using System.Collections.Generic;
using FlashTools.Internal.SwfTools.SwfTags;
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfControlTags {
public List<SwfTagBase> Tags;
public static SwfControlTags Read(SwfStreamReader reader) {
var control_tags = new SwfControlTags();
control_tags.Tags = new List<SwfTagBase>();
while ( true ) {
var tag = SwfTagBase.Read(reader);
control_tags.Tags.Add(tag);
if ( tag.TagType == SwfTagType.End ) {
break;
}
}
return control_tags;
}
public override string ToString() {
return string.Format(
"SwfControlTags. Tags: {0}",
Tags.Count);
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 904b18edf65b7485fb93fdeec65e93d3
timeCreated: 1457881525
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,26 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfLongHeader {
public SwfShortHeader ShortHeader;
public SwfRect FrameSize;
public float FrameRate;
public ushort FrameCount;
public static SwfLongHeader Read(SwfStreamReader reader) {
var header = new SwfLongHeader();
header.ShortHeader = SwfShortHeader.Read(reader);
header.FrameSize = SwfRect.Read(reader);
header.FrameRate = reader.ReadFixedPoint8();
header.FrameCount = reader.ReadUInt16();
return header;
}
public override string ToString() {
return string.Format(
"SwfLongHeader. " +
"Format: {0}, Version: {1}, FileLength: {2}, " +
"FrameSize: {3}, FrameRate: {4}, FrameCount: {5}",
ShortHeader.Format, ShortHeader.Version, ShortHeader.FileLength,
FrameSize, FrameRate, FrameCount);
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b6ee0fe9207424e20a8f928a9d72df91
timeCreated: 1457881396
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,54 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfMatrix {
public float ScaleX;
public float ScaleY;
public float RotateSkew0;
public float RotateSkew1;
public float TranslateX;
public float TranslateY;
public static SwfMatrix Read(SwfStreamReader reader) {
var matrix = SwfMatrix.Identity;
var has_scale = reader.ReadBit();
if ( has_scale ) {
var bits = (byte)reader.ReadUnsignedBits(5);
matrix.ScaleX = reader.ReadFixedPoint16(bits);
matrix.ScaleY = reader.ReadFixedPoint16(bits);
}
var has_rotate = reader.ReadBit();
if ( has_rotate ) {
var bits = (byte)reader.ReadUnsignedBits(5);
matrix.RotateSkew0 = reader.ReadFixedPoint16(bits);
matrix.RotateSkew1 = reader.ReadFixedPoint16(bits);
}
var translate_bits = (byte)reader.ReadUnsignedBits(5);
matrix.TranslateX = reader.ReadSignedBits(translate_bits) / 20.0f;
matrix.TranslateY = reader.ReadSignedBits(translate_bits) / 20.0f;
reader.AlignToByte();
return matrix;
}
public override string ToString() {
return string.Format(
"SwfMatrix. " +
"ScaleX: {0}, ScaleY: {1}, " +
"RotateSkew0: {2}, RotateSkew1: {3}, " +
"TranslateX: {4}, TranslateY: {5}",
ScaleX, ScaleY,
RotateSkew0, RotateSkew1,
TranslateX, TranslateY);
}
public static SwfMatrix Identity {
get {
return new SwfMatrix {
ScaleX = 1,
ScaleY = 1,
RotateSkew0 = 0,
RotateSkew1 = 0,
TranslateX = 0,
TranslateY = 0};
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c0843850979784e0eb2ef2e2f7d3ef8c
timeCreated: 1457881450
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,21 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfRGB {
public byte R;
public byte G;
public byte B;
public static SwfRGB Read(SwfStreamReader reader) {
var rgb = new SwfRGB();
rgb.R = reader.ReadByte();
rgb.G = reader.ReadByte();
rgb.B = reader.ReadByte();
return rgb;
}
public override string ToString() {
return string.Format(
"SwfRGB. R: {0}, G: {1}, B: {2}",
R, G, B);
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 3bdf80e6c1ea34969a12400fa1a4a03b
timeCreated: 1457881354
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfRGBA {
public byte R;
public byte G;
public byte B;
public byte A;
public static SwfRGBA Read(SwfStreamReader reader) {
var rgba = new SwfRGBA();
rgba.R = reader.ReadByte();
rgba.G = reader.ReadByte();
rgba.B = reader.ReadByte();
rgba.A = reader.ReadByte();
return rgba;
}
public override string ToString() {
return string.Format(
"SwfRGBA. R: {0}, G: {1}, B: {2}, A: {3}",
R, G, B, A);
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 3b8e88250d67a42979b1d9f40699c769
timeCreated: 1457881364
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,26 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfRect {
public float XMin;
public float XMax;
public float YMin;
public float YMax;
public static SwfRect Read(SwfStreamReader reader) {
var rect = new SwfRect();
var bits = reader.ReadUnsignedBits(5);
rect.XMin = reader.ReadSignedBits(bits) / 20.0f;
rect.XMax = reader.ReadSignedBits(bits) / 20.0f;
rect.YMin = reader.ReadSignedBits(bits) / 20.0f;
rect.YMax = reader.ReadSignedBits(bits) / 20.0f;
reader.AlignToByte();
return rect;
}
public override string ToString() {
return string.Format(
"SwfRect. " +
"XMin: {0}, XMax: {1}, YMin: {2}, YMax: {3}",
XMin, XMax, YMin, YMax);
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: ce2e00762eae848eeab3f543b6ccd368
timeCreated: 1457881342
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,12 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfShapesWithStyle {
public static SwfShapesWithStyle Read(SwfStreamReader reader) {
//TODO: IMPLME
return new SwfShapesWithStyle();
}
public override string ToString() {
return "SwfShapesWithStyle.";
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9ad135e326c424eb2a9bb593525c4192
timeCreated: 1457881438
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,42 @@
using UnityEngine;
using System.IO;
using FlashTools.Internal.SwfTools.SwfTypes;
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfShortHeader {
public string Format;
public byte Version;
public uint FileLength;
public static SwfShortHeader Read(SwfStreamReader reader) {
var header = new SwfShortHeader();
header.Format = new string(reader.ReadChars(3));
header.Version = reader.ReadByte();
header.FileLength = reader.ReadUInt32();
return header;
}
public void Write(Stream stream) {
if ( Format == null || Format.Length != 3 ) {
throw new UnityException(string.Format(
"Incorrect SwfShortHeader Format: {0}",
Format));
}
stream.WriteByte((byte)Format[0]);
stream.WriteByte((byte)Format[1]);
stream.WriteByte((byte)Format[2]);
stream.WriteByte(Version);
stream.WriteByte((byte)((FileLength >> 0) & 0xff));
stream.WriteByte((byte)((FileLength >> 8) & 0xff));
stream.WriteByte((byte)((FileLength >> 16) & 0xff));
stream.WriteByte((byte)((FileLength >> 24) & 0xff));
}
public override string ToString() {
return string.Format(
"SwfShortHeader. " +
"Format: {0}, Version: {1}, FileLength: {2}",
Format, Version, FileLength);
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 669a2dd77726b497aab3e816c280e023
timeCreated: 1457881385
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,12 @@
namespace FlashTools.Internal.SwfTools.SwfTypes {
struct SwfSurfaceFilters {
public static SwfSurfaceFilters Read(SwfStreamReader reader) {
//TODO: IMPLME
return new SwfSurfaceFilters();
}
public override string ToString() {
return "SwfSurfaceFilters.";
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9160ac10286e843ccb7fae733e9de5d8
timeCreated: 1457881516
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: