Chromium Code Reviews| 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, |