Beispiel #1
0
        internal override void ToSwf(SwfWriter w, ref uint fillBits, ref uint lineBits, ShapeType shapeType)
        {
            w.AppendBit(true);
            w.AppendBit(true);
            uint bits = SwfWriter.MinimumBits(DeltaX, DeltaY);

            bits = bits < 2 ? 2 : bits; // min 2 bits

            w.AppendBits(bits - 2, 4);
            if (DeltaX != 0 && DeltaY != 0)
            {
                w.AppendBit(true);
                w.AppendSignedNBits(DeltaX, bits);
                w.AppendSignedNBits(DeltaY, bits);
            }
            else if (DeltaX == 0)
            {
                w.AppendBit(false);
                w.AppendBit(true);
                w.AppendSignedNBits(DeltaY, bits);
            }
            else
            {
                w.AppendBit(false);
                w.AppendBit(false);
                w.AppendSignedNBits(DeltaX, bits);
            }
        }
Beispiel #2
0
        internal void ToSwf(SwfWriter w, bool useAlpha)
        {
            w.AppendBit(HasAddTerms);
            w.AppendBit(HasMultTerms);
            uint bits = SwfWriter.MinimumBits(RMultTerm, GMultTerm, BMultTerm, AMultTerm, RAddTerm, GAddTerm, BAddTerm, AAddTerm);

            w.AppendBits(bits, 4);

            if (HasMultTerms)
            {
                w.AppendSignedNBits(RMultTerm, bits);
                w.AppendSignedNBits(GMultTerm, bits);
                w.AppendSignedNBits(BMultTerm, bits);
                if (useAlpha)
                {
                    w.AppendSignedNBits(AMultTerm, bits);
                }
            }
            if (HasAddTerms)
            {
                w.AppendSignedNBits(RAddTerm, bits);
                w.AppendSignedNBits(GAddTerm, bits);
                w.AppendSignedNBits(BAddTerm, bits);
                if (useAlpha)
                {
                    w.AppendSignedNBits(AAddTerm, bits);
                }
            }

            w.Align();
        }
Beispiel #3
0
        internal override void ToSwf(SwfWriter w)
        {
            w.Align();

            uint bits = SwfWriter.MinimumBits(this.XMax, this.XMin, this.YMax, this.YMin);

            w.AppendBits((uint)bits, 5);
            w.AppendBits((uint)(this.XMin), bits);
            w.AppendBits((uint)(this.XMax), bits);
            w.AppendBits((uint)(this.YMin), bits);
            w.AppendBits((uint)(this.YMax), bits);

            w.Align();
        }
Beispiel #4
0
        internal override void ToSwf(SwfWriter w, ref uint fillBits, ref uint lineBits, ShapeType shapeType)
        {
            w.AppendBit(true);
            w.AppendBit(false);

            uint bits = SwfWriter.MinimumBits(ControlX, ControlY, AnchorX, AnchorY);

            bits = bits < 2 ? 2 : bits; // min 2 bits
            w.AppendBits(bits - 2, 4);

            w.AppendSignedNBits(ControlX, bits);
            w.AppendSignedNBits(ControlY, bits);
            w.AppendSignedNBits(AnchorX, bits);
            w.AppendSignedNBits(AnchorY, bits);
        }
Beispiel #5
0
        internal void ToSwf(SwfWriter w, ShapeType shapeType)
        {
            FillStyles.ToSwf(w, shapeType);
            LineStyles.ToSwf(w, shapeType);

            w.Align();
            uint fillBits = SwfWriter.MinimumBits((uint)FillStyles.FillStyles.Count);
            uint lineBits = SwfWriter.MinimumBits((uint)LineStyles.LineStyles.Count);

            w.AppendBits(fillBits, 4);
            w.AppendBits(lineBits, 4);
            w.Align();

            for (int i = 0; i < ShapeRecords.Count; i++)
            {
                ShapeRecords[i].ToSwf(w, ref fillBits, ref lineBits, shapeType);
            }
        }
