Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1019)

Unified Diff: services/gfx/compositor/graph/snapshot.cc

Issue 1774373002: Mozart: Implement hit testing. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-4
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: services/gfx/compositor/graph/snapshot.cc
diff --git a/services/gfx/compositor/graph/snapshot.cc b/services/gfx/compositor/graph/snapshot.cc
index 66f44e987422516606efa5d2465250f974517fa9..4dfed4e4930d1af92667b91e588836c2c7932782 100644
--- a/services/gfx/compositor/graph/snapshot.cc
+++ b/services/gfx/compositor/graph/snapshot.cc
@@ -5,9 +5,11 @@
#include "services/gfx/compositor/graph/snapshot.h"
#include "base/logging.h"
+#include "mojo/skia/type_converters.h"
#include "services/gfx/compositor/graph/scene_content.h"
#include "services/gfx/compositor/graph/scene_def.h"
#include "services/gfx/compositor/render/render_frame.h"
+#include "third_party/skia/include/core/SkMatrix.h"
#include "third_party/skia/include/core/SkPictureRecorder.h"
#include "third_party/skia/include/core/SkRect.h"
@@ -25,21 +27,27 @@ std::shared_ptr<RenderFrame> Snapshot::CreateFrame(
const mojo::Rect& viewport,
const mojo::gfx::composition::FrameInfo& frame_info) const {
DCHECK(!is_blocked());
+ DCHECK(root_scene_content_);
- SkRect sk_viewport =
- SkRect::MakeXYWH(viewport.x, viewport.y, viewport.width, viewport.height);
+ SkRect sk_viewport = viewport.To<SkRect>();
SkPictureRecorder recorder;
recorder.beginRecording(sk_viewport);
-
- const NodeDef* root_node = root_scene_content_->GetRootNodeIfExists();
- DCHECK(root_node); // otherwise would have failed to snapshot
- root_node->RecordPicture(root_scene_content_.get(), this,
- recorder.getRecordingCanvas());
-
+ root_scene_content_->RecordPicture(this, recorder.getRecordingCanvas());
return RenderFrame::Create(skia::AdoptRef(recorder.endRecordingAsPicture()),
sk_viewport, frame_info);
}
+void Snapshot::HitTest(const mojo::Point& point,
+ mojo::gfx::composition::HitTestResult* result) const {
+ DCHECK(result);
+ DCHECK(!is_blocked());
+ DCHECK(root_scene_content_);
+
+ bool opaque = false;
+ result->root = root_scene_content_->HitTest(this, point.To<SkPoint>(),
+ SkMatrix::I(), &opaque);
+}
+
bool Snapshot::IsNodeBlocked(const NodeDef* node) const {
DCHECK(!is_blocked());
« services/gfx/compositor/graph/node_def.cc ('K') | « services/gfx/compositor/graph/snapshot.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698