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/layer_tree_host_impl.h" | 5 #include "cc/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
11 #include "cc/append_quads_data.h" | 11 #include "cc/append_quads_data.h" |
12 #include "cc/damage_tracker.h" | 12 #include "cc/damage_tracker.h" |
13 #include "cc/debug_rect_history.h" | 13 #include "cc/debug_rect_history.h" |
14 #include "cc/delay_based_time_source.h" | 14 #include "cc/delay_based_time_source.h" |
15 #include "cc/font_atlas.h" | 15 #include "cc/font_atlas.h" |
16 #include "cc/frame_rate_counter.h" | 16 #include "cc/frame_rate_counter.h" |
17 #include "cc/geometry.h" | |
18 #include "cc/gl_renderer.h" | 17 #include "cc/gl_renderer.h" |
19 #include "cc/heads_up_display_layer_impl.h" | 18 #include "cc/heads_up_display_layer_impl.h" |
20 #include "cc/layer_iterator.h" | 19 #include "cc/layer_iterator.h" |
21 #include "cc/layer_tree_host.h" | 20 #include "cc/layer_tree_host.h" |
22 #include "cc/layer_tree_host_common.h" | 21 #include "cc/layer_tree_host_common.h" |
23 #include "cc/math_util.h" | 22 #include "cc/math_util.h" |
24 #include "cc/overdraw_metrics.h" | 23 #include "cc/overdraw_metrics.h" |
25 #include "cc/page_scale_animation.h" | 24 #include "cc/page_scale_animation.h" |
26 #include "cc/prioritized_resource_manager.h" | 25 #include "cc/prioritized_resource_manager.h" |
27 #include "cc/render_pass_draw_quad.h" | 26 #include "cc/render_pass_draw_quad.h" |
(...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1009 // Pinch with pageScale scrolls entirely in layout space. contentSize | 1008 // Pinch with pageScale scrolls entirely in layout space. contentSize |
1010 // returns the bounds including the page scale factor, so calculate the | 1009 // returns the bounds including the page scale factor, so calculate the |
1011 // pre page-scale layout size here. | 1010 // pre page-scale layout size here. |
1012 float pageScaleFactor = m_pinchZoomViewport.pageScaleFactor(); | 1011 float pageScaleFactor = m_pinchZoomViewport.pageScaleFactor(); |
1013 contentBounds.set_width(contentBounds.width() / pageScaleFactor); | 1012 contentBounds.set_width(contentBounds.width() / pageScaleFactor); |
1014 contentBounds.set_height(contentBounds.height() / pageScaleFactor); | 1013 contentBounds.set_height(contentBounds.height() / pageScaleFactor); |
1015 } else { | 1014 } else { |
1016 viewBounds.Scale(1 / m_pinchZoomViewport.pageScaleDelta()); | 1015 viewBounds.Scale(1 / m_pinchZoomViewport.pageScaleDelta()); |
1017 } | 1016 } |
1018 | 1017 |
1019 gfx::Vector2dF maxScroll = BottomRight(gfx::Rect(contentBounds)) - BottomRig
ht(gfx::RectF(viewBounds)); | 1018 gfx::Vector2dF maxScroll = gfx::Rect(contentBounds).bottom_right() - gfx::Re
ctF(viewBounds).bottom_right(); |
1020 maxScroll.Scale(1 / m_deviceScaleFactor); | 1019 maxScroll.Scale(1 / m_deviceScaleFactor); |
1021 | 1020 |
1022 // The viewport may be larger than the contents in some cases, such as | 1021 // The viewport may be larger than the contents in some cases, such as |
1023 // having a vertical scrollbar but no horizontal overflow. | 1022 // having a vertical scrollbar but no horizontal overflow. |
1024 maxScroll.ClampToMin(gfx::Vector2dF()); | 1023 maxScroll.ClampToMin(gfx::Vector2dF()); |
1025 | 1024 |
1026 m_rootScrollLayerImpl->setMaxScrollOffset(gfx::ToFlooredVector2d(maxScroll))
; | 1025 m_rootScrollLayerImpl->setMaxScrollOffset(gfx::ToFlooredVector2d(maxScroll))
; |
1027 } | 1026 } |
1028 | 1027 |
1029 void LayerTreeHostImpl::setNeedsRedraw() | 1028 void LayerTreeHostImpl::setNeedsRedraw() |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1302 gfx::Vector2dF scrollBegin = m_rootScrollLayerImpl->scrollOffset() + m_rootS
crollLayerImpl->scrollDelta(); | 1301 gfx::Vector2dF scrollBegin = m_rootScrollLayerImpl->scrollOffset() + m_rootS
crollLayerImpl->scrollDelta(); |
1303 scrollBegin.Scale(m_pinchZoomViewport.pageScaleDelta()); | 1302 scrollBegin.Scale(m_pinchZoomViewport.pageScaleDelta()); |
1304 float scaleBegin = m_pinchZoomViewport.totalPageScaleFactor(); | 1303 float scaleBegin = m_pinchZoomViewport.totalPageScaleFactor(); |
1305 float pageScaleDeltaToSend = m_pinchZoomViewport.minPageScaleFactor() / m_pi
nchZoomViewport.pageScaleFactor(); | 1304 float pageScaleDeltaToSend = m_pinchZoomViewport.minPageScaleFactor() / m_pi
nchZoomViewport.pageScaleFactor(); |
1306 gfx::SizeF scaledContentsSize = gfx::ScaleSize(contentSize(), pageScaleDelta
ToSend); | 1305 gfx::SizeF scaledContentsSize = gfx::ScaleSize(contentSize(), pageScaleDelta
ToSend); |
1307 | 1306 |
1308 gfx::Vector2d anchorOffset = m_previousPinchAnchor.OffsetFromOrigin(); | 1307 gfx::Vector2d anchorOffset = m_previousPinchAnchor.OffsetFromOrigin(); |
1309 gfx::Vector2dF scrollEnd = scrollBegin + anchorOffset; | 1308 gfx::Vector2dF scrollEnd = scrollBegin + anchorOffset; |
1310 scrollEnd.Scale(m_pinchZoomViewport.minPageScaleFactor() / scaleBegin); | 1309 scrollEnd.Scale(m_pinchZoomViewport.minPageScaleFactor() / scaleBegin); |
1311 scrollEnd -= anchorOffset; | 1310 scrollEnd -= anchorOffset; |
1312 scrollEnd.ClampToMax(BottomRight(gfx::RectF(scaledContentsSize)) - BottomRig
ht(gfx::Rect(m_deviceViewportSize))); | 1311 scrollEnd.ClampToMax(gfx::RectF(scaledContentsSize).bottom_right() - gfx::Re
ct(m_deviceViewportSize).bottom_right()); |
1313 scrollEnd.ClampToMin(gfx::Vector2d()); | 1312 scrollEnd.ClampToMin(gfx::Vector2d()); |
1314 scrollEnd.Scale(1 / pageScaleDeltaToSend); | 1313 scrollEnd.Scale(1 / pageScaleDeltaToSend); |
1315 scrollEnd.Scale(m_deviceScaleFactor); | 1314 scrollEnd.Scale(m_deviceScaleFactor); |
1316 | 1315 |
1317 makeScrollAndScaleSet(scrollInfo, gfx::ToRoundedVector2d(scrollEnd), m_pinch
ZoomViewport.minPageScaleFactor()); | 1316 makeScrollAndScaleSet(scrollInfo, gfx::ToRoundedVector2d(scrollEnd), m_pinch
ZoomViewport.minPageScaleFactor()); |
1318 } | 1317 } |
1319 | 1318 |
1320 void LayerTreeHostImpl::makeScrollAndScaleSet(ScrollAndScaleSet* scrollInfo, gfx
::Vector2d scrollOffset, float pageScale) | 1319 void LayerTreeHostImpl::makeScrollAndScaleSet(ScrollAndScaleSet* scrollInfo, gfx
::Vector2d scrollOffset, float pageScale) |
1321 { | 1320 { |
1322 if (!m_rootScrollLayerImpl) | 1321 if (!m_rootScrollLayerImpl) |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1506 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); | 1505 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); |
1507 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); | 1506 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
1508 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1507 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
1509 m_client->setNeedsRedrawOnImplThread(); | 1508 m_client->setNeedsRedrawOnImplThread(); |
1510 | 1509 |
1511 for (size_t i = 0; i < layer->children().size(); ++i) | 1510 for (size_t i = 0; i < layer->children().size(); ++i) |
1512 animateScrollbarsRecursive(layer->children()[i], time); | 1511 animateScrollbarsRecursive(layer->children()[i], time); |
1513 } | 1512 } |
1514 | 1513 |
1515 } // namespace cc | 1514 } // namespace cc |
OLD | NEW |