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

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

Issue 960873002: Update from https://crrev.com/318214 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « cc/trees/draw_property_utils.h ('k') | cc/trees/layer_tree_host.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "cc/trees/draw_property_utils.h" 5 #include "cc/trees/draw_property_utils.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "cc/base/math_util.h" 9 #include "cc/base/math_util.h"
10 #include "cc/layers/layer.h" 10 #include "cc/layers/layer.h"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 } 150 }
151 151
152 static bool IsInvisibleDueToTransform(Layer* layer, const TransformTree& tree) { 152 static bool IsInvisibleDueToTransform(Layer* layer, const TransformTree& tree) {
153 return HasSingularTransform(layer, tree) || IsBackFaceInvisible(layer, tree); 153 return HasSingularTransform(layer, tree) || IsBackFaceInvisible(layer, tree);
154 } 154 }
155 155
156 void FindLayersThatNeedVisibleRects(Layer* layer, 156 void FindLayersThatNeedVisibleRects(Layer* layer,
157 const TransformTree& tree, 157 const TransformTree& tree,
158 bool subtree_is_visible_from_ancestor, 158 bool subtree_is_visible_from_ancestor,
159 std::vector<Layer*>* layers_to_update) { 159 std::vector<Layer*>* layers_to_update) {
160 const bool subtree_is_invisble = 160 const bool layer_is_invisible =
161 layer->opacity() == 0.0f || 161 (!layer->opacity() && !layer->OpacityIsAnimating() &&
162 !layer->OpacityCanAnimateOnImplThread());
163 const bool layer_is_backfacing =
162 (layer->has_render_surface() && !layer->double_sided() && 164 (layer->has_render_surface() && !layer->double_sided() &&
163 IsSurfaceBackFaceExposed(layer, tree)); 165 IsSurfaceBackFaceExposed(layer, tree));
164 166
167 const bool subtree_is_invisble = layer_is_invisible || layer_is_backfacing;
165 if (subtree_is_invisble) 168 if (subtree_is_invisble)
166 return; 169 return;
167 170
168 bool layer_is_drawn = 171 bool layer_is_drawn =
169 layer->HasCopyRequest() || 172 layer->HasCopyRequest() ||
170 (subtree_is_visible_from_ancestor && !layer->hide_layer_and_subtree()); 173 (subtree_is_visible_from_ancestor && !layer->hide_layer_and_subtree());
171 174
172 if (layer_is_drawn && layer->DrawsContent()) { 175 if (layer_is_drawn && layer->DrawsContent()) {
173 const bool visible = !IsInvisibleDueToTransform(layer, tree); 176 const bool visible = !IsInvisibleDueToTransform(layer, tree);
174 if (visible) 177 if (visible)
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 } 258 }
256 259
257 void ComputeVisibleRectsUsingPropertyTrees( 260 void ComputeVisibleRectsUsingPropertyTrees(
258 Layer* root_layer, 261 Layer* root_layer,
259 const Layer* page_scale_layer, 262 const Layer* page_scale_layer,
260 float page_scale_factor, 263 float page_scale_factor,
261 float device_scale_factor, 264 float device_scale_factor,
262 const gfx::Rect& viewport, 265 const gfx::Rect& viewport,
263 const gfx::Transform& device_transform, 266 const gfx::Transform& device_transform,
264 TransformTree* transform_tree, 267 TransformTree* transform_tree,
265 ClipTree* clip_tree) { 268 ClipTree* clip_tree,
269 OpacityTree* opacity_tree) {
266 PropertyTreeBuilder::BuildPropertyTrees( 270 PropertyTreeBuilder::BuildPropertyTrees(
267 root_layer, page_scale_layer, page_scale_factor, device_scale_factor, 271 root_layer, page_scale_layer, page_scale_factor, device_scale_factor,
268 viewport, device_transform, transform_tree, clip_tree); 272 viewport, device_transform, transform_tree, clip_tree, opacity_tree);
269 ComputeTransforms(transform_tree); 273 ComputeTransforms(transform_tree);
270 ComputeClips(clip_tree, *transform_tree); 274 ComputeClips(clip_tree, *transform_tree);
271 275
272 std::vector<Layer*> layers_to_update; 276 std::vector<Layer*> layers_to_update;
273 const bool subtree_is_visible_from_ancestor = true; 277 const bool subtree_is_visible_from_ancestor = true;
274 FindLayersThatNeedVisibleRects(root_layer, *transform_tree, 278 FindLayersThatNeedVisibleRects(root_layer, *transform_tree,
275 subtree_is_visible_from_ancestor, 279 subtree_is_visible_from_ancestor,
276 &layers_to_update); 280 &layers_to_update);
277 CalculateVisibleRects(layers_to_update, *clip_tree, *transform_tree); 281 CalculateVisibleRects(layers_to_update, *clip_tree, *transform_tree);
278 } 282 }
279 283
280 } // namespace cc 284 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/draw_property_utils.h ('k') | cc/trees/layer_tree_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698