summaryrefslogtreecommitdiffstats
path: root/cc/base
diff options
context:
space:
mode:
authorwkorman <wkorman@chromium.org>2015-12-03 22:24:22 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-04 06:25:27 +0000
commitc1dd959b9cb26b2c3c9e49334d209e1fbda33f4c (patch)
tree132c03b686057abaa5acb74d32ae4a8c71a03cd5 /cc/base
parentaae2523be94a72e94f309238eaab3c3372483c75 (diff)
downloadchromium_src-c1dd959b9cb26b2c3c9e49334d209e1fbda33f4c.zip
chromium_src-c1dd959b9cb26b2c3c9e49334d209e1fbda33f4c.tar.gz
chromium_src-c1dd959b9cb26b2c3c9e49334d209e1fbda33f4c.tar.bz2
Use Rect rather than RectF in cc's RTree.
BUG=529938 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1498593005 Cr-Commit-Position: refs/heads/master@{#363151}
Diffstat (limited to 'cc/base')
-rw-r--r--cc/base/rtree.cc5
-rw-r--r--cc/base/rtree.h10
-rw-r--r--cc/base/rtree_unittest.cc18
3 files changed, 16 insertions, 17 deletions
diff --git a/cc/base/rtree.cc b/cc/base/rtree.cc
index ca64e87..79a4bcd 100644
--- a/cc/base/rtree.cc
+++ b/cc/base/rtree.cc
@@ -89,14 +89,13 @@ RTree::Branch RTree::BuildRecursive(std::vector<Branch>* branches, int level) {
return BuildRecursive(branches, level + 1);
}
-void RTree::Search(const gfx::RectF& query,
- std::vector<size_t>* results) const {
+void RTree::Search(const gfx::Rect& query, std::vector<size_t>* results) const {
if (num_data_elements_ > 0 && query.Intersects(root_.bounds))
SearchRecursive(root_.subtree, query, results);
}
void RTree::SearchRecursive(Node* node,
- const gfx::RectF& query,
+ const gfx::Rect& query,
std::vector<size_t>* results) const {
for (uint16_t i = 0; i < node->num_children; ++i) {
if (query.Intersects(node->children[i].bounds)) {
diff --git a/cc/base/rtree.h b/cc/base/rtree.h
index f765c353..63f7d14 100644
--- a/cc/base/rtree.h
+++ b/cc/base/rtree.h
@@ -46,7 +46,7 @@ class CC_EXPORT RTree {
branches.reserve(items.size());
for (size_t i = 0; i < items.size(); i++) {
- const gfx::RectF& bounds = bounds_getter(items[i]);
+ const gfx::Rect& bounds = bounds_getter(items[i]);
if (bounds.IsEmpty())
continue;
@@ -70,10 +70,10 @@ class CC_EXPORT RTree {
template <typename Container>
void Build(const Container& items) {
- Build(items, [](const gfx::RectF& bounds) { return bounds; });
+ Build(items, [](const gfx::Rect& bounds) { return bounds; });
}
- void Search(const gfx::RectF& query, std::vector<size_t>* results) const;
+ void Search(const gfx::Rect& query, std::vector<size_t>* results) const;
private:
// These values were empirically determined to produce reasonable performance
@@ -90,7 +90,7 @@ class CC_EXPORT RTree {
Node* subtree;
size_t index;
};
- gfx::RectF bounds;
+ gfx::Rect bounds;
};
struct Node {
@@ -100,7 +100,7 @@ class CC_EXPORT RTree {
};
void SearchRecursive(Node* root,
- const gfx::RectF& query,
+ const gfx::Rect& query,
std::vector<size_t>* results) const;
// Consumes the input array.
diff --git a/cc/base/rtree_unittest.cc b/cc/base/rtree_unittest.cc
index b703a17..e58c9f6 100644
--- a/cc/base/rtree_unittest.cc
+++ b/cc/base/rtree_unittest.cc
@@ -9,10 +9,10 @@
namespace cc {
TEST(RTreeTest, NoOverlap) {
- std::vector<gfx::RectF> rects;
+ std::vector<gfx::Rect> rects;
for (int y = 0; y < 50; ++y) {
for (int x = 0; x < 50; ++x) {
- rects.push_back(gfx::RectF(x, y, 1.f, 1.f));
+ rects.push_back(gfx::Rect(x, y, 1, 1));
}
}
@@ -20,30 +20,30 @@ TEST(RTreeTest, NoOverlap) {
rtree.Build(rects);
std::vector<size_t> results;
- rtree.Search(gfx::RectF(0.f, 0.f, 50.f, 50.f), &results);
+ rtree.Search(gfx::Rect(0, 0, 50, 50), &results);
ASSERT_EQ(2500u, results.size());
for (size_t i = 0; i < 2500; ++i) {
ASSERT_EQ(results[i], i);
}
results.clear();
- rtree.Search(gfx::RectF(0.f, 0.f, 50.f, 49.f), &results);
+ rtree.Search(gfx::Rect(0, 0, 50, 49), &results);
ASSERT_EQ(2450u, results.size());
for (size_t i = 0; i < 2450; ++i) {
ASSERT_EQ(results[i], i);
}
results.clear();
- rtree.Search(gfx::RectF(5.2f, 6.3f, 0.1f, 0.2f), &results);
+ rtree.Search(gfx::Rect(5, 6, 1, 1), &results);
ASSERT_EQ(1u, results.size());
EXPECT_EQ(6u * 50 + 5u, results[0]);
}
TEST(RTreeTest, Overlap) {
- std::vector<gfx::RectF> rects;
+ std::vector<gfx::Rect> rects;
for (int h = 1; h <= 50; ++h) {
for (int w = 1; w <= 50; ++w) {
- rects.push_back(gfx::RectF(0, 0, w, h));
+ rects.push_back(gfx::Rect(0, 0, w, h));
}
}
@@ -51,14 +51,14 @@ TEST(RTreeTest, Overlap) {
rtree.Build(rects);
std::vector<size_t> results;
- rtree.Search(gfx::RectF(0.f, 0.f, 1.f, 1.f), &results);
+ rtree.Search(gfx::Rect(0, 0, 1, 1), &results);
ASSERT_EQ(2500u, results.size());
for (size_t i = 0; i < 2500; ++i) {
ASSERT_EQ(results[i], i);
}
results.clear();
- rtree.Search(gfx::RectF(0.f, 49.f, 1.f, 1.f), &results);
+ rtree.Search(gfx::Rect(0, 49, 1, 1), &results);
ASSERT_EQ(50u, results.size());
for (size_t i = 0; i < 50; ++i) {
EXPECT_EQ(results[i], 2450u + i);