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 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 | 464 |
465 bool IsAnimatingOpacity(Layer* layer) { | 465 bool IsAnimatingOpacity(Layer* layer) { |
466 return layer->HasPotentiallyRunningOpacityAnimation() || | 466 return layer->HasPotentiallyRunningOpacityAnimation() || |
467 layer->OpacityCanAnimateOnImplThread(); | 467 layer->OpacityCanAnimateOnImplThread(); |
468 } | 468 } |
469 | 469 |
470 bool IsAnimatingOpacity(LayerImpl* layer) { | 470 bool IsAnimatingOpacity(LayerImpl* layer) { |
471 return layer->HasPotentiallyRunningOpacityAnimation(); | 471 return layer->HasPotentiallyRunningOpacityAnimation(); |
472 } | 472 } |
473 | 473 |
| 474 static inline bool DoubleSided(Layer* layer) { |
| 475 return layer->double_sided(); |
| 476 } |
| 477 |
| 478 static inline bool DoubleSided(LayerImpl* layer) { |
| 479 return layer->test_properties()->double_sided; |
| 480 } |
| 481 |
| 482 static inline bool ForceRenderSurface(Layer* layer) { |
| 483 return layer->force_render_surface_for_testing(); |
| 484 } |
| 485 |
| 486 static inline bool ForceRenderSurface(LayerImpl* layer) { |
| 487 return layer->test_properties()->force_render_surface; |
| 488 } |
| 489 |
474 template <typename LayerType> | 490 template <typename LayerType> |
475 static inline bool LayerIsInExisting3DRenderingContext(LayerType* layer) { | 491 static inline bool LayerIsInExisting3DRenderingContext(LayerType* layer) { |
476 return layer->Is3dSorted() && layer->parent() && | 492 return layer->Is3dSorted() && layer->parent() && |
477 layer->parent()->Is3dSorted() && | 493 layer->parent()->Is3dSorted() && |
478 (layer->parent()->sorting_context_id() == layer->sorting_context_id()); | 494 (layer->parent()->sorting_context_id() == layer->sorting_context_id()); |
479 } | 495 } |
480 | 496 |
481 template <typename LayerType> | 497 template <typename LayerType> |
482 bool ShouldCreateRenderSurface(LayerType* layer, | 498 bool ShouldCreateRenderSurface(LayerType* layer, |
483 gfx::Transform current_transform, | 499 gfx::Transform current_transform, |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
569 // (layer has transparent background or descendants overflow). | 585 // (layer has transparent background or descendants overflow). |
570 // https://code.google.com/p/chromium/issues/detail?id=301738 | 586 // https://code.google.com/p/chromium/issues/detail?id=301738 |
571 if (layer->is_root_for_isolated_group()) { | 587 if (layer->is_root_for_isolated_group()) { |
572 TRACE_EVENT_INSTANT0( | 588 TRACE_EVENT_INSTANT0( |
573 "cc", "PropertyTreeBuilder::ShouldCreateRenderSurface isolation", | 589 "cc", "PropertyTreeBuilder::ShouldCreateRenderSurface isolation", |
574 TRACE_EVENT_SCOPE_THREAD); | 590 TRACE_EVENT_SCOPE_THREAD); |
575 return true; | 591 return true; |
576 } | 592 } |
577 | 593 |
578 // If we force it. | 594 // If we force it. |
579 if (layer->force_render_surface()) | 595 if (ForceRenderSurface(layer)) |
580 return true; | 596 return true; |
581 | 597 |
582 // If we'll make a copy of the layer's contents. | 598 // If we'll make a copy of the layer's contents. |
583 if (layer->HasCopyRequest()) | 599 if (layer->HasCopyRequest()) |
584 return true; | 600 return true; |
585 | 601 |
586 return false; | 602 return false; |
587 } | 603 } |
588 | 604 |
589 template <typename LayerType> | 605 template <typename LayerType> |
(...skipping 23 matching lines...) Expand all Loading... |
613 return false; | 629 return false; |
614 } | 630 } |
615 | 631 |
616 EffectNode node; | 632 EffectNode node; |
617 node.owner_id = layer->id(); | 633 node.owner_id = layer->id(); |
618 node.data.opacity = layer->EffectiveOpacity(); | 634 node.data.opacity = layer->EffectiveOpacity(); |
619 node.data.has_render_surface = should_create_render_surface; | 635 node.data.has_render_surface = should_create_render_surface; |
620 node.data.has_copy_request = layer->HasCopyRequest(); | 636 node.data.has_copy_request = layer->HasCopyRequest(); |
621 node.data.has_background_filters = !layer->background_filters().IsEmpty(); | 637 node.data.has_background_filters = !layer->background_filters().IsEmpty(); |
622 node.data.has_animated_opacity = has_animated_opacity; | 638 node.data.has_animated_opacity = has_animated_opacity; |
623 node.data.double_sided = layer->double_sided(); | 639 node.data.double_sided = DoubleSided(layer); |
624 | 640 |
625 if (!is_root) { | 641 if (!is_root) { |
626 // The effect node's transform id is used only when we create a render | 642 // The effect node's transform id is used only when we create a render |
627 // surface. So, we can leave the default value when we don't create a render | 643 // surface. So, we can leave the default value when we don't create a render |
628 // surface. | 644 // surface. |
629 if (should_create_render_surface) { | 645 if (should_create_render_surface) { |
630 // In this case, we will create a transform node, so it's safe to use the | 646 // In this case, we will create a transform node, so it's safe to use the |
631 // next available id from the transform tree as this effect node's | 647 // next available id from the transform tree as this effect node's |
632 // transform id. | 648 // transform id. |
633 node.data.transform_id = | 649 node.data.transform_id = |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 // should be determined differently depending on whether the layer is in a | 767 // should be determined differently depending on whether the layer is in a |
752 // "3d rendering context" or not. For Chromium code, we can determine | 768 // "3d rendering context" or not. For Chromium code, we can determine |
753 // whether we are in a 3d rendering context by checking if the parent | 769 // whether we are in a 3d rendering context by checking if the parent |
754 // preserves 3d. | 770 // preserves 3d. |
755 const bool use_local_transform = | 771 const bool use_local_transform = |
756 !layer->Is3dSorted() || | 772 !layer->Is3dSorted() || |
757 (layer->Is3dSorted() && is_at_boundary_of_3d_rendering_context); | 773 (layer->Is3dSorted() && is_at_boundary_of_3d_rendering_context); |
758 layer->SetUseLocalTransformForBackfaceVisibility(use_local_transform); | 774 layer->SetUseLocalTransformForBackfaceVisibility(use_local_transform); |
759 | 775 |
760 // A double-sided layer's backface can been shown when its visibile. | 776 // A double-sided layer's backface can been shown when its visibile. |
761 if (layer->double_sided()) | 777 if (DoubleSided(layer)) |
762 layer->SetShouldCheckBackfaceVisibility(false); | 778 layer->SetShouldCheckBackfaceVisibility(false); |
763 // The backface of a layer that uses local transform for backface visibility | 779 // The backface of a layer that uses local transform for backface visibility |
764 // is not visible when it does not create a transform node as its local | 780 // is not visible when it does not create a transform node as its local |
765 // transform is identity or 2d translation and is not animating. | 781 // transform is identity or 2d translation and is not animating. |
766 else if (use_local_transform && !created_transform_node) | 782 else if (use_local_transform && !created_transform_node) |
767 layer->SetShouldCheckBackfaceVisibility(false); | 783 layer->SetShouldCheckBackfaceVisibility(false); |
768 else | 784 else |
769 layer->SetShouldCheckBackfaceVisibility(true); | 785 layer->SetShouldCheckBackfaceVisibility(true); |
770 } | 786 } |
771 } | 787 } |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1004 if (SkColorGetA(color) != 255) | 1020 if (SkColorGetA(color) != 255) |
1005 color = SkColorSetA(color, 255); | 1021 color = SkColorSetA(color, 255); |
1006 BuildPropertyTreesTopLevelInternal( | 1022 BuildPropertyTreesTopLevelInternal( |
1007 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1023 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
1008 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1024 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
1009 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1025 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
1010 device_transform, property_trees, color); | 1026 device_transform, property_trees, color); |
1011 } | 1027 } |
1012 | 1028 |
1013 } // namespace cc | 1029 } // namespace cc |
OLD | NEW |