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

Side by Side Diff: tests/Matrix44Test.cpp

Issue 1173673003: A bunch of little SkMScalar-as-float build fixes. (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: Created 5 years, 6 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 unified diff | Download patch
« no previous file with comments | « src/utils/SkMatrix44.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkMatrix44.h" 8 #include "SkMatrix44.h"
9 #include "Test.h" 9 #include "Test.h"
10 10
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 static const Make44Proc gMakeProcs[] = { 193 static const Make44Proc gMakeProcs[] = {
194 make_i, make_t, make_s, make_st, make_a, make_p 194 make_i, make_t, make_s, make_st, make_a, make_p
195 }; 195 };
196 196
197 static void test_map2(skiatest::Reporter* reporter, const SkMatrix44& mat) { 197 static void test_map2(skiatest::Reporter* reporter, const SkMatrix44& mat) {
198 SkMScalar src2[] = { 1, 2 }; 198 SkMScalar src2[] = { 1, 2 };
199 SkMScalar src4[] = { src2[0], src2[1], 0, 1 }; 199 SkMScalar src4[] = { src2[0], src2[1], 0, 1 };
200 SkMScalar dstA[4], dstB[4]; 200 SkMScalar dstA[4], dstB[4];
201 201
202 for (int i = 0; i < 4; ++i) { 202 for (int i = 0; i < 4; ++i) {
203 dstA[i] = 123456789; 203 dstA[i] = SkDoubleToMScalar(123456789);
204 dstB[i] = 987654321; 204 dstB[i] = SkDoubleToMScalar(987654321);
205 } 205 }
206 206
207 mat.map2(src2, 1, dstA); 207 mat.map2(src2, 1, dstA);
208 mat.mapMScalars(src4, dstB); 208 mat.mapMScalars(src4, dstB);
209 209
210 for (int i = 0; i < 4; ++i) { 210 for (int i = 0; i < 4; ++i) {
211 REPORTER_ASSERT(reporter, dstA[i] == dstB[i]); 211 REPORTER_ASSERT(reporter, dstA[i] == dstB[i]);
212 } 212 }
213 } 213 }
214 214
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 REPORTER_ASSERT(reporter, nearly_equal_scalar(vec4transformed[3], vec3transf ormed[2])); 525 REPORTER_ASSERT(reporter, nearly_equal_scalar(vec4transformed[3], vec3transf ormed[2]));
526 REPORTER_ASSERT(reporter, nearly_equal_scalar(vec4transformed[0], vec4transf ormed2[0])); 526 REPORTER_ASSERT(reporter, nearly_equal_scalar(vec4transformed[0], vec4transf ormed2[0]));
527 REPORTER_ASSERT(reporter, nearly_equal_scalar(vec4transformed[1], vec4transf ormed2[1])); 527 REPORTER_ASSERT(reporter, nearly_equal_scalar(vec4transformed[1], vec4transf ormed2[1]));
528 REPORTER_ASSERT(reporter, !nearly_equal_scalar(vec4transformed[2], vec4trans formed2[2])); 528 REPORTER_ASSERT(reporter, !nearly_equal_scalar(vec4transformed[2], vec4trans formed2[2]));
529 REPORTER_ASSERT(reporter, nearly_equal_scalar(vec4transformed[3], vec4transf ormed2[3])); 529 REPORTER_ASSERT(reporter, nearly_equal_scalar(vec4transformed[3], vec4transf ormed2[3]));
530 } 530 }
531 531
532 static void test_has_perspective(skiatest::Reporter* reporter) { 532 static void test_has_perspective(skiatest::Reporter* reporter) {
533 SkMatrix44 transform(SkMatrix44::kIdentity_Constructor); 533 SkMatrix44 transform(SkMatrix44::kIdentity_Constructor);
534 534
535 transform.set(3, 2, -0.1); 535 transform.setDouble(3, 2, -0.1);
536 REPORTER_ASSERT(reporter, transform.hasPerspective()); 536 REPORTER_ASSERT(reporter, transform.hasPerspective());
537 537
538 transform.reset(); 538 transform.reset();
539 REPORTER_ASSERT(reporter, !transform.hasPerspective()); 539 REPORTER_ASSERT(reporter, !transform.hasPerspective());
540 540
541 transform.set(3, 0, -1.0); 541 transform.setDouble(3, 0, -1.0);
542 REPORTER_ASSERT(reporter, transform.hasPerspective()); 542 REPORTER_ASSERT(reporter, transform.hasPerspective());
543 543
544 transform.reset(); 544 transform.reset();
545 transform.set(3, 1, -1.0); 545 transform.setDouble(3, 1, -1.0);
546 REPORTER_ASSERT(reporter, transform.hasPerspective()); 546 REPORTER_ASSERT(reporter, transform.hasPerspective());
547 547
548 transform.reset(); 548 transform.reset();
549 transform.set(3, 2, -0.3); 549 transform.setDouble(3, 2, -0.3);
550 REPORTER_ASSERT(reporter, transform.hasPerspective()); 550 REPORTER_ASSERT(reporter, transform.hasPerspective());
551 551
552 transform.reset(); 552 transform.reset();
553 transform.set(3, 3, 0.5); 553 transform.setDouble(3, 3, 0.5);
554 REPORTER_ASSERT(reporter, transform.hasPerspective()); 554 REPORTER_ASSERT(reporter, transform.hasPerspective());
555 555
556 transform.reset(); 556 transform.reset();
557 transform.set(3, 3, 0.0); 557 transform.setDouble(3, 3, 0.0);
558 REPORTER_ASSERT(reporter, transform.hasPerspective()); 558 REPORTER_ASSERT(reporter, transform.hasPerspective());
559 } 559 }
560 560
561 static bool is_rectilinear (SkVector4& p1, SkVector4& p2, SkVector4& p3, SkVecto r4& p4) { 561 static bool is_rectilinear (SkVector4& p1, SkVector4& p2, SkVector4& p3, SkVecto r4& p4) {
562 return (SkScalarNearlyEqual(p1.fData[0], p2.fData[0]) && 562 return (SkScalarNearlyEqual(p1.fData[0], p2.fData[0]) &&
563 SkScalarNearlyEqual(p2.fData[1], p3.fData[1]) && 563 SkScalarNearlyEqual(p2.fData[1], p3.fData[1]) &&
564 SkScalarNearlyEqual(p3.fData[0], p4.fData[0]) && 564 SkScalarNearlyEqual(p3.fData[0], p4.fData[0]) &&
565 SkScalarNearlyEqual(p4.fData[1], p1.fData[1])) || 565 SkScalarNearlyEqual(p4.fData[1], p1.fData[1])) ||
566 (SkScalarNearlyEqual(p1.fData[1], p2.fData[1]) && 566 (SkScalarNearlyEqual(p1.fData[1], p2.fData[1]) &&
567 SkScalarNearlyEqual(p2.fData[0], p3.fData[0]) && 567 SkScalarNearlyEqual(p2.fData[0], p3.fData[0]) &&
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
750 for (size_t i = 0; i < sizeof(double_rotation_tests)/sizeof(DoubleRotationCase ); ++i) { 750 for (size_t i = 0; i < sizeof(double_rotation_tests)/sizeof(DoubleRotationCase ); ++i) {
751 const DoubleRotationCase& value = double_rotation_tests[i]; 751 const DoubleRotationCase& value = double_rotation_tests[i];
752 transform.setRotateDegreesAbout(value.x1, value.y1, value.z1, value.degrees1 ); 752 transform.setRotateDegreesAbout(value.x1, value.y1, value.z1, value.degrees1 );
753 transform2.setRotateDegreesAbout(value.x2, value.y2, value.z2, value.degrees 2); 753 transform2.setRotateDegreesAbout(value.x2, value.y2, value.z2, value.degrees 2);
754 transform.postConcat(transform2); 754 transform.postConcat(transform2);
755 test(value.expected, reporter, transform); 755 test(value.expected, reporter, transform);
756 } 756 }
757 757
758 // Perspective cases. 758 // Perspective cases.
759 transform.setIdentity(); 759 transform.setIdentity();
760 transform.set(3, 2, -0.1); // Perspective depth 10 760 transform.setDouble(3, 2, -0.1); // Perspective depth 10
761 transform2.setRotateDegreesAbout(0.0, 1.0, 0.0, 45.0); 761 transform2.setRotateDegreesAbout(0.0, 1.0, 0.0, 45.0);
762 transform.preConcat(transform2); 762 transform.preConcat(transform2);
763 test(false, reporter, transform); 763 test(false, reporter, transform);
764 764
765 transform.setIdentity(); 765 transform.setIdentity();
766 transform.set(3, 2, -0.1); // Perspective depth 10 766 transform.setDouble(3, 2, -0.1); // Perspective depth 10
767 transform2.setRotateDegreesAbout(0.0, 0.0, 1.0, 90.0); 767 transform2.setRotateDegreesAbout(0.0, 0.0, 1.0, 90.0);
768 transform.preConcat(transform2); 768 transform.preConcat(transform2);
769 test(true, reporter, transform); 769 test(true, reporter, transform);
770 } 770 }
771 771
772 // just want to exercise the various converters for MScalar 772 // just want to exercise the various converters for MScalar
773 static void test_toint(skiatest::Reporter* reporter) { 773 static void test_toint(skiatest::Reporter* reporter) {
774 SkMatrix44 mat(SkMatrix44::kUninitialized_Constructor); 774 SkMatrix44 mat(SkMatrix44::kUninitialized_Constructor);
775 mat.setScale(3, 3, 3); 775 mat.setScale(3, 3, 3);
776 776
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 mat.postConcat(rot); 812 mat.postConcat(rot);
813 REPORTER_ASSERT(reporter, mat.invert(NULL)); 813 REPORTER_ASSERT(reporter, mat.invert(NULL));
814 mat.invert(&inverse); 814 mat.invert(&inverse);
815 iden1.setConcat(mat, inverse); 815 iden1.setConcat(mat, inverse);
816 REPORTER_ASSERT(reporter, is_identity(iden1)); 816 REPORTER_ASSERT(reporter, is_identity(iden1));
817 iden2.setConcat(inverse, mat); 817 iden2.setConcat(inverse, mat);
818 REPORTER_ASSERT(reporter, is_identity(iden2)); 818 REPORTER_ASSERT(reporter, is_identity(iden2));
819 819
820 // test tiny-valued matrix inverse 820 // test tiny-valued matrix inverse
821 mat.reset(); 821 mat.reset();
822 mat.setScale(1.0e-12, 1.0e-12, 1.0e-12); 822 auto v = SkDoubleToMScalar(1.0e-12);
823 mat.setScale(v,v,v);
823 rot.setRotateDegreesAbout(0, 0, -1, 90); 824 rot.setRotateDegreesAbout(0, 0, -1, 90);
824 mat.postConcat(rot); 825 mat.postConcat(rot);
825 mat.postTranslate(1.0e-12, 1.0e-12, 1.0e-12); 826 mat.postTranslate(v,v,v);
826 REPORTER_ASSERT(reporter, mat.invert(NULL)); 827 REPORTER_ASSERT(reporter, mat.invert(NULL));
827 mat.invert(&inverse); 828 mat.invert(&inverse);
828 iden1.setConcat(mat, inverse); 829 iden1.setConcat(mat, inverse);
829 REPORTER_ASSERT(reporter, is_identity(iden1)); 830 REPORTER_ASSERT(reporter, is_identity(iden1));
830 831
831 // test mixed-valued matrix inverse 832 // test mixed-valued matrix inverse
832 mat.reset(); 833 mat.reset();
833 mat.setScale(1.0e-10, 3.0, 1.0e+10); 834 mat.setScale(SkDoubleToMScalar(1.0e-10),
835 SkDoubleToMScalar(3.0),
836 SkDoubleToMScalar(1.0e+10));
834 rot.setRotateDegreesAbout(0, 0, -1, 90); 837 rot.setRotateDegreesAbout(0, 0, -1, 90);
835 mat.postConcat(rot); 838 mat.postConcat(rot);
836 mat.postTranslate(1.0e+10, 3.0, 1.0e-10); 839 mat.postTranslate(SkDoubleToMScalar(1.0e+10),
840 SkDoubleToMScalar(3.0),
841 SkDoubleToMScalar(1.0e-10));
837 REPORTER_ASSERT(reporter, mat.invert(NULL)); 842 REPORTER_ASSERT(reporter, mat.invert(NULL));
838 mat.invert(&inverse); 843 mat.invert(&inverse);
839 iden1.setConcat(mat, inverse); 844 iden1.setConcat(mat, inverse);
840 REPORTER_ASSERT(reporter, is_identity(iden1)); 845 REPORTER_ASSERT(reporter, is_identity(iden1));
841 846
842 // test degenerate matrix 847 // test degenerate matrix
843 mat.reset(); 848 mat.reset();
844 mat.set3x3(1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0); 849 mat.set3x3(1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0);
845 REPORTER_ASSERT(reporter, !mat.invert(NULL)); 850 REPORTER_ASSERT(reporter, !mat.invert(NULL));
846 851
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
887 test_get_set_double(reporter); 892 test_get_set_double(reporter);
888 test_set_row_col_major(reporter); 893 test_set_row_col_major(reporter);
889 test_translate(reporter); 894 test_translate(reporter);
890 test_scale(reporter); 895 test_scale(reporter);
891 test_map2(reporter); 896 test_map2(reporter);
892 test_3x3_conversion(reporter); 897 test_3x3_conversion(reporter);
893 test_has_perspective(reporter); 898 test_has_perspective(reporter);
894 test_preserves_2d_axis_alignment(reporter); 899 test_preserves_2d_axis_alignment(reporter);
895 test_toint(reporter); 900 test_toint(reporter);
896 } 901 }
OLDNEW
« no previous file with comments | « src/utils/SkMatrix44.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698