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

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
« no previous file with comments | « services/gfx/compositor/graph/snapshot.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..8371cf7a472999a87420bab68cdc8fdcda2bb15a 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,26 @@ 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_);
+
+ root_scene_content_->HitTest(this, point.To<SkPoint>(), SkMatrix::I(),
+ &result->root);
+}
+
bool Snapshot::IsNodeBlocked(const NodeDef* node) const {
DCHECK(!is_blocked());
« no previous file with comments | « services/gfx/compositor/graph/snapshot.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698