| // 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/layers/layer.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), |
| nearest_element_shifting_sticky_box(kInvalidElementId), |
| nearest_element_shifting_containing_block(kInvalidElementId) {} |
| |
| LayerStickyPositionConstraint::LayerStickyPositionConstraint( |
| const LayerStickyPositionConstraint& other) = default; |
| |
| 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 && |
| constraint_box_rect == other.constraint_box_rect && |
| 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 && |
| nearest_element_shifting_sticky_box == |
| other.nearest_element_shifting_sticky_box && |
| nearest_element_shifting_containing_block == |
| other.nearest_element_shifting_containing_block; |
| } |
| |
| bool LayerStickyPositionConstraint::operator!=( |
| const LayerStickyPositionConstraint& other) const { |
| return !(*this == other); |
| } |
| |
| ElementId LayerStickyPositionConstraint::NearestStickyAncestor() { |
| return nearest_element_shifting_sticky_box |
| ? nearest_element_shifting_sticky_box |
| : nearest_element_shifting_containing_block; |
| } |
| |
| } // namespace cc |