| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "ui/compositor/layer.h" | 5 #include "ui/compositor/layer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| 11 #include "base/json/json_writer.h" | 11 #include "base/json/json_writer.h" |
| 12 #include "base/lazy_instance.h" | 12 #include "base/lazy_instance.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/trace_event/trace_event.h" | 15 #include "base/trace_event/trace_event.h" |
| 16 #include "cc/animation/animation_id_provider.h" |
| 17 #include "cc/animation/animation_player.h" |
| 18 #include "cc/animation/animation_timeline.h" |
| 19 #include "cc/animation/element_animations.h" |
| 16 #include "cc/layers/delegated_renderer_layer.h" | 20 #include "cc/layers/delegated_renderer_layer.h" |
| 17 #include "cc/layers/layer_settings.h" | 21 #include "cc/layers/layer_settings.h" |
| 18 #include "cc/layers/nine_patch_layer.h" | 22 #include "cc/layers/nine_patch_layer.h" |
| 19 #include "cc/layers/picture_layer.h" | 23 #include "cc/layers/picture_layer.h" |
| 20 #include "cc/layers/solid_color_layer.h" | 24 #include "cc/layers/solid_color_layer.h" |
| 21 #include "cc/layers/surface_layer.h" | 25 #include "cc/layers/surface_layer.h" |
| 22 #include "cc/layers/texture_layer.h" | 26 #include "cc/layers/texture_layer.h" |
| 23 #include "cc/output/copy_output_request.h" | 27 #include "cc/output/copy_output_request.h" |
| 24 #include "cc/output/delegated_frame_data.h" | 28 #include "cc/output/delegated_frame_data.h" |
| 25 #include "cc/output/filter_operation.h" | 29 #include "cc/output/filter_operation.h" |
| 26 #include "cc/output/filter_operations.h" | 30 #include "cc/output/filter_operations.h" |
| 27 #include "cc/playback/display_item_list_settings.h" | 31 #include "cc/playback/display_item_list_settings.h" |
| 28 #include "cc/resources/transferable_resource.h" | 32 #include "cc/resources/transferable_resource.h" |
| 33 #include "cc/trees/layer_tree_host.h" |
| 29 #include "cc/trees/layer_tree_settings.h" | 34 #include "cc/trees/layer_tree_settings.h" |
| 30 #include "ui/compositor/compositor_switches.h" | 35 #include "ui/compositor/compositor_switches.h" |
| 31 #include "ui/compositor/dip_util.h" | 36 #include "ui/compositor/dip_util.h" |
| 32 #include "ui/compositor/layer_animator.h" | 37 #include "ui/compositor/layer_animator.h" |
| 33 #include "ui/compositor/paint_context.h" | 38 #include "ui/compositor/paint_context.h" |
| 34 #include "ui/gfx/animation/animation.h" | 39 #include "ui/gfx/animation/animation.h" |
| 35 #include "ui/gfx/canvas.h" | 40 #include "ui/gfx/canvas.h" |
| 36 #include "ui/gfx/display.h" | 41 #include "ui/gfx/display.h" |
| 37 #include "ui/gfx/geometry/point3_f.h" | 42 #include "ui/gfx/geometry/point3_f.h" |
| 38 #include "ui/gfx/geometry/point_conversions.h" | 43 #include "ui/gfx/geometry/point_conversions.h" |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 compositor_->SetRootLayer(NULL); | 118 compositor_->SetRootLayer(NULL); |
| 114 if (parent_) | 119 if (parent_) |
| 115 parent_->Remove(this); | 120 parent_->Remove(this); |
| 116 if (layer_mask_) | 121 if (layer_mask_) |
| 117 SetMaskLayer(NULL); | 122 SetMaskLayer(NULL); |
| 118 if (layer_mask_back_link_) | 123 if (layer_mask_back_link_) |
| 119 layer_mask_back_link_->SetMaskLayer(NULL); | 124 layer_mask_back_link_->SetMaskLayer(NULL); |
| 120 for (size_t i = 0; i < children_.size(); ++i) | 125 for (size_t i = 0; i < children_.size(); ++i) |
| 121 children_[i]->parent_ = NULL; | 126 children_[i]->parent_ = NULL; |
| 122 | 127 |
| 123 cc_layer_->RemoveLayerAnimationEventObserver(this); | 128 if (animation_player_) |
| 129 DetachPlayerLayer(); |
| 130 else |
| 131 cc_layer_->RemoveLayerAnimationEventObserver(this); |
| 132 |
| 124 cc_layer_->RemoveFromParent(); | 133 cc_layer_->RemoveFromParent(); |
| 125 } | 134 } |
| 126 | 135 |
| 127 // static | 136 // static |
| 128 const cc::LayerSettings& Layer::UILayerSettings() { | 137 const cc::LayerSettings& Layer::UILayerSettings() { |
| 129 return g_ui_layer_settings.Get(); | 138 return g_ui_layer_settings.Get(); |
| 130 } | 139 } |
| 131 | 140 |
| 132 // static | 141 // static |
| 133 void Layer::InitializeUILayerSettings() { | 142 void Layer::InitializeUILayerSettings() { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 151 DCHECK(compositor); | 160 DCHECK(compositor); |
| 152 DCHECK(!compositor_); | 161 DCHECK(!compositor_); |
| 153 DCHECK(compositor->root_layer() == this); | 162 DCHECK(compositor->root_layer() == this); |
| 154 DCHECK(!parent_); | 163 DCHECK(!parent_); |
| 155 | 164 |
| 156 compositor_ = compositor; | 165 compositor_ = compositor; |
| 157 OnDeviceScaleFactorChanged(compositor->device_scale_factor()); | 166 OnDeviceScaleFactorChanged(compositor->device_scale_factor()); |
| 158 AddAnimatorsInTreeToCollection(compositor_->layer_animator_collection()); | 167 AddAnimatorsInTreeToCollection(compositor_->layer_animator_collection()); |
| 159 | 168 |
| 160 root_layer->AddChild(cc_layer_); | 169 root_layer->AddChild(cc_layer_); |
| 170 AttachAnimationPlayers(compositor->GetAnimationTimeline()); |
| 171 AttachPlayerLayer(); |
| 161 SendPendingThreadedAnimations(); | 172 SendPendingThreadedAnimations(); |
| 162 } | 173 } |
| 163 | 174 |
| 164 void Layer::ResetCompositor() { | 175 void Layer::ResetCompositor() { |
| 165 DCHECK(!parent_); | 176 DCHECK(!parent_); |
| 166 if (compositor_) | 177 if (compositor_) { |
| 178 DetachPlayerLayer(); |
| 179 DetachAnimationPlayers(compositor_->GetAnimationTimeline()); |
| 167 RemoveAnimatorsInTreeFromCollection( | 180 RemoveAnimatorsInTreeFromCollection( |
| 168 compositor_->layer_animator_collection()); | 181 compositor_->layer_animator_collection()); |
| 182 } |
| 169 compositor_ = nullptr; | 183 compositor_ = nullptr; |
| 170 } | 184 } |
| 171 | 185 |
| 172 void Layer::Add(Layer* child) { | 186 void Layer::Add(Layer* child) { |
| 173 DCHECK(!child->compositor_); | 187 DCHECK(!child->compositor_); |
| 174 if (child->parent_) | 188 if (child->parent_) |
| 175 child->parent_->Remove(child); | 189 child->parent_->Remove(child); |
| 176 child->parent_ = this; | 190 child->parent_ = this; |
| 177 children_.push_back(child); | 191 children_.push_back(child); |
| 178 cc_layer_->AddChild(child->cc_layer_); | 192 cc_layer_->AddChild(child->cc_layer_); |
| 179 child->OnDeviceScaleFactorChanged(device_scale_factor_); | 193 child->OnDeviceScaleFactorChanged(device_scale_factor_); |
| 180 if (GetCompositor()) | 194 Compositor* compositor = GetCompositor(); |
| 195 if (compositor) { |
| 196 child->AttachAnimationPlayers(compositor->GetAnimationTimeline()); |
| 197 child->AttachPlayerLayer(); |
| 181 child->SendPendingThreadedAnimations(); | 198 child->SendPendingThreadedAnimations(); |
| 199 } |
| 182 LayerAnimatorCollection* collection = GetLayerAnimatorCollection(); | 200 LayerAnimatorCollection* collection = GetLayerAnimatorCollection(); |
| 183 if (collection) | 201 if (collection) |
| 184 child->AddAnimatorsInTreeToCollection(collection); | 202 child->AddAnimatorsInTreeToCollection(collection); |
| 185 } | 203 } |
| 186 | 204 |
| 187 void Layer::Remove(Layer* child) { | 205 void Layer::Remove(Layer* child) { |
| 188 // Current bounds are used to calculate offsets when layers are reparented. | 206 // Current bounds are used to calculate offsets when layers are reparented. |
| 189 // Stop (and complete) an ongoing animation to update the bounds immediately. | 207 // Stop (and complete) an ongoing animation to update the bounds immediately. |
| 190 LayerAnimator* child_animator = child->animator_.get(); | 208 LayerAnimator* child_animator = child->animator_.get(); |
| 191 if (child_animator) | 209 if (child_animator) |
| 192 child_animator->StopAnimatingProperty(ui::LayerAnimationElement::BOUNDS); | 210 child_animator->StopAnimatingProperty(ui::LayerAnimationElement::BOUNDS); |
| 193 LayerAnimatorCollection* collection = GetLayerAnimatorCollection(); | 211 LayerAnimatorCollection* collection = GetLayerAnimatorCollection(); |
| 194 if (collection) | 212 if (collection) |
| 195 child->RemoveAnimatorsInTreeFromCollection(collection); | 213 child->RemoveAnimatorsInTreeFromCollection(collection); |
| 196 | 214 |
| 215 child->DetachPlayerLayer(); |
| 216 Compositor* compositor = GetCompositor(); |
| 217 if (compositor) |
| 218 child->DetachAnimationPlayers(compositor->GetAnimationTimeline()); |
| 219 |
| 197 std::vector<Layer*>::iterator i = | 220 std::vector<Layer*>::iterator i = |
| 198 std::find(children_.begin(), children_.end(), child); | 221 std::find(children_.begin(), children_.end(), child); |
| 199 DCHECK(i != children_.end()); | 222 DCHECK(i != children_.end()); |
| 200 children_.erase(i); | 223 children_.erase(i); |
| 201 child->parent_ = NULL; | 224 child->parent_ = NULL; |
| 202 child->cc_layer_->RemoveFromParent(); | 225 child->cc_layer_->RemoveFromParent(); |
| 203 } | 226 } |
| 204 | 227 |
| 205 void Layer::StackAtTop(Layer* child) { | 228 void Layer::StackAtTop(Layer* child) { |
| 206 if (children_.size() <= 1 || child == children_.back()) | 229 if (children_.size() <= 1 || child == children_.back()) |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 | 515 |
| 493 if (texture_layer_.get()) | 516 if (texture_layer_.get()) |
| 494 texture_layer_->ClearClient(); | 517 texture_layer_->ClearClient(); |
| 495 // TODO(piman): delegated_renderer_layer_ cleanup. | 518 // TODO(piman): delegated_renderer_layer_ cleanup. |
| 496 | 519 |
| 497 cc_layer_->RemoveAllChildren(); | 520 cc_layer_->RemoveAllChildren(); |
| 498 if (cc_layer_->parent()) { | 521 if (cc_layer_->parent()) { |
| 499 cc_layer_->parent()->ReplaceChild(cc_layer_, new_layer); | 522 cc_layer_->parent()->ReplaceChild(cc_layer_, new_layer); |
| 500 } | 523 } |
| 501 cc_layer_->SetLayerClient(NULL); | 524 cc_layer_->SetLayerClient(NULL); |
| 502 cc_layer_->RemoveLayerAnimationEventObserver(this); | 525 |
| 526 if (animation_player_) |
| 527 DetachPlayerLayer(); |
| 528 else |
| 529 cc_layer_->RemoveLayerAnimationEventObserver(this); |
| 530 |
| 503 new_layer->SetOpacity(cc_layer_->opacity()); | 531 new_layer->SetOpacity(cc_layer_->opacity()); |
| 504 new_layer->SetTransform(cc_layer_->transform()); | 532 new_layer->SetTransform(cc_layer_->transform()); |
| 505 new_layer->SetPosition(cc_layer_->position()); | 533 new_layer->SetPosition(cc_layer_->position()); |
| 506 new_layer->SetBackgroundColor(cc_layer_->background_color()); | 534 new_layer->SetBackgroundColor(cc_layer_->background_color()); |
| 507 | 535 |
| 508 cc_layer_ = new_layer.get(); | 536 cc_layer_ = new_layer.get(); |
| 509 content_layer_ = NULL; | 537 content_layer_ = NULL; |
| 510 solid_color_layer_ = NULL; | 538 solid_color_layer_ = NULL; |
| 511 texture_layer_ = NULL; | 539 texture_layer_ = NULL; |
| 512 delegated_renderer_layer_ = NULL; | 540 delegated_renderer_layer_ = NULL; |
| 513 surface_layer_ = NULL; | 541 surface_layer_ = NULL; |
| 514 | 542 |
| 515 cc_layer_->AddLayerAnimationEventObserver(this); | 543 if (animation_player_) |
| 544 AttachPlayerLayer(); |
| 545 else |
| 546 cc_layer_->AddLayerAnimationEventObserver(this); |
| 547 |
| 516 for (size_t i = 0; i < children_.size(); ++i) { | 548 for (size_t i = 0; i < children_.size(); ++i) { |
| 517 DCHECK(children_[i]->cc_layer_); | 549 DCHECK(children_[i]->cc_layer_); |
| 518 cc_layer_->AddChild(children_[i]->cc_layer_); | 550 cc_layer_->AddChild(children_[i]->cc_layer_); |
| 519 } | 551 } |
| 520 cc_layer_->SetLayerClient(this); | 552 cc_layer_->SetLayerClient(this); |
| 521 cc_layer_->SetTransformOrigin(gfx::Point3F()); | 553 cc_layer_->SetTransformOrigin(gfx::Point3F()); |
| 522 cc_layer_->SetContentsOpaque(fills_bounds_opaquely_); | 554 cc_layer_->SetContentsOpaque(fills_bounds_opaquely_); |
| 523 cc_layer_->SetForceRenderSurface(force_render_surface_); | 555 cc_layer_->SetForceRenderSurface(force_render_surface_); |
| 524 cc_layer_->SetIsDrawable(type_ != LAYER_NOT_DRAWN); | 556 cc_layer_->SetIsDrawable(type_ != LAYER_NOT_DRAWN); |
| 525 cc_layer_->SetHideLayerAndSubtree(!visible_); | 557 cc_layer_->SetHideLayerAndSubtree(!visible_); |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 974 } | 1006 } |
| 975 | 1007 |
| 976 float Layer::GetDeviceScaleFactor() const { | 1008 float Layer::GetDeviceScaleFactor() const { |
| 977 return device_scale_factor_; | 1009 return device_scale_factor_; |
| 978 } | 1010 } |
| 979 | 1011 |
| 980 void Layer::AddThreadedAnimation(scoped_ptr<cc::Animation> animation) { | 1012 void Layer::AddThreadedAnimation(scoped_ptr<cc::Animation> animation) { |
| 981 DCHECK(cc_layer_); | 1013 DCHECK(cc_layer_); |
| 982 // Until this layer has a compositor (and hence cc_layer_ has a | 1014 // Until this layer has a compositor (and hence cc_layer_ has a |
| 983 // LayerTreeHost), addAnimation will fail. | 1015 // LayerTreeHost), addAnimation will fail. |
| 984 if (GetCompositor()) | 1016 if (GetCompositor()) { |
| 985 cc_layer_->AddAnimation(animation.Pass()); | 1017 animation_player_ ? animation_player_->AddAnimation(animation.Pass()) |
| 986 else | 1018 : (void)cc_layer_->AddAnimation(animation.Pass()); |
| 1019 } else { |
| 987 pending_threaded_animations_.push_back(animation.Pass()); | 1020 pending_threaded_animations_.push_back(animation.Pass()); |
| 1021 } |
| 988 } | 1022 } |
| 989 | 1023 |
| 990 void Layer::RemoveThreadedAnimation(int animation_id) { | 1024 void Layer::RemoveThreadedAnimation(int animation_id) { |
| 991 DCHECK(cc_layer_); | 1025 DCHECK(cc_layer_); |
| 992 if (pending_threaded_animations_.size() == 0) { | 1026 if (pending_threaded_animations_.size() == 0) { |
| 993 cc_layer_->RemoveAnimation(animation_id); | 1027 animation_player_ ? animation_player_->RemoveAnimation(animation_id) |
| 1028 : cc_layer_->RemoveAnimation(animation_id); |
| 994 return; | 1029 return; |
| 995 } | 1030 } |
| 996 | 1031 |
| 997 pending_threaded_animations_.erase( | 1032 pending_threaded_animations_.erase( |
| 998 std::remove_if( | 1033 std::remove_if( |
| 999 pending_threaded_animations_.begin(), | 1034 pending_threaded_animations_.begin(), |
| 1000 pending_threaded_animations_.end(), | 1035 pending_threaded_animations_.end(), |
| 1001 [animation_id](const scoped_ptr<cc::Animation>& animation) { | 1036 [animation_id](const scoped_ptr<cc::Animation>& animation) { |
| 1002 return animation->id() == animation_id; | 1037 return animation->id() == animation_id; |
| 1003 }), | 1038 }), |
| 1004 pending_threaded_animations_.end()); | 1039 pending_threaded_animations_.end()); |
| 1005 } | 1040 } |
| 1006 | 1041 |
| 1007 LayerAnimatorCollection* Layer::GetLayerAnimatorCollection() { | 1042 LayerAnimatorCollection* Layer::GetLayerAnimatorCollection() { |
| 1008 Compositor* compositor = GetCompositor(); | 1043 Compositor* compositor = GetCompositor(); |
| 1009 return compositor ? compositor->layer_animator_collection() : NULL; | 1044 return compositor ? compositor->layer_animator_collection() : NULL; |
| 1010 } | 1045 } |
| 1011 | 1046 |
| 1012 void Layer::SendPendingThreadedAnimations() { | 1047 void Layer::SendPendingThreadedAnimations() { |
| 1013 for (auto& animation : pending_threaded_animations_) | 1048 for (auto& animation : pending_threaded_animations_) { |
| 1014 cc_layer_->AddAnimation(std::move(animation)); | 1049 animation_player_ |
| 1050 ? animation_player_->AddAnimation(std::move(animation)) |
| 1051 : (void)cc_layer_->AddAnimation(std::move(animation)); |
| 1052 } |
| 1015 pending_threaded_animations_.clear(); | 1053 pending_threaded_animations_.clear(); |
| 1016 | 1054 |
| 1017 for (auto* child : children_) | 1055 for (auto* child : children_) |
| 1018 child->SendPendingThreadedAnimations(); | 1056 child->SendPendingThreadedAnimations(); |
| 1019 } | 1057 } |
| 1020 | 1058 |
| 1021 void Layer::CreateCcLayer() { | 1059 void Layer::CreateCcLayer() { |
| 1022 if (type_ == LAYER_SOLID_COLOR) { | 1060 if (type_ == LAYER_SOLID_COLOR) { |
| 1023 solid_color_layer_ = cc::SolidColorLayer::Create(UILayerSettings()); | 1061 solid_color_layer_ = cc::SolidColorLayer::Create(UILayerSettings()); |
| 1024 cc_layer_ = solid_color_layer_.get(); | 1062 cc_layer_ = solid_color_layer_.get(); |
| 1025 } else if (type_ == LAYER_NINE_PATCH) { | 1063 } else if (type_ == LAYER_NINE_PATCH) { |
| 1026 nine_patch_layer_ = cc::NinePatchLayer::Create(UILayerSettings()); | 1064 nine_patch_layer_ = cc::NinePatchLayer::Create(UILayerSettings()); |
| 1027 cc_layer_ = nine_patch_layer_.get(); | 1065 cc_layer_ = nine_patch_layer_.get(); |
| 1028 } else { | 1066 } else { |
| 1029 content_layer_ = cc::PictureLayer::Create(UILayerSettings(), this); | 1067 content_layer_ = cc::PictureLayer::Create(UILayerSettings(), this); |
| 1030 cc_layer_ = content_layer_.get(); | 1068 cc_layer_ = content_layer_.get(); |
| 1031 } | 1069 } |
| 1032 cc_layer_->SetTransformOrigin(gfx::Point3F()); | 1070 cc_layer_->SetTransformOrigin(gfx::Point3F()); |
| 1033 cc_layer_->SetContentsOpaque(true); | 1071 cc_layer_->SetContentsOpaque(true); |
| 1034 cc_layer_->SetIsDrawable(type_ != LAYER_NOT_DRAWN); | 1072 cc_layer_->SetIsDrawable(type_ != LAYER_NOT_DRAWN); |
| 1035 cc_layer_->AddLayerAnimationEventObserver(this); | 1073 if (UILayerSettings().use_compositor_animation_timelines) |
| 1074 animation_player_ = |
| 1075 cc::AnimationPlayer::Create(cc::AnimationIdProvider::NextPlayerId()); |
| 1076 else |
| 1077 cc_layer_->AddLayerAnimationEventObserver(this); |
| 1036 cc_layer_->SetLayerClient(this); | 1078 cc_layer_->SetLayerClient(this); |
| 1037 RecomputePosition(); | 1079 RecomputePosition(); |
| 1038 } | 1080 } |
| 1039 | 1081 |
| 1082 void Layer::AttachPlayerLayer() { |
| 1083 DCHECK(cc_layer_); |
| 1084 |
| 1085 if (animation_player_) { |
| 1086 animation_player_->AttachLayer(cc_layer_->id()); |
| 1087 DCHECK(animation_player_->element_animations()); |
| 1088 animation_player_->element_animations() |
| 1089 ->layer_animation_controller() |
| 1090 ->AddEventObserver(this); |
| 1091 } |
| 1092 |
| 1093 for (size_t i = 0; i < children_.size(); ++i) |
| 1094 children_[i]->AttachPlayerLayer(); |
| 1095 } |
| 1096 |
| 1097 void Layer::DetachPlayerLayer() { |
| 1098 if (animation_player_) { |
| 1099 if (animation_player_->element_animations()) { |
| 1100 animation_player_->element_animations() |
| 1101 ->layer_animation_controller() |
| 1102 ->RemoveEventObserver(this); |
| 1103 animation_player_->DetachLayer(); |
| 1104 } |
| 1105 } |
| 1106 |
| 1107 for (size_t i = 0; i < children_.size(); ++i) |
| 1108 children_[i]->DetachPlayerLayer(); |
| 1109 } |
| 1110 |
| 1111 void Layer::AttachAnimationPlayers(cc::AnimationTimeline* timeline) { |
| 1112 if (!timeline) |
| 1113 return; |
| 1114 |
| 1115 if (animation_player_) |
| 1116 timeline->AttachPlayer(animation_player_); |
| 1117 for (size_t i = 0; i < children_.size(); ++i) |
| 1118 children_[i]->AttachAnimationPlayers(timeline); |
| 1119 } |
| 1120 |
| 1121 void Layer::DetachAnimationPlayers(cc::AnimationTimeline* timeline) { |
| 1122 if (!timeline) |
| 1123 return; |
| 1124 |
| 1125 if (animation_player_) |
| 1126 timeline->DetachPlayer(animation_player_); |
| 1127 for (size_t i = 0; i < children_.size(); ++i) |
| 1128 children_[i]->DetachAnimationPlayers(timeline); |
| 1129 } |
| 1130 |
| 1040 gfx::Transform Layer::transform() const { | 1131 gfx::Transform Layer::transform() const { |
| 1041 return cc_layer_->transform(); | 1132 return cc_layer_->transform(); |
| 1042 } | 1133 } |
| 1043 | 1134 |
| 1044 void Layer::RecomputeDrawsContentAndUVRect() { | 1135 void Layer::RecomputeDrawsContentAndUVRect() { |
| 1045 DCHECK(cc_layer_); | 1136 DCHECK(cc_layer_); |
| 1046 gfx::Size size(bounds_.size()); | 1137 gfx::Size size(bounds_.size()); |
| 1047 if (texture_layer_.get()) { | 1138 if (texture_layer_.get()) { |
| 1048 size.SetToMin(frame_size_in_dip_); | 1139 size.SetToMin(frame_size_in_dip_); |
| 1049 gfx::PointF uv_top_left(0.f, 0.f); | 1140 gfx::PointF uv_top_left(0.f, 0.f); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1078 animator_->RemoveFromCollection(collection); | 1169 animator_->RemoveFromCollection(collection); |
| 1079 for (auto* child : children_) | 1170 for (auto* child : children_) |
| 1080 child->RemoveAnimatorsInTreeFromCollection(collection); | 1171 child->RemoveAnimatorsInTreeFromCollection(collection); |
| 1081 } | 1172 } |
| 1082 | 1173 |
| 1083 bool Layer::IsAnimating() const { | 1174 bool Layer::IsAnimating() const { |
| 1084 return animator_.get() && animator_->is_animating(); | 1175 return animator_.get() && animator_->is_animating(); |
| 1085 } | 1176 } |
| 1086 | 1177 |
| 1087 } // namespace ui | 1178 } // namespace ui |
| OLD | NEW |