Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(85)

Side by Side Diff: cc/trees/property_tree.cc

Issue 2269143003: cc : Add OnTransformAnimated to transform tree (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 return false; 211 return false;
212 transform->ConcatTransform(from_screen); 212 transform->ConcatTransform(from_screen);
213 } 213 }
214 } 214 }
215 215
216 DCHECK( 216 DCHECK(
217 transform->IsApproximatelyIdentityOrTranslation(SkDoubleToMScalar(1e-4))); 217 transform->IsApproximatelyIdentityOrTranslation(SkDoubleToMScalar(1e-4)));
218 return true; 218 return true;
219 } 219 }
220 220
221 void TransformTree::OnTransformAnimated(const gfx::Transform& transform,
222 int id,
223 LayerTreeImpl* layer_tree_impl) {
224 TransformNode* node = Node(id);
225 layer_tree_impl->AddToTransformAnimationsMap(node->owner_id, transform);
226 if (node->local == transform) {
227 return;
228 }
229 node->local = transform;
230 node->needs_local_transform_update = true;
231 node->transform_changed = true;
232 property_trees()->changed = true;
233 set_needs_update(true);
234 layer_tree_impl->set_needs_update_draw_properties();
235 // TODO(ajuma): The current criteria for creating clip nodes means that
236 // property trees may need to be rebuilt when the new transform isn't
237 // axis-aligned wrt the old transform (see Layer::SetTransform). Since
238 // rebuilding property trees every frame of a transform animation is
239 // something we should try to avoid, change property tree-building so that
240 // it doesn't depend on axis aliginment.
ajuma 2016/08/23 23:40:12 I think this TODO is obsolete now, since we don't
jaydasika 2016/08/24 00:13:42 Removed!
241 }
242
221 bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) { 243 bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) {
222 return (source_to_parent_updates_allowed() && 244 return (source_to_parent_updates_allowed() &&
223 node->parent_id != node->source_node_id); 245 node->parent_id != node->source_node_id);
224 } 246 }
225 247
226 void TransformTree::ResetChangeTracking() { 248 void TransformTree::ResetChangeTracking() {
227 for (int id = 1; id < static_cast<int>(size()); ++id) { 249 for (int id = 1; id < static_cast<int>(size()); ++id) {
228 TransformNode* node = Node(id); 250 TransformNode* node = Node(id);
229 node->transform_changed = false; 251 node->transform_changed = false;
230 } 252 }
(...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 layer_scale_factor *= transform_tree.page_scale_factor(); 932 layer_scale_factor *= transform_tree.page_scale_factor();
911 effect_node->surface_contents_scale = 933 effect_node->surface_contents_scale =
912 MathUtil::ComputeTransform2dScaleComponents( 934 MathUtil::ComputeTransform2dScaleComponents(
913 transform_tree.ToScreen(transform_node->id), layer_scale_factor); 935 transform_tree.ToScreen(transform_node->id), layer_scale_factor);
914 } 936 }
915 937
916 void EffectTree::OnOpacityAnimated(float opacity, 938 void EffectTree::OnOpacityAnimated(float opacity,
917 int id, 939 int id,
918 LayerTreeImpl* layer_tree_impl) { 940 LayerTreeImpl* layer_tree_impl) {
919 EffectNode* node = Node(id); 941 EffectNode* node = Node(id);
942 layer_tree_impl->AddToOpacityAnimationsMap(node->owner_id, opacity);
920 if (node->opacity == opacity) 943 if (node->opacity == opacity)
921 return; 944 return;
922 node->opacity = opacity; 945 node->opacity = opacity;
923 node->effect_changed = true; 946 node->effect_changed = true;
924 property_trees()->changed = true; 947 property_trees()->changed = true;
925 property_trees()->effect_tree.set_needs_update(true); 948 property_trees()->effect_tree.set_needs_update(true);
926 layer_tree_impl->set_needs_update_draw_properties(); 949 layer_tree_impl->set_needs_update_draw_properties();
927 layer_tree_impl->AddToOpacityAnimationsMap(node->owner_id, opacity);
928 } 950 }
929 951
930 void EffectTree::UpdateEffects(int id) { 952 void EffectTree::UpdateEffects(int id) {
931 EffectNode* node = Node(id); 953 EffectNode* node = Node(id);
932 EffectNode* parent_node = parent(node); 954 EffectNode* parent_node = parent(node);
933 955
934 UpdateOpacities(node, parent_node); 956 UpdateOpacities(node, parent_node);
935 UpdateIsDrawn(node, parent_node); 957 UpdateIsDrawn(node, parent_node);
936 UpdateEffectChanged(node, parent_node); 958 UpdateEffectChanged(node, parent_node);
937 UpdateBackfaceVisibility(node, parent_node); 959 UpdateBackfaceVisibility(node, parent_node);
(...skipping 1265 matching lines...) Expand 10 before | Expand all | Expand 10 after
2203 from_target.ConcatTransform(draw_transforms.from_target); 2225 from_target.ConcatTransform(draw_transforms.from_target);
2204 from_target.Scale(effect_node->surface_contents_scale.x(), 2226 from_target.Scale(effect_node->surface_contents_scale.x(),
2205 effect_node->surface_contents_scale.y()); 2227 effect_node->surface_contents_scale.y());
2206 DCHECK(from_target.ApproximatelyEqual(*transform) || 2228 DCHECK(from_target.ApproximatelyEqual(*transform) ||
2207 !draw_transforms.invertible); 2229 !draw_transforms.invertible);
2208 } 2230 }
2209 return success; 2231 return success;
2210 } 2232 }
2211 2233
2212 } // namespace cc 2234 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698