public void Dump(XmlWriter writer, SwfTagCode shapeType) { writer.WriteStartElement("record"); writer.WriteAttributeString("type", Type.ToString()); DumpBody(writer, shapeType); writer.WriteEndElement(); }
public override void Write(SwfWriter writer, SwfTagCode shapeType) { if (DeltaX == 0 && DeltaY == 0) { return; } writer.WriteBit(true); //edge flag writer.WriteBit(true); //strait flag if (DeltaX == 0) //vert { WriteCoord(writer, DeltaY, true); } else if (DeltaY == 0) //horz { WriteCoord(writer, DeltaX, false); } else { int x = DeltaX.ToTwips(); int y = DeltaY.ToTwips(); int bits = _bits; if (!_read) { bits = Math.Max(x.GetMinBits(y), 2); } writer.WriteUB((uint)(bits - 2), 4); writer.WriteBit(true); //gl writer.WriteSB(x, bits); writer.WriteSB(y, bits); } }
private static SwfTag ReadChar(SwfReader reader, SwfTagCode tagCode, byte[] tagData) { var ch = new SwfCharacterAny(tagCode); ch.ReadTagData(tagData, reader); return(ch); }
protected override void DumpBody(XmlWriter writer, SwfTagCode shapeType) { writer.WriteAttributeString("cdx", ControlDeltaX.ToString()); writer.WriteAttributeString("cdy", ControlDeltaY.ToString()); writer.WriteAttributeString("adx", AnchorDeltaX.ToString()); writer.WriteAttributeString("ady", AnchorDeltaY.ToString()); }
public override void Read(SwfReader reader, SwfTagCode shapeType) { int bits = (int)reader.ReadUB(4) + 2; bool gl = reader.ReadBit(); //general line, x and y if (gl) { DeltaX = reader.ReadTwip(bits); DeltaY = reader.ReadTwip(bits); } else { bool vl = reader.ReadBit(); //vertical line if (vl) { DeltaY = reader.ReadTwip(bits); } else { DeltaX = reader.ReadTwip(bits); } } _bits = bits; _read = true; }
protected override void DumpBody(XmlWriter writer, SwfTagCode shapeType) { writer.WriteAttributeString("state", State.ToString()); if ((State & SwfStyleState.HasMoveTo) != 0) { writer.WriteAttributeString("dx", DeltaX.ToString()); writer.WriteAttributeString("dy", DeltaY.ToString()); } if ((State & SwfStyleState.HasFillStyle0) != 0) { writer.WriteAttributeString("fs0", FillStyle0.ToString()); } if ((State & SwfStyleState.HasFillStyle1) != 0) { writer.WriteAttributeString("fs1", FillStyle1.ToString()); } if ((State & SwfStyleState.HasLineStyle) != 0) { writer.WriteAttributeString("ls", LineStyle.ToString()); } if ((State & SwfStyleState.HasNewStyles) != 0) { Styles.Dump(writer, shapeType); } }
public override void Read(SwfReader reader, SwfTagCode shapeType) { if ((State & SwfStyleState.HasMoveTo) != 0) { int bits = (int)reader.ReadUB(5); DeltaX = reader.ReadTwip(bits); DeltaY = reader.ReadTwip(bits); _bits = bits; _read = true; } if ((State & SwfStyleState.HasFillStyle0) != 0) { FillStyle0 = reader.ReadFillStyle(); } if ((State & SwfStyleState.HasFillStyle1) != 0) { FillStyle1 = reader.ReadFillStyle(); } if ((State & SwfStyleState.HasLineStyle) != 0) { LineStyle = reader.ReadLineStyle(); } if ((State & SwfStyleState.HasNewStyles) != 0) { Styles = new SwfStyles(); Styles.Read(reader, shapeType); } }
public void Dump(XmlWriter writer, SwfTagCode shapeType) { writer.WriteStartElement("fill-style"); writer.WriteAttributeString("kind", Kind.ToString()); DumpBody(writer, shapeType); writer.WriteEndElement(); }
public static SwfFillStyle Create(SwfReader reader, SwfTagCode shapeType) { var kind = (SwfFillKind)reader.ReadUInt8(); var fs = Create(kind); fs.Read(reader, shapeType); return(fs); }
protected override void WriteBody(SwfWriter writer, SwfTagCode shapeType) { writer.WriteUInt16(BitmapId); writer.WriteMatrix(Matrix); if (SwfShape.IsMorph(shapeType)) { writer.WriteMatrix(EndMatrix); } }
public override void Read(SwfReader reader, SwfTagCode shapeType) { BitmapId = reader.ReadUInt16(); Matrix = reader.ReadMatrix(); if (SwfShape.IsMorph(shapeType)) { EndMatrix = reader.ReadMatrix(); } }
protected override void DumpBody(XmlWriter writer, SwfTagCode shapeType) { writer.WriteElementString("matrix", Matrix.GetMatrixString()); if (SwfShape.IsMorph(shapeType)) { writer.WriteElementString("end-matrix", EndMatrix.GetMatrixString()); } Gradient.Dump(writer, shapeType); }
public void Dump(XmlWriter writer, SwfTagCode shapeType) { writer.WriteStartElement("styles"); writer.WriteAttributeString("fill-bits", _fillBits.ToString()); writer.WriteAttributeString("line-bits", _lineBits.ToString()); _fillStyles.Dump(writer, shapeType); _lineStyles.Dump(writer, shapeType); writer.WriteEndElement(); }
protected override void DumpBody(XmlWriter writer, SwfTagCode shapeType) { writer.WriteElementString("bmp-id", BitmapId.ToString()); writer.WriteElementString("matrix", Matrix.GetMatrixString()); if (SwfShape.IsMorph(shapeType)) { writer.WriteElementString("end-matrix", EndMatrix.GetMatrixString()); } }
public void Write(SwfWriter writer, SwfTagCode shapeType) { writer.WriteTwipU16(Width); if (shapeType == SwfTagCode.DefineMorphShape) { writer.WriteTwipU16(EndWidth); writer.WriteRGBA(Color); writer.WriteRGBA(EndColor); } else if (shapeType == SwfTagCode.DefineShape4 || shapeType == SwfTagCode.DefineMorphShape2) { bool isMorph = shapeType == SwfTagCode.DefineMorphShape2; if (isMorph) { writer.WriteTwipU16(EndWidth); } writer.WriteUB((uint)StartCapStyle, 2); writer.WriteUB((uint)JoinStyle, 2); writer.WriteBit(Fill != null); //hasFill writer.WriteBit((Flags & SwfLineFlags.NoHScale) != 0); writer.WriteBit((Flags & SwfLineFlags.NoVScale) != 0); writer.WriteBit((Flags & SwfLineFlags.PixelHinting) != 0); writer.WriteUB(0, 5); //reserved writer.WriteBit((Flags & SwfLineFlags.NoClose) != 0); writer.WriteUB((uint)EndCapStyle, 2); if (JoinStyle == SwfJoinStyle.Miter) { writer.WriteFixed16(MiterLimit); } if (Fill != null) { Fill.Write(writer, shapeType); } else { writer.WriteRGBA(Color); if (isMorph) { writer.WriteRGBA(EndColor); } } } else if (shapeType == SwfTagCode.DefineShape3) { writer.WriteRGBA(Color); } else { writer.WriteRGB(Color); } }
public override void Read(SwfReader reader, SwfTagCode shapeType) { bool hasAlpha = SwfShape.HasAlpha(shapeType); Color = hasAlpha ? reader.ReadRGBA() : reader.ReadRGB(); if (SwfShape.IsMorph(shapeType)) { EndColor = reader.ReadRGBA(); } }
internal static bool IsMorph(SwfTagCode shapeType) { switch (shapeType) { case SwfTagCode.DefineMorphShape: case SwfTagCode.DefineMorphShape2: return(true); } return(false); }
public void Read(SwfReader reader, SwfTagCode shapeType) { reader.Align(); _fillStyles.Read(reader, shapeType); _lineStyles.Read(reader, shapeType); _fillBits = (int)reader.ReadUB(4); _lineBits = (int)reader.ReadUB(4); _read = true; reader.Styles = this; }
/// <summary> /// Returns minimum SWF version where tag with specified code was defined. /// </summary> /// <param name="code">tag code</param> /// <returns></returns> public static int GetTagVersion(SwfTagCode code) { if (_mapver == null) { _mapver = EnumReflector.GetAttributeMap <SwfTagCode, int, SwfVersionAttribute>(attr => attr.Version); } int result; return(_mapver.TryGetValue(code, out result) ? result : -1); }
public static SwfTagCategory GetTagCategory(SwfTagCode code) { if (_mapcat == null) { _mapcat = EnumReflector.GetAttributeMap <SwfTagCode, SwfTagCategory, SwfTagCategoryAttribute>(attr => attr.Category); } SwfTagCategory result; return(_mapcat.TryGetValue(code, out result) ? result : SwfTagCategory.Unknown); }
public void Write(SwfWriter writer, SwfTagCode tagCode) { int n = Count; for (int i = 0; i < n; ++i) { this[i].Write(writer, tagCode); } writer.WriteUInt8(0); }
public void Write(SwfWriter writer, SwfTagCode shapeType) { int n = Count; for (int i = 0; i < n; ++i) { var r = this[i]; r.Write(writer, shapeType); } writer.WriteUB(0, 6); //EndShapeRecord }
public override void Read(SwfReader reader, SwfTagCode shapeType) { int bits = (int)reader.ReadUB(4) + 2; ControlDeltaX = reader.ReadTwip(bits); ControlDeltaY = reader.ReadTwip(bits); AnchorDeltaX = reader.ReadTwip(bits); AnchorDeltaY = reader.ReadTwip(bits); _bits = bits; _read = true; }
public void Dump(XmlWriter writer, SwfTagCode shapeType) { writer.WriteStartElement("line-styles"); int n = Count; writer.WriteAttributeString("count", n.ToString()); for (int i = 0; i < n; ++i) { this[i].Dump(writer, shapeType); } writer.WriteEndElement(); }
public static bool IsShape(SwfTagCode code) { switch (code) { case SwfTagCode.DefineShape: case SwfTagCode.DefineShape2: case SwfTagCode.DefineShape3: case SwfTagCode.DefineShape4: return(true); } return(false); }
public void Dump(XmlWriter writer, SwfTagCode tagCode) { writer.WriteStartElement("buttons"); int n = Count; writer.WriteAttributeString("count", n.ToString()); for (int i = 0; i < n; ++i) { this[i].Dump(writer, tagCode); } writer.WriteEndElement(); }
protected override void WriteBody(SwfWriter writer, SwfTagCode shapeType) { if (_kind != SwfFillKind.FocalGradient) { writer.WriteMatrix(Matrix); if (SwfShape.IsMorph(shapeType)) { writer.WriteMatrix(EndMatrix); } } Gradient.Write(writer, shapeType); }
private static SwfTag DecodeTag(SwfReader reader, int length, SwfTagCode tagCode) { if (length == 0) { return(new SwfTagEmpty(tagCode)); } var opts = reader.TagDecodeOptions; var tagData = reader.ReadUInt8(length); if (tagCode == SwfTagCode.DefineSprite && (opts & SwfTagDecodeOptions.DonotDecodeSprites) == 0) { var sprite = new SwfSprite(); sprite.ReadTagData(tagData, reader); return(sprite); } if ((opts & SwfTagDecodeOptions.DonotDecodeTags) != 0) { return(new SwfTagAny(tagCode, tagData)); } bool isChar = SwfTag.IsCharacter(tagCode); if (isChar && (opts & SwfTagDecodeOptions.DonotDecodeCharacters) != 0) { return(ReadChar(reader, tagCode, tagData)); } bool isImage = SwfTag.IsImage(tagCode); if (isImage && (opts & SwfTagDecodeOptions.DonotDecodeImages) != 0) { return(ReadChar(reader, tagCode, tagData)); } var tag = SwfTagFactory.Create(tagCode); if (tag != null) { tag.ReadTagData(tagData, reader); return(tag); } if (isChar) { return(ReadChar(reader, tagCode, tagData)); } return(new SwfTagAny(tagCode, tagData)); }
public static bool IsImage(SwfTagCode code) { switch (code) { case SwfTagCode.DefineBitsJPEG: case SwfTagCode.DefineBitsJPEG2: case SwfTagCode.DefineBitsJPEG3: case SwfTagCode.DefineBitsLossless: case SwfTagCode.DefineBitsLossless2: return(true); } return(false); }
protected override void DumpBody(XmlWriter writer, SwfTagCode shapeType) { if (SwfShape.IsMorph(shapeType)) { writer.WriteAttributeString("begin-color", Color.ToHtmlHex()); writer.WriteAttributeString("end-color", EndColor.ToHtmlHex()); } else { bool hasAlpha = SwfShape.HasAlpha(shapeType); writer.WriteAttributeString("color", Color.ToHtmlHex(hasAlpha)); } }