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 |