| // Copyright 2013 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 "cc/layers/layer_sticky_position_constraint.h" |
| #include "cc/proto/gfx_conversions.h" |
| #include "cc/proto/layer_sticky_position_constraint.pb.h" |
| |
| namespace cc { |
| |
| LayerStickyPositionConstraint::LayerStickyPositionConstraint() |
| : is_sticky(false), |
| is_anchored_left(false), |
| is_anchored_right(false), |
| is_anchored_top(false), |
| is_anchored_bottom(false), |
| left_offset(0.f), |
| right_offset(0.f), |
| top_offset(0.f), |
| bottom_offset(0.f) {} |
| |
| LayerStickyPositionConstraint::LayerStickyPositionConstraint( |
| const LayerStickyPositionConstraint& other) |
| : is_sticky(other.is_sticky), |
| is_anchored_left(other.is_anchored_left), |
| is_anchored_right(other.is_anchored_right), |
| is_anchored_top(other.is_anchored_top), |
| is_anchored_bottom(other.is_anchored_bottom), |
| left_offset(other.left_offset), |
| right_offset(other.right_offset), |
| top_offset(other.top_offset), |
| bottom_offset(other.bottom_offset), |
| parent_relative_sticky_box_offset( |
| other.parent_relative_sticky_box_offset), |
| scroll_container_relative_sticky_box_rect( |
| other.scroll_container_relative_sticky_box_rect), |
| scroll_container_relative_containing_block_rect( |
| other.scroll_container_relative_containing_block_rect) {} |
| |
| void LayerStickyPositionConstraint::ToProtobuf( |
| proto::LayerStickyPositionConstraint* proto) const { |
| proto->set_is_sticky(is_sticky); |
| proto->set_is_anchored_left(is_anchored_left); |
| proto->set_is_anchored_right(is_anchored_right); |
| proto->set_is_anchored_top(is_anchored_top); |
| proto->set_is_anchored_bottom(is_anchored_bottom); |
| proto->set_left_offset(left_offset); |
| proto->set_right_offset(right_offset); |
| proto->set_top_offset(top_offset); |
| proto->set_bottom_offset(bottom_offset); |
| PointToProto(parent_relative_sticky_box_offset, |
| proto->mutable_parent_relative_sticky_box_offset()); |
| RectToProto(scroll_container_relative_sticky_box_rect, |
| proto->mutable_scroll_container_relative_sticky_box_rect()); |
| RectToProto(scroll_container_relative_containing_block_rect, |
| proto->mutable_scroll_container_relative_containing_block_rect()); |
| } |
| |
| void LayerStickyPositionConstraint::FromProtobuf( |
| const proto::LayerStickyPositionConstraint& proto) { |
| is_sticky = proto.is_sticky(); |
| is_anchored_left = proto.is_anchored_left(); |
| is_anchored_right = proto.is_anchored_right(); |
| is_anchored_top = proto.is_anchored_top(); |
| is_anchored_bottom = proto.is_anchored_bottom(); |
| left_offset = proto.left_offset(); |
| right_offset = proto.right_offset(); |
| top_offset = proto.top_offset(); |
| bottom_offset = proto.bottom_offset(); |
| parent_relative_sticky_box_offset = |
| ProtoToPoint(proto.parent_relative_sticky_box_offset()); |
| scroll_container_relative_sticky_box_rect = |
| ProtoToRect(proto.scroll_container_relative_sticky_box_rect()); |
| scroll_container_relative_containing_block_rect = |
| ProtoToRect(proto.scroll_container_relative_containing_block_rect()); |
| } |
| |
| bool LayerStickyPositionConstraint::operator==( |
| const LayerStickyPositionConstraint& other) const { |
| if (!is_sticky && !other.is_sticky) |
| return true; |
| return is_sticky == other.is_sticky && |
| is_anchored_left == other.is_anchored_left && |
| is_anchored_right == other.is_anchored_right && |
| is_anchored_top == other.is_anchored_top && |
| is_anchored_bottom == other.is_anchored_bottom && |
| left_offset == other.left_offset && |
| right_offset == other.right_offset && top_offset == other.top_offset && |
| bottom_offset == other.bottom_offset && |
| parent_relative_sticky_box_offset == |
| other.parent_relative_sticky_box_offset && |
| scroll_container_relative_sticky_box_rect == |
| other.scroll_container_relative_sticky_box_rect && |
| scroll_container_relative_containing_block_rect == |
| other.scroll_container_relative_containing_block_rect; |
| } |
| |
| bool LayerStickyPositionConstraint::operator!=( |
| const LayerStickyPositionConstraint& other) const { |
| return !(*this == other); |
| } |
| |
| } // namespace cc |