diff --git a/core/src/avm2/globals/flash/display/bitmapdata.rs b/core/src/avm2/globals/flash/display/bitmapdata.rs index 691974332..5e3fb2dff 100644 --- a/core/src/avm2/globals/flash/display/bitmapdata.rs +++ b/core/src/avm2/globals/flash/display/bitmapdata.rs @@ -957,10 +957,10 @@ pub fn apply_filter<'gc>( Namespace::package("flash.filters"), "GradientGlowFilter", ))?; - let shader_filter = activation.resolve_class(&Multiname::new( - Namespace::package("flash.filters"), - "ShaderFilter", - ))?; + // let shader_filter = activation.resolve_class(&Multiname::new( + // Namespace::package("flash.filters"), + // "ShaderFilter", + // ))?; let filter = if filter.is_of_type(color_matrix_filter, activation) { let mut matrix = [0.0; 20]; if let Some(object) = filter @@ -1073,14 +1073,14 @@ pub fn apply_filter<'gc>( "with gradient glow filter" ); Filter::default() - } else if filter.is_of_type(shader_filter, activation) { - avm2_stub_method!( - activation, - "flash.display.BitmapData", - "applyFilter", - "with shader filter" - ); - Filter::default() + // } else if filter.is_of_type(shader_filter, activation) { + // avm2_stub_method!( + // activation, + // "flash.display.BitmapData", + // "applyFilter", + // "with shader filter" + // ); + // Filter::default() } else { tracing::error!("BitmapData.applyFilter received unknown filter"); Filter::default() diff --git a/core/src/avm2/globals/flash/filters/BevelFilter.as b/core/src/avm2/globals/flash/filters/BevelFilter.as new file mode 100644 index 000000000..27bb9e2d6 --- /dev/null +++ b/core/src/avm2/globals/flash/filters/BevelFilter.as @@ -0,0 +1,61 @@ +package flash.filters { + public final class BevelFilter extends BitmapFilter { + public var angle : Number; + public var blurX : Number; + public var blurY : Number; + public var distance : Number; + public var highlightAlpha : Number; + public var highlightColor : uint; + public var knockout : Boolean; + public var quality : int; + public var shadowAlpha : Number; + public var shadowColor : uint; + public var strength : Number; + public var type : String; + + public function BevelFilter( + distance:Number = 4.0, + angle:Number = 45, + highlightColor:uint = 0xFFFFFF, + highlightAlpha:Number = 1.0, + shadowColor:uint = 0x000000, + shadowAlpha:Number = 1.0, + blurX:Number = 4.0, + blurY:Number = 4.0, + strength:Number = 1, + quality:int = 1, + type:String = "inner", + knockout:Boolean = false + ) { + this.angle = angle; + this.blurX = blurX; + this.blurY = blurY; + this.distance = distance; + this.highlightAlpha = highlightAlpha; + this.highlightColor = highlightColor; + this.knockout = knockout; + this.quality = quality; + this.shadowAlpha = shadowAlpha; + this.shadowColor = shadowColor; + this.strength = strength; + this.type = type; + } + + override public function clone(): BitmapFilter { + return new BevelFilter( + this.distance, + this.angle, + this.highlightColor, + this.highlightAlpha, + this.shadowColor, + this.shadowAlpha, + this.blurX, + this.blurY, + this.strength, + this.quality, + this.type, + this.knockout + ); + } + } +} diff --git a/core/src/avm2/globals/flash/filters/ConvolutionFilter.as b/core/src/avm2/globals/flash/filters/ConvolutionFilter.as new file mode 100644 index 000000000..9ba1f68f0 --- /dev/null +++ b/core/src/avm2/globals/flash/filters/ConvolutionFilter.as @@ -0,0 +1,39 @@ +package flash.filters { + public final class ConvolutionFilter extends BitmapFilter { + public var alpha : Number; + public var bias : Number; + public var clamp : Boolean; + public var color : uint; + public var divisor : Number; + public var matrix : Array; + public var matrixX : Number; + public var matrixY : Number; + public var preserveAlpha : Boolean; + + public function ConvolutionFilter( + matrixX:Number = 0, + matrixY:Number = 0, + matrix:Array = null, + divisor:Number = 1.0, + bias:Number = 0.0, + preserveAlpha:Boolean = true, + clamp:Boolean = true, + color:uint = 0, + alpha:Number = 0.0 + ) { + this.alpha = alpha; + this.bias = bias; + this.clamp = clamp; + this.color = color; + this.divisor = divisor; + this.matrix = matrix; + this.matrixX = matrixX; + this.matrixY = matrixY; + this.preserveAlpha = preserveAlpha; + } + + override public function clone(): BitmapFilter { + return new ConvolutionFilter(this.matrixX, this.matrixY, this.matrixull, this.divisor, this.bias, this.preserveAlpharue, this.clamprue, this.color, this.alpha); + } + } +} diff --git a/core/src/avm2/globals/flash/filters/GradientBevelFilter.as b/core/src/avm2/globals/flash/filters/GradientBevelFilter.as new file mode 100644 index 000000000..5c59d7c47 --- /dev/null +++ b/core/src/avm2/globals/flash/filters/GradientBevelFilter.as @@ -0,0 +1,57 @@ +package flash.filters { + public final class GradientBevelFilter extends BitmapFilter { + public var alphas : Array; + public var angle : Number; + public var blurX : Number; + public var blurY : Number; + public var colors : Array; + public var distance : Number; + public var knockout : Boolean; + public var quality : int; + public var ratios : Array; + public var strength : Number; + public var type : String; + + public function GradientBevelFilter( + distance:Number = 4.0, + angle:Number = 45, + colors:Array = null, + alphas:Array = null, + ratios:Array = null, + blurX:Number = 4.0, + blurY:Number = 4.0, + strength:Number = 1, + quality:int = 1, + type:String = "inner", + knockout:Boolean = false + ) { + this.distance = distance; + this.angle = angle; + this.colors = colors; + this.alphas = alphas; + this.ratios = ratios; + this.blurX = blurX; + this.blurY = blurY; + this.strength = strength; + this.quality = quality; + this.type = type; + this.knockout = knockout; + } + + override public function clone(): BitmapFilter { + return new GradientBevelFilter( + this.distance, + this.angle, + this.colors, + this.alphas, + this.ratios, + this.blurX, + this.blurY, + this.strength, + this.quality, + this.type, + this.knockout + ); + } + } +} diff --git a/core/src/avm2/globals/flash/filters/GradientGlowFilter.as b/core/src/avm2/globals/flash/filters/GradientGlowFilter.as new file mode 100644 index 000000000..9fce4d9a7 --- /dev/null +++ b/core/src/avm2/globals/flash/filters/GradientGlowFilter.as @@ -0,0 +1,46 @@ +package flash.filters { + public final class GradientGlowFilter extends BitmapFilter { + public var alphas : Array; + public var angle : Number; + public var blurX : Number; + public var blurY : Number; + public var colors : Array; + public var distance : Number; + public var knockout : Boolean; + public var quality : int; + public var ratios : Array; + public var strength : Number; + public var type : String; + + public function GradientGlowFilter( + distance:Number = 4.0, + angle:Number = 45, + colors:Array = null, + alphas:Array = null, + ratios:Array = null, + blurX:Number = 4.0, + blurY:Number = 4.0, + strength:Number = 1, + quality:int = 1, + type:String = "inner", + knockout:Boolean = false + ) + { + this.distance = distance; + this.angle = angle; + this.colors = colors; + this.alphas = alphas; + this.ratios = ratios; + this.blurX = blurX; + this.blurY = blurY; + this.strength = strength; + this.quality = quality; + this.type = type; + this.knockout = knockout; + } + + override public function clone(): BitmapFilter { + return new GradientGlowFilter(this.distance, this.angle, this.colors, this.alphas, this.ratios, this.blurX, this.blurY, this.strength, this.quality, this.type, this.knockout); + } + } +} \ No newline at end of file diff --git a/core/src/avm2/globals/globals.as b/core/src/avm2/globals/globals.as index df78da3d8..feaacf53a 100644 --- a/core/src/avm2/globals/globals.as +++ b/core/src/avm2/globals/globals.as @@ -133,12 +133,16 @@ include "flash/errors/StackOverflowError.as" include "flash/filters/BitmapFilter.as" include "flash/filters/BitmapFilterQuality.as" include "flash/filters/BitmapFilterType.as" +include "flash/filters/BevelFilter.as" +include "flash/filters/ConvolutionFilter.as" +include "flash/filters/GradientBevelFilter.as" include "flash/filters/BlurFilter.as" include "flash/filters/ColorMatrixFilter.as" include "flash/filters/DisplacementMapFilter.as" include "flash/filters/DisplacementMapFilterMode.as" include "flash/filters/DropShadowFilter.as" include "flash/filters/GlowFilter.as" +include "flash/filters/GradientGlowFilter.as" include "flash/geom/ColorTransform.as" include "flash/geom/Matrix.as"