diff options
author | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-09 06:45:06 +0000 |
---|---|---|
committer | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-09 06:45:06 +0000 |
commit | cd94acd11930521c3c6227b4b69b07cbd8b275d5 (patch) | |
tree | 9b52c51b0d9509b5bf50fad764dfc309cd4ebdc5 /cc | |
parent | 59ee69540fdd7f7d7cc75ce2f41f1ea7f1886488 (diff) | |
download | chromium_src-cd94acd11930521c3c6227b4b69b07cbd8b275d5.zip chromium_src-cd94acd11930521c3c6227b4b69b07cbd8b275d5.tar.gz chromium_src-cd94acd11930521c3c6227b4b69b07cbd8b275d5.tar.bz2 |
cc: Expose clear and swap on Region
R=danakj@chromium.org
BUG=none
Review URL: https://chromiumcodereview.appspot.com/11368156
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166866 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r-- | cc/layer_tree_host_unittest.cc | 2 | ||||
-rw-r--r-- | cc/occlusion_tracker.cc | 8 | ||||
-rw-r--r-- | cc/region.cc | 8 | ||||
-rw-r--r-- | cc/region.h | 2 | ||||
-rw-r--r-- | cc/region_unittest.cc | 55 |
5 files changed, 59 insertions, 16 deletions
diff --git a/cc/layer_tree_host_unittest.cc b/cc/layer_tree_host_unittest.cc index 04cef7f..b8c92c2 100644 --- a/cc/layer_tree_host_unittest.cc +++ b/cc/layer_tree_host_unittest.cc @@ -1632,7 +1632,7 @@ public: virtual bool drawsContent() const OVERRIDE { return true; } const Region& occludedScreenSpace() const { return m_occludedScreenSpace; } - void clearOccludedScreenSpace() { m_occludedScreenSpace = Region(); } + void clearOccludedScreenSpace() { m_occludedScreenSpace.Clear(); } private: TestLayer() : Layer() { } diff --git a/cc/occlusion_tracker.cc b/cc/occlusion_tracker.cc index c5f7276..cefcd9d 100644 --- a/cc/occlusion_tracker.cc +++ b/cc/occlusion_tracker.cc @@ -111,13 +111,13 @@ void OcclusionTrackerBase<LayerType, RenderSurfaceType>::finishedRenderTarget(co // TODO(senorblanco): Make this smarter for SkImageFilter case: once // SkImageFilters can report affectsOpacity(), call that. if (finishedTarget->maskLayer() || !surfaceOpacityKnown(surface) || surface->drawOpacity() < 1 || finishedTarget->filters().hasFilterThatAffectsOpacity() || finishedTarget->filter()) { - m_stack.back().occlusionInScreen = Region(); - m_stack.back().occlusionInTarget = Region(); + m_stack.back().occlusionInScreen.Clear(); + m_stack.back().occlusionInTarget.Clear(); } else { if (!surfaceTransformsToTargetKnown(surface)) - m_stack.back().occlusionInTarget = Region(); + m_stack.back().occlusionInTarget.Clear(); if (!surfaceTransformsToScreenKnown(surface)) - m_stack.back().occlusionInScreen = Region(); + m_stack.back().occlusionInScreen.Clear(); } } diff --git a/cc/region.cc b/cc/region.cc index f0fddc5..4167417 100644 --- a/cc/region.cc +++ b/cc/region.cc @@ -38,6 +38,14 @@ const Region& Region::operator=(const Region& region) { return *this; } +void Region::Swap(Region& region) { + region.skregion_.swap(skregion_); +} + +void Region::Clear() { + skregion_.setEmpty(); +} + bool Region::IsEmpty() const { return skregion_.isEmpty(); } diff --git a/cc/region.h b/cc/region.h index 49ad5f3..00e2bd1 100644 --- a/cc/region.h +++ b/cc/region.h @@ -24,6 +24,8 @@ class CC_EXPORT Region { const Region& operator=(gfx::Rect rect); const Region& operator=(const Region& region); + void Swap(Region& region); + void Clear(); bool IsEmpty() const; bool Contains(gfx::Point point) const; diff --git a/cc/region_unittest.cc b/cc/region_unittest.cc index db0fc3c..ef1d889 100644 --- a/cc/region_unittest.cc +++ b/cc/region_unittest.cc @@ -297,54 +297,54 @@ TEST(RegionTest, ContainsRegion) { container.Union(gfx::Rect(0, 20, 41, 20)); TEST_CONTAINS(container, gfx::Rect(5, 5, 30, 30)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(0, 0, 10, 10)); container.Union(gfx::Rect(0, 30, 10, 10)); container.Union(gfx::Rect(30, 30, 10, 10)); container.Union(gfx::Rect(30, 0, 10, 10)); TEST_NO_CONTAINS(container, gfx::Rect(5, 5, 30, 30)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(0, 0, 10, 10)); container.Union(gfx::Rect(0, 30, 10, 10)); container.Union(gfx::Rect(30, 0, 10, 40)); TEST_NO_CONTAINS(container, gfx::Rect(5, 5, 30, 30)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(30, 0, 10, 10)); container.Union(gfx::Rect(30, 30, 10, 10)); container.Union(gfx::Rect(0, 0, 10, 40)); TEST_NO_CONTAINS(container, gfx::Rect(5, 5, 30, 30)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(0, 0, 10, 40)); container.Union(gfx::Rect(30, 0, 10, 40)); TEST_NO_CONTAINS(container, gfx::Rect(5, 5, 30, 30)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(0, 0, 40, 40)); TEST_NO_CONTAINS(container, gfx::Rect(10, -1, 20, 10)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(0, 0, 40, 40)); TEST_NO_CONTAINS(container, gfx::Rect(10, 31, 20, 10)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(0, 0, 40, 20)); container.Union(gfx::Rect(0, 20, 41, 20)); TEST_NO_CONTAINS(container, gfx::Rect(-1, 10, 10, 20)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(0, 0, 40, 20)); container.Union(gfx::Rect(0, 20, 41, 20)); TEST_NO_CONTAINS(container, gfx::Rect(31, 10, 10, 20)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(0, 0, 40, 40)); container.Subtract(gfx::Rect(0, 20, 60, 0)); TEST_NO_CONTAINS(container, gfx::Rect(31, 10, 10, 20)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(0, 0, 60, 20)); container.Union(gfx::Rect(30, 20, 10, 20)); TEST_NO_CONTAINS(container, gfx::Rect(0, 0, 10, 39)); @@ -357,7 +357,7 @@ TEST(RegionTest, ContainsRegion) { TEST_NO_CONTAINS(container, gfx::Rect(50, 0, 10, 40)); TEST_NO_CONTAINS(container, gfx::Rect(51, 0, 10, 41)); - container = Region(); + container.Clear(); container.Union(gfx::Rect(30, 0, 10, 20)); container.Union(gfx::Rect(0, 20, 60, 20)); TEST_NO_CONTAINS(container, gfx::Rect(0, 0, 10, 39)); @@ -420,4 +420,37 @@ TEST(RegionTest, IsEmpty) { EXPECT_FALSE(SkIRect::MakeXYWH(0, 0, 2, 2).isEmpty()); } +TEST(RegionTest, Clear) { + Region r; + + r = gfx::Rect(0, 0, 50, 50); + EXPECT_FALSE(r.IsEmpty()); + r.Clear(); + EXPECT_TRUE(r.IsEmpty()); + + r = gfx::Rect(0, 0, 50, 50); + r.Union(gfx::Rect(100, 0, 50, 50)); + r.Union(gfx::Rect(0, 0, 500, 500)); + EXPECT_FALSE(r.IsEmpty()); + r.Clear(); + EXPECT_TRUE(r.IsEmpty()); +} + +TEST(RegionSwap, Swap) { + Region r1, r2, r3; + + r1 = gfx::Rect(0, 0, 50, 50); + r1.Swap(r2); + EXPECT_TRUE(r1.IsEmpty()); + EXPECT_EQ(r2.ToString(), Region(gfx::Rect(0, 0, 50, 50)).ToString()); + + r1 = gfx::Rect(0, 0, 50, 50); + r1.Union(gfx::Rect(100, 0, 50, 50)); + r1.Union(gfx::Rect(0, 0, 500, 500)); + r3 = r1; + r1.Swap(r2); + EXPECT_EQ(r1.ToString(), Region(gfx::Rect(0, 0, 50, 50)).ToString()); + EXPECT_EQ(r2.ToString(), r3.ToString()); +} + } // namespace |