| OLD | NEW |
| 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 <utility> | 10 #include <utility> |
| (...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 935 return; | 935 return; |
| 936 node->data.opacity = EffectiveOpacity(); | 936 node->data.opacity = EffectiveOpacity(); |
| 937 effect_tree.set_needs_update(true); | 937 effect_tree.set_needs_update(true); |
| 938 } | 938 } |
| 939 } | 939 } |
| 940 | 940 |
| 941 void LayerImpl::UpdatePropertyTreeForScrollingAndAnimationIfNeeded() { | 941 void LayerImpl::UpdatePropertyTreeForScrollingAndAnimationIfNeeded() { |
| 942 if (scrollable()) | 942 if (scrollable()) |
| 943 UpdatePropertyTreeScrollOffset(); | 943 UpdatePropertyTreeScrollOffset(); |
| 944 | 944 |
| 945 if (HasAnyAnimationTargetingProperty(Animation::OPACITY)) | 945 if (HasAnyAnimationTargetingProperty(AnimationTargetProperty::OPACITY)) |
| 946 UpdatePropertyTreeOpacity(); | 946 UpdatePropertyTreeOpacity(); |
| 947 | 947 |
| 948 if (HasAnyAnimationTargetingProperty(Animation::TRANSFORM)) { | 948 if (HasAnyAnimationTargetingProperty(AnimationTargetProperty::TRANSFORM)) { |
| 949 UpdatePropertyTreeTransform(); | 949 UpdatePropertyTreeTransform(); |
| 950 UpdatePropertyTreeTransformIsAnimated( | 950 UpdatePropertyTreeTransformIsAnimated( |
| 951 HasPotentiallyRunningTransformAnimation()); | 951 HasPotentiallyRunningTransformAnimation()); |
| 952 } | 952 } |
| 953 } | 953 } |
| 954 | 954 |
| 955 gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const { | 955 gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const { |
| 956 return CurrentScrollOffset(); | 956 return CurrentScrollOffset(); |
| 957 } | 957 } |
| 958 | 958 |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1157 filters_ = filters; | 1157 filters_ = filters; |
| 1158 NoteLayerPropertyChangedForSubtree(); | 1158 NoteLayerPropertyChangedForSubtree(); |
| 1159 } | 1159 } |
| 1160 | 1160 |
| 1161 bool LayerImpl::FilterIsAnimating() const { | 1161 bool LayerImpl::FilterIsAnimating() const { |
| 1162 LayerAnimationController::ObserverType observer_type = | 1162 LayerAnimationController::ObserverType observer_type = |
| 1163 IsActive() ? LayerAnimationController::ObserverType::ACTIVE | 1163 IsActive() ? LayerAnimationController::ObserverType::ACTIVE |
| 1164 : LayerAnimationController::ObserverType::PENDING; | 1164 : LayerAnimationController::ObserverType::PENDING; |
| 1165 return layer_animation_controller_ | 1165 return layer_animation_controller_ |
| 1166 ? layer_animation_controller_->IsCurrentlyAnimatingProperty( | 1166 ? layer_animation_controller_->IsCurrentlyAnimatingProperty( |
| 1167 Animation::FILTER, observer_type) | 1167 AnimationTargetProperty::FILTER, observer_type) |
| 1168 : layer_tree_impl_->IsAnimatingFilterProperty(this); | 1168 : layer_tree_impl_->IsAnimatingFilterProperty(this); |
| 1169 } | 1169 } |
| 1170 | 1170 |
| 1171 bool LayerImpl::HasPotentiallyRunningFilterAnimation() const { | 1171 bool LayerImpl::HasPotentiallyRunningFilterAnimation() const { |
| 1172 LayerAnimationController::ObserverType observer_type = | 1172 LayerAnimationController::ObserverType observer_type = |
| 1173 IsActive() ? LayerAnimationController::ObserverType::ACTIVE | 1173 IsActive() ? LayerAnimationController::ObserverType::ACTIVE |
| 1174 : LayerAnimationController::ObserverType::PENDING; | 1174 : LayerAnimationController::ObserverType::PENDING; |
| 1175 return layer_animation_controller_ | 1175 return layer_animation_controller_ |
| 1176 ? layer_animation_controller_->IsPotentiallyAnimatingProperty( | 1176 ? layer_animation_controller_->IsPotentiallyAnimatingProperty( |
| 1177 Animation::FILTER, observer_type) | 1177 AnimationTargetProperty::FILTER, observer_type) |
| 1178 : layer_tree_impl_->HasPotentiallyRunningFilterAnimation(this); | 1178 : layer_tree_impl_->HasPotentiallyRunningFilterAnimation(this); |
| 1179 } | 1179 } |
| 1180 | 1180 |
| 1181 bool LayerImpl::FilterIsAnimatingOnImplOnly() const { | 1181 bool LayerImpl::FilterIsAnimatingOnImplOnly() const { |
| 1182 if (!layer_animation_controller_) | 1182 if (!layer_animation_controller_) |
| 1183 return layer_tree_impl_->FilterIsAnimatingOnImplOnly(this); | 1183 return layer_tree_impl_->FilterIsAnimatingOnImplOnly(this); |
| 1184 | 1184 |
| 1185 Animation* filter_animation = | 1185 Animation* filter_animation = layer_animation_controller_->GetAnimation( |
| 1186 layer_animation_controller_->GetAnimation(Animation::FILTER); | 1186 AnimationTargetProperty::FILTER); |
| 1187 return filter_animation && filter_animation->is_impl_only(); | 1187 return filter_animation && filter_animation->is_impl_only(); |
| 1188 } | 1188 } |
| 1189 | 1189 |
| 1190 void LayerImpl::SetBackgroundFilters( | 1190 void LayerImpl::SetBackgroundFilters( |
| 1191 const FilterOperations& filters) { | 1191 const FilterOperations& filters) { |
| 1192 if (background_filters_ == filters) | 1192 if (background_filters_ == filters) |
| 1193 return; | 1193 return; |
| 1194 | 1194 |
| 1195 background_filters_ = filters; | 1195 background_filters_ = filters; |
| 1196 NoteLayerPropertyChanged(); | 1196 NoteLayerPropertyChanged(); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1221 float LayerImpl::EffectiveOpacity() const { | 1221 float LayerImpl::EffectiveOpacity() const { |
| 1222 return hide_layer_and_subtree_ ? 0.f : opacity_; | 1222 return hide_layer_and_subtree_ ? 0.f : opacity_; |
| 1223 } | 1223 } |
| 1224 | 1224 |
| 1225 bool LayerImpl::OpacityIsAnimating() const { | 1225 bool LayerImpl::OpacityIsAnimating() const { |
| 1226 LayerAnimationController::ObserverType observer_type = | 1226 LayerAnimationController::ObserverType observer_type = |
| 1227 IsActive() ? LayerAnimationController::ObserverType::ACTIVE | 1227 IsActive() ? LayerAnimationController::ObserverType::ACTIVE |
| 1228 : LayerAnimationController::ObserverType::PENDING; | 1228 : LayerAnimationController::ObserverType::PENDING; |
| 1229 return layer_animation_controller_ | 1229 return layer_animation_controller_ |
| 1230 ? layer_animation_controller_->IsCurrentlyAnimatingProperty( | 1230 ? layer_animation_controller_->IsCurrentlyAnimatingProperty( |
| 1231 Animation::OPACITY, observer_type) | 1231 AnimationTargetProperty::OPACITY, observer_type) |
| 1232 : layer_tree_impl_->IsAnimatingOpacityProperty(this); | 1232 : layer_tree_impl_->IsAnimatingOpacityProperty(this); |
| 1233 } | 1233 } |
| 1234 | 1234 |
| 1235 bool LayerImpl::HasPotentiallyRunningOpacityAnimation() const { | 1235 bool LayerImpl::HasPotentiallyRunningOpacityAnimation() const { |
| 1236 LayerAnimationController::ObserverType observer_type = | 1236 LayerAnimationController::ObserverType observer_type = |
| 1237 IsActive() ? LayerAnimationController::ObserverType::ACTIVE | 1237 IsActive() ? LayerAnimationController::ObserverType::ACTIVE |
| 1238 : LayerAnimationController::ObserverType::PENDING; | 1238 : LayerAnimationController::ObserverType::PENDING; |
| 1239 return layer_animation_controller_ | 1239 return layer_animation_controller_ |
| 1240 ? layer_animation_controller_->IsPotentiallyAnimatingProperty( | 1240 ? layer_animation_controller_->IsPotentiallyAnimatingProperty( |
| 1241 Animation::OPACITY, observer_type) | 1241 AnimationTargetProperty::OPACITY, observer_type) |
| 1242 : layer_tree_impl_->HasPotentiallyRunningOpacityAnimation(this); | 1242 : layer_tree_impl_->HasPotentiallyRunningOpacityAnimation(this); |
| 1243 } | 1243 } |
| 1244 | 1244 |
| 1245 bool LayerImpl::OpacityIsAnimatingOnImplOnly() const { | 1245 bool LayerImpl::OpacityIsAnimatingOnImplOnly() const { |
| 1246 if (!layer_animation_controller_) | 1246 if (!layer_animation_controller_) |
| 1247 return layer_tree_impl_->OpacityIsAnimatingOnImplOnly(this); | 1247 return layer_tree_impl_->OpacityIsAnimatingOnImplOnly(this); |
| 1248 | 1248 |
| 1249 Animation* opacity_animation = | 1249 Animation* opacity_animation = layer_animation_controller_->GetAnimation( |
| 1250 layer_animation_controller_->GetAnimation(Animation::OPACITY); | 1250 AnimationTargetProperty::OPACITY); |
| 1251 return opacity_animation && opacity_animation->is_impl_only(); | 1251 return opacity_animation && opacity_animation->is_impl_only(); |
| 1252 } | 1252 } |
| 1253 | 1253 |
| 1254 void LayerImpl::SetElementId(uint64_t element_id) { | 1254 void LayerImpl::SetElementId(uint64_t element_id) { |
| 1255 if (element_id == element_id_) | 1255 if (element_id == element_id_) |
| 1256 return; | 1256 return; |
| 1257 | 1257 |
| 1258 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), | 1258 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
| 1259 "LayerImpl::SetElementId", "id", element_id); | 1259 "LayerImpl::SetElementId", "id", element_id); |
| 1260 | 1260 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1345 transform_is_invertible_ = transform_is_invertible; | 1345 transform_is_invertible_ = transform_is_invertible; |
| 1346 NoteLayerPropertyChangedForSubtree(); | 1346 NoteLayerPropertyChangedForSubtree(); |
| 1347 } | 1347 } |
| 1348 | 1348 |
| 1349 bool LayerImpl::TransformIsAnimating() const { | 1349 bool LayerImpl::TransformIsAnimating() const { |
| 1350 LayerAnimationController::ObserverType observer_type = | 1350 LayerAnimationController::ObserverType observer_type = |
| 1351 IsActive() ? LayerAnimationController::ObserverType::ACTIVE | 1351 IsActive() ? LayerAnimationController::ObserverType::ACTIVE |
| 1352 : LayerAnimationController::ObserverType::PENDING; | 1352 : LayerAnimationController::ObserverType::PENDING; |
| 1353 return layer_animation_controller_ | 1353 return layer_animation_controller_ |
| 1354 ? layer_animation_controller_->IsCurrentlyAnimatingProperty( | 1354 ? layer_animation_controller_->IsCurrentlyAnimatingProperty( |
| 1355 Animation::TRANSFORM, observer_type) | 1355 AnimationTargetProperty::TRANSFORM, observer_type) |
| 1356 : layer_tree_impl_->IsAnimatingTransformProperty(this); | 1356 : layer_tree_impl_->IsAnimatingTransformProperty(this); |
| 1357 } | 1357 } |
| 1358 | 1358 |
| 1359 bool LayerImpl::HasPotentiallyRunningTransformAnimation() const { | 1359 bool LayerImpl::HasPotentiallyRunningTransformAnimation() const { |
| 1360 LayerAnimationController::ObserverType observer_type = | 1360 LayerAnimationController::ObserverType observer_type = |
| 1361 IsActive() ? LayerAnimationController::ObserverType::ACTIVE | 1361 IsActive() ? LayerAnimationController::ObserverType::ACTIVE |
| 1362 : LayerAnimationController::ObserverType::PENDING; | 1362 : LayerAnimationController::ObserverType::PENDING; |
| 1363 return layer_animation_controller_ | 1363 return layer_animation_controller_ |
| 1364 ? layer_animation_controller_->IsPotentiallyAnimatingProperty( | 1364 ? layer_animation_controller_->IsPotentiallyAnimatingProperty( |
| 1365 Animation::TRANSFORM, observer_type) | 1365 AnimationTargetProperty::TRANSFORM, observer_type) |
| 1366 : layer_tree_impl_->HasPotentiallyRunningTransformAnimation(this); | 1366 : layer_tree_impl_->HasPotentiallyRunningTransformAnimation(this); |
| 1367 } | 1367 } |
| 1368 | 1368 |
| 1369 bool LayerImpl::TransformIsAnimatingOnImplOnly() const { | 1369 bool LayerImpl::TransformIsAnimatingOnImplOnly() const { |
| 1370 if (!layer_animation_controller_) | 1370 if (!layer_animation_controller_) |
| 1371 return layer_tree_impl_->TransformIsAnimatingOnImplOnly(this); | 1371 return layer_tree_impl_->TransformIsAnimatingOnImplOnly(this); |
| 1372 | 1372 |
| 1373 Animation* transform_animation = | 1373 Animation* transform_animation = layer_animation_controller_->GetAnimation( |
| 1374 layer_animation_controller_->GetAnimation(Animation::TRANSFORM); | 1374 AnimationTargetProperty::TRANSFORM); |
| 1375 return transform_animation && transform_animation->is_impl_only(); | 1375 return transform_animation && transform_animation->is_impl_only(); |
| 1376 } | 1376 } |
| 1377 | 1377 |
| 1378 bool LayerImpl::HasOnlyTranslationTransforms() const { | 1378 bool LayerImpl::HasOnlyTranslationTransforms() const { |
| 1379 if (!layer_animation_controller_) | 1379 if (!layer_animation_controller_) |
| 1380 return layer_tree_impl_->HasOnlyTranslationTransforms(this); | 1380 return layer_tree_impl_->HasOnlyTranslationTransforms(this); |
| 1381 | 1381 |
| 1382 LayerAnimationController::ObserverType observer_type = | 1382 LayerAnimationController::ObserverType observer_type = |
| 1383 IsActive() ? LayerAnimationController::ObserverType::ACTIVE | 1383 IsActive() ? LayerAnimationController::ObserverType::ACTIVE |
| 1384 : LayerAnimationController::ObserverType::PENDING; | 1384 : LayerAnimationController::ObserverType::PENDING; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1408 return layer_tree_impl_->AnimationStartScale(this, start_scale); | 1408 return layer_tree_impl_->AnimationStartScale(this, start_scale); |
| 1409 | 1409 |
| 1410 LayerAnimationController::ObserverType observer_type = | 1410 LayerAnimationController::ObserverType observer_type = |
| 1411 IsActive() ? LayerAnimationController::ObserverType::ACTIVE | 1411 IsActive() ? LayerAnimationController::ObserverType::ACTIVE |
| 1412 : LayerAnimationController::ObserverType::PENDING; | 1412 : LayerAnimationController::ObserverType::PENDING; |
| 1413 return layer_animation_controller_->AnimationStartScale(observer_type, | 1413 return layer_animation_controller_->AnimationStartScale(observer_type, |
| 1414 start_scale); | 1414 start_scale); |
| 1415 } | 1415 } |
| 1416 | 1416 |
| 1417 bool LayerImpl::HasAnyAnimationTargetingProperty( | 1417 bool LayerImpl::HasAnyAnimationTargetingProperty( |
| 1418 Animation::TargetProperty property) const { | 1418 AnimationTargetProperty::Enum property) const { |
| 1419 if (!layer_animation_controller_) | 1419 if (!layer_animation_controller_) |
| 1420 return layer_tree_impl_->HasAnyAnimationTargetingProperty(this, property); | 1420 return layer_tree_impl_->HasAnyAnimationTargetingProperty(this, property); |
| 1421 | 1421 |
| 1422 return !!layer_animation_controller_->GetAnimation(property); | 1422 return !!layer_animation_controller_->GetAnimation(property); |
| 1423 } | 1423 } |
| 1424 | 1424 |
| 1425 bool LayerImpl::HasFilterAnimationThatInflatesBounds() const { | 1425 bool LayerImpl::HasFilterAnimationThatInflatesBounds() const { |
| 1426 if (!layer_animation_controller_) | 1426 if (!layer_animation_controller_) |
| 1427 return layer_tree_impl_->HasFilterAnimationThatInflatesBounds(this); | 1427 return layer_tree_impl_->HasFilterAnimationThatInflatesBounds(this); |
| 1428 | 1428 |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1771 void LayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { | 1771 void LayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { |
| 1772 benchmark->RunOnLayer(this); | 1772 benchmark->RunOnLayer(this); |
| 1773 } | 1773 } |
| 1774 | 1774 |
| 1775 int LayerImpl::NumDescendantsThatDrawContent() const { | 1775 int LayerImpl::NumDescendantsThatDrawContent() const { |
| 1776 return num_descendants_that_draw_content_; | 1776 return num_descendants_that_draw_content_; |
| 1777 } | 1777 } |
| 1778 | 1778 |
| 1779 void LayerImpl::NotifyAnimationFinished( | 1779 void LayerImpl::NotifyAnimationFinished( |
| 1780 base::TimeTicks monotonic_time, | 1780 base::TimeTicks monotonic_time, |
| 1781 Animation::TargetProperty target_property, | 1781 AnimationTargetProperty::Enum target_property, |
| 1782 int group) { | 1782 int group) { |
| 1783 if (target_property == Animation::SCROLL_OFFSET) | 1783 if (target_property == AnimationTargetProperty::SCROLL_OFFSET) |
| 1784 layer_tree_impl_->InputScrollAnimationFinished(); | 1784 layer_tree_impl_->InputScrollAnimationFinished(); |
| 1785 } | 1785 } |
| 1786 | 1786 |
| 1787 void LayerImpl::SetHasRenderSurface(bool should_have_render_surface) { | 1787 void LayerImpl::SetHasRenderSurface(bool should_have_render_surface) { |
| 1788 if (!!render_surface() == should_have_render_surface) | 1788 if (!!render_surface() == should_have_render_surface) |
| 1789 return; | 1789 return; |
| 1790 | 1790 |
| 1791 SetNeedsPushProperties(); | 1791 SetNeedsPushProperties(); |
| 1792 if (should_have_render_surface) { | 1792 if (should_have_render_surface) { |
| 1793 render_surface_ = make_scoped_ptr(new RenderSurfaceImpl(this)); | 1793 render_surface_ = make_scoped_ptr(new RenderSurfaceImpl(this)); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1872 .layer_transforms_should_scale_layer_contents) { | 1872 .layer_transforms_should_scale_layer_contents) { |
| 1873 return default_scale; | 1873 return default_scale; |
| 1874 } | 1874 } |
| 1875 | 1875 |
| 1876 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1876 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
| 1877 DrawTransform(), default_scale); | 1877 DrawTransform(), default_scale); |
| 1878 return std::max(transform_scales.x(), transform_scales.y()); | 1878 return std::max(transform_scales.x(), transform_scales.y()); |
| 1879 } | 1879 } |
| 1880 | 1880 |
| 1881 } // namespace cc | 1881 } // namespace cc |
| OLD | NEW |