| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/layer_tree_impl.h" | 5 #include "cc/trees/layer_tree_impl.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 target_tree->top_controls_delta_ = | 214 target_tree->top_controls_delta_ = |
| 215 target_tree->top_controls_delta_ - | 215 target_tree->top_controls_delta_ - |
| 216 target_tree->sent_top_controls_delta_; | 216 target_tree->sent_top_controls_delta_; |
| 217 target_tree->sent_top_controls_delta_ = 0.f; | 217 target_tree->sent_top_controls_delta_ = 0.f; |
| 218 | 218 |
| 219 target_tree->SetPageScaleValues( | 219 target_tree->SetPageScaleValues( |
| 220 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor(), | 220 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor(), |
| 221 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); | 221 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); |
| 222 target_tree->set_sent_page_scale_delta(1); | 222 target_tree->set_sent_page_scale_delta(1); |
| 223 | 223 |
| 224 target_tree->page_scale_animation_ = page_scale_animation_.Pass(); | 224 target_tree->pending_page_scale_animation_ = |
| 225 pending_page_scale_animation_.Pass(); |
| 225 | 226 |
| 226 if (page_scale_layer_ && inner_viewport_scroll_layer_) { | 227 if (page_scale_layer_ && inner_viewport_scroll_layer_) { |
| 227 target_tree->SetViewportLayersFromIds( | 228 target_tree->SetViewportLayersFromIds( |
| 228 page_scale_layer_->id(), | 229 overscroll_elasticity_layer_ ? overscroll_elasticity_layer_->id() |
| 229 inner_viewport_scroll_layer_->id(), | 230 : Layer::INVALID_ID, |
| 231 page_scale_layer_->id(), inner_viewport_scroll_layer_->id(), |
| 230 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() | 232 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() |
| 231 : Layer::INVALID_ID); | 233 : Layer::INVALID_ID); |
| 232 } else { | 234 } else { |
| 233 target_tree->ClearViewportLayers(); | 235 target_tree->ClearViewportLayers(); |
| 234 } | 236 } |
| 235 | 237 |
| 236 target_tree->RegisterSelection(selection_start_, selection_end_); | 238 target_tree->RegisterSelection(selection_start_, selection_end_); |
| 237 | 239 |
| 238 // This should match the property synchronization in | 240 // This should match the property synchronization in |
| 239 // LayerTreeHost::finishCommitOnImplThread(). | 241 // LayerTreeHost::finishCommitOnImplThread(). |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 void LayerTreeImpl::ApplyScrollDeltasSinceBeginMainFrame() { | 420 void LayerTreeImpl::ApplyScrollDeltasSinceBeginMainFrame() { |
| 419 DCHECK(IsPendingTree()); | 421 DCHECK(IsPendingTree()); |
| 420 if (!root_layer()) | 422 if (!root_layer()) |
| 421 return; | 423 return; |
| 422 | 424 |
| 423 LayerTreeHostCommon::CallFunctionForSubtree( | 425 LayerTreeHostCommon::CallFunctionForSubtree( |
| 424 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginMainFrameTo)); | 426 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginMainFrameTo)); |
| 425 } | 427 } |
| 426 | 428 |
| 427 void LayerTreeImpl::SetViewportLayersFromIds( | 429 void LayerTreeImpl::SetViewportLayersFromIds( |
| 430 int overscroll_elasticity_layer_id, |
| 428 int page_scale_layer_id, | 431 int page_scale_layer_id, |
| 429 int inner_viewport_scroll_layer_id, | 432 int inner_viewport_scroll_layer_id, |
| 430 int outer_viewport_scroll_layer_id) { | 433 int outer_viewport_scroll_layer_id) { |
| 434 overscroll_elasticity_layer_ = LayerById(overscroll_elasticity_layer_id); |
| 431 page_scale_layer_ = LayerById(page_scale_layer_id); | 435 page_scale_layer_ = LayerById(page_scale_layer_id); |
| 432 DCHECK(page_scale_layer_); | 436 DCHECK(page_scale_layer_); |
| 433 | 437 |
| 434 inner_viewport_scroll_layer_ = | 438 inner_viewport_scroll_layer_ = |
| 435 LayerById(inner_viewport_scroll_layer_id); | 439 LayerById(inner_viewport_scroll_layer_id); |
| 436 DCHECK(inner_viewport_scroll_layer_); | 440 DCHECK(inner_viewport_scroll_layer_); |
| 437 | 441 |
| 438 outer_viewport_scroll_layer_ = | 442 outer_viewport_scroll_layer_ = |
| 439 LayerById(outer_viewport_scroll_layer_id); | 443 LayerById(outer_viewport_scroll_layer_id); |
| 440 DCHECK(outer_viewport_scroll_layer_ || | 444 DCHECK(outer_viewport_scroll_layer_ || |
| (...skipping 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 } | 1477 } |
| 1474 | 1478 |
| 1475 bool LayerTreeImpl::SmoothnessTakesPriority() const { | 1479 bool LayerTreeImpl::SmoothnessTakesPriority() const { |
| 1476 return layer_tree_host_impl_->GetTreePriority() == SMOOTHNESS_TAKES_PRIORITY; | 1480 return layer_tree_host_impl_->GetTreePriority() == SMOOTHNESS_TAKES_PRIORITY; |
| 1477 } | 1481 } |
| 1478 | 1482 |
| 1479 BlockingTaskRunner* LayerTreeImpl::BlockingMainThreadTaskRunner() const { | 1483 BlockingTaskRunner* LayerTreeImpl::BlockingMainThreadTaskRunner() const { |
| 1480 return proxy()->blocking_main_thread_task_runner(); | 1484 return proxy()->blocking_main_thread_task_runner(); |
| 1481 } | 1485 } |
| 1482 | 1486 |
| 1483 void LayerTreeImpl::SetPageScaleAnimation( | 1487 void LayerTreeImpl::SetPendingPageScaleAnimation( |
| 1484 const gfx::Vector2d& target_offset, | 1488 scoped_ptr<PendingPageScaleAnimation> pending_animation) { |
| 1485 bool anchor_point, | 1489 pending_page_scale_animation_ = pending_animation.Pass(); |
| 1486 float page_scale, | |
| 1487 base::TimeDelta duration) { | |
| 1488 if (!InnerViewportScrollLayer()) | |
| 1489 return; | |
| 1490 | |
| 1491 gfx::ScrollOffset scroll_total = TotalScrollOffset(); | |
| 1492 gfx::SizeF scaled_scrollable_size = ScrollableSize(); | |
| 1493 gfx::SizeF viewport_size = InnerViewportContainerLayer()->bounds(); | |
| 1494 | |
| 1495 // Easing constants experimentally determined. | |
| 1496 scoped_ptr<TimingFunction> timing_function = | |
| 1497 CubicBezierTimingFunction::Create(.8, 0, .3, .9); | |
| 1498 | |
| 1499 // TODO(miletus) : Pass in ScrollOffset. | |
| 1500 page_scale_animation_ = | |
| 1501 PageScaleAnimation::Create(ScrollOffsetToVector2dF(scroll_total), | |
| 1502 total_page_scale_factor(), | |
| 1503 viewport_size, | |
| 1504 scaled_scrollable_size, | |
| 1505 timing_function.Pass()); | |
| 1506 | |
| 1507 if (anchor_point) { | |
| 1508 gfx::Vector2dF anchor(target_offset); | |
| 1509 page_scale_animation_->ZoomWithAnchor(anchor, | |
| 1510 page_scale, | |
| 1511 duration.InSecondsF()); | |
| 1512 } else { | |
| 1513 gfx::Vector2dF scaled_target_offset = target_offset; | |
| 1514 page_scale_animation_->ZoomTo(scaled_target_offset, | |
| 1515 page_scale, | |
| 1516 duration.InSecondsF()); | |
| 1517 } | |
| 1518 } | 1490 } |
| 1519 | 1491 |
| 1520 scoped_ptr<PageScaleAnimation> LayerTreeImpl::TakePageScaleAnimation() { | 1492 scoped_ptr<PendingPageScaleAnimation> |
| 1521 return page_scale_animation_.Pass(); | 1493 LayerTreeImpl::TakePendingPageScaleAnimation() { |
| 1494 return pending_page_scale_animation_.Pass(); |
| 1522 } | 1495 } |
| 1523 | 1496 |
| 1524 } // namespace cc | 1497 } // namespace cc |
| OLD | NEW |