static void SkipLine2Style(SwfStreamReader reader)
        {
            reader.ReadUInt16();                      // Width
            reader.ReadUnsignedBits(2);               // StartCapStyle
            var join_style    = reader.ReadUnsignedBits(2);
            var has_fill_flag = reader.ReadBit();

            reader.ReadBit();                         // NoHScaleFlag
            reader.ReadBit();                         // NoVScaleFlag
            reader.ReadBit();                         // PixelHintingFlag
            reader.ReadUnsignedBits(5);               // Reserved
            reader.ReadBit();                         // NoClose
            reader.ReadUnsignedBits(2);               // EndCapStyle
            if (join_style == 2)
            {
                reader.ReadFixedPoint_8_8();                 // MiterLimitFactor
            }
            if (has_fill_flag)
            {
                ReadFillStyle(reader, true);                 // FillStyle
            }
            else
            {
                SwfColor.Read(reader, true);
            }
        }
Пример #2
0
        static Filter ReadConcreteFilter(GradientBevelFilter filter, SwfStreamReader reader)
        {
            var num_colors = reader.ReadByte();

            filter.GradientColors = new SwfColor[num_colors];
            for (var i = 0; i < num_colors; ++i)
            {
                filter.GradientColors[i] = SwfColor.Read(reader, true);
            }
            filter.GradientRatio = new byte[num_colors];
            for (var i = 0; i < num_colors; ++i)
            {
                filter.GradientRatio[i] = reader.ReadByte();
            }
            filter.BlurX           = reader.ReadFixedPoint_16_16();
            filter.BlurY           = reader.ReadFixedPoint_16_16();
            filter.Angle           = reader.ReadFixedPoint_16_16();
            filter.Distance        = reader.ReadFixedPoint_16_16();
            filter.Strength        = reader.ReadFixedPoint_8_8();
            filter.InnerShadow     = reader.ReadBit();
            filter.Knockout        = reader.ReadBit();
            filter.CompositeSource = reader.ReadBit();
            filter.OnTop           = reader.ReadBit();
            filter.Passes          = reader.ReadUnsignedBits(4);
            return(filter);
        }
        // -----------------------------
        // Gradient
        // -----------------------------

        static void SkipGradient(SwfStreamReader reader, bool with_alpha)
        {
            reader.ReadUnsignedBits(2);             // SpreadMode
            reader.ReadUnsignedBits(2);             // InterpolationMode
            var count = reader.ReadUnsignedBits(4);

            for (var i = 0; i < count; ++i)
            {
                reader.ReadByte();                 // Ratio
                SwfColor.Read(reader, with_alpha);
            }
        }
Пример #4
0
 static Filter ReadConcreteFilter(GlowFilter filter, SwfStreamReader reader)
 {
     filter.GlowColor       = SwfColor.Read(reader, true);
     filter.BlurX           = reader.ReadFixedPoint_16_16();
     filter.BlurY           = reader.ReadFixedPoint_16_16();
     filter.Strength        = reader.ReadFixedPoint_8_8();
     filter.InnerGlow       = reader.ReadBit();
     filter.Knockout        = reader.ReadBit();
     filter.CompositeSource = reader.ReadBit();
     filter.Passes          = reader.ReadUnsignedBits(5);
     return(filter);
 }
Пример #5
0
 static Filter ReadConcreteFilter(BevelFilter filter, SwfStreamReader reader)
 {
     filter.ShadowColor     = SwfColor.Read(reader, true);
     filter.HighlightColor  = SwfColor.Read(reader, true);
     filter.BlurX           = reader.ReadFixedPoint_16_16();
     filter.BlurY           = reader.ReadFixedPoint_16_16();
     filter.Angle           = reader.ReadFixedPoint_16_16();
     filter.Distance        = reader.ReadFixedPoint_16_16();
     filter.Strength        = reader.ReadFixedPoint_8_8();
     filter.InnerShadow     = reader.ReadBit();
     filter.Knockout        = reader.ReadBit();
     filter.CompositeSource = reader.ReadBit();
     filter.OnTop           = reader.ReadBit();
     filter.Passes          = reader.ReadUnsignedBits(4);
     return(filter);
 }
Пример #6
0
 static Filter ReadConcreteFilter(ConvolutionFilter filter, SwfStreamReader reader)
 {
     filter.MatrixX = reader.ReadByte();
     filter.MatrixY = reader.ReadByte();
     filter.Divisor = reader.ReadFloat32();
     filter.Bias    = reader.ReadFloat32();
     filter.Matrix  = new float[filter.MatrixX * filter.MatrixY];
     for (var i = 0; i < filter.Matrix.Length; ++i)
     {
         filter.Matrix[i] = reader.ReadFloat32();
     }
     filter.DefaultColor = SwfColor.Read(reader, true);
     reader.ReadUnsignedBits(6);             // reserved
     filter.Clamp         = reader.ReadBit();
     filter.PreserveAlpha = reader.ReadBit();
     return(filter);
 }
        // -----------------------------
        // FillStyle
        // -----------------------------

        static FillStyle ReadFillStyle(SwfStreamReader reader, bool with_alpha)
        {
            var fill_style = new FillStyle();

            fill_style.Type = SwfFillStyleType.Read(reader);
            if (fill_style.Type.IsSolidType)
            {
                SwfColor.Read(reader, with_alpha);
            }
            if (fill_style.Type.IsGradientType)
            {
                SwfMatrix.Read(reader, true);                 // GradientMatrix
                switch (fill_style.Type.Value)
                {
                case SwfFillStyleType.Type.LinearGradient:
                case SwfFillStyleType.Type.RadialGradient:
                    SkipGradient(reader, with_alpha);                     // Gradient
                    break;

                case SwfFillStyleType.Type.FocalGradient:
                    SkipFocalGradient(reader, with_alpha);                     // FocalGradient
                    break;
                }
            }
            if (fill_style.Type.IsBitmapType)
            {
                fill_style.BitmapId     = reader.ReadUInt16();
                fill_style.BitmapMatrix = SwfMatrix.Read(reader, true);
            }
            else
            {
                throw new System.Exception(
                          "Imported .swf file contains vector graphics. " +
                          "You should use Tools/FlashExport.jsfl script for prepare .fla file");
            }
            return(fill_style);
        }
        // -----------------------------
        // LineStyles
        // -----------------------------

        static void SkipLineStyle(SwfStreamReader reader, bool with_alpha)
        {
            reader.ReadUInt16();             // Width
            SwfColor.Read(reader, with_alpha);
        }