public override void Write(SwfWriter writer, SwfTagCode shapeType) { //auto detect state if (Styles != null) { //TODO: check shape type State |= SwfStyleState.HasNewStyles; } writer.WriteBit(false); //edge flag //writer.WriteBit((_state & SwfStyleState.HasNewStyles) != 0); //writer.WriteBit((_state & SwfStyleState.HasLineStyle) != 0); //writer.WriteBit((_state & SwfStyleState.HasFillStyle1) != 0); //writer.WriteBit((_state & SwfStyleState.HasFillStyle0) != 0); //writer.WriteBit((_state & SwfStyleState.HasMoveTo) != 0); writer.WriteUB((uint)State, 5); if ((State & SwfStyleState.HasMoveTo) != 0) { if (_read) { writer.WriteUB((uint)_bits, 5); writer.WriteTwip(DeltaX, _bits); writer.WriteTwip(DeltaY, _bits); } else { writer.WriteBitwiseTwipPoint(DeltaX, DeltaY, false); } } if ((State & SwfStyleState.HasFillStyle0) != 0) { writer.WriteFillStyle(FillStyle0); } if ((State & SwfStyleState.HasFillStyle1) != 0) { writer.WriteFillStyle(FillStyle1); } if ((State & SwfStyleState.HasLineStyle) != 0) { writer.WriteLineStyle(LineStyle); } if (Styles != null && (State & SwfStyleState.HasNewStyles) != 0) { Styles.Write(writer, shapeType); } }