diff --git a/tests/tests/swfs/avm2/displayobject_z/Test.as b/tests/tests/swfs/avm2/displayobject_z/Test.as new file mode 100644 index 0000000000000..02ac4f037a69f --- /dev/null +++ b/tests/tests/swfs/avm2/displayobject_z/Test.as @@ -0,0 +1,88 @@ +package { + import flash.display.*; + import flash.text.*; + import flash.geom.*; + + [SWF(width="500", height="500")] + public class Test extends Sprite { + public function Test() { + super(); + + stage.scaleMode = StageScaleMode.NO_SCALE; + + testSetZ(); + trace(""); + + testImageComparison(); + trace(""); + + } + + private function testSetZ() : void { + var sprite: Sprite = new Sprite(); + + trace("// SetZ: default parameters"); + trace("sprite.z", sprite.z); + trace("sprite.transform.matrix", sprite.transform.matrix); + trace("sprite.transform.matrix3D", sprite.transform.matrix3D); + + trace("// SetZ: set .z=50"); + sprite.z = 50; + trace("sprite.z", sprite.z); + trace("sprite.transform.matrix", sprite.transform.matrix); + trace("sprite.transform.matrix3D", sprite.transform.matrix3D); + trace("sprite.transform.matrix3D.rawData", sprite.transform.matrix3D.rawData); + + trace("// SetZ: set .transform.matrix3D=null"); + sprite.transform.matrix3D = null; + trace("sprite.z", sprite.z); + trace("sprite.transform.matrix", sprite.transform.matrix); + trace("sprite.transform.matrix3D", sprite.transform.matrix3D); + + trace("// SetZ: set .transform.matrix=null"); + sprite.transform.matrix = null; + trace("sprite.z", sprite.z); + trace("sprite.transform.matrix", sprite.transform.matrix); + trace("sprite.transform.matrix3D", sprite.transform.matrix3D); + trace("sprite.transform.matrix3D.rawData", sprite.transform.matrix3D.rawData); + } + + private function testImageComparison() : void { + var s : Sprite = new Sprite(); + stage.addChild(s); + + for (var i:int = 0; i < 8; i++) { + // top-left + var bd1 : BitmapData = new BitmapData(100, 100, false, 0xFF00FF - 0x220000 * i); + var b1 : Bitmap = new Bitmap(bd1); + b1.z = 50 * i; + s.addChild(b1); + + // center + var bd2 : BitmapData = new BitmapData(100, 100, false, 0xFFFF00 - 0x220000 * i); + var b2 : Bitmap = new Bitmap(bd2); + b2.x = (stage.stageWidth - bd2.width) / 2; + b2.y = (stage.stageHeight - bd2.height) / 2; + b2.z = 50 * i; + s.addChild(b2); + + // bottom + var bd3 : BitmapData = new BitmapData(100, 100, false, 0x00FFFF - 0x000022 * i); + var b3 : Bitmap = new Bitmap(bd3); + b3.x = (stage.stageWidth - bd3.width) / 2; + b3.y = (stage.stageHeight - bd3.height); + b3.z = 50 * i; + s.addChild(b3); + } + + for (var j:int = 0; j < 100; j++) { + var bd4 : BitmapData = new BitmapData(100, 100, false, 0x000000); + var b4 : Bitmap = new Bitmap(bd4); + b4.x = stage.stageWidth - bd4.width; + b4.y = stage.stageHeight - bd4.height; + b4.z = 500 * j; + s.addChild(b4); + } + } + } +} diff --git a/tests/tests/swfs/avm2/displayobject_z/output.expected.png b/tests/tests/swfs/avm2/displayobject_z/output.expected.png new file mode 100644 index 0000000000000..c916fd62b11d9 Binary files /dev/null and b/tests/tests/swfs/avm2/displayobject_z/output.expected.png differ diff --git a/tests/tests/swfs/avm2/displayobject_z/output.txt b/tests/tests/swfs/avm2/displayobject_z/output.txt new file mode 100644 index 0000000000000..aed6bc904ada8 --- /dev/null +++ b/tests/tests/swfs/avm2/displayobject_z/output.txt @@ -0,0 +1,20 @@ +// SetZ: default parameters +sprite.z 0 +sprite.transform.matrix (a=1, b=0, c=0, d=1, tx=0, ty=0) +sprite.transform.matrix3D null +// SetZ: set .z=50 +sprite.z 50 +sprite.transform.matrix null +sprite.transform.matrix3D [object Matrix3D] +sprite.transform.matrix3D.rawData 1,0,0,0,0,1,0,0,0,0,1,0,0,0,50,1 +// SetZ: set .transform.matrix3D=null +sprite.z 0 +sprite.transform.matrix (a=1, b=0, c=0, d=1, tx=0, ty=0) +sprite.transform.matrix3D null +// SetZ: set .transform.matrix=null +sprite.z 0 +sprite.transform.matrix null +sprite.transform.matrix3D [object Matrix3D] +sprite.transform.matrix3D.rawData 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1 + + diff --git a/tests/tests/swfs/avm2/displayobject_z/test.swf b/tests/tests/swfs/avm2/displayobject_z/test.swf new file mode 100644 index 0000000000000..7ccccbe7eb6e5 Binary files /dev/null and b/tests/tests/swfs/avm2/displayobject_z/test.swf differ diff --git a/tests/tests/swfs/avm2/displayobject_z/test.toml b/tests/tests/swfs/avm2/displayobject_z/test.toml new file mode 100644 index 0000000000000..31b949d6e1a74 --- /dev/null +++ b/tests/tests/swfs/avm2/displayobject_z/test.toml @@ -0,0 +1,8 @@ +num_frames = 1 + +[image_comparisons.output] +tolerance = 10 +max_outliers = 5000 # FIXME: High max_outliers. FP renders objects with a matrix3D transformation in a different way from 2D objects especially around the object edges. + +[player_options] +with_renderer = { optional = true, sample_count = 4 }