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 page_scale_layer_->id(), |
229 inner_viewport_scroll_layer_->id(), | 230 inner_viewport_scroll_layer_->id(), |
230 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() | 231 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() |
231 : Layer::INVALID_ID); | 232 : Layer::INVALID_ID); |
232 } else { | 233 } else { |
233 target_tree->ClearViewportLayers(); | 234 target_tree->ClearViewportLayers(); |
234 } | 235 } |
(...skipping 1238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1473 } | 1474 } |
1474 | 1475 |
1475 bool LayerTreeImpl::SmoothnessTakesPriority() const { | 1476 bool LayerTreeImpl::SmoothnessTakesPriority() const { |
1476 return layer_tree_host_impl_->GetTreePriority() == SMOOTHNESS_TAKES_PRIORITY; | 1477 return layer_tree_host_impl_->GetTreePriority() == SMOOTHNESS_TAKES_PRIORITY; |
1477 } | 1478 } |
1478 | 1479 |
1479 BlockingTaskRunner* LayerTreeImpl::BlockingMainThreadTaskRunner() const { | 1480 BlockingTaskRunner* LayerTreeImpl::BlockingMainThreadTaskRunner() const { |
1480 return proxy()->blocking_main_thread_task_runner(); | 1481 return proxy()->blocking_main_thread_task_runner(); |
1481 } | 1482 } |
1482 | 1483 |
1483 void LayerTreeImpl::SetPageScaleAnimation( | 1484 void LayerTreeImpl::SetPendingPageScaleAnimation( |
1484 const gfx::Vector2d& target_offset, | 1485 scoped_ptr<PendingPageScaleAnimation> pending_animation) { |
1485 bool anchor_point, | 1486 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 } | 1487 } |
1519 | 1488 |
1520 scoped_ptr<PageScaleAnimation> LayerTreeImpl::TakePageScaleAnimation() { | 1489 scoped_ptr<PendingPageScaleAnimation> |
1521 return page_scale_animation_.Pass(); | 1490 LayerTreeImpl::TakePendingPageScaleAnimation() { |
| 1491 return pending_page_scale_animation_.Pass(); |
1522 } | 1492 } |
1523 | 1493 |
1524 } // namespace cc | 1494 } // namespace cc |
OLD | NEW |