| Index: cc/layer_tree_host_impl.cc
|
| diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc
|
| index 73568ffc3980770b8d8d75d02428522e7cf3552d..2f5ee5ca2fe4953a97a3a188c7e7fe3e190e458d 100644
|
| --- a/cc/layer_tree_host_impl.cc
|
| +++ b/cc/layer_tree_host_impl.cc
|
| @@ -14,6 +14,7 @@
|
| #include "cc/delay_based_time_source.h"
|
| #include "cc/font_atlas.h"
|
| #include "cc/frame_rate_counter.h"
|
| +#include "cc/geometry.h"
|
| #include "cc/gl_renderer.h"
|
| #include "cc/heads_up_display_layer_impl.h"
|
| #include "cc/layer_iterator.h"
|
| @@ -32,6 +33,7 @@
|
| #include "cc/software_renderer.h"
|
| #include "cc/texture_uploader.h"
|
| #include "ui/gfx/size_conversions.h"
|
| +#include "ui/gfx/vector2d_conversions.h"
|
| #include <algorithm>
|
|
|
| using WebKit::WebTransformationMatrix;
|
| @@ -101,12 +103,12 @@ gfx::RectF PinchZoomViewport::bounds() const
|
| scaledViewportSize = scaledViewportSize.Scale(1 / totalPageScaleFactor());
|
|
|
| gfx::RectF bounds(gfx::PointF(), scaledViewportSize);
|
| - bounds.set_origin(m_pinchViewportScrollDelta);
|
| + bounds.Offset(m_pinchViewportScrollDelta);
|
|
|
| return bounds;
|
| }
|
|
|
| -FloatSize PinchZoomViewport::applyScroll(const gfx::Vector2dF& delta)
|
| +gfx::Vector2dF PinchZoomViewport::applyScroll(const gfx::Vector2dF& delta)
|
| {
|
| gfx::Vector2dF overflow;
|
| gfx::RectF pinchedBounds = bounds();
|
| @@ -131,9 +133,9 @@ FloatSize PinchZoomViewport::applyScroll(const gfx::Vector2dF& delta)
|
| overflow.set_y(pinchedBounds.bottom() - m_layoutViewportSize.height());
|
| pinchedBounds.Offset(0, m_layoutViewportSize.height() - pinchedBounds.bottom());
|
| }
|
| - m_pinchViewportScrollDelta = cc::FloatPoint(pinchedBounds.origin());
|
| + m_pinchViewportScrollDelta = pinchedBounds.OffsetFromOrigin();
|
|
|
| - return cc::FloatSize(overflow);
|
| + return overflow;
|
| }
|
|
|
| WebTransformationMatrix PinchZoomViewport::implTransform() const
|
| @@ -249,7 +251,7 @@ void LayerTreeHostImpl::commitComplete()
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::commitComplete");
|
| // Recompute max scroll position; must be after layer content bounds are
|
| // updated.
|
| - updateMaxScrollPosition();
|
| + updateMaxScrollOffset();
|
| m_client->sendManagedMemoryStats();
|
| }
|
|
|
| @@ -290,26 +292,26 @@ void LayerTreeHostImpl::animate(base::TimeTicks monotonicTime, base::Time wallCl
|
| animateScrollbars(monotonicTime);
|
| }
|
|
|
| -void LayerTreeHostImpl::startPageScaleAnimation(const IntSize& targetPosition, bool anchorPoint, float pageScale, base::TimeTicks startTime, base::TimeDelta duration)
|
| +void LayerTreeHostImpl::startPageScaleAnimation(gfx::Vector2d targetOffset, bool anchorPoint, float pageScale, base::TimeTicks startTime, base::TimeDelta duration)
|
| {
|
| if (!m_rootScrollLayerImpl)
|
| return;
|
|
|
| - IntSize scrollTotal = flooredIntSize(m_rootScrollLayerImpl->scrollPosition() + m_rootScrollLayerImpl->scrollDelta());
|
| - scrollTotal.scale(m_pinchZoomViewport.pageScaleDelta());
|
| + gfx::Vector2dF scrollTotal = m_rootScrollLayerImpl->scrollOffset() + m_rootScrollLayerImpl->scrollDelta();
|
| + scrollTotal.Scale(m_pinchZoomViewport.pageScaleDelta());
|
| float scaleTotal = m_pinchZoomViewport.totalPageScaleFactor();
|
| gfx::Size scaledContentSize = gfx::ToFlooredSize(contentSize().Scale(m_pinchZoomViewport.pageScaleDelta()));
|
|
|
| double startTimeSeconds = (startTime - base::TimeTicks()).InSecondsF();
|
| - m_pageScaleAnimation = PageScaleAnimation::create(scrollTotal, scaleTotal, cc::IntSize(m_deviceViewportSize), scaledContentSize, startTimeSeconds);
|
| + m_pageScaleAnimation = PageScaleAnimation::create(gfx::ToFlooredVector2d(scrollTotal), scaleTotal, m_deviceViewportSize, scaledContentSize, startTimeSeconds);
|
|
|
| if (anchorPoint) {
|
| - IntSize windowAnchor(targetPosition);
|
| - windowAnchor.scale(scaleTotal / pageScale);
|
| + gfx::Vector2dF windowAnchor = targetOffset;
|
| + windowAnchor.Scale(scaleTotal / pageScale);
|
| windowAnchor -= scrollTotal;
|
| - m_pageScaleAnimation->zoomWithAnchor(windowAnchor, pageScale, duration.InSecondsF());
|
| + m_pageScaleAnimation->zoomWithAnchor(gfx::ToFlooredVector2d(windowAnchor), pageScale, duration.InSecondsF());
|
| } else
|
| - m_pageScaleAnimation->zoomTo(targetPosition, pageScale, duration.InSecondsF());
|
| + m_pageScaleAnimation->zoomTo(targetOffset, pageScale, duration.InSecondsF());
|
|
|
| m_client->setNeedsRedrawOnImplThread();
|
| m_client->setNeedsCommitOnImplThread();
|
| @@ -890,9 +892,9 @@ void LayerTreeHostImpl::setViewportSize(const gfx::Size& layoutViewportSize, con
|
| m_layoutViewportSize = layoutViewportSize;
|
| m_deviceViewportSize = deviceViewportSize;
|
|
|
| - m_pinchZoomViewport.setLayoutViewportSize(FloatSize(layoutViewportSize));
|
| + m_pinchZoomViewport.setLayoutViewportSize(layoutViewportSize);
|
|
|
| - updateMaxScrollPosition();
|
| + updateMaxScrollOffset();
|
|
|
| if (m_renderer)
|
| m_renderer->viewportChanged();
|
| @@ -907,8 +909,8 @@ static void adjustScrollsForPageScaleChange(LayerImpl* layerImpl, float pageScal
|
|
|
| if (layerImpl->scrollable()) {
|
| // We need to convert impl-side scroll deltas to pageScale space.
|
| - FloatSize scrollDelta = layerImpl->scrollDelta();
|
| - scrollDelta.scale(pageScaleChange);
|
| + gfx::Vector2dF scrollDelta = layerImpl->scrollDelta();
|
| + scrollDelta.Scale(pageScaleChange);
|
| layerImpl->setScrollDelta(scrollDelta);
|
| }
|
|
|
| @@ -922,7 +924,7 @@ void LayerTreeHostImpl::setDeviceScaleFactor(float deviceScaleFactor)
|
| return;
|
| m_deviceScaleFactor = deviceScaleFactor;
|
|
|
| - updateMaxScrollPosition();
|
| + updateMaxScrollOffset();
|
| }
|
|
|
| float LayerTreeHostImpl::pageScaleFactor() const
|
| @@ -952,10 +954,10 @@ void LayerTreeHostImpl::setPageScaleDelta(float delta)
|
| {
|
| m_pinchZoomViewport.setPageScaleDelta(delta);
|
|
|
| - updateMaxScrollPosition();
|
| + updateMaxScrollOffset();
|
| }
|
|
|
| -void LayerTreeHostImpl::updateMaxScrollPosition()
|
| +void LayerTreeHostImpl::updateMaxScrollOffset()
|
| {
|
| if (!m_rootScrollLayerImpl || !m_rootScrollLayerImpl->children().size())
|
| return;
|
| @@ -981,14 +983,14 @@ void LayerTreeHostImpl::updateMaxScrollPosition()
|
| viewBounds = viewBounds.Scale(1 / m_pinchZoomViewport.pageScaleDelta());
|
| }
|
|
|
| - IntSize maxScroll = cc::IntSize(contentBounds) - expandedIntSize(cc::FloatSize(viewBounds));
|
| - maxScroll.scale(1 / m_deviceScaleFactor);
|
| + gfx::Vector2dF maxScroll = BottomRight(gfx::Rect(contentBounds)) - BottomRight(gfx::RectF(viewBounds));
|
| + maxScroll.Scale(1 / m_deviceScaleFactor);
|
|
|
| // The viewport may be larger than the contents in some cases, such as
|
| // having a vertical scrollbar but no horizontal overflow.
|
| - maxScroll.clampNegativeToZero();
|
| + maxScroll = ClampFromBelow(maxScroll, gfx::Vector2dF());
|
|
|
| - m_rootScrollLayerImpl->setMaxScrollPosition(maxScroll);
|
| + m_rootScrollLayerImpl->setMaxScrollOffset(gfx::ToFlooredVector2d(maxScroll));
|
| }
|
|
|
| void LayerTreeHostImpl::setNeedsRedraw()
|
| @@ -1017,7 +1019,7 @@ bool LayerTreeHostImpl::ensureRenderSurfaceLayerList()
|
| return m_renderSurfaceLayerList.size();
|
| }
|
|
|
| -InputHandlerClient::ScrollStatus LayerTreeHostImpl::scrollBegin(const gfx::Point& viewportPoint, InputHandlerClient::ScrollInputType type)
|
| +InputHandlerClient::ScrollStatus LayerTreeHostImpl::scrollBegin(gfx::Point viewportPoint, InputHandlerClient::ScrollInputType type)
|
| {
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::scrollBegin");
|
|
|
| @@ -1070,7 +1072,7 @@ InputHandlerClient::ScrollStatus LayerTreeHostImpl::scrollBegin(const gfx::Point
|
| return ScrollIgnored;
|
| }
|
|
|
| -static FloatSize scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewport, LayerImpl& layerImpl, float scaleFromViewportToScreenSpace, const gfx::PointF& viewportPoint, const FloatSize& viewportDelta)
|
| +static gfx::Vector2dF scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewport, LayerImpl& layerImpl, float scaleFromViewportToScreenSpace, gfx::PointF viewportPoint, gfx::Vector2dF viewportDelta)
|
| {
|
| // Layers with non-invertible screen space transforms should not have passed the scroll hit
|
| // test in the first place.
|
| @@ -1079,8 +1081,8 @@ static FloatSize scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewport,
|
|
|
| gfx::PointF screenSpacePoint = viewportPoint.Scale(scaleFromViewportToScreenSpace);
|
|
|
| - FloatSize screenSpaceDelta = viewportDelta;
|
| - screenSpaceDelta.scale(scaleFromViewportToScreenSpace, scaleFromViewportToScreenSpace);
|
| + gfx::Vector2dF screenSpaceDelta = viewportDelta;
|
| + screenSpaceDelta.Scale(scaleFromViewportToScreenSpace);
|
|
|
| // First project the scroll start and end points to local layer space to find the scroll delta
|
| // in layer coordinates.
|
| @@ -1093,7 +1095,7 @@ static FloatSize scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewport,
|
| DCHECK(!startClipped);
|
| DCHECK(!endClipped);
|
| if (startClipped || endClipped)
|
| - return FloatSize();
|
| + return gfx::Vector2dF();
|
|
|
| // localStartPoint and localEndPoint are in content space but we want to move them to layer space for scrolling.
|
| float widthScale = 1 / layerImpl.contentsScaleX();
|
| @@ -1102,8 +1104,8 @@ static FloatSize scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewport,
|
| localEndPoint = localEndPoint.Scale(widthScale, heightScale);
|
|
|
| // Apply the scroll delta.
|
| - FloatSize previousDelta(layerImpl.scrollDelta());
|
| - FloatSize unscrolled = layerImpl.scrollBy(cc::FloatSize(localEndPoint - localStartPoint));
|
| + gfx::Vector2dF previousDelta = layerImpl.scrollDelta();
|
| + gfx::Vector2dF unscrolled = layerImpl.scrollBy(localEndPoint - localStartPoint);
|
|
|
| if (viewport)
|
| viewport->applyScroll(unscrolled);
|
| @@ -1116,32 +1118,32 @@ static FloatSize scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewport,
|
| gfx::PointF actualScreenSpaceEndPoint = MathUtil::mapPoint(layerImpl.screenSpaceTransform(), actualLocalContentEndPoint, endClipped);
|
| DCHECK(!endClipped);
|
| if (endClipped)
|
| - return FloatSize();
|
| + return gfx::Vector2dF();
|
| gfx::PointF actualViewportEndPoint = actualScreenSpaceEndPoint.Scale(1 / scaleFromViewportToScreenSpace);
|
| - return cc::FloatSize(actualViewportEndPoint - viewportPoint);
|
| + return actualViewportEndPoint - viewportPoint;
|
| }
|
|
|
| -static FloatSize scrollLayerWithLocalDelta(LayerImpl& layerImpl, const FloatSize& localDelta)
|
| +static gfx::Vector2dF scrollLayerWithLocalDelta(LayerImpl& layerImpl, gfx::Vector2dF localDelta)
|
| {
|
| - FloatSize previousDelta(layerImpl.scrollDelta());
|
| + gfx::Vector2dF previousDelta(layerImpl.scrollDelta());
|
| layerImpl.scrollBy(localDelta);
|
| return layerImpl.scrollDelta() - previousDelta;
|
| }
|
|
|
| -void LayerTreeHostImpl::scrollBy(const gfx::Point& viewportPoint, const IntSize& scrollDelta)
|
| +void LayerTreeHostImpl::scrollBy(gfx::Point viewportPoint, gfx::Vector2d scrollDelta)
|
| {
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::scrollBy");
|
| if (!m_currentlyScrollingLayerImpl)
|
| return;
|
|
|
| - FloatSize pendingDelta(scrollDelta);
|
| + gfx::Vector2dF pendingDelta = scrollDelta;
|
|
|
| for (LayerImpl* layerImpl = m_currentlyScrollingLayerImpl; layerImpl; layerImpl = layerImpl->parent()) {
|
| if (!layerImpl->scrollable())
|
| continue;
|
|
|
| PinchZoomViewport* viewport = layerImpl == m_rootScrollLayerImpl ? &m_pinchZoomViewport : 0;
|
| - FloatSize appliedDelta;
|
| + gfx::Vector2dF appliedDelta;
|
| if (m_scrollDeltaIsInViewportSpace) {
|
| float scaleFromViewportToScreenSpace = m_deviceScaleFactor;
|
| appliedDelta = scrollLayerWithViewportSpaceDelta(viewport, *layerImpl, scaleFromViewportToScreenSpace, viewportPoint, pendingDelta);
|
| @@ -1150,27 +1152,27 @@ void LayerTreeHostImpl::scrollBy(const gfx::Point& viewportPoint, const IntSize&
|
|
|
| // If the layer wasn't able to move, try the next one in the hierarchy.
|
| float moveThresholdSquared = 0.1f * 0.1f;
|
| - if (appliedDelta.diagonalLengthSquared() < moveThresholdSquared)
|
| + if (appliedDelta.LengthSquared() < moveThresholdSquared)
|
| continue;
|
|
|
| // If the applied delta is within 45 degrees of the input delta, bail out to make it easier
|
| // to scroll just one layer in one direction without affecting any of its parents.
|
| float angleThreshold = 45;
|
| if (MathUtil::smallestAngleBetweenVectors(appliedDelta, pendingDelta) < angleThreshold) {
|
| - pendingDelta = FloatSize();
|
| + pendingDelta = gfx::Vector2d();
|
| break;
|
| }
|
|
|
| // Allow further movement only on an axis perpendicular to the direction in which the layer
|
| // moved.
|
| - FloatSize perpendicularAxis(-appliedDelta.height(), appliedDelta.width());
|
| + gfx::Vector2dF perpendicularAxis(-appliedDelta.y(), appliedDelta.x());
|
| pendingDelta = MathUtil::projectVector(pendingDelta, perpendicularAxis);
|
|
|
| - if (flooredIntSize(pendingDelta).isZero())
|
| + if (gfx::ToFlooredVector2d(pendingDelta).IsZero())
|
| break;
|
| }
|
|
|
| - if (!scrollDelta.isZero() && flooredIntSize(pendingDelta).isEmpty()) {
|
| + if (!scrollDelta.IsZero() && gfx::ToFlooredVector2d(pendingDelta).IsZero()) {
|
| m_client->setNeedsCommitOnImplThread();
|
| m_client->setNeedsRedrawOnImplThread();
|
| }
|
| @@ -1190,42 +1192,40 @@ void LayerTreeHostImpl::scrollEnd()
|
| void LayerTreeHostImpl::pinchGestureBegin()
|
| {
|
| m_pinchGestureActive = true;
|
| - m_previousPinchAnchor = IntPoint();
|
| + m_previousPinchAnchor = gfx::Point();
|
|
|
| if (m_rootScrollLayerImpl && m_rootScrollLayerImpl->scrollbarAnimationController())
|
| m_rootScrollLayerImpl->scrollbarAnimationController()->didPinchGestureBegin();
|
| }
|
|
|
| -void LayerTreeHostImpl::pinchGestureUpdate(float magnifyDelta,
|
| - const IntPoint& anchor)
|
| +void LayerTreeHostImpl::pinchGestureUpdate(float magnifyDelta, gfx::Point anchor)
|
| {
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::pinchGestureUpdate");
|
|
|
| if (!m_rootScrollLayerImpl)
|
| return;
|
|
|
| - if (m_previousPinchAnchor == IntPoint::zero())
|
| + if (m_previousPinchAnchor == gfx::Point())
|
| m_previousPinchAnchor = anchor;
|
|
|
| // Keep the center-of-pinch anchor specified by (x, y) in a stable
|
| // position over the course of the magnify.
|
| float pageScaleDelta = m_pinchZoomViewport.pageScaleDelta();
|
| - FloatPoint previousScaleAnchor(m_previousPinchAnchor.x() / pageScaleDelta,
|
| - m_previousPinchAnchor.y() / pageScaleDelta);
|
| + gfx::PointF previousScaleAnchor = m_previousPinchAnchor.Scale(1 / pageScaleDelta);
|
| setPageScaleDelta(pageScaleDelta * magnifyDelta);
|
| pageScaleDelta = m_pinchZoomViewport.pageScaleDelta();
|
| - FloatPoint newScaleAnchor(anchor.x() / pageScaleDelta, anchor.y() / pageScaleDelta);
|
| - FloatSize move = previousScaleAnchor - newScaleAnchor;
|
| + gfx::PointF newScaleAnchor = anchor.Scale(1 / pageScaleDelta);
|
| + gfx::Vector2dF move = previousScaleAnchor - newScaleAnchor;
|
|
|
| m_previousPinchAnchor = anchor;
|
|
|
| if (Settings::pageScalePinchZoomEnabled()) {
|
| // Compute the application of the delta with respect to the current page zoom of the page.
|
| - move.scale(1 / (m_pinchZoomViewport.pageScaleFactor() * m_deviceScaleFactor));
|
| + move.Scale(1 / (m_pinchZoomViewport.pageScaleFactor() * m_deviceScaleFactor));
|
| }
|
|
|
| - FloatSize scrollOverflow = Settings::pageScalePinchZoomEnabled() ? m_pinchZoomViewport.applyScroll(move) : move;
|
| - m_rootScrollLayerImpl->scrollBy(roundedIntSize(scrollOverflow));
|
| + gfx::Vector2dF scrollOverflow = Settings::pageScalePinchZoomEnabled() ? m_pinchZoomViewport.applyScroll(move) : move;
|
| + m_rootScrollLayerImpl->scrollBy(scrollOverflow);
|
|
|
| if (m_rootScrollLayerImpl->scrollbarAnimationController())
|
| m_rootScrollLayerImpl->scrollbarAnimationController()->didPinchGestureUpdate();
|
| @@ -1247,9 +1247,9 @@ void LayerTreeHostImpl::pinchGestureEnd()
|
| void LayerTreeHostImpl::computeDoubleTapZoomDeltas(ScrollAndScaleSet* scrollInfo)
|
| {
|
| float pageScale = m_pageScaleAnimation->finalPageScale();
|
| - IntSize scrollOffset = m_pageScaleAnimation->finalScrollOffset();
|
| - scrollOffset.scale(m_pinchZoomViewport.pageScaleFactor() / pageScale);
|
| - makeScrollAndScaleSet(scrollInfo, scrollOffset, pageScale);
|
| + gfx::Vector2dF scrollOffset = m_pageScaleAnimation->finalScrollOffset();
|
| + scrollOffset.Scale(m_pinchZoomViewport.pageScaleFactor() / pageScale);
|
| + makeScrollAndScaleSet(scrollInfo, gfx::ToRoundedVector2d(scrollOffset), pageScale);
|
| }
|
|
|
| void LayerTreeHostImpl::computePinchZoomDeltas(ScrollAndScaleSet* scrollInfo)
|
| @@ -1266,31 +1266,32 @@ void LayerTreeHostImpl::computePinchZoomDeltas(ScrollAndScaleSet* scrollInfo)
|
|
|
| // Compute where the scroll offset/page scale would be if fully pinch-zoomed
|
| // out from the anchor point.
|
| - IntSize scrollBegin = flooredIntSize(m_rootScrollLayerImpl->scrollPosition() + m_rootScrollLayerImpl->scrollDelta());
|
| - scrollBegin.scale(m_pinchZoomViewport.pageScaleDelta());
|
| + gfx::Vector2dF scrollBegin = m_rootScrollLayerImpl->scrollOffset() + m_rootScrollLayerImpl->scrollDelta();
|
| + scrollBegin.Scale(m_pinchZoomViewport.pageScaleDelta());
|
| float scaleBegin = m_pinchZoomViewport.totalPageScaleFactor();
|
| float pageScaleDeltaToSend = m_pinchZoomViewport.minPageScaleFactor() / m_pinchZoomViewport.pageScaleFactor();
|
| gfx::SizeF scaledContentsSize = contentSize().Scale(pageScaleDeltaToSend);
|
|
|
| - FloatSize anchor = toSize(m_previousPinchAnchor);
|
| - FloatSize scrollEnd = scrollBegin + anchor;
|
| - scrollEnd.scale(m_pinchZoomViewport.minPageScaleFactor() / scaleBegin);
|
| - scrollEnd -= anchor;
|
| - scrollEnd = scrollEnd.shrunkTo(roundedIntSize(cc::FloatSize(scaledContentsSize) - cc::IntSize(m_deviceViewportSize))).expandedTo(FloatSize(0, 0));
|
| - scrollEnd.scale(1 / pageScaleDeltaToSend);
|
| - scrollEnd.scale(m_deviceScaleFactor);
|
| + gfx::Vector2d anchorOffset = m_previousPinchAnchor.OffsetFromOrigin();
|
| + gfx::Vector2dF scrollEnd = scrollBegin + anchorOffset;
|
| + scrollEnd.Scale(m_pinchZoomViewport.minPageScaleFactor() / scaleBegin);
|
| + scrollEnd -= anchorOffset;
|
| + scrollEnd = ClampFromAbove(scrollEnd, BottomRight(gfx::RectF(scaledContentsSize)) - BottomRight(gfx::Rect(m_deviceViewportSize)));
|
| + scrollEnd = ClampFromBelow(scrollEnd, gfx::Vector2d());
|
| + scrollEnd.Scale(1 / pageScaleDeltaToSend);
|
| + scrollEnd.Scale(m_deviceScaleFactor);
|
|
|
| - makeScrollAndScaleSet(scrollInfo, roundedIntSize(scrollEnd), m_pinchZoomViewport.minPageScaleFactor());
|
| + makeScrollAndScaleSet(scrollInfo, gfx::ToRoundedVector2d(scrollEnd), m_pinchZoomViewport.minPageScaleFactor());
|
| }
|
|
|
| -void LayerTreeHostImpl::makeScrollAndScaleSet(ScrollAndScaleSet* scrollInfo, const IntSize& scrollOffset, float pageScale)
|
| +void LayerTreeHostImpl::makeScrollAndScaleSet(ScrollAndScaleSet* scrollInfo, gfx::Vector2d scrollOffset, float pageScale)
|
| {
|
| if (!m_rootScrollLayerImpl)
|
| return;
|
|
|
| LayerTreeHostCommon::ScrollUpdateInfo scroll;
|
| scroll.layerId = m_rootScrollLayerImpl->id();
|
| - scroll.scrollDelta = scrollOffset - toSize(m_rootScrollLayerImpl->scrollPosition());
|
| + scroll.scrollDelta = scrollOffset - m_rootScrollLayerImpl->scrollOffset();
|
| scrollInfo->scrolls.push_back(scroll);
|
| m_rootScrollLayerImpl->setSentScrollDelta(scroll.scrollDelta);
|
| scrollInfo->pageScaleDelta = pageScale / m_pinchZoomViewport.pageScaleFactor();
|
| @@ -1302,8 +1303,8 @@ static void collectScrollDeltas(ScrollAndScaleSet* scrollInfo, LayerImpl* layerI
|
| if (!layerImpl)
|
| return;
|
|
|
| - if (!layerImpl->scrollDelta().isZero()) {
|
| - IntSize scrollDelta = flooredIntSize(layerImpl->scrollDelta());
|
| + if (!layerImpl->scrollDelta().IsZero()) {
|
| + gfx::Vector2d scrollDelta = gfx::ToFlooredVector2d(layerImpl->scrollDelta());
|
| LayerTreeHostCommon::ScrollUpdateInfo scroll;
|
| scroll.layerId = layerImpl->id();
|
| scroll.scrollDelta = scrollDelta;
|
| @@ -1360,11 +1361,11 @@ void LayerTreeHostImpl::animatePageScale(base::TimeTicks time)
|
| return;
|
|
|
| double monotonicTime = (time - base::TimeTicks()).InSecondsF();
|
| - IntSize scrollTotal = flooredIntSize(m_rootScrollLayerImpl->scrollPosition() + m_rootScrollLayerImpl->scrollDelta());
|
| + gfx::Vector2dF scrollTotal = m_rootScrollLayerImpl->scrollOffset() + m_rootScrollLayerImpl->scrollDelta();
|
|
|
| setPageScaleDelta(m_pageScaleAnimation->pageScaleAtTime(monotonicTime) / m_pinchZoomViewport.pageScaleFactor());
|
| - IntSize nextScroll = m_pageScaleAnimation->scrollOffsetAtTime(monotonicTime);
|
| - nextScroll.scale(1 / m_pinchZoomViewport.pageScaleDelta());
|
| + gfx::Vector2dF nextScroll = m_pageScaleAnimation->scrollOffsetAtTime(monotonicTime);
|
| + nextScroll.Scale(1 / m_pinchZoomViewport.pageScaleDelta());
|
| m_rootScrollLayerImpl->scrollBy(nextScroll - scrollTotal);
|
| m_client->setNeedsRedrawOnImplThread();
|
|
|
|
|