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

Side by Side Diff: ui/gfx/transform_unittest.cc

Issue 23724024: Refactor TransformPoint{,Reverse}. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and resolve conflicts. Created 7 years, 3 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 | « ui/gfx/transform.cc ('k') | ui/gfx/transform_util_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 }; 200 };
201 201
202 Transform xform; 202 Transform xform;
203 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { 203 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
204 const TestCase& value = test_cases[i]; 204 const TestCase& value = test_cases[i];
205 Transform translation; 205 Transform translation;
206 translation.Translate(value.tx, value.ty); 206 translation.Translate(value.tx, value.ty);
207 xform = translation * xform; 207 xform = translation * xform;
208 Point3F p1(value.x1, value.y1, 0); 208 Point3F p1(value.x1, value.y1, 0);
209 Point3F p2(value.x2, value.y2, 0); 209 Point3F p2(value.x2, value.y2, 0);
210 xform.TransformPoint(p1); 210 xform.TransformPoint(&p1);
211 if (value.tx == value.tx && 211 if (value.tx == value.tx &&
212 value.ty == value.ty) { 212 value.ty == value.ty) {
213 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2)); 213 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2));
214 } 214 }
215 } 215 }
216 } 216 }
217 217
218 TEST(XFormTest, ConcatScale) { 218 TEST(XFormTest, ConcatScale) {
219 static const struct TestCase { 219 static const struct TestCase {
220 int before; 220 int before;
221 float scale; 221 float scale;
222 int after; 222 int after;
223 } test_cases[] = { 223 } test_cases[] = {
224 { 1, 10.0f, 10 }, 224 { 1, 10.0f, 10 },
225 { 1, .1f, 1 }, 225 { 1, .1f, 1 },
226 { 1, 100.0f, 100 }, 226 { 1, 100.0f, 100 },
227 { 1, -1.0f, -100 }, 227 { 1, -1.0f, -100 },
228 { 1, std::numeric_limits<float>::quiet_NaN(), 1 } 228 { 1, std::numeric_limits<float>::quiet_NaN(), 1 }
229 }; 229 };
230 230
231 Transform xform; 231 Transform xform;
232 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { 232 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
233 const TestCase& value = test_cases[i]; 233 const TestCase& value = test_cases[i];
234 Transform scale; 234 Transform scale;
235 scale.Scale(value.scale, value.scale); 235 scale.Scale(value.scale, value.scale);
236 xform = scale * xform; 236 xform = scale * xform;
237 Point3F p1(value.before, value.before, 0); 237 Point3F p1(value.before, value.before, 0);
238 Point3F p2(value.after, value.after, 0); 238 Point3F p2(value.after, value.after, 0);
239 xform.TransformPoint(p1); 239 xform.TransformPoint(&p1);
240 if (value.scale == value.scale) { 240 if (value.scale == value.scale) {
241 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2)); 241 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2));
242 } 242 }
243 } 243 }
244 } 244 }
245 245
246 TEST(XFormTest, ConcatRotate) { 246 TEST(XFormTest, ConcatRotate) {
247 static const struct TestCase { 247 static const struct TestCase {
248 int x1; 248 int x1;
249 int y1; 249 int y1;
(...skipping 10 matching lines...) Expand all
260 }; 260 };
261 261
262 Transform xform; 262 Transform xform;
263 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { 263 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
264 const TestCase& value = test_cases[i]; 264 const TestCase& value = test_cases[i];
265 Transform rotation; 265 Transform rotation;
266 rotation.Rotate(value.degrees); 266 rotation.Rotate(value.degrees);
267 xform = rotation * xform; 267 xform = rotation * xform;
268 Point3F p1(value.x1, value.y1, 0); 268 Point3F p1(value.x1, value.y1, 0);
269 Point3F p2(value.x2, value.y2, 0); 269 Point3F p2(value.x2, value.y2, 0);
270 xform.TransformPoint(p1); 270 xform.TransformPoint(&p1);
271 if (value.degrees == value.degrees) { 271 if (value.degrees == value.degrees) {
272 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2)); 272 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2));
273 } 273 }
274 } 274 }
275 } 275 }
276 276
277 TEST(XFormTest, SetTranslate) { 277 TEST(XFormTest, SetTranslate) {
278 static const struct TestCase { 278 static const struct TestCase {
279 int x1; int y1; 279 int x1; int y1;
280 float tx; float ty; 280 float tx; float ty;
(...skipping 24 matching lines...) Expand all
305 p2.SetPoint(0, value.y2, 0); 305 p2.SetPoint(0, value.y2, 0);
306 xform.Translate(0.0, value.ty); 306 xform.Translate(0.0, value.ty);
307 break; 307 break;
308 case 2: 308 case 2:
309 p1.SetPoint(value.x1, value.y1, 0); 309 p1.SetPoint(value.x1, value.y1, 0);
310 p2.SetPoint(value.x2, value.y2, 0); 310 p2.SetPoint(value.x2, value.y2, 0);
311 xform.Translate(value.tx, value.ty); 311 xform.Translate(value.tx, value.ty);
312 break; 312 break;
313 } 313 }
314 p0 = p1; 314 p0 = p1;
315 xform.TransformPoint(p1); 315 xform.TransformPoint(&p1);
316 if (value.tx == value.tx && 316 if (value.tx == value.tx &&
317 value.ty == value.ty) { 317 value.ty == value.ty) {
318 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2)); 318 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2));
319 xform.TransformPointReverse(p1); 319 xform.TransformPointReverse(&p1);
320 EXPECT_TRUE(PointsAreNearlyEqual(p1, p0)); 320 EXPECT_TRUE(PointsAreNearlyEqual(p1, p0));
321 } 321 }
322 } 322 }
323 } 323 }
324 } 324 }
325 325
326 TEST(XFormTest, SetScale) { 326 TEST(XFormTest, SetScale) {
327 static const struct TestCase { 327 static const struct TestCase {
328 int before; 328 int before;
329 float s; 329 float s;
(...skipping 22 matching lines...) Expand all
352 p2.SetPoint(0, value.after, 0); 352 p2.SetPoint(0, value.after, 0);
353 xform.Scale(1.0, value.s); 353 xform.Scale(1.0, value.s);
354 break; 354 break;
355 case 2: 355 case 2:
356 p1.SetPoint(value.before, value.before, 0); 356 p1.SetPoint(value.before, value.before, 0);
357 p2.SetPoint(value.after, value.after, 0); 357 p2.SetPoint(value.after, value.after, 0);
358 xform.Scale(value.s, value.s); 358 xform.Scale(value.s, value.s);
359 break; 359 break;
360 } 360 }
361 p0 = p1; 361 p0 = p1;
362 xform.TransformPoint(p1); 362 xform.TransformPoint(&p1);
363 if (value.s == value.s) { 363 if (value.s == value.s) {
364 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2)); 364 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2));
365 if (value.s != 0.0f) { 365 if (value.s != 0.0f) {
366 xform.TransformPointReverse(p1); 366 xform.TransformPointReverse(&p1);
367 EXPECT_TRUE(PointsAreNearlyEqual(p1, p0)); 367 EXPECT_TRUE(PointsAreNearlyEqual(p1, p0));
368 } 368 }
369 } 369 }
370 } 370 }
371 } 371 }
372 } 372 }
373 373
374 TEST(XFormTest, SetRotate) { 374 TEST(XFormTest, SetRotate) {
375 static const struct SetRotateCase { 375 static const struct SetRotateCase {
376 int x; 376 int x;
(...skipping 15 matching lines...) Expand all
392 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(set_rotate_cases); ++i) { 392 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(set_rotate_cases); ++i) {
393 const SetRotateCase& value = set_rotate_cases[i]; 393 const SetRotateCase& value = set_rotate_cases[i];
394 Point3F p0; 394 Point3F p0;
395 Point3F p1(value.x, value.y, 0); 395 Point3F p1(value.x, value.y, 0);
396 Point3F p2(value.xprime, value.yprime, 0); 396 Point3F p2(value.xprime, value.yprime, 0);
397 p0 = p1; 397 p0 = p1;
398 Transform xform; 398 Transform xform;
399 xform.Rotate(value.degree); 399 xform.Rotate(value.degree);
400 // just want to make sure that we don't crash in the case of NaN. 400 // just want to make sure that we don't crash in the case of NaN.
401 if (value.degree == value.degree) { 401 if (value.degree == value.degree) {
402 xform.TransformPoint(p1); 402 xform.TransformPoint(&p1);
403 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2)); 403 EXPECT_TRUE(PointsAreNearlyEqual(p1, p2));
404 xform.TransformPointReverse(p1); 404 xform.TransformPointReverse(&p1);
405 EXPECT_TRUE(PointsAreNearlyEqual(p1, p0)); 405 EXPECT_TRUE(PointsAreNearlyEqual(p1, p0));
406 } 406 }
407 } 407 }
408 } 408 }
409 409
410 // 2D tests 410 // 2D tests
411 TEST(XFormTest, ConcatTranslate2D) { 411 TEST(XFormTest, ConcatTranslate2D) {
412 static const struct TestCase { 412 static const struct TestCase {
413 int x1; 413 int x1;
414 int y1; 414 int y1;
(...skipping 12 matching lines...) Expand all
427 }; 427 };
428 428
429 Transform xform; 429 Transform xform;
430 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { 430 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
431 const TestCase& value = test_cases[i]; 431 const TestCase& value = test_cases[i];
432 Transform translation; 432 Transform translation;
433 translation.Translate(value.tx, value.ty); 433 translation.Translate(value.tx, value.ty);
434 xform = translation * xform; 434 xform = translation * xform;
435 Point p1(value.x1, value.y1); 435 Point p1(value.x1, value.y1);
436 Point p2(value.x2, value.y2); 436 Point p2(value.x2, value.y2);
437 xform.TransformPoint(p1); 437 xform.TransformPoint(&p1);
438 if (value.tx == value.tx && 438 if (value.tx == value.tx &&
439 value.ty == value.ty) { 439 value.ty == value.ty) {
440 EXPECT_EQ(p1.x(), p2.x()); 440 EXPECT_EQ(p1.x(), p2.x());
441 EXPECT_EQ(p1.y(), p2.y()); 441 EXPECT_EQ(p1.y(), p2.y());
442 } 442 }
443 } 443 }
444 } 444 }
445 445
446 TEST(XFormTest, ConcatScale2D) { 446 TEST(XFormTest, ConcatScale2D) {
447 static const struct TestCase { 447 static const struct TestCase {
448 int before; 448 int before;
449 float scale; 449 float scale;
450 int after; 450 int after;
451 } test_cases[] = { 451 } test_cases[] = {
452 { 1, 10.0f, 10}, 452 { 1, 10.0f, 10},
453 { 1, .1f, 1}, 453 { 1, .1f, 1},
454 { 1, 100.0f, 100}, 454 { 1, 100.0f, 100},
455 { 1, -1.0f, -100}, 455 { 1, -1.0f, -100},
456 { 1, std::numeric_limits<float>::quiet_NaN(), 1} 456 { 1, std::numeric_limits<float>::quiet_NaN(), 1}
457 }; 457 };
458 458
459 Transform xform; 459 Transform xform;
460 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { 460 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
461 const TestCase& value = test_cases[i]; 461 const TestCase& value = test_cases[i];
462 Transform scale; 462 Transform scale;
463 scale.Scale(value.scale, value.scale); 463 scale.Scale(value.scale, value.scale);
464 xform = scale * xform; 464 xform = scale * xform;
465 Point p1(value.before, value.before); 465 Point p1(value.before, value.before);
466 Point p2(value.after, value.after); 466 Point p2(value.after, value.after);
467 xform.TransformPoint(p1); 467 xform.TransformPoint(&p1);
468 if (value.scale == value.scale) { 468 if (value.scale == value.scale) {
469 EXPECT_EQ(p1.x(), p2.x()); 469 EXPECT_EQ(p1.x(), p2.x());
470 EXPECT_EQ(p1.y(), p2.y()); 470 EXPECT_EQ(p1.y(), p2.y());
471 } 471 }
472 } 472 }
473 } 473 }
474 474
475 TEST(XFormTest, ConcatRotate2D) { 475 TEST(XFormTest, ConcatRotate2D) {
476 static const struct TestCase { 476 static const struct TestCase {
477 int x1; 477 int x1;
(...skipping 11 matching lines...) Expand all
489 }; 489 };
490 490
491 Transform xform; 491 Transform xform;
492 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { 492 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
493 const TestCase& value = test_cases[i]; 493 const TestCase& value = test_cases[i];
494 Transform rotation; 494 Transform rotation;
495 rotation.Rotate(value.degrees); 495 rotation.Rotate(value.degrees);
496 xform = rotation * xform; 496 xform = rotation * xform;
497 Point p1(value.x1, value.y1); 497 Point p1(value.x1, value.y1);
498 Point p2(value.x2, value.y2); 498 Point p2(value.x2, value.y2);
499 xform.TransformPoint(p1); 499 xform.TransformPoint(&p1);
500 if (value.degrees == value.degrees) { 500 if (value.degrees == value.degrees) {
501 EXPECT_EQ(p1.x(), p2.x()); 501 EXPECT_EQ(p1.x(), p2.x());
502 EXPECT_EQ(p1.y(), p2.y()); 502 EXPECT_EQ(p1.y(), p2.y());
503 } 503 }
504 } 504 }
505 } 505 }
506 506
507 TEST(XFormTest, SetTranslate2D) { 507 TEST(XFormTest, SetTranslate2D) {
508 static const struct TestCase { 508 static const struct TestCase {
509 int x1; int y1; 509 int x1; int y1;
(...skipping 28 matching lines...) Expand all
538 xform.Translate(0.0, value.ty + j * epsilon); 538 xform.Translate(0.0, value.ty + j * epsilon);
539 break; 539 break;
540 case 2: 540 case 2:
541 p1.SetPoint(value.x1, value.y1); 541 p1.SetPoint(value.x1, value.y1);
542 p2.SetPoint(value.x2, value.y2); 542 p2.SetPoint(value.x2, value.y2);
543 xform.Translate(value.tx + j * epsilon, 543 xform.Translate(value.tx + j * epsilon,
544 value.ty + j * epsilon); 544 value.ty + j * epsilon);
545 break; 545 break;
546 } 546 }
547 p0 = p1; 547 p0 = p1;
548 xform.TransformPoint(p1); 548 xform.TransformPoint(&p1);
549 if (value.tx == value.tx && 549 if (value.tx == value.tx &&
550 value.ty == value.ty) { 550 value.ty == value.ty) {
551 EXPECT_EQ(p1.x(), p2.x()); 551 EXPECT_EQ(p1.x(), p2.x());
552 EXPECT_EQ(p1.y(), p2.y()); 552 EXPECT_EQ(p1.y(), p2.y());
553 xform.TransformPointReverse(p1); 553 xform.TransformPointReverse(&p1);
554 EXPECT_EQ(p1.x(), p0.x()); 554 EXPECT_EQ(p1.x(), p0.x());
555 EXPECT_EQ(p1.y(), p0.y()); 555 EXPECT_EQ(p1.y(), p0.y());
556 } 556 }
557 } 557 }
558 } 558 }
559 } 559 }
560 } 560 }
561 561
562 TEST(XFormTest, SetScale2D) { 562 TEST(XFormTest, SetScale2D) {
563 static const struct TestCase { 563 static const struct TestCase {
(...skipping 29 matching lines...) Expand all
593 case 2: 593 case 2:
594 p1.SetPoint(value.before, 594 p1.SetPoint(value.before,
595 value.before); 595 value.before);
596 p2.SetPoint(value.after, 596 p2.SetPoint(value.after,
597 value.after); 597 value.after);
598 xform.Scale(value.s + j * epsilon, 598 xform.Scale(value.s + j * epsilon,
599 value.s + j * epsilon); 599 value.s + j * epsilon);
600 break; 600 break;
601 } 601 }
602 p0 = p1; 602 p0 = p1;
603 xform.TransformPoint(p1); 603 xform.TransformPoint(&p1);
604 if (value.s == value.s) { 604 if (value.s == value.s) {
605 EXPECT_EQ(p1.x(), p2.x()); 605 EXPECT_EQ(p1.x(), p2.x());
606 EXPECT_EQ(p1.y(), p2.y()); 606 EXPECT_EQ(p1.y(), p2.y());
607 if (value.s != 0.0f) { 607 if (value.s != 0.0f) {
608 xform.TransformPointReverse(p1); 608 xform.TransformPointReverse(&p1);
609 EXPECT_EQ(p1.x(), p0.x()); 609 EXPECT_EQ(p1.x(), p0.x());
610 EXPECT_EQ(p1.y(), p0.y()); 610 EXPECT_EQ(p1.y(), p0.y());
611 } 611 }
612 } 612 }
613 } 613 }
614 } 614 }
615 } 615 }
616 } 616 }
617 617
618 TEST(XFormTest, SetRotate2D) { 618 TEST(XFormTest, SetRotate2D) {
(...skipping 17 matching lines...) Expand all
636 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(set_rotate_cases); ++i) { 636 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(set_rotate_cases); ++i) {
637 const SetRotateCase& value = set_rotate_cases[i]; 637 const SetRotateCase& value = set_rotate_cases[i];
638 for (int j = 1; j >= -1; --j) { 638 for (int j = 1; j >= -1; --j) {
639 float epsilon = 0.1f; 639 float epsilon = 0.1f;
640 Point pt(value.x, value.y); 640 Point pt(value.x, value.y);
641 Transform xform; 641 Transform xform;
642 // should be invariant to small floating point errors. 642 // should be invariant to small floating point errors.
643 xform.Rotate(value.degree + j * epsilon); 643 xform.Rotate(value.degree + j * epsilon);
644 // just want to make sure that we don't crash in the case of NaN. 644 // just want to make sure that we don't crash in the case of NaN.
645 if (value.degree == value.degree) { 645 if (value.degree == value.degree) {
646 xform.TransformPoint(pt); 646 xform.TransformPoint(&pt);
647 EXPECT_EQ(value.xprime, pt.x()); 647 EXPECT_EQ(value.xprime, pt.x());
648 EXPECT_EQ(value.yprime, pt.y()); 648 EXPECT_EQ(value.yprime, pt.y());
649 xform.TransformPointReverse(pt); 649 xform.TransformPointReverse(&pt);
650 EXPECT_EQ(pt.x(), value.x); 650 EXPECT_EQ(pt.x(), value.x);
651 EXPECT_EQ(pt.y(), value.y); 651 EXPECT_EQ(pt.y(), value.y);
652 } 652 }
653 } 653 }
654 } 654 }
655 } 655 }
656 656
657 TEST(XFormTest, BlendTranslate) { 657 TEST(XFormTest, BlendTranslate) {
658 Transform from; 658 Transform from;
659 for (int i = -5; i < 15; ++i) { 659 for (int i = -5; i < 15; ++i) {
(...skipping 1626 matching lines...) Expand 10 before | Expand all | Expand 10 after
2286 Point3F p2(10.0f, 5.0f, 0.0f); 2286 Point3F p2(10.0f, 5.0f, 0.0f);
2287 Point3F p3(10.0f, 20.0f, 0.0f); 2287 Point3F p3(10.0f, 20.0f, 0.0f);
2288 Point3F p4(5.0f, 20.0f, 0.0f); 2288 Point3F p4(5.0f, 20.0f, 0.0f);
2289 2289
2290 QuadF test_quad(PointF(p1.x(), p1.y()), 2290 QuadF test_quad(PointF(p1.x(), p1.y()),
2291 PointF(p2.x(), p2.y()), 2291 PointF(p2.x(), p2.y()),
2292 PointF(p3.x(), p3.y()), 2292 PointF(p3.x(), p3.y()),
2293 PointF(p4.x(), p4.y())); 2293 PointF(p4.x(), p4.y()));
2294 EXPECT_TRUE(test_quad.IsRectilinear()); 2294 EXPECT_TRUE(test_quad.IsRectilinear());
2295 2295
2296 transform.TransformPoint(p1); 2296 transform.TransformPoint(&p1);
2297 transform.TransformPoint(p2); 2297 transform.TransformPoint(&p2);
2298 transform.TransformPoint(p3); 2298 transform.TransformPoint(&p3);
2299 transform.TransformPoint(p4); 2299 transform.TransformPoint(&p4);
2300 2300
2301 QuadF transformedQuad(PointF(p1.x(), p1.y()), 2301 QuadF transformedQuad(PointF(p1.x(), p1.y()),
2302 PointF(p2.x(), p2.y()), 2302 PointF(p2.x(), p2.y()),
2303 PointF(p3.x(), p3.y()), 2303 PointF(p3.x(), p3.y()),
2304 PointF(p4.x(), p4.y())); 2304 PointF(p4.x(), p4.y()));
2305 return transformedQuad.IsRectilinear(); 2305 return transformedQuad.IsRectilinear();
2306 } 2306 }
2307 2307
2308 TEST(XFormTest, Preserves2dAxisAlignment) { 2308 TEST(XFormTest, Preserves2dAxisAlignment) {
2309 static const struct TestCase { 2309 static const struct TestCase {
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
2500 transform.Translate(translation.x(), translation.y() + 1); 2500 transform.Translate(translation.x(), translation.y() + 1);
2501 EXPECT_NE(translation.ToString(), transform.To2dTranslation().ToString()); 2501 EXPECT_NE(translation.ToString(), transform.To2dTranslation().ToString());
2502 transform.MakeIdentity(); 2502 transform.MakeIdentity();
2503 transform.Translate(translation.x(), translation.y()); 2503 transform.Translate(translation.x(), translation.y());
2504 EXPECT_EQ(translation.ToString(), transform.To2dTranslation().ToString()); 2504 EXPECT_EQ(translation.ToString(), transform.To2dTranslation().ToString());
2505 } 2505 }
2506 2506
2507 } // namespace 2507 } // namespace
2508 2508
2509 } // namespace gfx 2509 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/transform.cc ('k') | ui/gfx/transform_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698