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

Side by Side Diff: cc/layers/layer_impl.cc

Issue 2018833002: cc : Delete LayerImpl::opacity (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/layers/layer_impl.h" 5 #include "cc/layers/layer_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 contents_opaque_(false), 63 contents_opaque_(false),
64 use_parent_backface_visibility_(false), 64 use_parent_backface_visibility_(false),
65 use_local_transform_for_backface_visibility_(false), 65 use_local_transform_for_backface_visibility_(false),
66 should_check_backface_visibility_(false), 66 should_check_backface_visibility_(false),
67 draws_content_(false), 67 draws_content_(false),
68 is_drawn_render_surface_layer_list_member_(false), 68 is_drawn_render_surface_layer_list_member_(false),
69 is_affected_by_page_scale_(true), 69 is_affected_by_page_scale_(true),
70 was_ever_ready_since_last_transform_animation_(true), 70 was_ever_ready_since_last_transform_animation_(true),
71 background_color_(0), 71 background_color_(0),
72 safe_opaque_background_color_(0), 72 safe_opaque_background_color_(0),
73 opacity_(1.0),
74 blend_mode_(SkXfermode::kSrcOver_Mode), 73 blend_mode_(SkXfermode::kSrcOver_Mode),
75 draw_blend_mode_(SkXfermode::kSrcOver_Mode), 74 draw_blend_mode_(SkXfermode::kSrcOver_Mode),
76 transform_tree_index_(-1), 75 transform_tree_index_(-1),
77 effect_tree_index_(-1), 76 effect_tree_index_(-1),
78 clip_tree_index_(-1), 77 clip_tree_index_(-1),
79 scroll_tree_index_(-1), 78 scroll_tree_index_(-1),
80 sorting_context_id_(0), 79 sorting_context_id_(0),
81 current_draw_mode_(DRAW_MODE_NONE), 80 current_draw_mode_(DRAW_MODE_NONE),
82 element_id_(0), 81 element_id_(0),
83 mutable_properties_(MutableProperty::kNone), 82 mutable_properties_(MutableProperty::kNone),
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 // update render surfaces without rebuilding property trees. 425 // update render surfaces without rebuilding property trees.
427 if (layer->has_render_surface() != has_render_surface()) 426 if (layer->has_render_surface() != has_render_surface())
428 layer->layer_tree_impl()->set_needs_update_draw_properties(); 427 layer->layer_tree_impl()->set_needs_update_draw_properties();
429 layer->SetFilters(filters()); 428 layer->SetFilters(filters());
430 layer->SetBackgroundFilters(background_filters()); 429 layer->SetBackgroundFilters(background_filters());
431 layer->SetMasksToBounds(masks_to_bounds_); 430 layer->SetMasksToBounds(masks_to_bounds_);
432 layer->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons_); 431 layer->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons_);
433 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); 432 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_);
434 layer->SetTouchEventHandlerRegion(touch_event_handler_region_); 433 layer->SetTouchEventHandlerRegion(touch_event_handler_region_);
435 layer->SetContentsOpaque(contents_opaque_); 434 layer->SetContentsOpaque(contents_opaque_);
436 layer->SetOpacity(opacity_);
437 layer->SetBlendMode(blend_mode_); 435 layer->SetBlendMode(blend_mode_);
438 layer->SetPosition(position_); 436 layer->SetPosition(position_);
439 layer->set_should_flatten_transform_from_property_tree( 437 layer->set_should_flatten_transform_from_property_tree(
440 should_flatten_transform_from_property_tree_); 438 should_flatten_transform_from_property_tree_);
441 layer->set_draw_blend_mode(draw_blend_mode_); 439 layer->set_draw_blend_mode(draw_blend_mode_);
442 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_); 440 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_);
443 layer->SetUseLocalTransformForBackfaceVisibility( 441 layer->SetUseLocalTransformForBackfaceVisibility(
444 use_local_transform_for_backface_visibility_); 442 use_local_transform_for_backface_visibility_);
445 layer->SetShouldCheckBackfaceVisibility(should_check_backface_visibility_); 443 layer->SetShouldCheckBackfaceVisibility(should_check_backface_visibility_);
446 layer->SetTransform(transform_); 444 layer->SetTransform(transform_);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 const gfx::Transform& gfx_transform = transform(); 513 const gfx::Transform& gfx_transform = transform();
516 double transform[16]; 514 double transform[16];
517 gfx_transform.matrix().asColMajord(transform); 515 gfx_transform.matrix().asColMajord(transform);
518 list = new base::ListValue; 516 list = new base::ListValue;
519 for (int i = 0; i < 16; ++i) 517 for (int i = 0; i < 16; ++i)
520 list->AppendDouble(transform[i]); 518 list->AppendDouble(transform[i]);
521 result->Set("Transform", list); 519 result->Set("Transform", list);
522 520
523 result->SetBoolean("DrawsContent", draws_content_); 521 result->SetBoolean("DrawsContent", draws_content_);
524 result->SetBoolean("Is3dSorted", Is3dSorted()); 522 result->SetBoolean("Is3dSorted", Is3dSorted());
525 result->SetDouble("OPACITY", opacity()); 523 result->SetDouble("OPACITY", Opacity());
526 result->SetBoolean("ContentsOpaque", contents_opaque_); 524 result->SetBoolean("ContentsOpaque", contents_opaque_);
527 525
528 if (scrollable()) 526 if (scrollable())
529 result->SetBoolean("Scrollable", true); 527 result->SetBoolean("Scrollable", true);
530 528
531 if (!touch_event_handler_region_.IsEmpty()) { 529 if (!touch_event_handler_region_.IsEmpty()) {
532 std::unique_ptr<base::Value> region = touch_event_handler_region_.AsValue(); 530 std::unique_ptr<base::Value> region = touch_event_handler_region_.AsValue();
533 result->Set("TouchRegion", region.release()); 531 result->Set("TouchRegion", region.release());
534 } 532 }
535 533
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 node->data.local_starting_animation_scale = 0.f; 668 node->data.local_starting_animation_scale = 0.f;
671 node->data.has_only_translation_animations = true; 669 node->data.has_only_translation_animations = true;
672 } 670 }
673 671
674 property_trees->transform_tree.set_needs_update(true); 672 property_trees->transform_tree.set_needs_update(true);
675 layer_tree_impl()->set_needs_update_draw_properties(); 673 layer_tree_impl()->set_needs_update_draw_properties();
676 } 674 }
677 } 675 }
678 } 676 }
679 677
680 void LayerImpl::UpdatePropertyTreeOpacity() { 678 void LayerImpl::UpdatePropertyTreeOpacity(float opacity) {
681 PropertyTrees* property_trees = layer_tree_impl()->property_trees(); 679 PropertyTrees* property_trees = layer_tree_impl()->property_trees();
682 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) { 680 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) {
683 // A LayerImpl's own current state is insufficient for determining whether 681 // A LayerImpl's own current state is insufficient for determining whether
684 // it owns an OpacityNode, since this depends on the state of the 682 // it owns an OpacityNode, since this depends on the state of the
685 // corresponding Layer at the time of the last commit. For example, an 683 // corresponding Layer at the time of the last commit. For example, an
686 // opacity animation might have been in progress at the time the last commit 684 // opacity animation might have been in progress at the time the last commit
687 // started, but might have finished since then on the compositor thread. 685 // started, but might have finished since then on the compositor thread.
688 EffectNode* node = property_trees->effect_tree.Node( 686 EffectNode* node = property_trees->effect_tree.Node(
689 property_trees->effect_id_to_index_map[id()]); 687 property_trees->effect_id_to_index_map[id()]);
690 node->data.opacity = opacity_; 688 if (node->data.opacity == opacity)
689 return;
690 node->data.opacity = opacity;
691 node->data.effect_changed = true; 691 node->data.effect_changed = true;
692 property_trees->changed = true; 692 property_trees->changed = true;
693 property_trees->effect_tree.set_needs_update(true); 693 property_trees->effect_tree.set_needs_update(true);
694 } 694 }
695 } 695 }
696 696
697 void LayerImpl::UpdatePropertyTreeForScrollingAndAnimationIfNeeded() { 697 void LayerImpl::UpdatePropertyTreeForScrollingAndAnimationIfNeeded() {
698 if (scrollable()) 698 if (scrollable())
699 UpdatePropertyTreeScrollOffset(); 699 UpdatePropertyTreeScrollOffset();
700 700
(...skipping 17 matching lines...) Expand all
718 EffectNode* node = effect_tree.Node(effect_tree_index_); 718 EffectNode* node = effect_tree.Node(effect_tree_index_);
719 DCHECK(layer_tree_impl()->property_trees()->IsInIdToIndexMap( 719 DCHECK(layer_tree_impl()->property_trees()->IsInIdToIndexMap(
720 PropertyTrees::TreeType::EFFECT, id())); 720 PropertyTrees::TreeType::EFFECT, id()));
721 node->data.effect_changed = true; 721 node->data.effect_changed = true;
722 layer_tree_impl()->property_trees()->changed = true; 722 layer_tree_impl()->property_trees()->changed = true;
723 effect_tree.set_needs_update(true); 723 effect_tree.set_needs_update(true);
724 } 724 }
725 } 725 }
726 726
727 void LayerImpl::OnOpacityAnimated(float opacity) { 727 void LayerImpl::OnOpacityAnimated(float opacity) {
728 SetOpacity(opacity); 728 UpdatePropertyTreeOpacity(opacity);
729 UpdatePropertyTreeOpacity();
730 SetNeedsPushProperties(); 729 SetNeedsPushProperties();
731 layer_tree_impl()->set_needs_update_draw_properties(); 730 layer_tree_impl()->set_needs_update_draw_properties();
732 layer_tree_impl()->AddToOpacityAnimationsMap(id(), opacity); 731 layer_tree_impl()->AddToOpacityAnimationsMap(id(), opacity);
733 } 732 }
734 733
735 void LayerImpl::OnTransformAnimated(const gfx::Transform& transform) { 734 void LayerImpl::OnTransformAnimated(const gfx::Transform& transform) {
736 gfx::Transform old_transform = transform_; 735 gfx::Transform old_transform = transform_;
737 SetTransform(transform); 736 SetTransform(transform);
738 UpdatePropertyTreeTransform(); 737 UpdatePropertyTreeTransform();
739 was_ever_ready_since_last_transform_animation_ = false; 738 was_ever_ready_since_last_transform_animation_ = false;
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 masks_to_bounds_ = masks_to_bounds; 980 masks_to_bounds_ = masks_to_bounds;
982 } 981 }
983 982
984 void LayerImpl::SetContentsOpaque(bool opaque) { 983 void LayerImpl::SetContentsOpaque(bool opaque) {
985 if (contents_opaque_ == opaque) 984 if (contents_opaque_ == opaque)
986 return; 985 return;
987 986
988 contents_opaque_ = opaque; 987 contents_opaque_ = opaque;
989 } 988 }
990 989
991 void LayerImpl::SetOpacity(float opacity) { 990 float LayerImpl::Opacity() const {
992 if (opacity_ == opacity) 991 if (!layer_tree_impl()->property_trees()->IsInIdToIndexMap(
993 return; 992 PropertyTrees::TreeType::EFFECT, id()))
994 993 return 1.f;
995 opacity_ = opacity; 994 EffectNode* node =
995 layer_tree_impl()->property_trees()->effect_tree.Node(effect_tree_index_);
996 return node->data.opacity;
996 } 997 }
997 998
998 bool LayerImpl::OpacityIsAnimating() const { 999 bool LayerImpl::OpacityIsAnimating() const {
999 return layer_tree_impl_->IsAnimatingOpacityProperty(this); 1000 return layer_tree_impl_->IsAnimatingOpacityProperty(this);
1000 } 1001 }
1001 1002
1002 bool LayerImpl::HasPotentiallyRunningOpacityAnimation() const { 1003 bool LayerImpl::HasPotentiallyRunningOpacityAnimation() const {
1003 return layer_tree_impl_->HasPotentiallyRunningOpacityAnimation(this); 1004 return layer_tree_impl_->HasPotentiallyRunningOpacityAnimation(this);
1004 } 1005 }
1005 1006
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 void LayerImpl::AsValueInto(base::trace_event::TracedValue* state) const { 1189 void LayerImpl::AsValueInto(base::trace_event::TracedValue* state) const {
1189 TracedValue::MakeDictIntoImplicitSnapshotWithCategory( 1190 TracedValue::MakeDictIntoImplicitSnapshotWithCategory(
1190 TRACE_DISABLED_BY_DEFAULT("cc.debug"), 1191 TRACE_DISABLED_BY_DEFAULT("cc.debug"),
1191 state, 1192 state,
1192 "cc::LayerImpl", 1193 "cc::LayerImpl",
1193 LayerTypeAsString(), 1194 LayerTypeAsString(),
1194 this); 1195 this);
1195 state->SetInteger("layer_id", id()); 1196 state->SetInteger("layer_id", id());
1196 MathUtil::AddToTracedValue("bounds", bounds_, state); 1197 MathUtil::AddToTracedValue("bounds", bounds_, state);
1197 1198
1198 state->SetDouble("opacity", opacity()); 1199 state->SetDouble("opacity", Opacity());
1199 1200
1200 MathUtil::AddToTracedValue("position", position_, state); 1201 MathUtil::AddToTracedValue("position", position_, state);
1201 1202
1202 state->SetInteger("draws_content", DrawsContent()); 1203 state->SetInteger("draws_content", DrawsContent());
1203 state->SetInteger("gpu_memory_usage", 1204 state->SetInteger("gpu_memory_usage",
1204 base::saturated_cast<int>(GPUMemoryUsageInBytes())); 1205 base::saturated_cast<int>(GPUMemoryUsageInBytes()));
1205 1206
1206 if (mutable_properties_ != MutableProperty::kNone) { 1207 if (mutable_properties_ != MutableProperty::kNone) {
1207 state->SetInteger("element_id", base::saturated_cast<int>(element_id_)); 1208 state->SetInteger("element_id", base::saturated_cast<int>(element_id_));
1208 state->SetInteger("mutable_properties", mutable_properties_); 1209 state->SetInteger("mutable_properties", mutable_properties_);
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 .layer_transforms_should_scale_layer_contents) { 1396 .layer_transforms_should_scale_layer_contents) {
1396 return default_scale; 1397 return default_scale;
1397 } 1398 }
1398 1399
1399 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( 1400 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents(
1400 DrawTransform(), default_scale); 1401 DrawTransform(), default_scale);
1401 return std::max(transform_scales.x(), transform_scales.y()); 1402 return std::max(transform_scales.x(), transform_scales.y());
1402 } 1403 }
1403 1404
1404 } // namespace cc 1405 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698