| 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 <algorithm> | 10 #include <algorithm> |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 return transform_tree.Node(transform_tree_index()) | 375 return transform_tree.Node(transform_tree_index()) |
| 376 ->in_subtree_of_page_scale_layer; | 376 ->in_subtree_of_page_scale_layer; |
| 377 } | 377 } |
| 378 | 378 |
| 379 gfx::Vector2dF LayerImpl::FixedContainerSizeDelta() const { | 379 gfx::Vector2dF LayerImpl::FixedContainerSizeDelta() const { |
| 380 LayerImpl* scroll_clip_layer = | 380 LayerImpl* scroll_clip_layer = |
| 381 layer_tree_impl()->LayerById(scroll_clip_layer_id_); | 381 layer_tree_impl()->LayerById(scroll_clip_layer_id_); |
| 382 if (!scroll_clip_layer) | 382 if (!scroll_clip_layer) |
| 383 return gfx::Vector2dF(); | 383 return gfx::Vector2dF(); |
| 384 | 384 |
| 385 return scroll_clip_layer->bounds_delta(); | 385 return scroll_clip_layer->ViewportBoundsDelta(); |
| 386 } | 386 } |
| 387 | 387 |
| 388 std::unique_ptr<base::DictionaryValue> LayerImpl::LayerTreeAsJson() { | 388 std::unique_ptr<base::DictionaryValue> LayerImpl::LayerTreeAsJson() { |
| 389 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue); | 389 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue); |
| 390 result->SetInteger("LayerId", id()); | 390 result->SetInteger("LayerId", id()); |
| 391 result->SetString("LayerType", LayerTypeAsString()); | 391 result->SetString("LayerType", LayerTypeAsString()); |
| 392 | 392 |
| 393 auto list = base::MakeUnique<base::ListValue>(); | 393 auto list = base::MakeUnique<base::ListValue>(); |
| 394 list->AppendInteger(bounds().width()); | 394 list->AppendInteger(bounds().width()); |
| 395 list->AppendInteger(bounds().height()); | 395 list->AppendInteger(bounds().height()); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 | 497 |
| 498 gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const { | 498 gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const { |
| 499 return CurrentScrollOffset(); | 499 return CurrentScrollOffset(); |
| 500 } | 500 } |
| 501 | 501 |
| 502 bool LayerImpl::IsActive() const { | 502 bool LayerImpl::IsActive() const { |
| 503 return layer_tree_impl_->IsActiveTree(); | 503 return layer_tree_impl_->IsActiveTree(); |
| 504 } | 504 } |
| 505 | 505 |
| 506 gfx::Size LayerImpl::bounds() const { | 506 gfx::Size LayerImpl::bounds() const { |
| 507 gfx::Vector2d delta = gfx::ToCeiledVector2d(bounds_delta_); | 507 auto viewport_bounds_delta = gfx::ToCeiledVector2d(ViewportBoundsDelta()); |
| 508 return gfx::Size(bounds_.width() + delta.x(), | 508 return gfx::Size(bounds_.width() + viewport_bounds_delta.x(), |
| 509 bounds_.height() + delta.y()); | 509 bounds_.height() + viewport_bounds_delta.y()); |
| 510 } | 510 } |
| 511 | 511 |
| 512 gfx::SizeF LayerImpl::BoundsForScrolling() const { | 512 gfx::SizeF LayerImpl::BoundsForScrolling() const { |
| 513 return gfx::SizeF(bounds_.width() + bounds_delta_.x(), | 513 auto viewport_bounds_delta = ViewportBoundsDelta(); |
| 514 bounds_.height() + bounds_delta_.y()); | 514 return gfx::SizeF(bounds_.width() + viewport_bounds_delta.x(), |
| 515 bounds_.height() + viewport_bounds_delta.y()); |
| 515 } | 516 } |
| 516 | 517 |
| 517 void LayerImpl::SetBounds(const gfx::Size& bounds) { | 518 void LayerImpl::SetBounds(const gfx::Size& bounds) { |
| 518 if (bounds_ == bounds) | 519 if (bounds_ == bounds) |
| 519 return; | 520 return; |
| 520 | 521 |
| 521 bounds_ = bounds; | 522 bounds_ = bounds; |
| 522 | 523 |
| 523 layer_tree_impl()->DidUpdateScrollState(id()); | 524 layer_tree_impl()->DidUpdateScrollState(id()); |
| 524 | 525 |
| 525 NoteLayerPropertyChanged(); | 526 NoteLayerPropertyChanged(); |
| 526 } | 527 } |
| 527 | 528 |
| 528 void LayerImpl::SetBoundsDelta(const gfx::Vector2dF& bounds_delta) { | 529 void LayerImpl::SetViewportBoundsDelta(const gfx::Vector2dF& bounds_delta) { |
| 529 DCHECK(IsActive()); | 530 DCHECK(IsActive()); |
| 530 if (bounds_delta_ == bounds_delta) | 531 |
| 532 if (bounds_delta == ViewportBoundsDelta()) |
| 531 return; | 533 return; |
| 532 | 534 |
| 533 bounds_delta_ = bounds_delta; | |
| 534 | |
| 535 PropertyTrees* property_trees = GetPropertyTrees(); | 535 PropertyTrees* property_trees = GetPropertyTrees(); |
| 536 if (this == layer_tree_impl()->InnerViewportContainerLayer()) | 536 if (this == layer_tree_impl()->InnerViewportContainerLayer()) |
| 537 property_trees->SetInnerViewportContainerBoundsDelta(bounds_delta); | 537 property_trees->SetInnerViewportContainerBoundsDelta(bounds_delta); |
| 538 else if (this == layer_tree_impl()->OuterViewportContainerLayer()) | 538 else if (this == layer_tree_impl()->OuterViewportContainerLayer()) |
| 539 property_trees->SetOuterViewportContainerBoundsDelta(bounds_delta); | 539 property_trees->SetOuterViewportContainerBoundsDelta(bounds_delta); |
| 540 else if (this == layer_tree_impl()->InnerViewportScrollLayer()) | 540 else if (this == layer_tree_impl()->InnerViewportScrollLayer()) |
| 541 property_trees->SetInnerViewportScrollBoundsDelta(bounds_delta); | 541 property_trees->SetInnerViewportScrollBoundsDelta(bounds_delta); |
| 542 else |
| 543 NOTREACHED(); |
| 542 | 544 |
| 543 layer_tree_impl()->DidUpdateScrollState(id()); | 545 layer_tree_impl()->DidUpdateScrollState(id()); |
| 544 | 546 |
| 545 if (masks_to_bounds()) { | 547 if (masks_to_bounds()) { |
| 546 // If layer is clipping, then update the clip node using the new bounds. | 548 // If layer is clipping, then update the clip node using the new bounds. |
| 547 if (ClipNode* clip_node = | 549 if (ClipNode* clip_node = |
| 548 property_trees->clip_tree.UpdateNodeFromOwningLayerId(id())) { | 550 property_trees->clip_tree.UpdateNodeFromOwningLayerId(id())) { |
| 549 DCHECK_EQ(clip_node->id, clip_tree_index()); | 551 DCHECK_EQ(clip_node->id, clip_tree_index()); |
| 550 clip_node->clip = gfx::RectF(gfx::PointF() + offset_to_transform_parent(), | 552 clip_node->clip = gfx::RectF(gfx::PointF() + offset_to_transform_parent(), |
| 551 gfx::SizeF(bounds())); | 553 gfx::SizeF(bounds())); |
| 552 property_trees->clip_tree.set_needs_update(true); | 554 property_trees->clip_tree.set_needs_update(true); |
| 553 } | 555 } |
| 554 property_trees->full_tree_damaged = true; | 556 property_trees->full_tree_damaged = true; |
| 555 layer_tree_impl()->set_needs_update_draw_properties(); | 557 layer_tree_impl()->set_needs_update_draw_properties(); |
| 556 } else { | 558 } else { |
| 557 NoteLayerPropertyChanged(); | 559 NoteLayerPropertyChanged(); |
| 558 } | 560 } |
| 559 } | 561 } |
| 560 | 562 |
| 563 gfx::Vector2dF LayerImpl::ViewportBoundsDelta() const { |
| 564 if (this == layer_tree_impl()->InnerViewportContainerLayer()) |
| 565 return GetPropertyTrees()->inner_viewport_container_bounds_delta(); |
| 566 else if (this == layer_tree_impl()->OuterViewportContainerLayer()) |
| 567 return GetPropertyTrees()->outer_viewport_container_bounds_delta(); |
| 568 else if (this == layer_tree_impl()->InnerViewportScrollLayer()) |
| 569 return GetPropertyTrees()->inner_viewport_scroll_bounds_delta(); |
| 570 return gfx::Vector2dF(); |
| 571 } |
| 572 |
| 561 ScrollbarLayerImplBase* LayerImpl::ToScrollbarLayer() { | 573 ScrollbarLayerImplBase* LayerImpl::ToScrollbarLayer() { |
| 562 return nullptr; | 574 return nullptr; |
| 563 } | 575 } |
| 564 | 576 |
| 565 void LayerImpl::SetDrawsContent(bool draws_content) { | 577 void LayerImpl::SetDrawsContent(bool draws_content) { |
| 566 if (draws_content_ == draws_content) | 578 if (draws_content_ == draws_content) |
| 567 return; | 579 return; |
| 568 | 580 |
| 569 draws_content_ = draws_content; | 581 draws_content_ = draws_content; |
| 570 NoteLayerPropertyChanged(); | 582 NoteLayerPropertyChanged(); |
| (...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 976 | 988 |
| 977 ScrollTree& LayerImpl::GetScrollTree() const { | 989 ScrollTree& LayerImpl::GetScrollTree() const { |
| 978 return GetPropertyTrees()->scroll_tree; | 990 return GetPropertyTrees()->scroll_tree; |
| 979 } | 991 } |
| 980 | 992 |
| 981 TransformTree& LayerImpl::GetTransformTree() const { | 993 TransformTree& LayerImpl::GetTransformTree() const { |
| 982 return GetPropertyTrees()->transform_tree; | 994 return GetPropertyTrees()->transform_tree; |
| 983 } | 995 } |
| 984 | 996 |
| 985 } // namespace cc | 997 } // namespace cc |
| OLD | NEW |