Index: cc/trees/clip_node.cc |
diff --git a/cc/trees/clip_node.cc b/cc/trees/clip_node.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b5efb98f064d70cae70cbd8c944b74fffcb33631 |
--- /dev/null |
+++ b/cc/trees/clip_node.cc |
@@ -0,0 +1,111 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/trace_event/trace_event_argument.h" |
+#include "cc/base/math_util.h" |
+#include "cc/proto/gfx_conversions.h" |
+#include "cc/proto/property_tree.pb.h" |
+#include "cc/trees/clip_node.h" |
+ |
+namespace cc { |
+ |
+ClipNode::ClipNode() |
+ : id(-1), |
+ parent_id(-1), |
+ owner_id(-1), |
+ transform_id(-1), |
+ target_id(-1), |
+ applies_local_clip(true), |
+ layer_clipping_uses_only_local_clip(false), |
+ target_is_clipped(false), |
+ layers_are_clipped(false), |
+ layers_are_clipped_when_surfaces_disabled(false), |
+ resets_clip(false) {} |
+ |
+ClipNode::ClipNode(const ClipNode& other) = default; |
+ |
+bool ClipNode::operator==(const ClipNode& other) const { |
+ return id == other.id && parent_id == other.parent_id && |
+ owner_id == other.owner_id && clip == other.clip && |
+ combined_clip_in_target_space == other.combined_clip_in_target_space && |
+ clip_in_target_space == other.clip_in_target_space && |
+ transform_id == other.transform_id && target_id == other.target_id && |
+ applies_local_clip == other.applies_local_clip && |
+ layer_clipping_uses_only_local_clip == |
+ other.layer_clipping_uses_only_local_clip && |
+ target_is_clipped == other.target_is_clipped && |
+ layers_are_clipped == other.layers_are_clipped && |
+ layers_are_clipped_when_surfaces_disabled == |
+ other.layers_are_clipped_when_surfaces_disabled && |
+ resets_clip == other.resets_clip; |
+} |
+ |
+void ClipNode::ToProtobuf(proto::TreeNode* proto) const { |
+ proto->set_id(id); |
+ proto->set_parent_id(parent_id); |
+ proto->set_owner_id(owner_id); |
+ |
+ DCHECK(!proto->has_clip_node_data()); |
+ proto::ClipNodeData* data = proto->mutable_clip_node_data(); |
+ |
+ RectFToProto(clip, data->mutable_clip()); |
+ RectFToProto(combined_clip_in_target_space, |
+ data->mutable_combined_clip_in_target_space()); |
+ RectFToProto(clip_in_target_space, data->mutable_clip_in_target_space()); |
+ |
+ data->set_transform_id(transform_id); |
+ data->set_target_id(target_id); |
+ data->set_applies_local_clip(applies_local_clip); |
+ data->set_layer_clipping_uses_only_local_clip( |
+ layer_clipping_uses_only_local_clip); |
+ data->set_target_is_clipped(target_is_clipped); |
+ data->set_layers_are_clipped(layers_are_clipped); |
+ data->set_layers_are_clipped_when_surfaces_disabled( |
+ layers_are_clipped_when_surfaces_disabled); |
+ data->set_resets_clip(resets_clip); |
+} |
+ |
+void ClipNode::FromProtobuf(const proto::TreeNode& proto) { |
+ id = proto.id(); |
+ parent_id = proto.parent_id(); |
+ owner_id = proto.owner_id(); |
+ |
+ DCHECK(proto.has_clip_node_data()); |
+ const proto::ClipNodeData& data = proto.clip_node_data(); |
+ |
+ clip = ProtoToRectF(data.clip()); |
+ combined_clip_in_target_space = |
+ ProtoToRectF(data.combined_clip_in_target_space()); |
+ clip_in_target_space = ProtoToRectF(data.clip_in_target_space()); |
+ |
+ transform_id = data.transform_id(); |
+ target_id = data.target_id(); |
+ applies_local_clip = data.applies_local_clip(); |
+ layer_clipping_uses_only_local_clip = |
+ data.layer_clipping_uses_only_local_clip(); |
+ target_is_clipped = data.target_is_clipped(); |
+ layers_are_clipped = data.layers_are_clipped(); |
+ layers_are_clipped_when_surfaces_disabled = |
+ data.layers_are_clipped_when_surfaces_disabled(); |
+ resets_clip = data.resets_clip(); |
+} |
+ |
+void ClipNode::AsValueInto(base::trace_event::TracedValue* value) const { |
+ value->SetInteger("id", id); |
+ value->SetInteger("parent_id", parent_id); |
+ value->SetInteger("owner_id", owner_id); |
+ MathUtil::AddToTracedValue("clip", clip, value); |
+ value->SetInteger("transform_id", transform_id); |
+ value->SetInteger("target_id", target_id); |
+ value->SetBoolean("applies_local_clip", applies_local_clip); |
+ value->SetBoolean("layer_clipping_uses_only_local_clip", |
+ layer_clipping_uses_only_local_clip); |
+ value->SetBoolean("target_is_clipped", target_is_clipped); |
+ value->SetBoolean("layers_are_clipped", layers_are_clipped); |
+ value->SetBoolean("layers_are_clipped_when_surfaces_disabled", |
+ layers_are_clipped_when_surfaces_disabled); |
+ value->SetBoolean("resets_clip", resets_clip); |
+} |
+ |
+} // namespace cc |