[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] /srv/bzr/gnash/trunk r9763: Try hitTest with the transfor
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] /srv/bzr/gnash/trunk r9763: Try hitTest with the transformed characters. Gnash succeeds. |
Date: |
Wed, 17 Sep 2008 13:21:56 +0200 |
User-agent: |
Bazaar (1.5) |
------------------------------------------------------------
revno: 9763
committer: Sandro Santilli <address@hidden>
branch nick: trunk
timestamp: Wed 2008-09-17 13:21:56 +0200
message:
Try hitTest with the transformed characters. Gnash succeeds.
Note that this is with shapeFlag off (only checking boundaries).
Dunno why, when trying shapeFlag on (check actual shape hit) the pp
gives odd results.
modified:
testsuite/misc-ming.all/matrix_test.c
------------------------------------------------------------
revno: 9760.1.5
committer: Sandro Santilli <address@hidden>
branch nick: mybranch
timestamp: Wed 2008-09-17 13:20:40 +0200
message:
Add hitTest tests with shape flag off for each constructed object
modified:
testsuite/misc-ming.all/matrix_test.c
=== modified file 'testsuite/misc-ming.all/matrix_test.c'
--- a/testsuite/misc-ming.all/matrix_test.c 2008-09-17 09:29:45 +0000
+++ b/testsuite/misc-ming.all/matrix_test.c 2008-09-17 11:20:40 +0000
@@ -85,7 +85,8 @@
Ming_init();
mo = newSWFMovieWithVersion(OUTPUT_VERSION);
SWFMovie_setDimension(mo, 800, 600);
- SWFMovie_setRate (mo, 2);
+ //SWFMovie_setRate (mo, 2);
+ SWFMovie_setRate (mo, 12);
dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10,
0, 0, 800, 600);
SWFMovie_add(mo, (SWFBlock)dejagnuclip);
@@ -113,19 +114,15 @@
// X: 19.95 .. 80.05
// Y: 269.95 .. 330.05
- check(mo, "staticmc.hitTest(30, 300, true)"); // in hittable shape
- xcheck(mo, "!staticmc.hitTest(20, 300, true)"); // rounding makes 20
be too on the left for a shape test
- check(mo, "staticmc.hitTest(20, 300, false)"); // but is fine for a
boundary test
-
- check(mo, "staticmc.hitTest(75, 300, true)"); // in hittable shape
- xcheck(mo, "!staticmc.hitTest(80, 300, true)"); // rounding makes 80
be too on the right for a shape test
- check(mo, "staticmc.hitTest(80, 300, false)"); // but is fine for a
boundary test
-
- check(mo, "staticmc.hitTest(25, 330, true)"); // in hittable shape
- check(mo, "staticmc.hitTest(75, 330, true)"); // in hittable shape
-
- check(mo, "staticmc.hitTest(25, 270, true)"); // in hittable shape
- check(mo, "staticmc.hitTest(75, 270, true)"); // in hittable shape
+ check(mo, "staticmc.hitTest(21, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(79, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(21, 329, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(79, 329, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(18, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(82, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 260, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 331, false)"); // overdown
SWFMovie_nextFrame(mo);
@@ -141,6 +138,20 @@
check_equals(mo, "staticmc._width", "85");
check_equals(mo, "staticmc._height", "85");
+ // X: 7.5 .. 92.5
+ // Y: 257.5 .. 342.5
+
+ check(mo, "staticmc.hitTest(8, 258, false)"); // top-left
+ check(mo, "staticmc.hitTest(90, 258, false)"); // top-right
+ check(mo, "staticmc.hitTest(8, 340, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(90, 340, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(6, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(95, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 250, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 345, false)"); // overdown
+
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_scaleTo(it, 2, 3);
@@ -155,25 +166,18 @@
check_equals(mo, "staticmc._width", "212.5");
check_equals(mo, "staticmc._height", "212.5");
- check(mo, "staticmc.hitTest(-56, 194, false)"); // in boundaries
- check(mo, "staticmc.hitTest(-56, 406, false)"); // in boundaries
- check(mo, "staticmc.hitTest(156, 194, false)"); // in boundaries
- check(mo, "staticmc.hitTest(156, 406, false)"); // in boundaries
-
- // X: -56.25 156.25
- // Y: 193.75 406.25
- //check(mo, "staticmc.hitTest(0, 300, true)"); // in hittable shape
(why no hit?)
- //check(mo, "staticmc.hitTest(0, 0, true)"); // in hittable shape (why
no hit?)
-
- check(mo, "!staticmc.hitTest(-57, 194, true)");
- check(mo, "!staticmc.hitTest(-57, 406, true)");
- check(mo, "!staticmc.hitTest(157, 194, true)");
- check(mo, "!staticmc.hitTest(157, 406, true)");
- check(mo, "!staticmc.hitTest(-56, 193, true)");
- check(mo, "!staticmc.hitTest(-56, 407, true)");
- check(mo, "!staticmc.hitTest(156, 193, true)");
- check(mo, "!staticmc.hitTest(156, 407, true)");
-
+ // X: -56.25 156.25
+ // Y: 193.75 406.25
+
+ check(mo, "staticmc.hitTest(-56, 194, false)"); // top-left
+ check(mo, "staticmc.hitTest(156, 194, false)"); // top-right
+ check(mo, "staticmc.hitTest(-56, 406, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(156, 406, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-57, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(157, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 193, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 407, false)"); // overdown
SWFMovie_nextFrame(mo);
@@ -189,6 +193,19 @@
check_equals(mo, "staticmc._width", "382.5");
check_equals(mo, "staticmc._height", "212.5");
+ // X: -141.25 241.25
+ // Y: 193.75 406.25
+
+ check(mo, "staticmc.hitTest(-141, 194, false)"); // top-left
+ check(mo, "staticmc.hitTest(241, 194, false)"); // top-right
+ check(mo, "staticmc.hitTest(-141, 406, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(241, 406, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-142, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(242, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 193, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 407, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_scaleTo(it, 2, -3);
@@ -203,6 +220,19 @@
check_equals(mo, "staticmc._width", "382.5");
check_equals(mo, "staticmc._height", "212.5");
+ // X: -141.25 241.25
+ // Y: 193.75 406.25
+
+ check(mo, "staticmc.hitTest(-141, 194, false)"); // top-left
+ check(mo, "staticmc.hitTest(241, 194, false)"); // top-right
+ check(mo, "staticmc.hitTest(-141, 406, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(241, 406, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-142, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(242, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 193, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 407, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_skewXTo(it, 0);
@@ -217,6 +247,20 @@
check_equals(mo, "staticmc._width", "212.5");
check_equals(mo, "staticmc._height", "212.5");
+ // X: -56.25 156.25
+ // Y: 193.75 406.25
+
+ check(mo, "staticmc.hitTest(-56, 194, false)"); // top-left
+ check(mo, "staticmc.hitTest(156, 194, false)"); // top-right
+ check(mo, "staticmc.hitTest(-56, 406, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(156, 406, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-57, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(157, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 193, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 407, false)"); // overdown
+
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_scaleTo(it, -2, 2);
@@ -231,6 +275,19 @@
check_equals(mo, "staticmc._width", "170");
check_equals(mo, "staticmc._height", "170");
+ // X: -35 135
+ // Y: 215 385
+
+ check(mo, "staticmc.hitTest(-34, 216, false)"); // top-left
+ check(mo, "staticmc.hitTest(134, 216, false)"); // top-right
+ check(mo, "staticmc.hitTest(-34, 384, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(134, 384, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-36, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(136, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 214, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 386, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_scaleTo(it, 1, 1);
@@ -246,6 +303,19 @@
check_equals(mo, "staticmc._width", "170");
check_equals(mo, "staticmc._height", "85");
+ // X: -35 135
+ // Y: 257.5 342.5
+
+ check(mo, "staticmc.hitTest(-34, 258, false)"); // top-left
+ check(mo, "staticmc.hitTest(134, 258, false)"); // top-right
+ check(mo, "staticmc.hitTest(-34, 342, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(134, 342, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-36, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(136, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 257, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 343, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, 1, 0, 0, 1, 50, 300); // reset to
near-identity
@@ -259,6 +329,19 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "60.1");
+ // X: 19.95 80.05
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(20, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 331, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, 0, 0, 1, 50, 300); // negative x scale
gets interpreted as 180 degrees rotation
@@ -272,6 +355,19 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "60.1");
+ // X: 19.95 80.05
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(20, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 331, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, 1, 0, 0, -1, 50, 300); // negative y scale
(discarded ?)
@@ -285,6 +381,19 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "60.1");
+ // X: 19.95 80.05
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(20, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 331, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, 0, 0, -1, 50, 300); // negative x and
y scales
@@ -298,6 +407,19 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "60.1");
+ // X: 19.95 80.05
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(20, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 331, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, -45, 0, 1, 50, 300); // negative x
scale and some negative skew
@@ -311,6 +433,19 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "2764.6");
+ // X: 19.95 80.05
+ // Y: -1082.3 1682.3
+
+ check(mo, "staticmc.hitTest(20, -1082, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, -1082, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 1682, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 1682, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 0, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 0, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, -1083, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 1683, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, 45, 0, 1, 50, 300); // negative x
scale and some positive skew
@@ -324,6 +459,19 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "2764.6");
+ // X: 19.95 80.05
+ // Y: -1082.3 1682.3
+
+ check(mo, "staticmc.hitTest(20, -1082, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, -1082, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 1682, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 1682, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 0, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 0, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, -1083, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 1683, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, 1, -45, 0, -1, 50, 300); // negative x
scale and some negative skew
@@ -337,6 +485,19 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "2764.6");
+ // X: 19.95 80.05
+ // Y: -1082.3 1682.3
+
+ check(mo, "staticmc.hitTest(20, -1082, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, -1082, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 1682, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 1682, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 0, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 0, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, -1083, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 1683, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, 1, 45, 0, -1, 50, 300); // negative x
scale and some positive skew
@@ -350,6 +511,19 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "2764.6");
+ // X: 19.95 80.05
+ // Y: -1082.3 1682.3
+
+ check(mo, "staticmc.hitTest(20, -1082, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, -1082, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 1682, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 1682, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 0, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 0, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, -1083, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 1683, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, 45, 0, -1, 50, 300); // negative x
scale and some positive skew
@@ -363,6 +537,19 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "2764.6");
+ // X: 19.95 80.05
+ // Y: -1082.3 1682.3
+
+ check(mo, "staticmc.hitTest(20, -1082, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, -1082, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 1682, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 1682, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 0, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 0, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, -1083, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 1683, false)"); // overdown
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, -45, 0, -1, 50, 300); // negative x
scale and some positive skew
@@ -376,6 +563,20 @@
check_equals(mo, "staticmc._width", "60.1");
check_equals(mo, "staticmc._height", "2764.6");
+ // X: 19.95 80.05
+ // Y: -1082.3 1682.3
+
+ check(mo, "staticmc.hitTest(20, -1082, false)"); // top-left
+ check(mo, "staticmc.hitTest(80, -1082, false)"); // top-right
+ check(mo, "staticmc.hitTest(20, 1682, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(80, 1682, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(19, 0, false)"); // overleft
+ check(mo, "!staticmc.hitTest(81, 0, false)"); // overright
+ check(mo, "!staticmc.hitTest(50, -1083, false)"); // overup
+ check(mo, "!staticmc.hitTest(50, 1683, false)"); // overdown
+
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, 0, -45, 1, 50, 300); // negative x
scale and some negative skew
@@ -389,6 +590,20 @@
check_equals(mo, "staticmc._width", "2764.6");
check_equals(mo, "staticmc._height", "60.1");
+ // X: -1332.3 1432.3
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(-1332, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(1432, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(-1332, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(1432, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-1333, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(1433, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(0, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(0, 331, false)"); // overdown
+
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, 0, 45, 1, 50, 300); // negative x
scale and some positive skew
@@ -402,6 +617,20 @@
check_equals(mo, "staticmc._width", "2764.6");
check_equals(mo, "staticmc._height", "60.1");
+ // X: -1332.3 1432.3
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(-1332, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(1432, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(-1332, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(1432, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-1333, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(1433, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(0, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(0, 331, false)"); // overdown
+
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, 1, 0, -45, -1, 50, 300); // negative x
scale and some negative skew
@@ -415,6 +644,20 @@
check_equals(mo, "staticmc._width", "2764.6");
check_equals(mo, "staticmc._height", "60.1");
+ // X: -1332.3 1432.3
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(-1332, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(1432, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(-1332, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(1432, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-1333, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(1433, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(0, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(0, 331, false)"); // overdown
+
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, 1, 0, 45, -1, 50, 300); // negative x
scale and some positive skew
@@ -428,6 +671,20 @@
check_equals(mo, "staticmc._width", "2764.6");
check_equals(mo, "staticmc._height", "60.1");
+ // X: -1332.3 1432.3
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(-1332, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(1432, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(-1332, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(1432, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-1333, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(1433, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(0, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(0, 331, false)"); // overdown
+
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, 0, 45, -1, 50, 300); // negative x
scale and some positive skew
@@ -441,6 +698,20 @@
check_equals(mo, "staticmc._width", "2764.6");
check_equals(mo, "staticmc._height", "60.1");
+ // X: -1332.3 1432.3
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(-1332, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(1432, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(-1332, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(1432, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-1333, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(1433, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(0, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(0, 331, false)"); // overdown
+
+
SWFMovie_nextFrame(mo);
SWFDisplayItem_setMatrix(it, -1, 0, -45, -1, 50, 300); // negative x
scale and some positive skew
@@ -454,6 +725,20 @@
check_equals(mo, "staticmc._width", "2764.6");
check_equals(mo, "staticmc._height", "60.1");
+ // X: -1332.3 1432.3
+ // Y: 269.95 330.05
+
+ check(mo, "staticmc.hitTest(-1332, 270, false)"); // top-left
+ check(mo, "staticmc.hitTest(1432, 270, false)"); // top-right
+ check(mo, "staticmc.hitTest(-1332, 330, false)"); // bottom-left
+ check(mo, "staticmc.hitTest(1432, 330, false)"); // bottom-right
+
+ check(mo, "!staticmc.hitTest(-1333, 300, false)"); // overleft
+ check(mo, "!staticmc.hitTest(1433, 300, false)"); // overright
+ check(mo, "!staticmc.hitTest(0, 269, false)"); // overup
+ check(mo, "!staticmc.hitTest(0, 331, false)"); // overdown
+
+
// TODO:
// - test more rotations and scales (corner cases too!)
@@ -461,7 +746,7 @@
SWFMovie_nextFrame(mo);
- add_actions(mo, "_root.totals(238); stop();");
+ add_actions(mo, "_root.totals(408); stop();");
SWFMovie_nextFrame(mo);
//Output movie
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/trunk r9763: Try hitTest with the transformed characters. Gnash succeeds.,
Sandro Santilli <=