public DefineFontNameTag(FlashReader reader, TagRecord header) : base(reader, header) { FontId = reader.ReadUInt16(); FontName = reader.ReadNullTerminatedString(); FontCopyright = reader.ReadNullTerminatedString(); }
public DefineBinaryDataTag(FlashReader reader, TagRecord header) : base(reader, header) { CharacterId = reader.ReadUInt16(); reader.ReadUInt32(); BinaryData = reader.ReadBytes(header.Body.Length - 6); }
public SetBackgroundColorTag(FlashReader reader, TagRecord header) : base(reader, header) { byte red = reader.ReadByte(); byte green = reader.ReadByte(); byte blue = reader.ReadByte(); BackgroundColor = Color.FromArgb(red, green, blue); }
public DoABCTag(FlashReader reader, TagRecord header) : base(reader, header) { Flags = reader.ReadUInt32(); Name = reader.ReadNullTerminatedString(); int nameLength = (Encoding.UTF8.GetByteCount(Name) + 1); byte[] abcData = reader.ReadBytes(header.Body.Length - (nameLength + 4)); ABC = new ABCFile(abcData); }
public ProductInfoTag(FlashReader reader, TagRecord header) : base(reader, header) { ProductId = (FlashProductId)reader.ReadUInt32(); Edition = (FlashEdition)reader.ReadUInt32(); MajorVersion = reader.ReadByte(); MinorVersion = reader.ReadByte(); BuildLow = reader.ReadUInt32(); BuildHigh = reader.ReadUInt32(); CompilationDate = _epoch.AddMilliseconds(reader.ReadUInt64()); }
public SymbolClassTag(FlashReader reader, TagRecord header) : base(reader, header) { int symbolCount = reader.ReadUInt16(); Symbols = new Dictionary<ushort, string>(symbolCount); for (int i = 0; i < symbolCount; i++) { ushort characterId = reader.ReadUInt16(); string symbolName = reader.ReadNullTerminatedString(); if (Symbols.ContainsKey(characterId)) { symbolName = $"{Symbols[characterId]},{symbolName}"; } Symbols[characterId] = symbolName; } }
public ExportAssetsTag(FlashReader reader, TagRecord header) : base(reader, header) { int count = reader.ReadUInt16(); Assets = new Dictionary<ushort, string>(count); for (int i = 0; i < count; i++) { ushort tag = reader.ReadUInt16(); string name = reader.ReadNullTerminatedString(); if (Assets.ContainsKey(tag)) { throw new Exception( "Duplicate tag id: " + tag); } Assets[tag] = name; } }
public DefineBitsLossless2Tag(FlashReader reader, TagRecord header) : base(reader, header) { CharacterId = reader.ReadUInt16(); BitmapFormat = reader.ReadByte(); BitmapWidth = reader.ReadUInt16(); BitmapHeight = reader.ReadUInt16(); _isCompressed = true; switch (BitmapFormat - 3) { case 0: break; case 1: case 2: { _compressedBitmapData = reader.ReadBytes(header.Body.Length - 7); break; } } }
public FrameLabelTag(FlashReader reader, TagRecord header) : base(reader, header) { Name = reader.ReadNullTerminatedString(); }
public UnknownTag(FlashReader reader, TagRecord header) : base(reader, header) { reader.Position += header.Body.Length; }
public FlashTag(FlashTagType tagType) { Header = new TagRecord(tagType); }
protected override FlashTag ReadTag(FlashReader reader, TagRecord header) { FlashTag tag = base.ReadTag(reader, header); switch (tag.Header.TagType) { case FlashTagType.DoABC: _abcFiles.Add(((DoABCTag)tag).ABC); break; case FlashTagType.DefineBinaryData: _binTags.Add((DefineBinaryDataTag)tag); break; } return tag; }
protected virtual FlashTag ReadTag(FlashReader reader, TagRecord header) { FlashTag tag = null; switch (header.TagType) { default: tag = new UnknownTag(Reader, header); break; case FlashTagType.DoABC: tag = new DoABCTag(Reader, header); break; case FlashTagType.DefineBitsLossless2: tag = new DefineBitsLossless2Tag(Reader, header); break; case FlashTagType.DefineBinaryData: tag = new DefineBinaryDataTag(Reader, header); break; } var character = (tag as ICharacter); if (character != null) { // Add ICharacter tag to the global dictionary. Dictionary.Characters[ character.CharacterId] = character; } return tag; }
/// <summary> /// Reads the flash tags that make up the content of the Shockwave Flash(SWF) file. /// </summary> public virtual List<FlashTag> ReadTags() { Tags.Clear(); Reader.Position = _frameEndPos; while (Reader.Position != Reader.Length) { var header = new TagRecord(Reader); int expectedPosition = (header.Body.Length + Reader.Position); Tags.Add(ReadTag(Reader, header)); if (Reader.Position != expectedPosition) { int lastTagIndex = (Tags.Count - 1); throw new Exception($"Incorrect position has been reached at {Reader.Position}.\r\n" + $"Expected Position: {expectedPosition} | TagType: {Tags[lastTagIndex].Header.TagType} | Tag Index: {lastTagIndex}"); } } return Tags; }
public ShowFrameTag(FlashReader reader, TagRecord header) : base(reader, header) { }
public FlashTag(FlashReader reader, TagRecord header) { Header = header; }
public ScriptLimitsTag(FlashReader reader, TagRecord header) : base(reader, header) { MaxRecursionDepth = reader.ReadUInt16(); ScriptTimeoutSeconds = reader.ReadUInt16(); }