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_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 2935 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2946 scroll_info->top_controls_delta = active_tree()->top_controls_delta(); | 2946 scroll_info->top_controls_delta = active_tree()->top_controls_delta(); |
2947 active_tree_->set_sent_top_controls_delta(scroll_info->top_controls_delta); | 2947 active_tree_->set_sent_top_controls_delta(scroll_info->top_controls_delta); |
2948 | 2948 |
2949 return scroll_info.Pass(); | 2949 return scroll_info.Pass(); |
2950 } | 2950 } |
2951 | 2951 |
2952 void LayerTreeHostImpl::SetFullRootLayerDamage() { | 2952 void LayerTreeHostImpl::SetFullRootLayerDamage() { |
2953 SetViewportDamage(gfx::Rect(DrawViewportSize())); | 2953 SetViewportDamage(gfx::Rect(DrawViewportSize())); |
2954 } | 2954 } |
2955 | 2955 |
| 2956 void LayerTreeHostImpl::ScrollViewportInnerFirst(gfx::Vector2dF scroll_delta) { |
| 2957 DCHECK(InnerViewportScrollLayer()); |
| 2958 LayerImpl* scroll_layer = InnerViewportScrollLayer(); |
| 2959 |
| 2960 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); |
| 2961 if (!unused_delta.IsZero() && OuterViewportScrollLayer()) |
| 2962 OuterViewportScrollLayer()->ScrollBy(unused_delta); |
| 2963 } |
| 2964 |
2956 void LayerTreeHostImpl::ScrollViewportBy(gfx::Vector2dF scroll_delta) { | 2965 void LayerTreeHostImpl::ScrollViewportBy(gfx::Vector2dF scroll_delta) { |
2957 DCHECK(InnerViewportScrollLayer()); | 2966 DCHECK(InnerViewportScrollLayer()); |
2958 LayerImpl* scroll_layer = OuterViewportScrollLayer() | 2967 LayerImpl* scroll_layer = OuterViewportScrollLayer() |
2959 ? OuterViewportScrollLayer() | 2968 ? OuterViewportScrollLayer() |
2960 : InnerViewportScrollLayer(); | 2969 : InnerViewportScrollLayer(); |
2961 | 2970 |
2962 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); | 2971 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); |
2963 | 2972 |
2964 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer())) | 2973 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer())) |
2965 InnerViewportScrollLayer()->ScrollBy(unused_delta); | 2974 InnerViewportScrollLayer()->ScrollBy(unused_delta); |
2966 } | 2975 } |
2967 | 2976 |
2968 void LayerTreeHostImpl::AnimatePageScale(base::TimeTicks monotonic_time) { | 2977 void LayerTreeHostImpl::AnimatePageScale(base::TimeTicks monotonic_time) { |
2969 if (!page_scale_animation_) | 2978 if (!page_scale_animation_) |
2970 return; | 2979 return; |
2971 | 2980 |
2972 gfx::Vector2dF scroll_total = active_tree_->TotalScrollOffset(); | 2981 gfx::Vector2dF scroll_total = active_tree_->TotalScrollOffset(); |
2973 | 2982 |
2974 if (!page_scale_animation_->IsAnimationStarted()) | 2983 if (!page_scale_animation_->IsAnimationStarted()) |
2975 page_scale_animation_->StartAnimation(monotonic_time); | 2984 page_scale_animation_->StartAnimation(monotonic_time); |
2976 | 2985 |
2977 active_tree_->SetPageScaleDelta( | 2986 active_tree_->SetPageScaleDelta( |
2978 page_scale_animation_->PageScaleFactorAtTime(monotonic_time) / | 2987 page_scale_animation_->PageScaleFactorAtTime(monotonic_time) / |
2979 active_tree_->page_scale_factor()); | 2988 active_tree_->page_scale_factor()); |
2980 gfx::Vector2dF next_scroll = | 2989 gfx::Vector2dF next_scroll = |
2981 page_scale_animation_->ScrollOffsetAtTime(monotonic_time); | 2990 page_scale_animation_->ScrollOffsetAtTime(monotonic_time); |
2982 | 2991 |
2983 ScrollViewportBy(next_scroll - scroll_total); | 2992 ScrollViewportInnerFirst(next_scroll - scroll_total); |
2984 SetNeedsRedraw(); | 2993 SetNeedsRedraw(); |
2985 | 2994 |
2986 if (page_scale_animation_->IsAnimationCompleteAtTime(monotonic_time)) { | 2995 if (page_scale_animation_->IsAnimationCompleteAtTime(monotonic_time)) { |
2987 page_scale_animation_.reset(); | 2996 page_scale_animation_.reset(); |
2988 client_->SetNeedsCommitOnImplThread(); | 2997 client_->SetNeedsCommitOnImplThread(); |
2989 client_->RenewTreePriority(); | 2998 client_->RenewTreePriority(); |
2990 } else { | 2999 } else { |
2991 SetNeedsAnimate(); | 3000 SetNeedsAnimate(); |
2992 } | 3001 } |
2993 } | 3002 } |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3383 } | 3392 } |
3384 | 3393 |
3385 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { | 3394 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { |
3386 std::vector<PictureLayerImpl*>::iterator it = | 3395 std::vector<PictureLayerImpl*>::iterator it = |
3387 std::find(picture_layers_.begin(), picture_layers_.end(), layer); | 3396 std::find(picture_layers_.begin(), picture_layers_.end(), layer); |
3388 DCHECK(it != picture_layers_.end()); | 3397 DCHECK(it != picture_layers_.end()); |
3389 picture_layers_.erase(it); | 3398 picture_layers_.erase(it); |
3390 } | 3399 } |
3391 | 3400 |
3392 } // namespace cc | 3401 } // namespace cc |
OLD | NEW |