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 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/compiler_specific.h" | 6 #include "base/compiler_specific.h" |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "ui/gfx/canvas_skia.h" | 9 #include "ui/gfx/canvas_skia.h" |
10 #include "ui/gfx/compositor/compositor_observer.h" | 10 #include "ui/gfx/compositor/compositor_observer.h" |
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 // Verifies that there is no hole present when one of the child layers has a | 532 // Verifies that there is no hole present when one of the child layers has a |
533 // transform. | 533 // transform. |
534 TEST_F(LayerWithNullDelegateTest, NoHoleWithTransform) { | 534 TEST_F(LayerWithNullDelegateTest, NoHoleWithTransform) { |
535 scoped_ptr<Layer> parent(CreateTextureLayer(gfx::Rect(0, 0, 400, 400))); | 535 scoped_ptr<Layer> parent(CreateTextureLayer(gfx::Rect(0, 0, 400, 400))); |
536 scoped_ptr<Layer> child(CreateTextureLayer(gfx::Rect(50, 50, 100, 100))); | 536 scoped_ptr<Layer> child(CreateTextureLayer(gfx::Rect(50, 50, 100, 100))); |
537 parent->Add(child.get()); | 537 parent->Add(child.get()); |
538 | 538 |
539 EXPECT_TRUE(!parent->hole_rect().IsEmpty()); | 539 EXPECT_TRUE(!parent->hole_rect().IsEmpty()); |
540 | 540 |
541 ui::Transform t; | 541 ui::Transform t; |
542 t.SetTranslate(-75, -75); | 542 t.SetTranslate(-50, -50); |
543 t.ConcatRotate(45.0f); | 543 t.ConcatRotate(45.0f); |
544 t.ConcatTranslate(75, 75); | 544 t.ConcatTranslate(50, 50); |
545 child->SetTransform(t); | 545 child->SetTransform(t); |
546 | 546 |
547 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), parent->hole_rect()); | 547 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), parent->hole_rect()); |
548 } | 548 } |
549 | 549 |
550 // Verifies that if the child layer is rotated by a multiple of ninety degrees | 550 // Verifies that if the child layer is rotated by a multiple of ninety degrees |
551 // we punch a hole | 551 // we punch a hole |
552 TEST_F(LayerWithNullDelegateTest, HoleWithNinetyDegreeTransforms) { | 552 TEST_F(LayerWithNullDelegateTest, HoleWithNinetyDegreeTransforms) { |
553 scoped_ptr<Layer> parent(CreateTextureLayer(gfx::Rect(0, 0, 400, 400))); | 553 scoped_ptr<Layer> parent(CreateTextureLayer(gfx::Rect(0, 0, 400, 400))); |
554 scoped_ptr<Layer> child(CreateTextureLayer(gfx::Rect(50, 50, 50, 50))); | 554 scoped_ptr<Layer> child(CreateTextureLayer(gfx::Rect(50, 50, 50, 50))); |
555 parent->Add(child.get()); | 555 parent->Add(child.get()); |
556 | 556 |
557 EXPECT_TRUE(!parent->hole_rect().IsEmpty()); | 557 EXPECT_TRUE(!parent->hole_rect().IsEmpty()); |
558 | 558 |
559 for (int i = -4; i <= 4; ++i) { | 559 for (int i = -4; i <= 4; ++i) { |
560 ui::Transform t; | 560 ui::Transform t; |
561 t.SetTranslate(-75, -75); | 561 // Need to rotate in local coordinates. |
| 562 t.SetTranslate(-25, -25); |
562 t.ConcatRotate(90.0f * i); | 563 t.ConcatRotate(90.0f * i); |
563 t.ConcatTranslate(75, 75); | 564 t.ConcatTranslate(25, 25); |
564 child->SetTransform(t); | 565 child->SetTransform(t); |
565 | 566 |
566 gfx::Rect target_rect = child->bounds(); | 567 gfx::Rect target_rect(child->bounds().size()); |
567 child->transform().TransformRect(&target_rect); | 568 t.ConcatTranslate(child->bounds().x(), child->bounds().y()); |
| 569 t.TransformRect(&target_rect); |
| 570 |
568 EXPECT_EQ(target_rect, parent->hole_rect()); | 571 EXPECT_EQ(target_rect, parent->hole_rect()); |
569 } | 572 } |
570 } | 573 } |
571 | 574 |
572 // Create this hierarchy: | 575 // Create this hierarchy: |
573 // L1 (no texture) | 576 // L1 (no texture) |
574 // +- L11 (texture) | 577 // +- L11 (texture) |
575 // +- L12 (no texture) (added after L1 is already set as root-layer) | 578 // +- L12 (no texture) (added after L1 is already set as root-layer) |
576 // +- L121 (texture) | 579 // +- L121 (texture) |
577 // +- L122 (texture) | 580 // +- L122 (texture) |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
661 EXPECT_FALSE(l2->IsDrawn()); | 664 EXPECT_FALSE(l2->IsDrawn()); |
662 EXPECT_FALSE(l3->IsDrawn()); | 665 EXPECT_FALSE(l3->IsDrawn()); |
663 | 666 |
664 l1->SetVisible(true); | 667 l1->SetVisible(true); |
665 EXPECT_TRUE(l1->IsDrawn()); | 668 EXPECT_TRUE(l1->IsDrawn()); |
666 EXPECT_TRUE(l2->IsDrawn()); | 669 EXPECT_TRUE(l2->IsDrawn()); |
667 EXPECT_FALSE(l3->IsDrawn()); | 670 EXPECT_FALSE(l3->IsDrawn()); |
668 } | 671 } |
669 | 672 |
670 } // namespace ui | 673 } // namespace ui |
OLD | NEW |