Index: services/gfx/compositor/graph/node_def.h |
diff --git a/services/gfx/compositor/graph/node_def.h b/services/gfx/compositor/graph/node_def.h |
index 5e84d1a6634f9b27f890d40dc2da9f47c2d2103c..91dd9710a2a1b7b6ea0da6007aa9a68dec4b3610 100644 |
--- a/services/gfx/compositor/graph/node_def.h |
+++ b/services/gfx/compositor/graph/node_def.h |
@@ -14,6 +14,8 @@ |
#include "services/gfx/compositor/graph/snapshot.h" |
class SkCanvas; |
+struct SkPoint; |
+class SkMatrix; |
namespace compositor { |
@@ -35,6 +37,7 @@ class NodeDef : public base::RefCounted<NodeDef> { |
NodeDef(uint32_t node_id, |
mojo::TransformPtr content_transform, |
mojo::RectPtr content_clip, |
+ mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, |
Combinator combinator, |
const std::vector<uint32_t>& child_node_ids); |
@@ -42,6 +45,9 @@ class NodeDef : public base::RefCounted<NodeDef> { |
const mojo::Transform* content_transform() const { |
return content_transform_.get(); |
} |
+ const mojo::gfx::composition::HitTestBehavior* hit_test_behavior() const { |
+ return hit_test_behavior_.get(); |
+ } |
const mojo::Rect* content_clip() const { return content_clip_.get(); } |
Combinator combinator() const { return combinator_; } |
const std::vector<uint32_t>& child_node_ids() const { |
@@ -68,6 +74,18 @@ class NodeDef : public base::RefCounted<NodeDef> { |
const Snapshot* snapshot, |
SkCanvas* canvas) const; |
+ // Performs a hit test at the specified point. |
+ // The |global_point| is the original hit tested point. |
+ // The |parent_transform| is the accumulated transform from the parent's |
+ // coordinate space to the global coordinate space. |
+ // Adds hit information for the node to the array. |
+ void HitTest(const SceneContent* content, |
+ const Snapshot* snapshot, |
+ const SkPoint& global_point, |
+ const SkMatrix& parent_transform, |
abarth
2016/03/09 04:02:48
Don't you want an SkMatrix44 here?
jeffbrown
2016/03/09 20:32:11
I didn't know that existed! ha! I'll make a note
|
+ bool* opaque, |
+ mojo::Array<mojo::gfx::composition::HitPtr>* hits) const; |
+ |
protected: |
friend class base::RefCounted<NodeDef>; |
virtual ~NodeDef(); |
@@ -85,10 +103,19 @@ class NodeDef : public base::RefCounted<NodeDef> { |
const Snapshot* snapshot, |
SkCanvas* canvas) const; |
+ virtual void HitTestInner( |
+ const SceneContent* content, |
+ const Snapshot* snapshot, |
+ const SkPoint& global_point, |
+ const SkMatrix& node_transform, |
+ bool* opaque, |
+ mojo::Array<mojo::gfx::composition::HitPtr>* hits) const; |
+ |
private: |
uint32_t const node_id_; |
mojo::TransformPtr const content_transform_; |
mojo::RectPtr const content_clip_; |
+ mojo::gfx::composition::HitTestBehaviorPtr const hit_test_behavior_; |
Combinator const combinator_; |
std::vector<uint32_t> const child_node_ids_; |
@@ -103,6 +130,7 @@ class RectNodeDef : public NodeDef { |
RectNodeDef(uint32_t node_id, |
mojo::TransformPtr content_transform, |
mojo::RectPtr content_clip, |
+ mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, |
Combinator combinator, |
const std::vector<uint32_t>& child_node_ids, |
const mojo::Rect& content_rect, |
@@ -133,6 +161,7 @@ class ImageNodeDef : public NodeDef { |
ImageNodeDef(uint32_t node_id, |
mojo::TransformPtr content_transform, |
mojo::RectPtr content_clip, |
+ mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, |
Combinator combinator, |
const std::vector<uint32_t>& child_node_ids, |
const mojo::Rect& content_rect, |
@@ -171,6 +200,7 @@ class SceneNodeDef : public NodeDef { |
SceneNodeDef(uint32_t node_id, |
mojo::TransformPtr content_transform, |
mojo::RectPtr content_clip, |
+ mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, |
Combinator combinator, |
const std::vector<uint32_t>& child_node_ids, |
uint32_t scene_resource_id, |
@@ -191,6 +221,14 @@ class SceneNodeDef : public NodeDef { |
const Snapshot* snapshot, |
SkCanvas* canvas) const override; |
+ void HitTestInner( |
+ const SceneContent* content, |
+ const Snapshot* snapshot, |
+ const SkPoint& global_point, |
+ const SkMatrix& node_transform, |
+ bool* opaque, |
+ mojo::Array<mojo::gfx::composition::HitPtr>* hits) const override; |
+ |
private: |
uint32_t const scene_resource_id_; |
uint32_t const scene_version_; |
@@ -206,6 +244,7 @@ class LayerNodeDef : public NodeDef { |
LayerNodeDef(uint32_t node_id, |
mojo::TransformPtr content_transform, |
mojo::RectPtr content_clip, |
+ mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, |
Combinator combinator, |
const std::vector<uint32_t>& child_node_ids, |
const mojo::Size& size, |