| 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 "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> |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 const LayerType* page_scale_layer; | 45 const LayerType* page_scale_layer; |
| 46 const LayerType* inner_viewport_scroll_layer; | 46 const LayerType* inner_viewport_scroll_layer; |
| 47 const LayerType* outer_viewport_scroll_layer; | 47 const LayerType* outer_viewport_scroll_layer; |
| 48 const LayerType* overscroll_elasticity_layer; | 48 const LayerType* overscroll_elasticity_layer; |
| 49 gfx::Vector2dF elastic_overscroll; | 49 gfx::Vector2dF elastic_overscroll; |
| 50 float page_scale_factor; | 50 float page_scale_factor; |
| 51 bool in_subtree_of_page_scale_layer; | 51 bool in_subtree_of_page_scale_layer; |
| 52 bool affected_by_inner_viewport_bounds_delta; | 52 bool affected_by_inner_viewport_bounds_delta; |
| 53 bool affected_by_outer_viewport_bounds_delta; | 53 bool affected_by_outer_viewport_bounds_delta; |
| 54 bool should_flatten; | 54 bool should_flatten; |
| 55 bool target_is_clipped; | |
| 56 bool is_hidden; | 55 bool is_hidden; |
| 57 uint32_t main_thread_scrolling_reasons; | 56 uint32_t main_thread_scrolling_reasons; |
| 58 bool scroll_tree_parent_created_by_uninheritable_criteria; | 57 bool scroll_tree_parent_created_by_uninheritable_criteria; |
| 59 const gfx::Transform* device_transform; | 58 const gfx::Transform* device_transform; |
| 60 gfx::Transform compound_transform_since_render_target; | 59 gfx::Transform compound_transform_since_render_target; |
| 61 bool axis_align_since_render_target; | 60 bool axis_align_since_render_target; |
| 62 SkColor safe_opaque_background_color; | 61 SkColor safe_opaque_background_color; |
| 63 }; | 62 }; |
| 64 | 63 |
| 65 template <typename LayerType> | 64 template <typename LayerType> |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 // When there are no ancestor clips that need to be applied to a render | 366 // When there are no ancestor clips that need to be applied to a render |
| 368 // surface, we reset clipping state. The surface might contribute a clip | 367 // surface, we reset clipping state. The surface might contribute a clip |
| 369 // of its own, but clips from ancestor nodes don't need to be considered | 368 // of its own, but clips from ancestor nodes don't need to be considered |
| 370 // when computing clip rects or visibility. | 369 // when computing clip rects or visibility. |
| 371 has_unclipped_surface = true; | 370 has_unclipped_surface = true; |
| 372 DCHECK_NE(parent->clip_type, ClipNode::ClipType::APPLIES_LOCAL_CLIP); | 371 DCHECK_NE(parent->clip_type, ClipNode::ClipType::APPLIES_LOCAL_CLIP); |
| 373 } | 372 } |
| 374 // A surface with unclipped descendants cannot be clipped by its ancestor | 373 // A surface with unclipped descendants cannot be clipped by its ancestor |
| 375 // clip at draw time since the unclipped descendants aren't affected by the | 374 // clip at draw time since the unclipped descendants aren't affected by the |
| 376 // ancestor clip. | 375 // ancestor clip. |
| 377 data_for_children->target_is_clipped = | 376 EffectNode* effect_node = |
| 377 data_for_children->property_trees->effect_tree.Node( |
| 378 data_for_children->render_target); |
| 379 DCHECK(effect_node->owner_id == layer->id()); |
| 380 effect_node->surface_is_clipped = |
| 378 ancestor_clips_subtree && !NumUnclippedDescendants(layer); | 381 ancestor_clips_subtree && !NumUnclippedDescendants(layer); |
| 379 } else { | 382 } else { |
| 380 // Without a new render surface, layer clipping state from ancestors needs | 383 // Without a new render surface, layer clipping state from ancestors needs |
| 381 // to continue to propagate. | 384 // to continue to propagate. |
| 382 data_for_children->target_is_clipped = data_from_ancestor.target_is_clipped; | |
| 383 layers_are_clipped = ancestor_clips_subtree; | 385 layers_are_clipped = ancestor_clips_subtree; |
| 384 } | 386 } |
| 385 | 387 |
| 386 bool layer_clips_subtree = LayerClipsSubtree(layer); | 388 bool layer_clips_subtree = LayerClipsSubtree(layer); |
| 387 if (layer_clips_subtree) | 389 if (layer_clips_subtree) |
| 388 layers_are_clipped = true; | 390 layers_are_clipped = true; |
| 389 | 391 |
| 390 // Without surfaces, all non-viewport clips have to be applied using layer | 392 // Without surfaces, all non-viewport clips have to be applied using layer |
| 391 // clipping. | 393 // clipping. |
| 392 bool layers_are_clipped_when_surfaces_disabled = | 394 bool layers_are_clipped_when_surfaces_disabled = |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 // Otherwise, we're either unclipped, or exist only in order to apply our | 429 // Otherwise, we're either unclipped, or exist only in order to apply our |
| 428 // parent's clips in our space. | 430 // parent's clips in our space. |
| 429 node.layer_clipping_uses_only_local_clip = false; | 431 node.layer_clipping_uses_only_local_clip = false; |
| 430 } | 432 } |
| 431 | 433 |
| 432 if (layer_clips_subtree) | 434 if (layer_clips_subtree) |
| 433 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; | 435 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; |
| 434 else | 436 else |
| 435 node.clip_type = ClipNode::ClipType::NONE; | 437 node.clip_type = ClipNode::ClipType::NONE; |
| 436 node.resets_clip = has_unclipped_surface; | 438 node.resets_clip = has_unclipped_surface; |
| 437 node.target_is_clipped = data_for_children->target_is_clipped; | |
| 438 node.layers_are_clipped = layers_are_clipped; | 439 node.layers_are_clipped = layers_are_clipped; |
| 439 node.layers_are_clipped_when_surfaces_disabled = | 440 node.layers_are_clipped_when_surfaces_disabled = |
| 440 layers_are_clipped_when_surfaces_disabled; | 441 layers_are_clipped_when_surfaces_disabled; |
| 441 | 442 |
| 442 data_for_children->clip_tree_parent = | 443 data_for_children->clip_tree_parent = |
| 443 data_for_children->property_trees->clip_tree.Insert(node, parent_id); | 444 data_for_children->property_trees->clip_tree.Insert(node, parent_id); |
| 444 data_for_children->property_trees->clip_id_to_index_map[layer->id()] = | 445 data_for_children->property_trees->clip_id_to_index_map[layer->id()] = |
| 445 data_for_children->clip_tree_parent; | 446 data_for_children->clip_tree_parent; |
| 446 } | 447 } |
| 447 | 448 |
| (...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1382 data_for_recursion.page_scale_layer = page_scale_layer; | 1383 data_for_recursion.page_scale_layer = page_scale_layer; |
| 1383 data_for_recursion.inner_viewport_scroll_layer = inner_viewport_scroll_layer; | 1384 data_for_recursion.inner_viewport_scroll_layer = inner_viewport_scroll_layer; |
| 1384 data_for_recursion.outer_viewport_scroll_layer = outer_viewport_scroll_layer; | 1385 data_for_recursion.outer_viewport_scroll_layer = outer_viewport_scroll_layer; |
| 1385 data_for_recursion.overscroll_elasticity_layer = overscroll_elasticity_layer; | 1386 data_for_recursion.overscroll_elasticity_layer = overscroll_elasticity_layer; |
| 1386 data_for_recursion.elastic_overscroll = elastic_overscroll; | 1387 data_for_recursion.elastic_overscroll = elastic_overscroll; |
| 1387 data_for_recursion.page_scale_factor = page_scale_factor; | 1388 data_for_recursion.page_scale_factor = page_scale_factor; |
| 1388 data_for_recursion.in_subtree_of_page_scale_layer = false; | 1389 data_for_recursion.in_subtree_of_page_scale_layer = false; |
| 1389 data_for_recursion.affected_by_inner_viewport_bounds_delta = false; | 1390 data_for_recursion.affected_by_inner_viewport_bounds_delta = false; |
| 1390 data_for_recursion.affected_by_outer_viewport_bounds_delta = false; | 1391 data_for_recursion.affected_by_outer_viewport_bounds_delta = false; |
| 1391 data_for_recursion.should_flatten = false; | 1392 data_for_recursion.should_flatten = false; |
| 1392 data_for_recursion.target_is_clipped = false; | |
| 1393 data_for_recursion.is_hidden = false; | 1393 data_for_recursion.is_hidden = false; |
| 1394 data_for_recursion.main_thread_scrolling_reasons = | 1394 data_for_recursion.main_thread_scrolling_reasons = |
| 1395 MainThreadScrollingReason::kNotScrollingOnMain; | 1395 MainThreadScrollingReason::kNotScrollingOnMain; |
| 1396 data_for_recursion.scroll_tree_parent_created_by_uninheritable_criteria = | 1396 data_for_recursion.scroll_tree_parent_created_by_uninheritable_criteria = |
| 1397 true; | 1397 true; |
| 1398 data_for_recursion.device_transform = &device_transform; | 1398 data_for_recursion.device_transform = &device_transform; |
| 1399 | 1399 |
| 1400 data_for_recursion.property_trees->clear(); | 1400 data_for_recursion.property_trees->clear(); |
| 1401 data_for_recursion.compound_transform_since_render_target = gfx::Transform(); | 1401 data_for_recursion.compound_transform_since_render_target = gfx::Transform(); |
| 1402 data_for_recursion.axis_align_since_render_target = true; | 1402 data_for_recursion.axis_align_since_render_target = true; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1496 color = SkColorSetA(color, 255); | 1496 color = SkColorSetA(color, 255); |
| 1497 BuildPropertyTreesTopLevelInternal( | 1497 BuildPropertyTreesTopLevelInternal( |
| 1498 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1498 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
| 1499 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1499 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
| 1500 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1500 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
| 1501 device_transform, property_trees, color); | 1501 device_transform, property_trees, color); |
| 1502 property_trees->ResetCachedData(); | 1502 property_trees->ResetCachedData(); |
| 1503 } | 1503 } |
| 1504 | 1504 |
| 1505 } // namespace cc | 1505 } // namespace cc |
| OLD | NEW |