Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: cc/layer_tree_host_impl.cc

Issue 12045002: Delete zoomed_viewport_offset_ and its users. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Bring back implPinch test and fix clip layer with root scroll offset 0 Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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"
(...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 747
748 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*) 748 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*)
749 { 749 {
750 m_client->onCanDrawStateChanged(canDraw()); 750 m_client->onCanDrawStateChanged(canDraw());
751 } 751 }
752 752
753 CompositorFrameMetadata LayerTreeHostImpl::makeCompositorFrameMetadata() const 753 CompositorFrameMetadata LayerTreeHostImpl::makeCompositorFrameMetadata() const
754 { 754 {
755 CompositorFrameMetadata metadata; 755 CompositorFrameMetadata metadata;
756 metadata.page_scale_factor = m_pinchZoomViewport.total_page_scale_factor(); 756 metadata.page_scale_factor = m_pinchZoomViewport.total_page_scale_factor();
757 metadata.viewport_size = m_pinchZoomViewport.ZoomedViewport().size(); 757 metadata.viewport_size = activeTree()->ScrollableViewportSize();
758 metadata.root_layer_size = activeTree()->ScrollableSize(); 758 metadata.root_layer_size = activeTree()->ScrollableSize();
759 metadata.min_page_scale_factor = m_pinchZoomViewport.min_page_scale_factor() ; 759 metadata.min_page_scale_factor = m_pinchZoomViewport.min_page_scale_factor() ;
760 metadata.max_page_scale_factor = m_pinchZoomViewport.max_page_scale_factor() ; 760 metadata.max_page_scale_factor = m_pinchZoomViewport.max_page_scale_factor() ;
761 if (m_topControlsManager) { 761 if (m_topControlsManager) {
762 metadata.location_bar_offset = gfx::Vector2dF(0.f, m_topControlsManager- >controls_top_offset()); 762 metadata.location_bar_offset = gfx::Vector2dF(0.f, m_topControlsManager- >controls_top_offset());
763 metadata.location_bar_content_translation = gfx::Vector2dF(0.f, m_topCon trolsManager->content_top_offset()); 763 metadata.location_bar_content_translation = gfx::Vector2dF(0.f, m_topCon trolsManager->content_top_offset());
764 } 764 }
765 765
766 if (!rootScrollLayer()) 766 if (!rootScrollLayer())
767 return metadata; 767 return metadata;
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 return; 1128 return;
1129 1129
1130 m_pinchZoomViewport.set_page_scale_delta(delta); 1130 m_pinchZoomViewport.set_page_scale_delta(delta);
1131 1131
1132 updateMaxScrollOffset(); 1132 updateMaxScrollOffset();
1133 activeTree()->set_needs_update_draw_properties(); 1133 activeTree()->set_needs_update_draw_properties();
1134 if (pendingTree()) 1134 if (pendingTree())
1135 pendingTree()->set_needs_update_draw_properties(); 1135 pendingTree()->set_needs_update_draw_properties();
1136 } 1136 }
1137 1137
1138 gfx::Vector2dF LayerTreeHostImpl::scrollPinchZoomViewport(gfx::Vector2dF delta)
1139 {
1140 gfx::Vector2dF overflow = m_pinchZoomViewport.ApplyScroll(delta);
1141 activeTree()->set_needs_update_draw_properties();
1142 if (pendingTree())
1143 pendingTree()->set_needs_update_draw_properties();
1144 return overflow;
1145 }
1146
1147 void LayerTreeHostImpl::updateMaxScrollOffset() 1138 void LayerTreeHostImpl::updateMaxScrollOffset()
1148 { 1139 {
1149 activeTree()->UpdateMaxScrollOffset(); 1140 activeTree()->UpdateMaxScrollOffset();
1150 } 1141 }
1151 1142
1152 void LayerTreeHostImpl::setActiveTreeNeedsUpdateDrawProperties() 1143 void LayerTreeHostImpl::setActiveTreeNeedsUpdateDrawProperties()
1153 { 1144 {
1154 activeTree()->set_needs_update_draw_properties(); 1145 activeTree()->set_needs_update_draw_properties();
1155 } 1146 }
1156 1147
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 return gfx::Vector2dF(); 1243 return gfx::Vector2dF();
1253 1244
1254 // localStartPoint and localEndPoint are in content space but we want to mov e them to layer space for scrolling. 1245 // localStartPoint and localEndPoint are in content space but we want to mov e them to layer space for scrolling.
1255 float widthScale = 1 / layerImpl->contentsScaleX(); 1246 float widthScale = 1 / layerImpl->contentsScaleX();
1256 float heightScale = 1 / layerImpl->contentsScaleY(); 1247 float heightScale = 1 / layerImpl->contentsScaleY();
1257 localStartPoint.Scale(widthScale, heightScale); 1248 localStartPoint.Scale(widthScale, heightScale);
1258 localEndPoint.Scale(widthScale, heightScale); 1249 localEndPoint.Scale(widthScale, heightScale);
1259 1250
1260 // Apply the scroll delta. 1251 // Apply the scroll delta.
1261 gfx::Vector2dF previousDelta = layerImpl->scrollDelta(); 1252 gfx::Vector2dF previousDelta = layerImpl->scrollDelta();
1262 gfx::Vector2dF unscrolled = layerImpl->scrollBy(localEndPoint - localStartPo int); 1253 layerImpl->scrollBy(localEndPoint - localStartPoint);
1263 gfx::Vector2dF scrollAmount = localEndPoint - localStartPoint;
1264
1265 gfx::Vector2dF viewportAppliedPan;
1266 if (m_settings.pageScalePinchZoomEnabled && layerImpl == rootScrollLayer())
1267 viewportAppliedPan = unscrolled - scrollPinchZoomViewport(unscrolled);
1268 1254
1269 // Get the end point in the layer's content space so we can apply its screen SpaceTransform. 1255 // Get the end point in the layer's content space so we can apply its screen SpaceTransform.
1270 gfx::PointF actualLocalEndPoint = localStartPoint + layerImpl->scrollDelta() + viewportAppliedPan - previousDelta; 1256 gfx::PointF actualLocalEndPoint = localStartPoint + layerImpl->scrollDelta() - previousDelta;
1271 gfx::PointF actualLocalContentEndPoint = gfx::ScalePoint(actualLocalEndPoint , 1 / widthScale, 1 / heightScale); 1257 gfx::PointF actualLocalContentEndPoint = gfx::ScalePoint(actualLocalEndPoint , 1 / widthScale, 1 / heightScale);
1272 1258
1273 // Calculate the applied scroll delta in viewport space coordinates. 1259 // Calculate the applied scroll delta in viewport space coordinates.
1274 gfx::PointF actualScreenSpaceEndPoint = MathUtil::mapPoint(layerImpl->screen SpaceTransform(), actualLocalContentEndPoint, endClipped); 1260 gfx::PointF actualScreenSpaceEndPoint = MathUtil::mapPoint(layerImpl->screen SpaceTransform(), actualLocalContentEndPoint, endClipped);
1275 DCHECK(!endClipped); 1261 DCHECK(!endClipped);
1276 if (endClipped) 1262 if (endClipped)
1277 return gfx::Vector2dF(); 1263 return gfx::Vector2dF();
1278 gfx::PointF actualViewportEndPoint = gfx::ScalePoint(actualScreenSpaceEndPoi nt, 1 / scaleFromViewportToScreenSpace); 1264 gfx::PointF actualViewportEndPoint = gfx::ScalePoint(actualScreenSpaceEndPoi nt, 1 / scaleFromViewportToScreenSpace);
1279 return actualViewportEndPoint - viewportPoint; 1265 return actualViewportEndPoint - viewportPoint;
1280 } 1266 }
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1376 gfx::PointF newScaleAnchor = gfx::ScalePoint(anchor, 1 / pageScaleDelta); 1362 gfx::PointF newScaleAnchor = gfx::ScalePoint(anchor, 1 / pageScaleDelta);
1377 gfx::Vector2dF move = previousScaleAnchor - newScaleAnchor; 1363 gfx::Vector2dF move = previousScaleAnchor - newScaleAnchor;
1378 1364
1379 m_previousPinchAnchor = anchor; 1365 m_previousPinchAnchor = anchor;
1380 1366
1381 if (m_settings.pageScalePinchZoomEnabled) { 1367 if (m_settings.pageScalePinchZoomEnabled) {
1382 // Compute the application of the delta with respect to the current page zoom of the page. 1368 // Compute the application of the delta with respect to the current page zoom of the page.
1383 move.Scale(1 / m_pinchZoomViewport.page_scale_factor()); 1369 move.Scale(1 / m_pinchZoomViewport.page_scale_factor());
1384 } 1370 }
1385 1371
1386 gfx::Vector2dF scrollOverflow = m_settings.pageScalePinchZoomEnabled ? scrol lPinchZoomViewport(move) : move; 1372 rootScrollLayer()->scrollBy(move);
1387 rootScrollLayer()->scrollBy(scrollOverflow);
1388 1373
1389 if (rootScrollLayer()->scrollbarAnimationController()) 1374 if (rootScrollLayer()->scrollbarAnimationController())
1390 rootScrollLayer()->scrollbarAnimationController()->didPinchGestureUpdate (base::TimeTicks::Now()); 1375 rootScrollLayer()->scrollbarAnimationController()->didPinchGestureUpdate (base::TimeTicks::Now());
1391 1376
1392 m_client->setNeedsCommitOnImplThread(); 1377 m_client->setNeedsCommitOnImplThread();
1393 m_client->setNeedsRedrawOnImplThread(); 1378 m_client->setNeedsRedrawOnImplThread();
1394 m_client->renewTreePriority(); 1379 m_client->renewTreePriority();
1395 } 1380 }
1396 1381
1397 void LayerTreeHostImpl::pinchGestureEnd() 1382 void LayerTreeHostImpl::pinchGestureEnd()
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 activeTree()->RootScrollLayer()->setSentScrollDelta(scroll.scrollDelta); 1441 activeTree()->RootScrollLayer()->setSentScrollDelta(scroll.scrollDelta);
1457 scrollInfo->pageScaleDelta = pageScale / m_pinchZoomViewport.page_scale_fact or(); 1442 scrollInfo->pageScaleDelta = pageScale / m_pinchZoomViewport.page_scale_fact or();
1458 m_pinchZoomViewport.set_sent_page_scale_delta(scrollInfo->pageScaleDelta); 1443 m_pinchZoomViewport.set_sent_page_scale_delta(scrollInfo->pageScaleDelta);
1459 } 1444 }
1460 1445
1461 static void collectScrollDeltas(ScrollAndScaleSet* scrollInfo, LayerImpl* layerI mpl) 1446 static void collectScrollDeltas(ScrollAndScaleSet* scrollInfo, LayerImpl* layerI mpl)
1462 { 1447 {
1463 if (!layerImpl) 1448 if (!layerImpl)
1464 return; 1449 return;
1465 1450
1466 if (!layerImpl->scrollDelta().IsZero()) { 1451 gfx::Vector2d scrollDelta = gfx::ToFlooredVector2d(layerImpl->scrollDelta()) ;
1467 gfx::Vector2d scrollDelta = gfx::ToFlooredVector2d(layerImpl->scrollDelt a()); 1452 if (!scrollDelta.IsZero()) {
1468 LayerTreeHostCommon::ScrollUpdateInfo scroll; 1453 LayerTreeHostCommon::ScrollUpdateInfo scroll;
1469 scroll.layerId = layerImpl->id(); 1454 scroll.layerId = layerImpl->id();
1470 scroll.scrollDelta = scrollDelta; 1455 scroll.scrollDelta = scrollDelta;
1471 scrollInfo->scrolls.push_back(scroll); 1456 scrollInfo->scrolls.push_back(scroll);
1472 layerImpl->setSentScrollDelta(scrollDelta); 1457 layerImpl->setSentScrollDelta(scrollDelta);
1473 } 1458 }
1474 1459
1475 for (size_t i = 0; i < layerImpl->children().size(); ++i) 1460 for (size_t i = 0; i < layerImpl->children().size(); ++i)
1476 collectScrollDeltas(scrollInfo, layerImpl->children()[i]); 1461 collectScrollDeltas(scrollInfo, layerImpl->children()[i]);
1477 } 1462 }
1478 1463
1479 scoped_ptr<ScrollAndScaleSet> LayerTreeHostImpl::processScrollDeltas() 1464 scoped_ptr<ScrollAndScaleSet> LayerTreeHostImpl::processScrollDeltas()
1480 { 1465 {
1481 scoped_ptr<ScrollAndScaleSet> scrollInfo(new ScrollAndScaleSet()); 1466 scoped_ptr<ScrollAndScaleSet> scrollInfo(new ScrollAndScaleSet());
1482 1467
1483 if (m_pinchGestureActive || m_pageScaleAnimation) { 1468 if (!m_settings.pageScalePinchZoomEnabled && (m_pinchGestureActive || m_page ScaleAnimation)) {
1484 scrollInfo->pageScaleDelta = 1; 1469 scrollInfo->pageScaleDelta = 1;
1485 m_pinchZoomViewport.set_sent_page_scale_delta(1); 1470 m_pinchZoomViewport.set_sent_page_scale_delta(1);
1486 // FIXME(aelias): Make pinch-zoom painting optimization compatible with 1471 if (m_pinchGestureActive)
1487 // compositor-side scaling.
1488 if (!m_settings.pageScalePinchZoomEnabled && m_pinchGestureActive)
1489 computePinchZoomDeltas(scrollInfo.get()); 1472 computePinchZoomDeltas(scrollInfo.get());
1490 else if (m_pageScaleAnimation.get()) 1473 else if (m_pageScaleAnimation.get())
1491 computeDoubleTapZoomDeltas(scrollInfo.get()); 1474 computeDoubleTapZoomDeltas(scrollInfo.get());
1492 return scrollInfo.Pass(); 1475 return scrollInfo.Pass();
1493 } 1476 }
1494 1477
1495 collectScrollDeltas(scrollInfo.get(), rootLayer()); 1478 collectScrollDeltas(scrollInfo.get(), rootLayer());
1496 scrollInfo->pageScaleDelta = m_pinchZoomViewport.page_scale_delta(); 1479 scrollInfo->pageScaleDelta = m_pinchZoomViewport.page_scale_delta();
1497 m_pinchZoomViewport.set_sent_page_scale_delta(scrollInfo->pageScaleDelta); 1480 m_pinchZoomViewport.set_sent_page_scale_delta(scrollInfo->pageScaleDelta);
1498 1481
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1713 LayerImpl* layer = getNonCompositedContentLayerRecursive(tree->RootLayer()); 1696 LayerImpl* layer = getNonCompositedContentLayerRecursive(tree->RootLayer());
1714 return layer ? layer->getPicture() : skia::RefPtr<SkPicture>(); 1697 return layer ? layer->getPicture() : skia::RefPtr<SkPicture>();
1715 } 1698 }
1716 1699
1717 void LayerTreeHostImpl::savePaintTime(const base::TimeDelta& totalPaintTime) 1700 void LayerTreeHostImpl::savePaintTime(const base::TimeDelta& totalPaintTime)
1718 { 1701 {
1719 m_paintTimeCounter->SavePaintTime(totalPaintTime); 1702 m_paintTimeCounter->SavePaintTime(totalPaintTime);
1720 } 1703 }
1721 1704
1722 } // namespace cc 1705 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698