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 2051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2062 UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", false); | 2062 UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", false); |
2063 return ScrollStarted; | 2063 return ScrollStarted; |
2064 } | 2064 } |
2065 return ScrollIgnored; | 2065 return ScrollIgnored; |
2066 } | 2066 } |
2067 | 2067 |
2068 gfx::Vector2dF LayerTreeHostImpl::ScrollLayerWithViewportSpaceDelta( | 2068 gfx::Vector2dF LayerTreeHostImpl::ScrollLayerWithViewportSpaceDelta( |
2069 LayerImpl* layer_impl, | 2069 LayerImpl* layer_impl, |
2070 float scale_from_viewport_to_screen_space, | 2070 float scale_from_viewport_to_screen_space, |
2071 const gfx::PointF& viewport_point, | 2071 const gfx::PointF& viewport_point, |
2072 gfx::Vector2dF viewport_delta) { | 2072 const gfx::Vector2dF& viewport_delta) { |
2073 // Layers with non-invertible screen space transforms should not have passed | 2073 // Layers with non-invertible screen space transforms should not have passed |
2074 // the scroll hit test in the first place. | 2074 // the scroll hit test in the first place. |
2075 DCHECK(layer_impl->screen_space_transform().IsInvertible()); | 2075 DCHECK(layer_impl->screen_space_transform().IsInvertible()); |
2076 gfx::Transform inverse_screen_space_transform( | 2076 gfx::Transform inverse_screen_space_transform( |
2077 gfx::Transform::kSkipInitialization); | 2077 gfx::Transform::kSkipInitialization); |
2078 bool did_invert = layer_impl->screen_space_transform().GetInverse( | 2078 bool did_invert = layer_impl->screen_space_transform().GetInverse( |
2079 &inverse_screen_space_transform); | 2079 &inverse_screen_space_transform); |
2080 // TODO(shawnsingh): With the advent of impl-side crolling for non-root | 2080 // TODO(shawnsingh): With the advent of impl-side crolling for non-root |
2081 // layers, we may need to explicitly handle uninvertible transforms here. | 2081 // layers, we may need to explicitly handle uninvertible transforms here. |
2082 DCHECK(did_invert); | 2082 DCHECK(did_invert); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2135 DCHECK(!end_clipped); | 2135 DCHECK(!end_clipped); |
2136 if (end_clipped) | 2136 if (end_clipped) |
2137 return gfx::Vector2dF(); | 2137 return gfx::Vector2dF(); |
2138 gfx::PointF actual_viewport_end_point = | 2138 gfx::PointF actual_viewport_end_point = |
2139 gfx::ScalePoint(actual_screen_space_end_point, | 2139 gfx::ScalePoint(actual_screen_space_end_point, |
2140 1.f / scale_from_viewport_to_screen_space); | 2140 1.f / scale_from_viewport_to_screen_space); |
2141 return actual_viewport_end_point - viewport_point; | 2141 return actual_viewport_end_point - viewport_point; |
2142 } | 2142 } |
2143 | 2143 |
2144 static gfx::Vector2dF ScrollLayerWithLocalDelta(LayerImpl* layer_impl, | 2144 static gfx::Vector2dF ScrollLayerWithLocalDelta(LayerImpl* layer_impl, |
2145 gfx::Vector2dF local_delta) { | 2145 const gfx::Vector2dF& local_delta) { |
2146 gfx::Vector2dF previous_delta(layer_impl->ScrollDelta()); | 2146 gfx::Vector2dF previous_delta(layer_impl->ScrollDelta()); |
2147 layer_impl->ScrollBy(local_delta); | 2147 layer_impl->ScrollBy(local_delta); |
2148 return layer_impl->ScrollDelta() - previous_delta; | 2148 return layer_impl->ScrollDelta() - previous_delta; |
2149 } | 2149 } |
2150 | 2150 |
2151 bool LayerTreeHostImpl::ScrollBy(gfx::Point viewport_point, | 2151 bool LayerTreeHostImpl::ScrollBy(gfx::Point viewport_point, |
2152 gfx::Vector2dF scroll_delta) { | 2152 const gfx::Vector2dF& scroll_delta) { |
2153 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBy"); | 2153 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBy"); |
2154 if (!CurrentlyScrollingLayer()) | 2154 if (!CurrentlyScrollingLayer()) |
2155 return false; | 2155 return false; |
2156 | 2156 |
2157 gfx::Vector2dF pending_delta = scroll_delta; | 2157 gfx::Vector2dF pending_delta = scroll_delta; |
2158 gfx::Vector2dF unused_root_delta; | 2158 gfx::Vector2dF unused_root_delta; |
2159 bool did_scroll_x = false; | 2159 bool did_scroll_x = false; |
2160 bool did_scroll_y = false; | 2160 bool did_scroll_y = false; |
2161 bool consume_by_top_controls = top_controls_manager_ && | 2161 bool consume_by_top_controls = top_controls_manager_ && |
2162 (scroll_delta.y() < 0 || | 2162 (scroll_delta.y() < 0 || |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2343 if (!wheel_scrolling_) { | 2343 if (!wheel_scrolling_) { |
2344 // Allow the fling to lock to the first layer that moves after the initial | 2344 // Allow the fling to lock to the first layer that moves after the initial |
2345 // fling |ScrollBy()| event. | 2345 // fling |ScrollBy()| event. |
2346 did_lock_scrolling_layer_ = false; | 2346 did_lock_scrolling_layer_ = false; |
2347 should_bubble_scrolls_ = false; | 2347 should_bubble_scrolls_ = false; |
2348 } | 2348 } |
2349 | 2349 |
2350 return ScrollStarted; | 2350 return ScrollStarted; |
2351 } | 2351 } |
2352 | 2352 |
2353 void LayerTreeHostImpl::NotifyCurrentFlingVelocity(gfx::Vector2dF velocity) { | 2353 void LayerTreeHostImpl::NotifyCurrentFlingVelocity( |
| 2354 const gfx::Vector2dF& velocity) { |
2354 current_fling_velocity_ = velocity; | 2355 current_fling_velocity_ = velocity; |
2355 } | 2356 } |
2356 | 2357 |
2357 float LayerTreeHostImpl::DeviceSpaceDistanceToLayer( | 2358 float LayerTreeHostImpl::DeviceSpaceDistanceToLayer( |
2358 const gfx::PointF& device_viewport_point, | 2359 const gfx::PointF& device_viewport_point, |
2359 LayerImpl* layer_impl) { | 2360 LayerImpl* layer_impl) { |
2360 if (!layer_impl) | 2361 if (!layer_impl) |
2361 return std::numeric_limits<float>::max(); | 2362 return std::numeric_limits<float>::max(); |
2362 | 2363 |
2363 gfx::Rect layer_impl_bounds( | 2364 gfx::Rect layer_impl_bounds( |
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2921 swap_promise_monitor_.erase(monitor); | 2922 swap_promise_monitor_.erase(monitor); |
2922 } | 2923 } |
2923 | 2924 |
2924 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 2925 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
2925 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 2926 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
2926 for (; it != swap_promise_monitor_.end(); it++) | 2927 for (; it != swap_promise_monitor_.end(); it++) |
2927 (*it)->OnSetNeedsRedrawOnImpl(); | 2928 (*it)->OnSetNeedsRedrawOnImpl(); |
2928 } | 2929 } |
2929 | 2930 |
2930 } // namespace cc | 2931 } // namespace cc |
OLD | NEW |