| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 } | 172 } |
| 173 } | 173 } |
| 174 | 174 |
| 175 return true; | 175 return true; |
| 176 } | 176 } |
| 177 | 177 |
| 178 void TransformTree::OnTransformAnimated(const gfx::Transform& transform, | 178 void TransformTree::OnTransformAnimated(const gfx::Transform& transform, |
| 179 int id, | 179 int id, |
| 180 LayerTreeImpl* layer_tree_impl) { | 180 LayerTreeImpl* layer_tree_impl) { |
| 181 TransformNode* node = Node(id); | 181 TransformNode* node = Node(id); |
| 182 layer_tree_impl->AddToTransformAnimationsMap(node->owner_id, transform); | 182 layer_tree_impl->AddToTransformAnimationsMap(node->owning_layer_id, |
| 183 transform); |
| 183 if (node->local == transform) { | 184 if (node->local == transform) { |
| 184 return; | 185 return; |
| 185 } | 186 } |
| 186 node->local = transform; | 187 node->local = transform; |
| 187 node->needs_local_transform_update = true; | 188 node->needs_local_transform_update = true; |
| 188 node->transform_changed = true; | 189 node->transform_changed = true; |
| 189 property_trees()->changed = true; | 190 property_trees()->changed = true; |
| 190 set_needs_update(true); | 191 set_needs_update(true); |
| 191 layer_tree_impl->set_needs_update_draw_properties(); | 192 layer_tree_impl->set_needs_update_draw_properties(); |
| 192 } | 193 } |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 gfx::Vector2dF StickyPositionOffset(TransformTree* tree, TransformNode* node) { | 344 gfx::Vector2dF StickyPositionOffset(TransformTree* tree, TransformNode* node) { |
| 344 if (node->sticky_position_constraint_id == -1) | 345 if (node->sticky_position_constraint_id == -1) |
| 345 return gfx::Vector2dF(); | 346 return gfx::Vector2dF(); |
| 346 const StickyPositionNodeData* sticky_data = | 347 const StickyPositionNodeData* sticky_data = |
| 347 tree->StickyPositionData(node->id); | 348 tree->StickyPositionData(node->id); |
| 348 const LayerStickyPositionConstraint& constraint = sticky_data->constraints; | 349 const LayerStickyPositionConstraint& constraint = sticky_data->constraints; |
| 349 ScrollNode* scroll_node = | 350 ScrollNode* scroll_node = |
| 350 tree->property_trees()->scroll_tree.Node(sticky_data->scroll_ancestor); | 351 tree->property_trees()->scroll_tree.Node(sticky_data->scroll_ancestor); |
| 351 gfx::ScrollOffset scroll_offset = | 352 gfx::ScrollOffset scroll_offset = |
| 352 tree->property_trees()->scroll_tree.current_scroll_offset( | 353 tree->property_trees()->scroll_tree.current_scroll_offset( |
| 353 scroll_node->owner_id); | 354 scroll_node->owning_layer_id); |
| 354 gfx::PointF scroll_position(scroll_offset.x(), scroll_offset.y()); | 355 gfx::PointF scroll_position(scroll_offset.x(), scroll_offset.y()); |
| 355 TransformNode* scroll_ancestor_transform_node = | 356 TransformNode* scroll_ancestor_transform_node = |
| 356 tree->Node(scroll_node->transform_id); | 357 tree->Node(scroll_node->transform_id); |
| 357 if (scroll_ancestor_transform_node->scrolls) { | 358 if (scroll_ancestor_transform_node->scrolls) { |
| 358 // The scroll position does not include snapping which shifts the scroll | 359 // The scroll position does not include snapping which shifts the scroll |
| 359 // offset to align to a pixel boundary, we need to manually include it here. | 360 // offset to align to a pixel boundary, we need to manually include it here. |
| 360 // In this case, snapping is caused by a scroll. | 361 // In this case, snapping is caused by a scroll. |
| 361 scroll_position -= scroll_ancestor_transform_node->snap_amount; | 362 scroll_position -= scroll_ancestor_transform_node->snap_amount; |
| 362 } | 363 } |
| 363 | 364 |
| (...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 829 layer_scale_factor *= transform_tree.page_scale_factor(); | 830 layer_scale_factor *= transform_tree.page_scale_factor(); |
| 830 effect_node->surface_contents_scale = | 831 effect_node->surface_contents_scale = |
| 831 MathUtil::ComputeTransform2dScaleComponents( | 832 MathUtil::ComputeTransform2dScaleComponents( |
| 832 transform_tree.ToScreen(transform_node->id), layer_scale_factor); | 833 transform_tree.ToScreen(transform_node->id), layer_scale_factor); |
| 833 } | 834 } |
| 834 | 835 |
| 835 void EffectTree::OnOpacityAnimated(float opacity, | 836 void EffectTree::OnOpacityAnimated(float opacity, |
| 836 int id, | 837 int id, |
| 837 LayerTreeImpl* layer_tree_impl) { | 838 LayerTreeImpl* layer_tree_impl) { |
| 838 EffectNode* node = Node(id); | 839 EffectNode* node = Node(id); |
| 839 layer_tree_impl->AddToOpacityAnimationsMap(node->owner_id, opacity); | 840 layer_tree_impl->AddToOpacityAnimationsMap(node->owning_layer_id, opacity); |
| 840 if (node->opacity == opacity) | 841 if (node->opacity == opacity) |
| 841 return; | 842 return; |
| 842 node->opacity = opacity; | 843 node->opacity = opacity; |
| 843 node->effect_changed = true; | 844 node->effect_changed = true; |
| 844 property_trees()->changed = true; | 845 property_trees()->changed = true; |
| 845 property_trees()->effect_tree.set_needs_update(true); | 846 property_trees()->effect_tree.set_needs_update(true); |
| 846 layer_tree_impl->set_needs_update_draw_properties(); | 847 layer_tree_impl->set_needs_update_draw_properties(); |
| 847 } | 848 } |
| 848 | 849 |
| 849 void EffectTree::OnFilterAnimated(const FilterOperations& filters, | 850 void EffectTree::OnFilterAnimated(const FilterOperations& filters, |
| 850 int id, | 851 int id, |
| 851 LayerTreeImpl* layer_tree_impl) { | 852 LayerTreeImpl* layer_tree_impl) { |
| 852 EffectNode* node = Node(id); | 853 EffectNode* node = Node(id); |
| 853 layer_tree_impl->AddToFilterAnimationsMap(node->owner_id, filters); | 854 layer_tree_impl->AddToFilterAnimationsMap(node->owning_layer_id, filters); |
| 854 if (node->filters == filters) | 855 if (node->filters == filters) |
| 855 return; | 856 return; |
| 856 node->filters = filters; | 857 node->filters = filters; |
| 857 node->effect_changed = true; | 858 node->effect_changed = true; |
| 858 property_trees()->changed = true; | 859 property_trees()->changed = true; |
| 859 property_trees()->effect_tree.set_needs_update(true); | 860 property_trees()->effect_tree.set_needs_update(true); |
| 860 layer_tree_impl->set_needs_update_draw_properties(); | 861 layer_tree_impl->set_needs_update_draw_properties(); |
| 861 } | 862 } |
| 862 | 863 |
| 863 void EffectTree::UpdateEffects(int id) { | 864 void EffectTree::UpdateEffects(int id) { |
| (...skipping 540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1404 | 1405 |
| 1405 gfx::Vector2dF ScrollTree::ScrollBy(ScrollNode* scroll_node, | 1406 gfx::Vector2dF ScrollTree::ScrollBy(ScrollNode* scroll_node, |
| 1406 const gfx::Vector2dF& scroll, | 1407 const gfx::Vector2dF& scroll, |
| 1407 LayerTreeImpl* layer_tree_impl) { | 1408 LayerTreeImpl* layer_tree_impl) { |
| 1408 gfx::ScrollOffset adjusted_scroll(scroll); | 1409 gfx::ScrollOffset adjusted_scroll(scroll); |
| 1409 if (!scroll_node->user_scrollable_horizontal) | 1410 if (!scroll_node->user_scrollable_horizontal) |
| 1410 adjusted_scroll.set_x(0); | 1411 adjusted_scroll.set_x(0); |
| 1411 if (!scroll_node->user_scrollable_vertical) | 1412 if (!scroll_node->user_scrollable_vertical) |
| 1412 adjusted_scroll.set_y(0); | 1413 adjusted_scroll.set_y(0); |
| 1413 DCHECK(scroll_node->scrollable); | 1414 DCHECK(scroll_node->scrollable); |
| 1414 gfx::ScrollOffset old_offset = current_scroll_offset(scroll_node->owner_id); | 1415 gfx::ScrollOffset old_offset = |
| 1416 current_scroll_offset(scroll_node->owning_layer_id); |
| 1415 gfx::ScrollOffset new_offset = | 1417 gfx::ScrollOffset new_offset = |
| 1416 ClampScrollOffsetToLimits(old_offset + adjusted_scroll, scroll_node); | 1418 ClampScrollOffsetToLimits(old_offset + adjusted_scroll, scroll_node); |
| 1417 if (SetScrollOffset(scroll_node->owner_id, new_offset)) | 1419 if (SetScrollOffset(scroll_node->owning_layer_id, new_offset)) |
| 1418 layer_tree_impl->DidUpdateScrollOffset(scroll_node->owner_id); | 1420 layer_tree_impl->DidUpdateScrollOffset(scroll_node->owning_layer_id); |
| 1419 | 1421 |
| 1420 gfx::ScrollOffset unscrolled = | 1422 gfx::ScrollOffset unscrolled = |
| 1421 old_offset + gfx::ScrollOffset(scroll) - new_offset; | 1423 old_offset + gfx::ScrollOffset(scroll) - new_offset; |
| 1422 return gfx::Vector2dF(unscrolled.x(), unscrolled.y()); | 1424 return gfx::Vector2dF(unscrolled.x(), unscrolled.y()); |
| 1423 } | 1425 } |
| 1424 | 1426 |
| 1425 gfx::ScrollOffset ScrollTree::ClampScrollOffsetToLimits( | 1427 gfx::ScrollOffset ScrollTree::ClampScrollOffsetToLimits( |
| 1426 gfx::ScrollOffset offset, | 1428 gfx::ScrollOffset offset, |
| 1427 ScrollNode* scroll_node) const { | 1429 ScrollNode* scroll_node) const { |
| 1428 offset.SetToMin(MaxScrollOffset(scroll_node->id)); | 1430 offset.SetToMin(MaxScrollOffset(scroll_node->id)); |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1755 float max_local_scale = std::max(local_scales.x(), local_scales.y()); | 1757 float max_local_scale = std::max(local_scales.x(), local_scales.y()); |
| 1756 cached_data_.animation_scales[transform_node_id] | 1758 cached_data_.animation_scales[transform_node_id] |
| 1757 .combined_maximum_animation_target_scale = | 1759 .combined_maximum_animation_target_scale = |
| 1758 max_local_scale * ancestor_maximum_target_scale; | 1760 max_local_scale * ancestor_maximum_target_scale; |
| 1759 cached_data_.animation_scales[transform_node_id] | 1761 cached_data_.animation_scales[transform_node_id] |
| 1760 .combined_starting_animation_scale = | 1762 .combined_starting_animation_scale = |
| 1761 max_local_scale * ancestor_starting_animation_scale; | 1763 max_local_scale * ancestor_starting_animation_scale; |
| 1762 } else { | 1764 } else { |
| 1763 // TODO(sunxd): make LayerTreeImpl::MaximumTargetScale take layer id as | 1765 // TODO(sunxd): make LayerTreeImpl::MaximumTargetScale take layer id as |
| 1764 // parameter. | 1766 // parameter. |
| 1765 LayerImpl* layer_impl = layer_tree_impl->LayerById(node->owner_id); | 1767 LayerImpl* layer_impl = layer_tree_impl->LayerById(node->owning_layer_id); |
| 1766 layer_impl->GetMutatorHost()->MaximumTargetScale( | 1768 layer_impl->GetMutatorHost()->MaximumTargetScale( |
| 1767 layer_impl->element_id(), layer_impl->GetElementTypeForAnimation(), | 1769 layer_impl->element_id(), layer_impl->GetElementTypeForAnimation(), |
| 1768 &cached_data_.animation_scales[transform_node_id] | 1770 &cached_data_.animation_scales[transform_node_id] |
| 1769 .local_maximum_animation_target_scale); | 1771 .local_maximum_animation_target_scale); |
| 1770 layer_impl->GetMutatorHost()->AnimationStartScale( | 1772 layer_impl->GetMutatorHost()->AnimationStartScale( |
| 1771 layer_impl->element_id(), layer_impl->GetElementTypeForAnimation(), | 1773 layer_impl->element_id(), layer_impl->GetElementTypeForAnimation(), |
| 1772 &cached_data_.animation_scales[transform_node_id] | 1774 &cached_data_.animation_scales[transform_node_id] |
| 1773 .local_starting_animation_scale); | 1775 .local_starting_animation_scale); |
| 1774 gfx::Vector2dF local_scales = | 1776 gfx::Vector2dF local_scales = |
| 1775 MathUtil::ComputeTransform2dScaleComponents(node->local, 0.f); | 1777 MathUtil::ComputeTransform2dScaleComponents(node->local, 0.f); |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1976 | 1978 |
| 1977 const EffectNode* effect_node = effect_tree.Node(effect_id); | 1979 const EffectNode* effect_node = effect_tree.Node(effect_id); |
| 1978 | 1980 |
| 1979 bool success = GetFromTarget(transform_id, effect_id, transform); | 1981 bool success = GetFromTarget(transform_id, effect_id, transform); |
| 1980 transform->Scale(effect_node->surface_contents_scale.x(), | 1982 transform->Scale(effect_node->surface_contents_scale.x(), |
| 1981 effect_node->surface_contents_scale.y()); | 1983 effect_node->surface_contents_scale.y()); |
| 1982 return success; | 1984 return success; |
| 1983 } | 1985 } |
| 1984 | 1986 |
| 1985 } // namespace cc | 1987 } // namespace cc |
| OLD | NEW |