Beispiel #1
0
        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);
            }
        }