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 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 } | 177 } |
178 | 178 |
179 TransformNode* TransformTree::FindNodeFromElementId(ElementId id) { | 179 TransformNode* TransformTree::FindNodeFromElementId(ElementId id) { |
180 auto iterator = property_trees()->element_id_to_transform_node_index.find(id); | 180 auto iterator = property_trees()->element_id_to_transform_node_index.find(id); |
181 if (iterator == property_trees()->element_id_to_transform_node_index.end()) | 181 if (iterator == property_trees()->element_id_to_transform_node_index.end()) |
182 return nullptr; | 182 return nullptr; |
183 | 183 |
184 return Node(iterator->second); | 184 return Node(iterator->second); |
185 } | 185 } |
186 | 186 |
187 void TransformTree::OnTransformAnimated(const gfx::Transform& transform, | 187 bool TransformTree::OnTransformAnimated(ElementId element_id, |
188 int id, | 188 const gfx::Transform& transform) { |
189 LayerTreeImpl* layer_tree_impl) { | 189 TransformNode* node = FindNodeFromElementId(element_id); |
190 TransformNode* node = Node(id); | 190 DCHECK(node); |
191 layer_tree_impl->AddToTransformAnimationsMap(node->owning_layer_id, | 191 if (node->local == transform) |
192 transform); | 192 return false; |
193 if (node->local == transform) { | |
194 return; | |
195 } | |
196 node->local = transform; | 193 node->local = transform; |
197 node->needs_local_transform_update = true; | 194 node->needs_local_transform_update = true; |
198 node->transform_changed = true; | 195 node->transform_changed = true; |
199 property_trees()->changed = true; | 196 property_trees()->changed = true; |
200 set_needs_update(true); | 197 set_needs_update(true); |
201 layer_tree_impl->set_needs_update_draw_properties(); | 198 return true; |
202 } | 199 } |
203 | 200 |
204 bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) { | 201 bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) { |
205 return (source_to_parent_updates_allowed() && | 202 return (source_to_parent_updates_allowed() && |
206 node->parent_id != node->source_node_id); | 203 node->parent_id != node->source_node_id); |
207 } | 204 } |
208 | 205 |
209 void TransformTree::ResetChangeTracking() { | 206 void TransformTree::ResetChangeTracking() { |
210 for (int id = TransformTree::kContentsRootNodeId; | 207 for (int id = TransformTree::kContentsRootNodeId; |
211 id < static_cast<int>(size()); ++id) { | 208 id < static_cast<int>(size()); ++id) { |
(...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
856 } | 853 } |
857 | 854 |
858 EffectNode* EffectTree::FindNodeFromElementId(ElementId id) { | 855 EffectNode* EffectTree::FindNodeFromElementId(ElementId id) { |
859 auto iterator = property_trees()->element_id_to_effect_node_index.find(id); | 856 auto iterator = property_trees()->element_id_to_effect_node_index.find(id); |
860 if (iterator == property_trees()->element_id_to_effect_node_index.end()) | 857 if (iterator == property_trees()->element_id_to_effect_node_index.end()) |
861 return nullptr; | 858 return nullptr; |
862 | 859 |
863 return Node(iterator->second); | 860 return Node(iterator->second); |
864 } | 861 } |
865 | 862 |
866 void EffectTree::OnOpacityAnimated(float opacity, | 863 bool EffectTree::OnOpacityAnimated(ElementId id, float opacity) { |
867 int id, | 864 EffectNode* node = FindNodeFromElementId(id); |
868 LayerTreeImpl* layer_tree_impl) { | 865 DCHECK(node); |
869 EffectNode* node = Node(id); | |
870 layer_tree_impl->AddToOpacityAnimationsMap(node->owning_layer_id, opacity); | |
871 if (node->opacity == opacity) | 866 if (node->opacity == opacity) |
872 return; | 867 return false; |
873 node->opacity = opacity; | 868 node->opacity = opacity; |
874 node->effect_changed = true; | 869 node->effect_changed = true; |
875 property_trees()->changed = true; | 870 property_trees()->changed = true; |
876 property_trees()->effect_tree.set_needs_update(true); | 871 property_trees()->effect_tree.set_needs_update(true); |
877 layer_tree_impl->set_needs_update_draw_properties(); | 872 return true; |
878 } | 873 } |
879 | 874 |
880 void EffectTree::OnFilterAnimated(const FilterOperations& filters, | 875 bool EffectTree::OnFilterAnimated(ElementId id, |
881 int id, | 876 const FilterOperations& filters) { |
882 LayerTreeImpl* layer_tree_impl) { | 877 EffectNode* node = FindNodeFromElementId(id); |
883 EffectNode* node = Node(id); | 878 DCHECK(node); |
884 layer_tree_impl->AddToFilterAnimationsMap(node->owning_layer_id, filters); | |
885 if (node->filters == filters) | 879 if (node->filters == filters) |
886 return; | 880 return false; |
887 node->filters = filters; | 881 node->filters = filters; |
888 node->effect_changed = true; | 882 node->effect_changed = true; |
889 property_trees()->changed = true; | 883 property_trees()->changed = true; |
890 property_trees()->effect_tree.set_needs_update(true); | 884 property_trees()->effect_tree.set_needs_update(true); |
891 layer_tree_impl->set_needs_update_draw_properties(); | 885 return true; |
892 } | 886 } |
893 | 887 |
894 void EffectTree::UpdateEffects(int id) { | 888 void EffectTree::UpdateEffects(int id) { |
895 EffectNode* node = Node(id); | 889 EffectNode* node = Node(id); |
896 EffectNode* parent_node = parent(node); | 890 EffectNode* parent_node = parent(node); |
897 | 891 |
898 UpdateOpacities(node, parent_node); | 892 UpdateOpacities(node, parent_node); |
899 UpdateIsDrawn(node, parent_node); | 893 UpdateIsDrawn(node, parent_node); |
900 UpdateEffectChanged(node, parent_node); | 894 UpdateEffectChanged(node, parent_node); |
901 UpdateBackfaceVisibility(node, parent_node); | 895 UpdateBackfaceVisibility(node, parent_node); |
(...skipping 1215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2117 const EffectNode* effect_node = effect_tree.Node(effect_id); | 2111 const EffectNode* effect_node = effect_tree.Node(effect_id); |
2118 | 2112 |
2119 if (effect_node->surface_contents_scale.x() != 0.0 && | 2113 if (effect_node->surface_contents_scale.x() != 0.0 && |
2120 effect_node->surface_contents_scale.y() != 0.0) | 2114 effect_node->surface_contents_scale.y() != 0.0) |
2121 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), | 2115 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), |
2122 1.0 / effect_node->surface_contents_scale.y()); | 2116 1.0 / effect_node->surface_contents_scale.y()); |
2123 return screen_space_transform; | 2117 return screen_space_transform; |
2124 } | 2118 } |
2125 | 2119 |
2126 } // namespace cc | 2120 } // namespace cc |
OLD | NEW |