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

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

Issue 2423483003: cc: Make visible rect computation aware of pixel-moving filters (Closed)
Patch Set: It's 2017 -- update copyright for new files Created 3 years, 11 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 "cc/trees/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
11 11
12 #include "base/memory/ptr_util.h"
12 #include "cc/base/math_util.h" 13 #include "cc/base/math_util.h"
13 #include "cc/layers/layer.h" 14 #include "cc/layers/layer.h"
14 #include "cc/layers/layer_impl.h" 15 #include "cc/layers/layer_impl.h"
15 #include "cc/output/copy_output_request.h" 16 #include "cc/output/copy_output_request.h"
16 #include "cc/trees/clip_node.h" 17 #include "cc/trees/clip_node.h"
17 #include "cc/trees/draw_property_utils.h" 18 #include "cc/trees/draw_property_utils.h"
18 #include "cc/trees/effect_node.h" 19 #include "cc/trees/effect_node.h"
19 #include "cc/trees/layer_tree_impl.h" 20 #include "cc/trees/layer_tree_impl.h"
20 #include "cc/trees/layer_tree_settings.h" 21 #include "cc/trees/layer_tree_settings.h"
21 #include "cc/trees/mutable_properties.h" 22 #include "cc/trees/mutable_properties.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 } 219 }
219 220
220 static size_t NumUnclippedDescendants(Layer* layer) { 221 static size_t NumUnclippedDescendants(Layer* layer) {
221 return layer->num_unclipped_descendants(); 222 return layer->num_unclipped_descendants();
222 } 223 }
223 224
224 static size_t NumUnclippedDescendants(LayerImpl* layer) { 225 static size_t NumUnclippedDescendants(LayerImpl* layer) {
225 return layer->test_properties()->num_unclipped_descendants; 226 return layer->test_properties()->num_unclipped_descendants;
226 } 227 }
227 228
229 static inline const FilterOperations& Filters(Layer* layer) {
230 return layer->filters();
231 }
232
233 static inline const FilterOperations& Filters(LayerImpl* layer) {
234 return layer->test_properties()->filters;
235 }
236
228 static Layer* MaskLayer(Layer* layer) { 237 static Layer* MaskLayer(Layer* layer) {
229 return layer->mask_layer(); 238 return layer->mask_layer();
230 } 239 }
231 240
232 static LayerImpl* MaskLayer(LayerImpl* layer) { 241 static LayerImpl* MaskLayer(LayerImpl* layer) {
233 return layer->test_properties()->mask_layer; 242 return layer->test_properties()->mask_layer;
234 } 243 }
235 244
236 static const gfx::Transform& Transform(Layer* layer) { 245 static const gfx::Transform& Transform(Layer* layer) {
237 return layer->transform(); 246 return layer->transform();
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 // clipping state from ancestors must continue to get propagated. 439 // clipping state from ancestors must continue to get propagated.
431 node.layer_clipping_uses_only_local_clip = 440 node.layer_clipping_uses_only_local_clip =
432 (created_render_surface && NumUnclippedDescendants(layer) == 0) || 441 (created_render_surface && NumUnclippedDescendants(layer) == 0) ||
433 !apply_ancestor_clip; 442 !apply_ancestor_clip;
434 } else { 443 } else {
435 // Otherwise, we're either unclipped, or exist only in order to apply our 444 // Otherwise, we're either unclipped, or exist only in order to apply our
436 // parent's clips in our space. 445 // parent's clips in our space.
437 node.layer_clipping_uses_only_local_clip = false; 446 node.layer_clipping_uses_only_local_clip = false;
438 } 447 }
439 448
440 if (layer_clips_subtree) 449 if (layer_clips_subtree) {
441 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; 450 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP;
442 else 451 } else if (Filters(layer).HasFilterThatMovesPixels()) {
452 node.clip_type = ClipNode::ClipType::EXPANDS_CLIP;
453 node.clip_expander =
454 base::MakeUnique<ClipExpander>(layer->effect_tree_index());
455 } else {
443 node.clip_type = ClipNode::ClipType::NONE; 456 node.clip_type = ClipNode::ClipType::NONE;
457 }
444 node.resets_clip = has_unclipped_surface; 458 node.resets_clip = has_unclipped_surface;
445 node.layers_are_clipped = layers_are_clipped; 459 node.layers_are_clipped = layers_are_clipped;
446 node.layers_are_clipped_when_surfaces_disabled = 460 node.layers_are_clipped_when_surfaces_disabled =
447 layers_are_clipped_when_surfaces_disabled; 461 layers_are_clipped_when_surfaces_disabled;
448 462
449 data_for_children->clip_tree_parent = 463 data_for_children->clip_tree_parent =
450 data_for_children->property_trees->clip_tree.Insert(node, parent_id); 464 data_for_children->property_trees->clip_tree.Insert(node, parent_id);
451 data_for_children->property_trees->clip_id_to_index_map[layer->id()] = 465 data_for_children->property_trees->clip_id_to_index_map[layer->id()] =
452 data_for_children->clip_tree_parent; 466 data_for_children->clip_tree_parent;
453 } 467 }
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 } 841 }
828 842
829 static inline SkBlendMode BlendMode(Layer* layer) { 843 static inline SkBlendMode BlendMode(Layer* layer) {
830 return layer->blend_mode(); 844 return layer->blend_mode();
831 } 845 }
832 846
833 static inline SkBlendMode BlendMode(LayerImpl* layer) { 847 static inline SkBlendMode BlendMode(LayerImpl* layer) {
834 return layer->test_properties()->blend_mode; 848 return layer->test_properties()->blend_mode;
835 } 849 }
836 850
837 static inline const FilterOperations& Filters(Layer* layer) {
838 return layer->filters();
839 }
840
841 static inline const gfx::PointF FiltersOrigin(Layer* layer) { 851 static inline const gfx::PointF FiltersOrigin(Layer* layer) {
842 return layer->filters_origin(); 852 return layer->filters_origin();
843 } 853 }
844 854
845 static inline const gfx::PointF FiltersOrigin(LayerImpl* layer) { 855 static inline const gfx::PointF FiltersOrigin(LayerImpl* layer) {
846 return layer->test_properties()->filters_origin; 856 return layer->test_properties()->filters_origin;
847 } 857 }
848 858
849 static inline const FilterOperations& Filters(LayerImpl* layer) {
850 return layer->test_properties()->filters;
851 }
852
853 static inline const FilterOperations& BackgroundFilters(Layer* layer) { 859 static inline const FilterOperations& BackgroundFilters(Layer* layer) {
854 return layer->background_filters(); 860 return layer->background_filters();
855 } 861 }
856 862
857 static inline const FilterOperations& BackgroundFilters(LayerImpl* layer) { 863 static inline const FilterOperations& BackgroundFilters(LayerImpl* layer) {
858 return layer->test_properties()->background_filters; 864 return layer->test_properties()->background_filters;
859 } 865 }
860 866
861 static inline bool HideLayerAndSubtree(Layer* layer) { 867 static inline bool HideLayerAndSubtree(Layer* layer) {
862 return layer->hide_layer_and_subtree(); 868 return layer->hide_layer_and_subtree();
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
1517 color = SkColorSetA(color, 255); 1523 color = SkColorSetA(color, 255);
1518 BuildPropertyTreesTopLevelInternal( 1524 BuildPropertyTreesTopLevelInternal(
1519 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1525 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1520 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1526 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1521 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1527 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1522 device_transform, property_trees, color); 1528 device_transform, property_trees, color);
1523 property_trees->ResetCachedData(); 1529 property_trees->ResetCachedData();
1524 } 1530 }
1525 1531
1526 } // namespace cc 1532 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698