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 "cc/trees/draw_property_utils.h" | 5 #include "cc/trees/draw_property_utils.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 EffectNode* effect_node = | 47 EffectNode* effect_node = |
48 layer->layer_tree_impl()->property_trees()->effect_tree.Node( | 48 layer->layer_tree_impl()->property_trees()->effect_tree.Node( |
49 layer->effect_tree_index()); | 49 layer->effect_tree_index()); |
50 if (effect_node->owner_id != layer->id()) | 50 if (effect_node->owner_id != layer->id()) |
51 return; | 51 return; |
52 DCHECK_EQ(effect_node->mask_layer_id, -1) << "layer: " << layer->id(); | 52 DCHECK_EQ(effect_node->mask_layer_id, -1) << "layer: " << layer->id(); |
53 DCHECK_EQ(effect_node->replica_layer_id, -1) << "layer: " << layer->id(); | 53 DCHECK_EQ(effect_node->replica_layer_id, -1) << "layer: " << layer->id(); |
54 DCHECK(effect_node->background_filters.IsEmpty()); | 54 DCHECK(effect_node->background_filters.IsEmpty()); |
55 } | 55 } |
56 | 56 |
57 #endif | |
58 | |
59 static void ApplySublayerScale(const int effect_node_id, | |
60 const EffectTree& effect_tree, | |
61 gfx::Transform* transform) { | |
62 const EffectNode* effect_node = effect_tree.Node(effect_node_id); | |
63 const EffectNode* target_effect_node = | |
64 effect_node->has_render_surface | |
65 ? effect_node | |
66 : effect_tree.Node(effect_node->target_id); | |
67 transform->matrix().postScale(target_effect_node->sublayer_scale.x(), | |
68 target_effect_node->sublayer_scale.y(), 1.f); | |
69 } | |
70 | |
71 #if DCHECK_IS_ON() | |
72 void VerifySublayerScalesMatch(const int effect_node_id, | 57 void VerifySublayerScalesMatch(const int effect_node_id, |
73 const int target_transform_id, | 58 const int target_transform_id, |
74 const EffectTree& effect_tree, | 59 const EffectTree& effect_tree, |
75 const TransformTree& transform_tree) { | 60 const TransformTree& transform_tree) { |
76 const TransformNode* target_transform_node = | 61 const TransformNode* target_transform_node = |
77 transform_tree.Node(target_transform_id); | 62 transform_tree.Node(target_transform_id); |
78 const EffectNode* effect_node = effect_tree.Node(effect_node_id); | 63 const EffectNode* effect_node = effect_tree.Node(effect_node_id); |
79 const EffectNode* target_effect_node = | 64 const EffectNode* target_effect_node = |
80 effect_node->has_render_surface | 65 effect_node->has_render_surface |
81 ? effect_node | 66 ? effect_node |
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
708 } | 693 } |
709 } | 694 } |
710 } | 695 } |
711 | 696 |
712 static void ResetIfHasNanCoordinate(gfx::RectF* rect) { | 697 static void ResetIfHasNanCoordinate(gfx::RectF* rect) { |
713 if (std::isnan(rect->x()) || std::isnan(rect->y()) || | 698 if (std::isnan(rect->x()) || std::isnan(rect->y()) || |
714 std::isnan(rect->right()) || std::isnan(rect->bottom())) | 699 std::isnan(rect->right()) || std::isnan(rect->bottom())) |
715 *rect = gfx::RectF(); | 700 *rect = gfx::RectF(); |
716 } | 701 } |
717 | 702 |
| 703 void ApplySublayerScale(const int effect_node_id, |
| 704 const EffectTree& effect_tree, |
| 705 gfx::Transform* transform) { |
| 706 const EffectNode* effect_node = effect_tree.Node(effect_node_id); |
| 707 const EffectNode* target_effect_node = |
| 708 effect_node->has_render_surface |
| 709 ? effect_node |
| 710 : effect_tree.Node(effect_node->target_id); |
| 711 transform->matrix().postScale(target_effect_node->sublayer_scale.x(), |
| 712 target_effect_node->sublayer_scale.y(), 1.f); |
| 713 } |
| 714 |
| 715 void RemoveSublayerScale(const int effect_node_id, |
| 716 const EffectTree& effect_tree, |
| 717 gfx::Transform* transform) { |
| 718 const EffectNode* effect_node = effect_tree.Node(effect_node_id); |
| 719 if (effect_node->sublayer_scale.x() != 0.0 && |
| 720 effect_node->sublayer_scale.y() != 0.0) |
| 721 transform->Scale(1.0 / effect_node->sublayer_scale.x(), |
| 722 1.0 / effect_node->sublayer_scale.y()); |
| 723 } |
| 724 |
718 void ComputeClips(ClipTree* clip_tree, | 725 void ComputeClips(ClipTree* clip_tree, |
719 const TransformTree& transform_tree, | 726 const TransformTree& transform_tree, |
720 const EffectTree& effect_tree, | 727 const EffectTree& effect_tree, |
721 bool non_root_surfaces_enabled) { | 728 bool non_root_surfaces_enabled) { |
722 if (!clip_tree->needs_update()) | 729 if (!clip_tree->needs_update()) |
723 return; | 730 return; |
724 for (int i = 1; i < static_cast<int>(clip_tree->size()); ++i) { | 731 for (int i = 1; i < static_cast<int>(clip_tree->size()); ++i) { |
725 ClipNode* clip_node = clip_tree->Node(i); | 732 ClipNode* clip_node = clip_tree->Node(i); |
726 | 733 |
727 if (clip_node->id == 1) { | 734 if (clip_node->id == 1) { |
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1527 void UpdateElasticOverscroll(PropertyTrees* property_trees, | 1534 void UpdateElasticOverscroll(PropertyTrees* property_trees, |
1528 const Layer* overscroll_elasticity_layer, | 1535 const Layer* overscroll_elasticity_layer, |
1529 const gfx::Vector2dF& elastic_overscroll) { | 1536 const gfx::Vector2dF& elastic_overscroll) { |
1530 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, | 1537 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, |
1531 elastic_overscroll); | 1538 elastic_overscroll); |
1532 } | 1539 } |
1533 | 1540 |
1534 } // namespace draw_property_utils | 1541 } // namespace draw_property_utils |
1535 | 1542 |
1536 } // namespace cc | 1543 } // namespace cc |
OLD | NEW |