summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-09 06:45:06 +0000
committerenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-09 06:45:06 +0000
commitcd94acd11930521c3c6227b4b69b07cbd8b275d5 (patch)
tree9b52c51b0d9509b5bf50fad764dfc309cd4ebdc5 /cc
parent59ee69540fdd7f7d7cc75ce2f41f1ea7f1886488 (diff)
downloadchromium_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.cc2
-rw-r--r--cc/occlusion_tracker.cc8
-rw-r--r--cc/region.cc8
-rw-r--r--cc/region.h2
-rw-r--r--cc/region_unittest.cc55
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