public void Parse( Stream input )
{
BinaryReader2 br = new BinaryReader2( input );
_numFilters = br.ReadByte();
_Filters = new List<AbstractFilter>( _numFilters );
for ( int i = 0; i < _numFilters; i++ )
{
AbstractFilter.FilterTypes nextFilterType = ( AbstractFilter.FilterTypes )br.ReadByte();
AbstractFilter aFilter;
switch ( nextFilterType )
{
case AbstractFilter.FilterTypes.DropShadowFilter:
aFilter = new Filter.DropShadowFilter( this.Version );
break;
case AbstractFilter.FilterTypes.BevelFilter:
aFilter = new Filter.BevelFilter( this.Version );
break;
case AbstractFilter.FilterTypes.BlurFilter:
aFilter = new Filter.BlurFilter( this.Version );
break;
case AbstractFilter.FilterTypes.ColorMatrixFilter:
aFilter = new Filter.ColorMatrixFilter( this.Version );
break;
case AbstractFilter.FilterTypes.ConvolutionFilter:
aFilter = new Filter.ConvolutionFilter( this.Version );
break;
case AbstractFilter.FilterTypes.GlowFilter:
aFilter = new Filter.GlowFilter( this.Version );
break;
case AbstractFilter.FilterTypes.GradientBevelFilter:
aFilter = new Filter.GradientBevelFilter( this.Version );
break;
case AbstractFilter.FilterTypes.GradientGlowFilter:
aFilter = new Filter.GradientGlowFilter( this.Version );
break;
default:
SwfFormatException e = new SwfFormatException( "Illegal Filter Type ID " + nextFilterType.ToString( "d" ) );
Log.Error(this, e );
throw e;
}
aFilter.Parse( input );
_Filters.Add( aFilter );
}
}
/// <summary> /// /// </summary> /// <param name="input"></param> public override void Parse( Stream input ) { base.Parse( input ); _ColorTransform = new CxFormWithAlpha( this.Version ); _ColorTransform.Parse( input ); //Log.Debug(this, _ColorTransform.ToString() ); if ( _ButtonHasFilterList ) { _FilterList = new FilterList( this.Version ); _FilterList.Parse( input ); } if ( _ButtonHasBlendMode ) { BinaryReader br = new BinaryReader( input ); _BlendMode = br.ReadByte(); if ( _BlendMode > 14 ) { throw new SwfFormatException( "ButtonRecord2 BlendMode > 14" ); } } //Log.Debug(this, this.ToString() ); }