OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // MSVC++ requires this to be set before any other includes to get M_PI. | 5 // MSVC++ requires this to be set before any other includes to get M_PI. |
6 #define _USE_MATH_DEFINES | 6 #define _USE_MATH_DEFINES |
7 | 7 |
8 #include "ui/gfx/transform.h" | 8 #include "ui/gfx/transform.h" |
9 | 9 |
10 #include <cmath> | 10 #include <cmath> |
(...skipping 717 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 EXPECT_TRUE(to.Blend(from, t)); | 728 EXPECT_TRUE(to.Blend(from, t)); |
729 | 729 |
730 Transform expected; | 730 Transform expected; |
731 expected.RotateAbout(axes[index], 90 * t); | 731 expected.RotateAbout(axes[index], 90 * t); |
732 | 732 |
733 EXPECT_TRUE(MatricesAreNearlyEqual(expected, to)); | 733 EXPECT_TRUE(MatricesAreNearlyEqual(expected, to)); |
734 } | 734 } |
735 } | 735 } |
736 } | 736 } |
737 | 737 |
738 TEST(XFormTest, BlendRotateFollowsShortestPath) { | 738 #if defined(_WIN64) |
| 739 // http://crbug.com/406574 |
| 740 #define MAYBE_BlendRotateFollowsShortestPath DISABLED_BlendRotateFollowsShortest
Path |
| 741 #else |
| 742 #define MAYBE_BlendRotateFollowsShortestPath BlendRotateFollowsShortestPath |
| 743 #endif |
| 744 TEST(XFormTest, MAYBE_BlendRotateFollowsShortestPath) { |
739 // Verify that we interpolate along the shortest path regardless of whether | 745 // Verify that we interpolate along the shortest path regardless of whether |
740 // this path crosses the 180-degree point. | 746 // this path crosses the 180-degree point. |
741 Vector3dF axes[] = { | 747 Vector3dF axes[] = { |
742 Vector3dF(1, 0, 0), | 748 Vector3dF(1, 0, 0), |
743 Vector3dF(0, 1, 0), | 749 Vector3dF(0, 1, 0), |
744 Vector3dF(0, 0, 1), | 750 Vector3dF(0, 0, 1), |
745 Vector3dF(1, 1, 1) | 751 Vector3dF(1, 1, 1) |
746 }; | 752 }; |
747 for (size_t index = 0; index < ARRAYSIZE_UNSAFE(axes); ++index) { | 753 for (size_t index = 0; index < ARRAYSIZE_UNSAFE(axes); ++index) { |
748 for (int i = -5; i < 15; ++i) { | 754 for (int i = -5; i < 15; ++i) { |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
795 Transform expected2; | 801 Transform expected2; |
796 expected2.RotateAbout(axes[index], -180.0 * t); | 802 expected2.RotateAbout(axes[index], -180.0 * t); |
797 | 803 |
798 EXPECT_TRUE(MatricesAreNearlyEqual(expected1, to) || | 804 EXPECT_TRUE(MatricesAreNearlyEqual(expected1, to) || |
799 MatricesAreNearlyEqual(expected2, to)) | 805 MatricesAreNearlyEqual(expected2, to)) |
800 << "axis: " << index << ", i: " << i; | 806 << "axis: " << index << ", i: " << i; |
801 } | 807 } |
802 } | 808 } |
803 } | 809 } |
804 | 810 |
805 TEST(XFormTest, BlendScale) { | 811 #if defined(_WIN64) |
| 812 // http://crbug.com/406574 |
| 813 #define MAYBE_BlendScale DISABLED_BlendScale |
| 814 #else |
| 815 #define MAYBE_BlendScale BlendScale |
| 816 #endif |
| 817 TEST(XFormTest, MAYBE_BlendScale) { |
806 Transform from; | 818 Transform from; |
807 for (int i = -5; i < 15; ++i) { | 819 for (int i = -5; i < 15; ++i) { |
808 Transform to; | 820 Transform to; |
809 to.Scale3d(5, 4, 3); | 821 to.Scale3d(5, 4, 3); |
810 double t = i / 9.0; | 822 double t = i / 9.0; |
811 EXPECT_TRUE(to.Blend(from, t)); | 823 EXPECT_TRUE(to.Blend(from, t)); |
812 EXPECT_FLOAT_EQ(t * 4 + 1, to.matrix().get(0, 0)) << "i: " << i; | 824 EXPECT_FLOAT_EQ(t * 4 + 1, to.matrix().get(0, 0)) << "i: " << i; |
813 EXPECT_FLOAT_EQ(t * 3 + 1, to.matrix().get(1, 1)) << "i: " << i; | 825 EXPECT_FLOAT_EQ(t * 3 + 1, to.matrix().get(1, 1)) << "i: " << i; |
814 EXPECT_FLOAT_EQ(t * 2 + 1, to.matrix().get(2, 2)) << "i: " << i; | 826 EXPECT_FLOAT_EQ(t * 2 + 1, to.matrix().get(2, 2)) << "i: " << i; |
815 } | 827 } |
(...skipping 20 matching lines...) Expand all Loading... |
836 Transform to; | 848 Transform to; |
837 to.SkewX(20); | 849 to.SkewX(20); |
838 double t = i; | 850 double t = i; |
839 Transform expected; | 851 Transform expected; |
840 expected.SkewX(t * 20); | 852 expected.SkewX(t * 20); |
841 EXPECT_TRUE(to.Blend(from, t)); | 853 EXPECT_TRUE(to.Blend(from, t)); |
842 EXPECT_TRUE(MatricesAreNearlyEqual(expected, to)); | 854 EXPECT_TRUE(MatricesAreNearlyEqual(expected, to)); |
843 } | 855 } |
844 } | 856 } |
845 | 857 |
846 TEST(XFormTest, BlendPerspective) { | 858 #if defined(_WIN64) |
| 859 // http://crbug.com/406574 |
| 860 #define MAYBE_BlendPerspective DISABLED_BlendPerspective |
| 861 #else |
| 862 #define MAYBE_BlendPerspective BlendPerspective |
| 863 #endif |
| 864 TEST(XFormTest, MAYBE_BlendPerspective) { |
847 Transform from; | 865 Transform from; |
848 from.ApplyPerspectiveDepth(200); | 866 from.ApplyPerspectiveDepth(200); |
849 for (int i = -1; i < 3; ++i) { | 867 for (int i = -1; i < 3; ++i) { |
850 Transform to; | 868 Transform to; |
851 to.ApplyPerspectiveDepth(800); | 869 to.ApplyPerspectiveDepth(800); |
852 double t = i; | 870 double t = i; |
853 double depth = 1.0 / ((1.0 / 200) * (1.0 - t) + (1.0 / 800) * t); | 871 double depth = 1.0 / ((1.0 / 200) * (1.0 - t) + (1.0 / 800) * t); |
854 Transform expected; | 872 Transform expected; |
855 expected.ApplyPerspectiveDepth(depth); | 873 expected.ApplyPerspectiveDepth(depth); |
856 EXPECT_TRUE(to.Blend(from, t)); | 874 EXPECT_TRUE(to.Blend(from, t)); |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1042 | 1060 |
1043 to = Transform(); | 1061 to = Transform(); |
1044 to.SkewY(45.0); | 1062 to.SkewY(45.0); |
1045 to.Blend(from, 1.0); | 1063 to.Blend(from, 1.0); |
1046 EXPECT_ROW1_NEAR(1.0, 0.0, 0.0, 0.0, to, LOOSE_ERROR_THRESHOLD); | 1064 EXPECT_ROW1_NEAR(1.0, 0.0, 0.0, 0.0, to, LOOSE_ERROR_THRESHOLD); |
1047 EXPECT_ROW2_NEAR(1.0, 1.0, 0.0, 0.0, to, LOOSE_ERROR_THRESHOLD); | 1065 EXPECT_ROW2_NEAR(1.0, 1.0, 0.0, 0.0, to, LOOSE_ERROR_THRESHOLD); |
1048 EXPECT_ROW3_EQ(0.0f, 0.0f, 1.0f, 0.0f, to); | 1066 EXPECT_ROW3_EQ(0.0f, 0.0f, 1.0f, 0.0f, to); |
1049 EXPECT_ROW4_EQ(0.0f, 0.0f, 0.0f, 1.0f, to); | 1067 EXPECT_ROW4_EQ(0.0f, 0.0f, 0.0f, 1.0f, to); |
1050 } | 1068 } |
1051 | 1069 |
1052 TEST(XFormTest, VerifyBlendForRotationAboutX) { | 1070 #if defined(_WIN64) |
| 1071 // http://crbug.com/406574 |
| 1072 #define MAYBE_VerifyBlendForRotationAboutX DISABLED_VerifyBlendForRotationAboutX |
| 1073 #else |
| 1074 #define MAYBE_VerifyBlendForRotationAboutX VerifyBlendForRotationAboutX |
| 1075 #endif |
| 1076 TEST(XFormTest, MAYBE_VerifyBlendForRotationAboutX) { |
1053 // Even though.Blending uses quaternions, axis-aligned rotations should. | 1077 // Even though.Blending uses quaternions, axis-aligned rotations should. |
1054 // Blend the same with quaternions or Euler angles. So we can test | 1078 // Blend the same with quaternions or Euler angles. So we can test |
1055 // rotation.Blending by comparing against manually specified matrices from | 1079 // rotation.Blending by comparing against manually specified matrices from |
1056 // Euler angles. | 1080 // Euler angles. |
1057 | 1081 |
1058 Transform from; | 1082 Transform from; |
1059 from.RotateAbout(Vector3dF(1.0, 0.0, 0.0), 0.0); | 1083 from.RotateAbout(Vector3dF(1.0, 0.0, 0.0), 0.0); |
1060 | 1084 |
1061 Transform to; | 1085 Transform to; |
1062 | 1086 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1104 | 1128 |
1105 to = Transform(); | 1129 to = Transform(); |
1106 to.RotateAbout(Vector3dF(1.0, 0.0, 0.0), 90.0); | 1130 to.RotateAbout(Vector3dF(1.0, 0.0, 0.0), 90.0); |
1107 to.Blend(from, 1.0); | 1131 to.Blend(from, 1.0); |
1108 EXPECT_ROW1_NEAR(1.0, 0.0, 0.0, 0.0, to, ERROR_THRESHOLD); | 1132 EXPECT_ROW1_NEAR(1.0, 0.0, 0.0, 0.0, to, ERROR_THRESHOLD); |
1109 EXPECT_ROW2_NEAR(0.0, 0.0, -1.0, 0.0, to, ERROR_THRESHOLD); | 1133 EXPECT_ROW2_NEAR(0.0, 0.0, -1.0, 0.0, to, ERROR_THRESHOLD); |
1110 EXPECT_ROW3_NEAR(0.0, 1.0, 0.0, 0.0, to, ERROR_THRESHOLD); | 1134 EXPECT_ROW3_NEAR(0.0, 1.0, 0.0, 0.0, to, ERROR_THRESHOLD); |
1111 EXPECT_ROW4_EQ(0.0f, 0.0f, 0.0f, 1.0f, to); | 1135 EXPECT_ROW4_EQ(0.0f, 0.0f, 0.0f, 1.0f, to); |
1112 } | 1136 } |
1113 | 1137 |
1114 TEST(XFormTest, VerifyBlendForRotationAboutY) { | 1138 #if defined(_WIN64) |
| 1139 // http://crbug.com/406574 |
| 1140 #define MAYBE_VerifyBlendForRotationAboutY DISABLED_VerifyBlendForRotationAboutY |
| 1141 #else |
| 1142 #define MAYBE_VerifyBlendForRotationAboutY VerifyBlendForRotationAboutY |
| 1143 #endif |
| 1144 TEST(XFormTest, MAYBE_VerifyBlendForRotationAboutY) { |
1115 Transform from; | 1145 Transform from; |
1116 from.RotateAbout(Vector3dF(0.0, 1.0, 0.0), 0.0); | 1146 from.RotateAbout(Vector3dF(0.0, 1.0, 0.0), 0.0); |
1117 | 1147 |
1118 Transform to; | 1148 Transform to; |
1119 | 1149 |
1120 to.RotateAbout(Vector3dF(0.0, 1.0, 0.0), 90.0); | 1150 to.RotateAbout(Vector3dF(0.0, 1.0, 0.0), 90.0); |
1121 to.Blend(from, 0.0); | 1151 to.Blend(from, 0.0); |
1122 EXPECT_EQ(from, to); | 1152 EXPECT_EQ(from, to); |
1123 | 1153 |
1124 double expectedRotationAngle = 22.5 * M_PI / 180.0; | 1154 double expectedRotationAngle = 22.5 * M_PI / 180.0; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1161 | 1191 |
1162 to = Transform(); | 1192 to = Transform(); |
1163 to.RotateAbout(Vector3dF(0.0, 1.0, 0.0), 90.0); | 1193 to.RotateAbout(Vector3dF(0.0, 1.0, 0.0), 90.0); |
1164 to.Blend(from, 1.0); | 1194 to.Blend(from, 1.0); |
1165 EXPECT_ROW1_NEAR(0.0, 0.0, 1.0, 0.0, to, ERROR_THRESHOLD); | 1195 EXPECT_ROW1_NEAR(0.0, 0.0, 1.0, 0.0, to, ERROR_THRESHOLD); |
1166 EXPECT_ROW2_NEAR(0.0, 1.0, 0.0, 0.0, to, ERROR_THRESHOLD); | 1196 EXPECT_ROW2_NEAR(0.0, 1.0, 0.0, 0.0, to, ERROR_THRESHOLD); |
1167 EXPECT_ROW3_NEAR(-1.0, 0.0, 0.0, 0.0, to, ERROR_THRESHOLD); | 1197 EXPECT_ROW3_NEAR(-1.0, 0.0, 0.0, 0.0, to, ERROR_THRESHOLD); |
1168 EXPECT_ROW4_EQ(0.0f, 0.0f, 0.0f, 1.0f, to); | 1198 EXPECT_ROW4_EQ(0.0f, 0.0f, 0.0f, 1.0f, to); |
1169 } | 1199 } |
1170 | 1200 |
1171 TEST(XFormTest, VerifyBlendForRotationAboutZ) { | 1201 #if defined(_WIN64) |
| 1202 // http://crbug.com/406574 |
| 1203 #define MAYBE_VerifyBlendForRotationAboutZ DISABLED_VerifyBlendForRotationAboutZ |
| 1204 #else |
| 1205 #define MAYBE_VerifyBlendForRotationAboutZ VerifyBlendForRotationAboutZ |
| 1206 #endif |
| 1207 TEST(XFormTest, MAYBE_VerifyBlendForRotationAboutZ) { |
1172 Transform from; | 1208 Transform from; |
1173 from.RotateAbout(Vector3dF(0.0, 0.0, 1.0), 0.0); | 1209 from.RotateAbout(Vector3dF(0.0, 0.0, 1.0), 0.0); |
1174 | 1210 |
1175 Transform to; | 1211 Transform to; |
1176 | 1212 |
1177 to.RotateAbout(Vector3dF(0.0, 0.0, 1.0), 90.0); | 1213 to.RotateAbout(Vector3dF(0.0, 0.0, 1.0), 90.0); |
1178 to.Blend(from, 0.0); | 1214 to.Blend(from, 0.0); |
1179 EXPECT_EQ(from, to); | 1215 EXPECT_EQ(from, to); |
1180 | 1216 |
1181 double expectedRotationAngle = 22.5 * M_PI / 180.0; | 1217 double expectedRotationAngle = 22.5 * M_PI / 180.0; |
(...skipping 1467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2649 EXPECT_EQ(expected.ToString(), box.ToString()); | 2685 EXPECT_EQ(expected.ToString(), box.ToString()); |
2650 | 2686 |
2651 Transform singular; | 2687 Transform singular; |
2652 singular.Scale3d(0.f, 0.f, 0.f); | 2688 singular.Scale3d(0.f, 0.f, 0.f); |
2653 EXPECT_FALSE(singular.TransformBoxReverse(&box)); | 2689 EXPECT_FALSE(singular.TransformBoxReverse(&box)); |
2654 } | 2690 } |
2655 | 2691 |
2656 } // namespace | 2692 } // namespace |
2657 | 2693 |
2658 } // namespace gfx | 2694 } // namespace gfx |
OLD | NEW |