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); } }
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); } }
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); }
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); }
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); }