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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 } | 179 } |
180 | 180 |
181 TransformNode* TransformTree::FindNodeFromElementId(ElementId id) { | 181 TransformNode* TransformTree::FindNodeFromElementId(ElementId id) { |
182 auto iterator = property_trees()->element_id_to_transform_node_index.find(id); | 182 auto iterator = property_trees()->element_id_to_transform_node_index.find(id); |
183 if (iterator == property_trees()->element_id_to_transform_node_index.end()) | 183 if (iterator == property_trees()->element_id_to_transform_node_index.end()) |
184 return nullptr; | 184 return nullptr; |
185 | 185 |
186 return Node(iterator->second); | 186 return Node(iterator->second); |
187 } | 187 } |
188 | 188 |
189 void TransformTree::OnTransformAnimated(const gfx::Transform& transform, | 189 void TransformTree::OnTransformAnimated(ElementId element_id, |
190 int id, | 190 const gfx::Transform& transform) { |
191 LayerTreeImpl* layer_tree_impl) { | 191 TransformNode* node = FindNodeFromElementId(element_id); |
192 TransformNode* node = Node(id); | 192 DCHECK(node); |
193 layer_tree_impl->AddToTransformAnimationsMap(node->owning_layer_id, | |
194 transform); | |
195 if (node->local == transform) { | 193 if (node->local == transform) { |
196 return; | 194 return; |
197 } | 195 } |
198 node->local = transform; | 196 node->local = transform; |
199 node->needs_local_transform_update = true; | 197 node->needs_local_transform_update = true; |
200 node->transform_changed = true; | 198 node->transform_changed = true; |
201 property_trees()->changed = true; | 199 property_trees()->changed = true; |
202 set_needs_update(true); | 200 set_needs_update(true); |
203 layer_tree_impl->set_needs_update_draw_properties(); | |
204 } | 201 } |
205 | 202 |
206 bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) { | 203 bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) { |
207 return (source_to_parent_updates_allowed() && | 204 return (source_to_parent_updates_allowed() && |
208 node->parent_id != node->source_node_id); | 205 node->parent_id != node->source_node_id); |
209 } | 206 } |
210 | 207 |
211 void TransformTree::ResetChangeTracking() { | 208 void TransformTree::ResetChangeTracking() { |
212 for (int id = TransformTree::kContentsRootNodeId; | 209 for (int id = TransformTree::kContentsRootNodeId; |
213 id < static_cast<int>(size()); ++id) { | 210 id < static_cast<int>(size()); ++id) { |
(...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
858 } | 855 } |
859 | 856 |
860 EffectNode* EffectTree::FindNodeFromElementId(ElementId id) { | 857 EffectNode* EffectTree::FindNodeFromElementId(ElementId id) { |
861 auto iterator = property_trees()->element_id_to_effect_node_index.find(id); | 858 auto iterator = property_trees()->element_id_to_effect_node_index.find(id); |
862 if (iterator == property_trees()->element_id_to_effect_node_index.end()) | 859 if (iterator == property_trees()->element_id_to_effect_node_index.end()) |
863 return nullptr; | 860 return nullptr; |
864 | 861 |
865 return Node(iterator->second); | 862 return Node(iterator->second); |
866 } | 863 } |
867 | 864 |
868 void EffectTree::OnOpacityAnimated(float opacity, | 865 void EffectTree::OnOpacityAnimated(ElementId id, float opacity) { |
869 int id, | 866 EffectNode* node = FindNodeFromElementId(id); |
870 LayerTreeImpl* layer_tree_impl) { | |
871 EffectNode* node = Node(id); | |
872 layer_tree_impl->AddToOpacityAnimationsMap(node->owning_layer_id, opacity); | |
873 if (node->opacity == opacity) | 867 if (node->opacity == opacity) |
874 return; | 868 return; |
875 node->opacity = opacity; | 869 node->opacity = opacity; |
876 node->effect_changed = true; | 870 node->effect_changed = true; |
877 property_trees()->changed = true; | 871 property_trees()->changed = true; |
878 property_trees()->effect_tree.set_needs_update(true); | 872 property_trees()->effect_tree.set_needs_update(true); |
879 layer_tree_impl->set_needs_update_draw_properties(); | |
880 } | 873 } |
881 | 874 |
882 void EffectTree::OnFilterAnimated(const FilterOperations& filters, | 875 void EffectTree::OnFilterAnimated(ElementId id, |
883 int id, | 876 const FilterOperations& filters) { |
884 LayerTreeImpl* layer_tree_impl) { | 877 EffectNode* node = FindNodeFromElementId(id); |
885 EffectNode* node = Node(id); | |
886 layer_tree_impl->AddToFilterAnimationsMap(node->owning_layer_id, filters); | |
887 if (node->filters == filters) | 878 if (node->filters == filters) |
888 return; | 879 return; |
889 node->filters = filters; | 880 node->filters = filters; |
890 node->effect_changed = true; | 881 node->effect_changed = true; |
891 property_trees()->changed = true; | 882 property_trees()->changed = true; |
892 property_trees()->effect_tree.set_needs_update(true); | 883 property_trees()->effect_tree.set_needs_update(true); |
893 layer_tree_impl->set_needs_update_draw_properties(); | |
894 } | 884 } |
895 | 885 |
896 void EffectTree::UpdateEffects(int id) { | 886 void EffectTree::UpdateEffects(int id) { |
897 EffectNode* node = Node(id); | 887 EffectNode* node = Node(id); |
898 EffectNode* parent_node = parent(node); | 888 EffectNode* parent_node = parent(node); |
899 | 889 |
900 UpdateOpacities(node, parent_node); | 890 UpdateOpacities(node, parent_node); |
901 UpdateIsDrawn(node, parent_node); | 891 UpdateIsDrawn(node, parent_node); |
902 UpdateEffectChanged(node, parent_node); | 892 UpdateEffectChanged(node, parent_node); |
903 UpdateBackfaceVisibility(node, parent_node); | 893 UpdateBackfaceVisibility(node, parent_node); |
(...skipping 1194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2098 const EffectNode* effect_node = effect_tree.Node(effect_id); | 2088 const EffectNode* effect_node = effect_tree.Node(effect_id); |
2099 | 2089 |
2100 if (effect_node->surface_contents_scale.x() != 0.0 && | 2090 if (effect_node->surface_contents_scale.x() != 0.0 && |
2101 effect_node->surface_contents_scale.y() != 0.0) | 2091 effect_node->surface_contents_scale.y() != 0.0) |
2102 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), | 2092 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), |
2103 1.0 / effect_node->surface_contents_scale.y()); | 2093 1.0 / effect_node->surface_contents_scale.y()); |
2104 return screen_space_transform; | 2094 return screen_space_transform; |
2105 } | 2095 } |
2106 | 2096 |
2107 } // namespace cc | 2097 } // namespace cc |
OLD | NEW |