diff options
author | wkorman <wkorman@chromium.org> | 2015-12-03 22:24:22 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-04 06:25:27 +0000 |
commit | c1dd959b9cb26b2c3c9e49334d209e1fbda33f4c (patch) | |
tree | 132c03b686057abaa5acb74d32ae4a8c71a03cd5 /cc/base | |
parent | aae2523be94a72e94f309238eaab3c3372483c75 (diff) | |
download | chromium_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.cc | 5 | ||||
-rw-r--r-- | cc/base/rtree.h | 10 | ||||
-rw-r--r-- | cc/base/rtree_unittest.cc | 18 |
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); |