| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "base/memory/scoped_vector.h" | 5 #include "base/memory/scoped_vector.h" |
| 6 #include "cc/test/geometry_test_utils.h" | 6 #include "cc/test/geometry_test_utils.h" |
| 7 #include "cc/transform_operations.h" | 7 #include "cc/transform_operations.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa
trix.h" | 9 #include "ui/gfx/vector3d_f.h" |
| 10 | |
| 11 using WebKit::WebTransformationMatrix; | |
| 12 | 10 |
| 13 namespace cc { | 11 namespace cc { |
| 14 namespace { | 12 namespace { |
| 15 | 13 |
| 16 TEST(TransformOperationTest, TransformTypesAreUnique) { | 14 TEST(TransformOperationTest, TransformTypesAreUnique) { |
| 17 ScopedVector<TransformOperations> transforms; | 15 ScopedVector<TransformOperations> transforms; |
| 18 | 16 |
| 19 TransformOperations* to_add = new TransformOperations(); | 17 TransformOperations* to_add = new TransformOperations(); |
| 20 to_add->AppendTranslate(1, 0, 0); | 18 to_add->AppendTranslate(1, 0, 0); |
| 21 transforms.push_back(to_add); | 19 transforms.push_back(to_add); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 to_add = new TransformOperations(); | 117 to_add = new TransformOperations(); |
| 120 to_add->AppendRotate(0, 0, 1, 0); | 118 to_add->AppendRotate(0, 0, 1, 0); |
| 121 operations->push_back(to_add); | 119 operations->push_back(to_add); |
| 122 | 120 |
| 123 to_add = new TransformOperations(); | 121 to_add = new TransformOperations(); |
| 124 to_add->AppendRotate(0, 0, 1, 0); | 122 to_add->AppendRotate(0, 0, 1, 0); |
| 125 to_add->AppendRotate(0, 0, 1, 0); | 123 to_add->AppendRotate(0, 0, 1, 0); |
| 126 operations->push_back(to_add); | 124 operations->push_back(to_add); |
| 127 | 125 |
| 128 to_add = new TransformOperations(); | 126 to_add = new TransformOperations(); |
| 129 to_add->AppendMatrix(WebTransformationMatrix()); | 127 to_add->AppendMatrix(gfx::Transform()); |
| 130 operations->push_back(to_add); | 128 operations->push_back(to_add); |
| 131 | 129 |
| 132 to_add = new TransformOperations(); | 130 to_add = new TransformOperations(); |
| 133 to_add->AppendMatrix(WebTransformationMatrix()); | 131 to_add->AppendMatrix(gfx::Transform()); |
| 134 to_add->AppendMatrix(WebTransformationMatrix()); | 132 to_add->AppendMatrix(gfx::Transform()); |
| 135 operations->push_back(to_add); | 133 operations->push_back(to_add); |
| 136 } | 134 } |
| 137 | 135 |
| 138 TEST(TransformOperationTest, IdentityAlwaysMatches) { | 136 TEST(TransformOperationTest, IdentityAlwaysMatches) { |
| 139 ScopedVector<TransformOperations> operations; | 137 ScopedVector<TransformOperations> operations; |
| 140 GetIdentityOperations(&operations); | 138 GetIdentityOperations(&operations); |
| 141 | 139 |
| 142 for (size_t i = 0; i < operations.size(); ++i) { | 140 for (size_t i = 0; i < operations.size(); ++i) { |
| 143 for (size_t j = 0; j < operations.size(); ++j) | 141 for (size_t j = 0; j < operations.size(); ++j) |
| 144 EXPECT_TRUE(operations[i]->MatchesTypes(*operations[j])); | 142 EXPECT_TRUE(operations[i]->MatchesTypes(*operations[j])); |
| 145 } | 143 } |
| 146 } | 144 } |
| 147 | 145 |
| 148 TEST(TransformOperationTest, ApplyTranslate) { | 146 TEST(TransformOperationTest, ApplyTranslate) { |
| 149 double x = 1; | 147 double x = 1; |
| 150 double y = 2; | 148 double y = 2; |
| 151 double z = 3; | 149 double z = 3; |
| 152 TransformOperations operations; | 150 TransformOperations operations; |
| 153 operations.AppendTranslate(x, y, z); | 151 operations.AppendTranslate(x, y, z); |
| 154 WebTransformationMatrix expected; | 152 gfx::Transform expected; |
| 155 expected.translate3d(x, y, z); | 153 expected.Translate3d(x, y, z); |
| 156 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 154 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
| 157 } | 155 } |
| 158 | 156 |
| 159 TEST(TransformOperationTest, ApplyRotate) { | 157 TEST(TransformOperationTest, ApplyRotate) { |
| 160 double x = 1; | 158 double x = 1; |
| 161 double y = 2; | 159 double y = 2; |
| 162 double z = 3; | 160 double z = 3; |
| 163 double degrees = 80; | 161 double degrees = 80; |
| 164 TransformOperations operations; | 162 TransformOperations operations; |
| 165 operations.AppendRotate(x, y, z, degrees); | 163 operations.AppendRotate(x, y, z, degrees); |
| 166 WebTransformationMatrix expected; | 164 gfx::Transform expected; |
| 167 expected.rotate3d(x, y, z, degrees); | 165 expected.RotateAbout(gfx::Vector3dF(x, y, z), degrees); |
| 168 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 166 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
| 169 } | 167 } |
| 170 | 168 |
| 171 TEST(TransformOperationTest, ApplyScale) { | 169 TEST(TransformOperationTest, ApplyScale) { |
| 172 double x = 1; | 170 double x = 1; |
| 173 double y = 2; | 171 double y = 2; |
| 174 double z = 3; | 172 double z = 3; |
| 175 TransformOperations operations; | 173 TransformOperations operations; |
| 176 operations.AppendScale(x, y, z); | 174 operations.AppendScale(x, y, z); |
| 177 WebTransformationMatrix expected; | 175 gfx::Transform expected; |
| 178 expected.scale3d(x, y, z); | 176 expected.Scale3d(x, y, z); |
| 179 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 177 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
| 180 } | 178 } |
| 181 | 179 |
| 182 TEST(TransformOperationTest, ApplySkew) { | 180 TEST(TransformOperationTest, ApplySkew) { |
| 183 double x = 1; | 181 double x = 1; |
| 184 double y = 2; | 182 double y = 2; |
| 185 TransformOperations operations; | 183 TransformOperations operations; |
| 186 operations.AppendSkew(x, y); | 184 operations.AppendSkew(x, y); |
| 187 WebTransformationMatrix expected; | 185 gfx::Transform expected; |
| 188 expected.skewX(x); | 186 expected.SkewX(x); |
| 189 expected.skewY(y); | 187 expected.SkewY(y); |
| 190 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 188 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
| 191 } | 189 } |
| 192 | 190 |
| 193 TEST(TransformOperationTest, ApplyPerspective) { | 191 TEST(TransformOperationTest, ApplyPerspective) { |
| 194 double depth = 800; | 192 double depth = 800; |
| 195 TransformOperations operations; | 193 TransformOperations operations; |
| 196 operations.AppendPerspective(depth); | 194 operations.AppendPerspective(depth); |
| 197 WebTransformationMatrix expected; | 195 gfx::Transform expected; |
| 198 expected.applyPerspective(depth); | 196 expected.ApplyPerspectiveDepth(depth); |
| 199 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 197 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
| 200 } | 198 } |
| 201 | 199 |
| 202 TEST(TransformOperationTest, ApplyMatrix) { | 200 TEST(TransformOperationTest, ApplyMatrix) { |
| 203 double dx = 1; | 201 double dx = 1; |
| 204 double dy = 2; | 202 double dy = 2; |
| 205 double dz = 3; | 203 double dz = 3; |
| 206 WebTransformationMatrix expected_matrix; | 204 gfx::Transform expected_matrix; |
| 207 expected_matrix.translate3d(dx, dy, dz); | 205 expected_matrix.Translate3d(dx, dy, dz); |
| 208 TransformOperations matrix_transform; | 206 TransformOperations matrix_transform; |
| 209 matrix_transform.AppendMatrix(expected_matrix); | 207 matrix_transform.AppendMatrix(expected_matrix); |
| 210 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_matrix, matrix_transform.Apply()); | 208 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_matrix, matrix_transform.Apply()); |
| 211 } | 209 } |
| 212 | 210 |
| 213 TEST(TransformOperationTest, ApplyOrder) { | 211 TEST(TransformOperationTest, ApplyOrder) { |
| 214 double sx = 2; | 212 double sx = 2; |
| 215 double sy = 4; | 213 double sy = 4; |
| 216 double sz = 8; | 214 double sz = 8; |
| 217 | 215 |
| 218 double dx = 1; | 216 double dx = 1; |
| 219 double dy = 2; | 217 double dy = 2; |
| 220 double dz = 3; | 218 double dz = 3; |
| 221 | 219 |
| 222 TransformOperations operations; | 220 TransformOperations operations; |
| 223 operations.AppendScale(sx, sy, sz); | 221 operations.AppendScale(sx, sy, sz); |
| 224 operations.AppendTranslate(dx, dy, dz); | 222 operations.AppendTranslate(dx, dy, dz); |
| 225 | 223 |
| 226 WebTransformationMatrix expected_scale_matrix; | 224 gfx::Transform expected_scale_matrix; |
| 227 expected_scale_matrix.scale3d(sx, sy, sz); | 225 expected_scale_matrix.Scale3d(sx, sy, sz); |
| 228 | 226 |
| 229 WebTransformationMatrix expected_translate_matrix; | 227 gfx::Transform expected_translate_matrix; |
| 230 expected_translate_matrix.translate3d(dx, dy, dz); | 228 expected_translate_matrix.Translate3d(dx, dy, dz); |
| 231 | 229 |
| 232 WebTransformationMatrix expected_combined_matrix = expected_scale_matrix; | 230 gfx::Transform expected_combined_matrix = expected_scale_matrix; |
| 233 expected_combined_matrix.multiply(expected_translate_matrix); | 231 expected_combined_matrix.PreconcatTransform(expected_translate_matrix); |
| 234 | 232 |
| 235 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_combined_matrix, operations.Apply()); | 233 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_combined_matrix, operations.Apply()); |
| 236 } | 234 } |
| 237 | 235 |
| 238 TEST(TransformOperationTest, BlendOrder) { | 236 TEST(TransformOperationTest, BlendOrder) { |
| 239 double sx1 = 2; | 237 double sx1 = 2; |
| 240 double sy1 = 4; | 238 double sy1 = 4; |
| 241 double sz1 = 8; | 239 double sz1 = 8; |
| 242 | 240 |
| 243 double dx1 = 1; | 241 double dx1 = 1; |
| 244 double dy1 = 2; | 242 double dy1 = 2; |
| 245 double dz1 = 3; | 243 double dz1 = 3; |
| 246 | 244 |
| 247 double sx2 = 4; | 245 double sx2 = 4; |
| 248 double sy2 = 8; | 246 double sy2 = 8; |
| 249 double sz2 = 16; | 247 double sz2 = 16; |
| 250 | 248 |
| 251 double dx2 = 10; | 249 double dx2 = 10; |
| 252 double dy2 = 20; | 250 double dy2 = 20; |
| 253 double dz2 = 30; | 251 double dz2 = 30; |
| 254 | 252 |
| 255 TransformOperations operations_from; | 253 TransformOperations operations_from; |
| 256 operations_from.AppendScale(sx1, sy1, sz1); | 254 operations_from.AppendScale(sx1, sy1, sz1); |
| 257 operations_from.AppendTranslate(dx1, dy1, dz1); | 255 operations_from.AppendTranslate(dx1, dy1, dz1); |
| 258 | 256 |
| 259 TransformOperations operations_to; | 257 TransformOperations operations_to; |
| 260 operations_to.AppendScale(sx2, sy2, sz2); | 258 operations_to.AppendScale(sx2, sy2, sz2); |
| 261 operations_to.AppendTranslate(dx2, dy2, dz2); | 259 operations_to.AppendTranslate(dx2, dy2, dz2); |
| 262 | 260 |
| 263 WebTransformationMatrix scale_from; | 261 gfx::Transform scale_from; |
| 264 scale_from.scale3d(sx1, sy1, sz1); | 262 scale_from.Scale3d(sx1, sy1, sz1); |
| 265 WebTransformationMatrix translate_from; | 263 gfx::Transform translate_from; |
| 266 translate_from.translate3d(dx1, dy1, dz1); | 264 translate_from.Translate3d(dx1, dy1, dz1); |
| 267 | 265 |
| 268 WebTransformationMatrix scale_to; | 266 gfx::Transform scale_to; |
| 269 scale_to.scale3d(sx2, sy2, sz2); | 267 scale_to.Scale3d(sx2, sy2, sz2); |
| 270 WebTransformationMatrix translate_to; | 268 gfx::Transform translate_to; |
| 271 translate_to.translate3d(dx2, dy2, dz2); | 269 translate_to.Translate3d(dx2, dy2, dz2); |
| 272 | 270 |
| 273 double progress = 0.25; | 271 double progress = 0.25; |
| 274 | 272 |
| 275 WebTransformationMatrix blended_scale = scale_to; | 273 gfx::Transform blended_scale = scale_to; |
| 276 blended_scale.blend(scale_from, progress); | 274 blended_scale.Blend(scale_from, progress); |
| 277 | 275 |
| 278 WebTransformationMatrix blended_translate = translate_to; | 276 gfx::Transform blended_translate = translate_to; |
| 279 blended_translate.blend(translate_from, progress); | 277 blended_translate.Blend(translate_from, progress); |
| 280 | 278 |
| 281 WebTransformationMatrix expected = blended_scale; | 279 gfx::Transform expected = blended_scale; |
| 282 expected.multiply(blended_translate); | 280 expected.PreconcatTransform(blended_translate); |
| 283 | 281 |
| 284 EXPECT_TRANSFORMATION_MATRIX_EQ( | 282 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 285 expected, operations_to.Blend(operations_from, progress)); | 283 expected, operations_to.Blend(operations_from, progress)); |
| 286 } | 284 } |
| 287 | 285 |
| 288 static void CheckProgress(double progress, | 286 static void CheckProgress(double progress, |
| 289 const WebTransformationMatrix& from_matrix, | 287 const gfx::Transform& from_matrix, |
| 290 const WebTransformationMatrix& to_matrix, | 288 const gfx::Transform& to_matrix, |
| 291 const TransformOperations& from_transform, | 289 const TransformOperations& from_transform, |
| 292 const TransformOperations& to_transform) { | 290 const TransformOperations& to_transform) { |
| 293 WebTransformationMatrix expected_matrix = to_matrix; | 291 gfx::Transform expected_matrix = to_matrix; |
| 294 expected_matrix.blend(from_matrix, progress); | 292 expected_matrix.Blend(from_matrix, progress); |
| 295 EXPECT_TRANSFORMATION_MATRIX_EQ( | 293 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 296 expected_matrix, to_transform.Blend(from_transform, progress)); | 294 expected_matrix, to_transform.Blend(from_transform, progress)); |
| 297 } | 295 } |
| 298 | 296 |
| 299 TEST(TransformOperationTest, BlendProgress) { | 297 TEST(TransformOperationTest, BlendProgress) { |
| 300 double sx = 2; | 298 double sx = 2; |
| 301 double sy = 4; | 299 double sy = 4; |
| 302 double sz = 8; | 300 double sz = 8; |
| 303 TransformOperations operations_from; | 301 TransformOperations operations_from; |
| 304 operations_from.AppendScale(sx, sy, sz); | 302 operations_from.AppendScale(sx, sy, sz); |
| 305 | 303 |
| 306 WebTransformationMatrix matrix_from; | 304 gfx::Transform matrix_from; |
| 307 matrix_from.scale3d(sx, sy, sz); | 305 matrix_from.Scale3d(sx, sy, sz); |
| 308 | 306 |
| 309 sx = 4; | 307 sx = 4; |
| 310 sy = 8; | 308 sy = 8; |
| 311 sz = 16; | 309 sz = 16; |
| 312 TransformOperations operations_to; | 310 TransformOperations operations_to; |
| 313 operations_to.AppendScale(sx, sy, sz); | 311 operations_to.AppendScale(sx, sy, sz); |
| 314 | 312 |
| 315 WebTransformationMatrix matrix_to; | 313 gfx::Transform matrix_to; |
| 316 matrix_to.scale3d(sx, sy, sz); | 314 matrix_to.Scale3d(sx, sy, sz); |
| 317 | 315 |
| 318 CheckProgress(-1, matrix_from, matrix_to, operations_from, operations_to); | 316 CheckProgress(-1, matrix_from, matrix_to, operations_from, operations_to); |
| 319 CheckProgress(0, matrix_from, matrix_to, operations_from, operations_to); | 317 CheckProgress(0, matrix_from, matrix_to, operations_from, operations_to); |
| 320 CheckProgress(0.25, matrix_from, matrix_to, operations_from, operations_to); | 318 CheckProgress(0.25, matrix_from, matrix_to, operations_from, operations_to); |
| 321 CheckProgress(0.5, matrix_from, matrix_to, operations_from, operations_to); | 319 CheckProgress(0.5, matrix_from, matrix_to, operations_from, operations_to); |
| 322 CheckProgress(1, matrix_from, matrix_to, operations_from, operations_to); | 320 CheckProgress(1, matrix_from, matrix_to, operations_from, operations_to); |
| 323 CheckProgress(2, matrix_from, matrix_to, operations_from, operations_to); | 321 CheckProgress(2, matrix_from, matrix_to, operations_from, operations_to); |
| 324 } | 322 } |
| 325 | 323 |
| 326 TEST(TransformOperationTest, BlendWhenTypesDoNotMatch) { | 324 TEST(TransformOperationTest, BlendWhenTypesDoNotMatch) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 341 double dz2 = 30; | 339 double dz2 = 30; |
| 342 | 340 |
| 343 TransformOperations operations_from; | 341 TransformOperations operations_from; |
| 344 operations_from.AppendScale(sx1, sy1, sz1); | 342 operations_from.AppendScale(sx1, sy1, sz1); |
| 345 operations_from.AppendTranslate(dx1, dy1, dz1); | 343 operations_from.AppendTranslate(dx1, dy1, dz1); |
| 346 | 344 |
| 347 TransformOperations operations_to; | 345 TransformOperations operations_to; |
| 348 operations_to.AppendTranslate(dx2, dy2, dz2); | 346 operations_to.AppendTranslate(dx2, dy2, dz2); |
| 349 operations_to.AppendScale(sx2, sy2, sz2); | 347 operations_to.AppendScale(sx2, sy2, sz2); |
| 350 | 348 |
| 351 WebTransformationMatrix from; | 349 gfx::Transform from; |
| 352 from.scale3d(sx1, sy1, sz1); | 350 from.Scale3d(sx1, sy1, sz1); |
| 353 from.translate3d(dx1, dy1, dz1); | 351 from.Translate3d(dx1, dy1, dz1); |
| 354 | 352 |
| 355 WebTransformationMatrix to; | 353 gfx::Transform to; |
| 356 to.translate3d(dx2, dy2, dz2); | 354 to.Translate3d(dx2, dy2, dz2); |
| 357 to.scale3d(sx2, sy2, sz2); | 355 to.Scale3d(sx2, sy2, sz2); |
| 358 | 356 |
| 359 double progress = 0.25; | 357 double progress = 0.25; |
| 360 | 358 |
| 361 WebTransformationMatrix expected = to; | 359 gfx::Transform expected = to; |
| 362 expected.blend(from, progress); | 360 expected.Blend(from, progress); |
| 363 | 361 |
| 364 EXPECT_TRANSFORMATION_MATRIX_EQ( | 362 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 365 expected, operations_to.Blend(operations_from, progress)); | 363 expected, operations_to.Blend(operations_from, progress)); |
| 366 } | 364 } |
| 367 | 365 |
| 368 TEST(TransformOperationTest, LargeRotationsWithSameAxis) { | 366 TEST(TransformOperationTest, LargeRotationsWithSameAxis) { |
| 369 TransformOperations operations_from; | 367 TransformOperations operations_from; |
| 370 operations_from.AppendRotate(0, 0, 1, 0); | 368 operations_from.AppendRotate(0, 0, 1, 0); |
| 371 | 369 |
| 372 TransformOperations operations_to; | 370 TransformOperations operations_to; |
| 373 operations_to.AppendRotate(0, 0, 2, 360); | 371 operations_to.AppendRotate(0, 0, 2, 360); |
| 374 | 372 |
| 375 double progress = 0.5; | 373 double progress = 0.5; |
| 376 | 374 |
| 377 WebTransformationMatrix expected; | 375 gfx::Transform expected; |
| 378 expected.rotate3d(0, 0, 1, 180); | 376 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 180); |
| 379 | 377 |
| 380 EXPECT_TRANSFORMATION_MATRIX_EQ( | 378 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 381 expected, operations_to.Blend(operations_from, progress)); | 379 expected, operations_to.Blend(operations_from, progress)); |
| 382 } | 380 } |
| 383 | 381 |
| 384 TEST(TransformOperationTest, LargeRotationsWithSameAxisInDifferentDirection) { | 382 TEST(TransformOperationTest, LargeRotationsWithSameAxisInDifferentDirection) { |
| 385 TransformOperations operations_from; | 383 TransformOperations operations_from; |
| 386 operations_from.AppendRotate(0, 0, 1, 180); | 384 operations_from.AppendRotate(0, 0, 1, 180); |
| 387 | 385 |
| 388 TransformOperations operations_to; | 386 TransformOperations operations_to; |
| 389 operations_to.AppendRotate(0, 0, -1, 180); | 387 operations_to.AppendRotate(0, 0, -1, 180); |
| 390 | 388 |
| 391 double progress = 0.5; | 389 double progress = 0.5; |
| 392 | 390 |
| 393 WebTransformationMatrix expected; | 391 gfx::Transform expected; |
| 394 | 392 |
| 395 EXPECT_TRANSFORMATION_MATRIX_EQ( | 393 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 396 expected, operations_to.Blend(operations_from, progress)); | 394 expected, operations_to.Blend(operations_from, progress)); |
| 397 } | 395 } |
| 398 | 396 |
| 399 TEST(TransformOperationTest, LargeRotationsWithDifferentAxes) { | 397 TEST(TransformOperationTest, LargeRotationsWithDifferentAxes) { |
| 400 TransformOperations operations_from; | 398 TransformOperations operations_from; |
| 401 operations_from.AppendRotate(0, 0, 1, 180); | 399 operations_from.AppendRotate(0, 0, 1, 175); |
| 402 | 400 |
| 403 TransformOperations operations_to; | 401 TransformOperations operations_to; |
| 404 operations_to.AppendRotate(0, 1, 0, 180); | 402 operations_to.AppendRotate(0, 1, 0, 175); |
| 405 | 403 |
| 406 double progress = 0.5; | 404 double progress = 0.5; |
| 407 WebTransformationMatrix matrix_from; | 405 gfx::Transform matrix_from; |
| 408 matrix_from.rotate3d(0, 0, 1, 180); | 406 matrix_from.RotateAbout(gfx::Vector3dF(0, 0, 1), 175); |
| 409 | 407 |
| 410 WebTransformationMatrix matrix_to; | 408 gfx::Transform matrix_to; |
| 411 matrix_to.rotate3d(0, 1, 0, 180); | 409 matrix_to.RotateAbout(gfx::Vector3dF(0, 1, 0), 175); |
| 412 | 410 |
| 413 WebTransformationMatrix expected = matrix_to; | 411 gfx::Transform expected = matrix_to; |
| 414 expected.blend(matrix_from, progress); | 412 expected.Blend(matrix_from, progress); |
| 415 | 413 |
| 416 EXPECT_TRANSFORMATION_MATRIX_EQ( | 414 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 417 expected, operations_to.Blend(operations_from, progress)); | 415 expected, operations_to.Blend(operations_from, progress)); |
| 418 } | 416 } |
| 419 | 417 |
| 420 TEST(TransformOperationTest, BlendRotationFromIdentity) { | 418 TEST(TransformOperationTest, BlendRotationFromIdentity) { |
| 421 ScopedVector<TransformOperations> identity_operations; | 419 ScopedVector<TransformOperations> identity_operations; |
| 422 GetIdentityOperations(&identity_operations); | 420 GetIdentityOperations(&identity_operations); |
| 423 | 421 |
| 424 for (size_t i = 0; i < identity_operations.size(); ++i) { | 422 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 425 TransformOperations operations; | 423 TransformOperations operations; |
| 426 operations.AppendRotate(0, 0, 1, 360); | 424 operations.AppendRotate(0, 0, 1, 360); |
| 427 | 425 |
| 428 double progress = 0.5; | 426 double progress = 0.5; |
| 429 | 427 |
| 430 WebTransformationMatrix expected; | 428 gfx::Transform expected; |
| 431 expected.rotate3d(0, 0, 1, 180); | 429 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 180); |
| 432 | 430 |
| 433 EXPECT_TRANSFORMATION_MATRIX_EQ( | 431 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 434 expected, operations.Blend(*identity_operations[i], progress)); | 432 expected, operations.Blend(*identity_operations[i], progress)); |
| 435 } | 433 } |
| 436 } | 434 } |
| 437 | 435 |
| 438 TEST(TransformOperationTest, BlendTranslationFromIdentity) { | 436 TEST(TransformOperationTest, BlendTranslationFromIdentity) { |
| 439 ScopedVector<TransformOperations> identity_operations; | 437 ScopedVector<TransformOperations> identity_operations; |
| 440 GetIdentityOperations(&identity_operations); | 438 GetIdentityOperations(&identity_operations); |
| 441 | 439 |
| 442 for (size_t i = 0; i < identity_operations.size(); ++i) { | 440 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 443 TransformOperations operations; | 441 TransformOperations operations; |
| 444 operations.AppendTranslate(2, 2, 2); | 442 operations.AppendTranslate(2, 2, 2); |
| 445 | 443 |
| 446 double progress = 0.5; | 444 double progress = 0.5; |
| 447 | 445 |
| 448 WebTransformationMatrix expected; | 446 gfx::Transform expected; |
| 449 expected.translate3d(1, 1, 1); | 447 expected.Translate3d(1, 1, 1); |
| 450 | 448 |
| 451 EXPECT_TRANSFORMATION_MATRIX_EQ( | 449 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 452 expected, operations.Blend(*identity_operations[i], progress)); | 450 expected, operations.Blend(*identity_operations[i], progress)); |
| 453 } | 451 } |
| 454 } | 452 } |
| 455 | 453 |
| 456 TEST(TransformOperationTest, BlendScaleFromIdentity) { | 454 TEST(TransformOperationTest, BlendScaleFromIdentity) { |
| 457 ScopedVector<TransformOperations> identity_operations; | 455 ScopedVector<TransformOperations> identity_operations; |
| 458 GetIdentityOperations(&identity_operations); | 456 GetIdentityOperations(&identity_operations); |
| 459 | 457 |
| 460 for (size_t i = 0; i < identity_operations.size(); ++i) { | 458 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 461 TransformOperations operations; | 459 TransformOperations operations; |
| 462 operations.AppendScale(3, 3, 3); | 460 operations.AppendScale(3, 3, 3); |
| 463 | 461 |
| 464 double progress = 0.5; | 462 double progress = 0.5; |
| 465 | 463 |
| 466 WebTransformationMatrix expected; | 464 gfx::Transform expected; |
| 467 expected.scale3d(2, 2, 2); | 465 expected.Scale3d(2, 2, 2); |
| 468 | 466 |
| 469 EXPECT_TRANSFORMATION_MATRIX_EQ( | 467 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 470 expected, operations.Blend(*identity_operations[i], progress)); | 468 expected, operations.Blend(*identity_operations[i], progress)); |
| 471 } | 469 } |
| 472 } | 470 } |
| 473 | 471 |
| 474 TEST(TransformOperationTest, BlendSkewFromIdentity) { | 472 TEST(TransformOperationTest, BlendSkewFromIdentity) { |
| 475 ScopedVector<TransformOperations> identity_operations; | 473 ScopedVector<TransformOperations> identity_operations; |
| 476 GetIdentityOperations(&identity_operations); | 474 GetIdentityOperations(&identity_operations); |
| 477 | 475 |
| 478 for (size_t i = 0; i < identity_operations.size(); ++i) { | 476 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 479 TransformOperations operations; | 477 TransformOperations operations; |
| 480 operations.AppendSkew(2, 2); | 478 operations.AppendSkew(2, 2); |
| 481 | 479 |
| 482 double progress = 0.5; | 480 double progress = 0.5; |
| 483 | 481 |
| 484 WebTransformationMatrix expected; | 482 gfx::Transform expected; |
| 485 expected.skewX(1); | 483 expected.SkewX(1); |
| 486 expected.skewY(1); | 484 expected.SkewY(1); |
| 487 | 485 |
| 488 EXPECT_TRANSFORMATION_MATRIX_EQ( | 486 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 489 expected, operations.Blend(*identity_operations[i], progress)); | 487 expected, operations.Blend(*identity_operations[i], progress)); |
| 490 } | 488 } |
| 491 } | 489 } |
| 492 | 490 |
| 493 TEST(TransformOperationTest, BlendPerspectiveFromIdentity) { | 491 TEST(TransformOperationTest, BlendPerspectiveFromIdentity) { |
| 494 ScopedVector<TransformOperations> identity_operations; | 492 ScopedVector<TransformOperations> identity_operations; |
| 495 GetIdentityOperations(&identity_operations); | 493 GetIdentityOperations(&identity_operations); |
| 496 | 494 |
| 497 for (size_t i = 0; i < identity_operations.size(); ++i) { | 495 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 498 TransformOperations operations; | 496 TransformOperations operations; |
| 499 operations.AppendPerspective(1000); | 497 operations.AppendPerspective(1000); |
| 500 | 498 |
| 501 double progress = 0.5; | 499 double progress = 0.5; |
| 502 | 500 |
| 503 WebTransformationMatrix expected; | 501 gfx::Transform expected; |
| 504 expected.applyPerspective(500 + 0.5 * std::numeric_limits<double>::max()); | 502 expected.ApplyPerspectiveDepth( |
| 503 500 + 0.5 * std::numeric_limits<double>::max()); |
| 505 | 504 |
| 506 EXPECT_TRANSFORMATION_MATRIX_EQ( | 505 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 507 expected, operations.Blend(*identity_operations[i], progress)); | 506 expected, operations.Blend(*identity_operations[i], progress)); |
| 508 } | 507 } |
| 509 } | 508 } |
| 510 | 509 |
| 511 TEST(TransformOperationTest, BlendRotationToIdentity) { | 510 TEST(TransformOperationTest, BlendRotationToIdentity) { |
| 512 ScopedVector<TransformOperations> identity_operations; | 511 ScopedVector<TransformOperations> identity_operations; |
| 513 GetIdentityOperations(&identity_operations); | 512 GetIdentityOperations(&identity_operations); |
| 514 | 513 |
| 515 for (size_t i = 0; i < identity_operations.size(); ++i) { | 514 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 516 TransformOperations operations; | 515 TransformOperations operations; |
| 517 operations.AppendRotate(0, 0, 1, 360); | 516 operations.AppendRotate(0, 0, 1, 360); |
| 518 | 517 |
| 519 double progress = 0.5; | 518 double progress = 0.5; |
| 520 | 519 |
| 521 WebTransformationMatrix expected; | 520 gfx::Transform expected; |
| 522 expected.rotate3d(0, 0, 1, 180); | 521 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 180); |
| 523 | 522 |
| 524 EXPECT_TRANSFORMATION_MATRIX_EQ( | 523 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 525 expected, identity_operations[i]->Blend(operations, progress)); | 524 expected, identity_operations[i]->Blend(operations, progress)); |
| 526 } | 525 } |
| 527 } | 526 } |
| 528 | 527 |
| 529 TEST(TransformOperationTest, BlendTranslationToIdentity) { | 528 TEST(TransformOperationTest, BlendTranslationToIdentity) { |
| 530 ScopedVector<TransformOperations> identity_operations; | 529 ScopedVector<TransformOperations> identity_operations; |
| 531 GetIdentityOperations(&identity_operations); | 530 GetIdentityOperations(&identity_operations); |
| 532 | 531 |
| 533 for (size_t i = 0; i < identity_operations.size(); ++i) { | 532 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 534 TransformOperations operations; | 533 TransformOperations operations; |
| 535 operations.AppendTranslate(2, 2, 2); | 534 operations.AppendTranslate(2, 2, 2); |
| 536 | 535 |
| 537 double progress = 0.5; | 536 double progress = 0.5; |
| 538 | 537 |
| 539 WebTransformationMatrix expected; | 538 gfx::Transform expected; |
| 540 expected.translate3d(1, 1, 1); | 539 expected.Translate3d(1, 1, 1); |
| 541 | 540 |
| 542 EXPECT_TRANSFORMATION_MATRIX_EQ( | 541 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 543 expected, identity_operations[i]->Blend(operations, progress)); | 542 expected, identity_operations[i]->Blend(operations, progress)); |
| 544 } | 543 } |
| 545 } | 544 } |
| 546 | 545 |
| 547 TEST(TransformOperationTest, BlendScaleToIdentity) { | 546 TEST(TransformOperationTest, BlendScaleToIdentity) { |
| 548 ScopedVector<TransformOperations> identity_operations; | 547 ScopedVector<TransformOperations> identity_operations; |
| 549 GetIdentityOperations(&identity_operations); | 548 GetIdentityOperations(&identity_operations); |
| 550 | 549 |
| 551 for (size_t i = 0; i < identity_operations.size(); ++i) { | 550 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 552 TransformOperations operations; | 551 TransformOperations operations; |
| 553 operations.AppendScale(3, 3, 3); | 552 operations.AppendScale(3, 3, 3); |
| 554 | 553 |
| 555 double progress = 0.5; | 554 double progress = 0.5; |
| 556 | 555 |
| 557 WebTransformationMatrix expected; | 556 gfx::Transform expected; |
| 558 expected.scale3d(2, 2, 2); | 557 expected.Scale3d(2, 2, 2); |
| 559 | 558 |
| 560 EXPECT_TRANSFORMATION_MATRIX_EQ( | 559 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 561 expected, identity_operations[i]->Blend(operations, progress)); | 560 expected, identity_operations[i]->Blend(operations, progress)); |
| 562 } | 561 } |
| 563 } | 562 } |
| 564 | 563 |
| 565 TEST(TransformOperationTest, BlendSkewToIdentity) { | 564 TEST(TransformOperationTest, BlendSkewToIdentity) { |
| 566 ScopedVector<TransformOperations> identity_operations; | 565 ScopedVector<TransformOperations> identity_operations; |
| 567 GetIdentityOperations(&identity_operations); | 566 GetIdentityOperations(&identity_operations); |
| 568 | 567 |
| 569 for (size_t i = 0; i < identity_operations.size(); ++i) { | 568 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 570 TransformOperations operations; | 569 TransformOperations operations; |
| 571 operations.AppendSkew(2, 2); | 570 operations.AppendSkew(2, 2); |
| 572 | 571 |
| 573 double progress = 0.5; | 572 double progress = 0.5; |
| 574 | 573 |
| 575 WebTransformationMatrix expected; | 574 gfx::Transform expected; |
| 576 expected.skewX(1); | 575 expected.SkewX(1); |
| 577 expected.skewY(1); | 576 expected.SkewY(1); |
| 578 | 577 |
| 579 EXPECT_TRANSFORMATION_MATRIX_EQ( | 578 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 580 expected, identity_operations[i]->Blend(operations, progress)); | 579 expected, identity_operations[i]->Blend(operations, progress)); |
| 581 } | 580 } |
| 582 } | 581 } |
| 583 | 582 |
| 584 TEST(TransformOperationTest, BlendPerspectiveToIdentity) { | 583 TEST(TransformOperationTest, BlendPerspectiveToIdentity) { |
| 585 ScopedVector<TransformOperations> identity_operations; | 584 ScopedVector<TransformOperations> identity_operations; |
| 586 GetIdentityOperations(&identity_operations); | 585 GetIdentityOperations(&identity_operations); |
| 587 | 586 |
| 588 for (size_t i = 0; i < identity_operations.size(); ++i) { | 587 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 589 TransformOperations operations; | 588 TransformOperations operations; |
| 590 operations.AppendPerspective(1000); | 589 operations.AppendPerspective(1000); |
| 591 | 590 |
| 592 double progress = 0.5; | 591 double progress = 0.5; |
| 593 | 592 |
| 594 WebTransformationMatrix expected; | 593 gfx::Transform expected; |
| 595 expected.applyPerspective(500 + 0.5 * std::numeric_limits<double>::max()); | 594 expected.ApplyPerspectiveDepth( |
| 595 500 + 0.5 * std::numeric_limits<double>::max()); |
| 596 | 596 |
| 597 EXPECT_TRANSFORMATION_MATRIX_EQ( | 597 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 598 expected, identity_operations[i]->Blend(operations, progress)); | 598 expected, identity_operations[i]->Blend(operations, progress)); |
| 599 } | 599 } |
| 600 } | 600 } |
| 601 | 601 |
| 602 } // namespace | 602 } // namespace |
| 603 } // namespace cc | 603 } // namespace cc |
| OLD | NEW |