Beispiel #6
0
        internal override void ToSwf(SwfWriter w)
        {
            bool scale = (this.ScaleX != 1) || (this.ScaleY != 1);

            w.AppendBit(scale);
            if (scale)
            {
                uint bits = SwfWriter.MinimumBits((int)(this.ScaleX * 0x10000), (int)(this.ScaleY * 0x10000));
                w.AppendBits(bits, 5);
                w.AppendFixedNBits(this.ScaleX, bits);
                w.AppendFixedNBits(this.ScaleY, bits);
            }

            bool rotate = (this.Rotate0 != 0) || (this.Rotate1 != 0);

            w.AppendBit(rotate);
            if (rotate)
            {
                uint bits = SwfWriter.MinimumBits((int)(this.Rotate0 * 0x10000), (int)(this.Rotate1 * 0x10000));
                w.AppendBits(bits, 5);
                w.AppendFixedNBits(this.Rotate0, bits);
                w.AppendFixedNBits(this.Rotate1, bits);
            }

            // translate
            uint minbits = 0;

            if (this.TranslateX != 0 || this.TranslateY != 0)
            {
                minbits = SwfWriter.MinimumBits((int)this.TranslateX, (int)this.TranslateY);
            }
            w.AppendBits(minbits, 5);
            w.AppendBits((uint)(this.TranslateX), minbits);
            w.AppendBits((uint)(this.TranslateY), minbits);

            w.Align();
        }
        internal override void ToSwf(SwfWriter w, ref uint fillBits, ref uint lineBits, ShapeType shapeType)
        {
            // TypeFlag				UB[1]	Non-edge record flag. Always 0.
            // StateNewStyles		UB[1]	New styles flag. Used by DefineShape2 and DefineShape3 only.
            // StateLineStyle		UB[1]	Line style change flag.
            // StateFillStyle1		UB[1]	Fill style 1 change flag.
            // StateFillStyle0		UB[1]	Fill style 0 change flag.
            // StateMoveTo			UB[1]	Move to flag.

            if (shapeType == ShapeType.Glyph)
            {
                w.AppendBit(false);
                w.AppendBit(false);   //this.HasNewStyles);

                w.AppendBit(false);   //HasLineStyle);
                w.AppendBit(false);   //HasFillStyle1);
                w.AppendBit(HasFillStyle0);
                w.AppendBit(HasMove); //HasMove);

                if (HasMove)
                {
                    // not relative moves
                    uint bits = SwfWriter.MinimumBits(this.MoveDeltaX, this.MoveDeltaY);
                    w.AppendBits(bits, 5);
                    w.AppendSignedNBits(this.MoveDeltaX, bits);
                    w.AppendSignedNBits(this.MoveDeltaY, bits);
                }

                if (HasFillStyle0)
                {
                    w.AppendBits(this.FillStyle0, fillBits);
                }
            }
            else
            {
                w.AppendBit(false);
                w.AppendBit(this.HasNewStyles);

                w.AppendBit(HasLineStyle);
                w.AppendBit(HasFillStyle1);
                w.AppendBit(HasFillStyle0);
                w.AppendBit(HasMove);

                if (HasMove)
                {
                    uint bits = SwfWriter.MinimumBits(this.MoveDeltaX, this.MoveDeltaY);
                    w.AppendBits(bits, 5);
                    w.AppendSignedNBits(this.MoveDeltaX, bits);
                    w.AppendSignedNBits(this.MoveDeltaY, bits);
                }

                if (HasFillStyle0)
                {
                    w.AppendBits(this.FillStyle0, fillBits);
                }

                if (HasFillStyle1)
                {
                    w.AppendBits(this.FillStyle1, fillBits);
                }

                if (HasLineStyle)
                {
                    w.AppendBits(this.LineStyle, lineBits);
                }

                if (HasNewStyles)
                {
                    w.Align();
                    FillStyles.ToSwf(w, shapeType);
                    LineStyles.ToSwf(w, shapeType);

                    fillBits = SwfWriter.MinimumBits((uint)FillStyles.FillStyles.Count);
                    lineBits = SwfWriter.MinimumBits((uint)LineStyles.LineStyles.Count);;

                    w.AppendBits(fillBits, 4);
                    w.AppendBits(lineBits, 4);
                }
            }
        }