Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Unified Diff: tests/Matrix44Test.cpp

Issue 25484006: Add perspective support to SkMatrix44 initializers. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Add test and header comments Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« include/utils/SkMatrix44.h ('K') | « src/utils/SkMatrix44.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/Matrix44Test.cpp
diff --git a/tests/Matrix44Test.cpp b/tests/Matrix44Test.cpp
index 67af60df90ad3313b9f105a630b01f153b856502..6f1b5e0e68dd6d4db2674eda01b73b0d9ec1b402 100644
--- a/tests/Matrix44Test.cpp
+++ b/tests/Matrix44Test.cpp
@@ -471,6 +471,50 @@ static void test_set_row_col_major(skiatest::Reporter* reporter) {
REPORTER_ASSERT(reporter, nearly_equal(a, b));
}
+static void test_3x3_conversion(skiatest::Reporter* reporter) {
+ SkMScalar values4x4[16] = { 1, 2, 3, 4,
+ 5, 6, 7, 8,
+ 9, 10, 11, 12,
+ 13, 14, 15, 16 };
+ SkMScalar values3x3[9] = { 1, 2, 4,
+ 5, 6, 8,
+ 13, 14, 16 };
+ SkMScalar values4x4flattened[16] = { 1, 2, 0, 4,
+ 5, 6, 0, 8,
+ 0, 0, 1, 0,
+ 13, 14, 0, 16 };
+ SkMatrix44 a44;
+ a44.setRowMajor(values4x4);
+
+ SkMatrix a33 = a44;
+ SkMatrix expected33;
+ for (int i = 0; i < 9; i++) expected33[i] = values3x3[i];
+ REPORTER_ASSERT(reporter, expected33 == a33);
+
+ SkMatrix44 a44flattened = a33;
+ SkMatrix44 expected44flattened;
+ expected44flattened.setRowMajor(values4x4flattened);
+ REPORTER_ASSERT(reporter, nearly_equal(a44flattened, expected44flattened));
+
+ // Test that a point with a Z value of 0 is transformed the same way.
+ SkScalar vec4[4] = { 2, 4, 0, 8 };
+ SkScalar vec3[3] = { 2, 4, 8 };
+
+ SkScalar vec4transformed[4];
+ SkScalar vec3transformed[3];
+ SkScalar vec4transformed2[4];
+ a44.mapScalars(vec4, vec4transformed);
+ a33.mapHomogeneousPoints(vec3transformed, vec3, 1);
+ a44flattened.mapScalars(vec4, vec4transformed2);
+ REPORTER_ASSERT(reporter, vec4transformed[0] == vec3transformed[0]);
+ REPORTER_ASSERT(reporter, vec4transformed[1] == vec3transformed[1]);
+ REPORTER_ASSERT(reporter, vec4transformed[3] == vec3transformed[2]);
+ REPORTER_ASSERT(reporter, vec4transformed[0] == vec4transformed2[0]);
+ REPORTER_ASSERT(reporter, vec4transformed[1] == vec4transformed2[1]);
+ REPORTER_ASSERT(reporter, vec4transformed[2] != vec4transformed2[2]);
+ REPORTER_ASSERT(reporter, vec4transformed[3] == vec4transformed2[3]);
+}
+
static void TestMatrix44(skiatest::Reporter* reporter) {
SkMatrix44 mat, inverse, iden1, iden2, rot;
@@ -572,6 +616,7 @@ static void TestMatrix44(skiatest::Reporter* reporter) {
test_translate(reporter);
test_scale(reporter);
test_map2(reporter);
+ test_3x3_conversion(reporter);
}
#include "TestClassDef.h"
« include/utils/SkMatrix44.h ('K') | « src/utils/SkMatrix44.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698