blob: f9e6d8764260e5362ffa5b10ee4990637ab4e717 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/paint_preview/browser/hit_tester.h"
#include <vector>
#include "components/paint_preview/common/proto/paint_preview.pb.h"
namespace paint_preview {
HitTester::HitTester() = default;
HitTester::~HitTester() = default;
void HitTester::Build(const PaintPreviewFrameProto& proto) {
const auto& links = proto.links();
rtree_.Build(
links.size(),
[&links](size_t index) {
const auto& rect = links[index].rect();
return gfx::Rect(rect.x(), rect.y(), rect.width(), rect.height());
},
[&links](size_t index) { return GURL(links[index].url()); });
}
void HitTester::Build(const std::vector<LinkData>& links) {
rtree_.Build(
links.size(), [&links](size_t index) { return links[index].rect; },
[&links](size_t index) { return links[index].url; });
}
bool HitTester::IsValid() {
return rtree_.has_valid_bounds();
}
void HitTester::HitTest(const gfx::Rect& query,
std::vector<const GURL*>* results) const {
rtree_.SearchRefs(query, results);
}
} // namespace paint_preview