Bug 777075 - Trim the PanZoomState interface by moving some LayerController functions into PanZoomController. r=mbrubeck

This commit is contained in:
Kartikaya Gupta 2012-08-01 10:38:30 -04:00
parent 48920d20cf
commit 7de6d09010
3 changed files with 24 additions and 32 deletions

View File

@ -137,18 +137,6 @@ public class LayerController implements PanZoomTarget {
}
}
/** Scrolls the viewport by the given offset. You must hold the monitor while calling this. */
public void scrollBy(PointF point) {
ViewportMetrics viewportMetrics = new ViewportMetrics(mViewportMetrics);
PointF origin = viewportMetrics.getOrigin();
origin.offset(point.x, point.y);
viewportMetrics.setOrigin(origin);
mViewportMetrics = new ImmutableViewportMetrics(viewportMetrics);
notifyLayerClientOfGeometryChange();
mView.requestRender();
}
/** Sets the current page rect. You must hold the monitor while calling this. */
public void setPageRect(RectF rect, RectF cssRect) {
// Since the "rect" is always just a multiple of "cssRect" we don't need to
@ -195,21 +183,6 @@ public class LayerController implements PanZoomTarget {
}
}
/**
* Scales the viewport, keeping the given focus point in the same place before and after the
* scale operation. You must hold the monitor while calling this.
*/
public void scaleWithFocus(float zoomFactor, PointF focus) {
ViewportMetrics viewportMetrics = new ViewportMetrics(mViewportMetrics);
viewportMetrics.scaleTo(zoomFactor, focus);
mViewportMetrics = new ImmutableViewportMetrics(viewportMetrics);
// We assume the zoom level will only be modified by the
// PanZoomController, so no need to notify it of this change.
notifyLayerClientOfGeometryChange();
mView.requestRender();
}
public boolean post(Runnable action) { return mView.post(action); }
/**

View File

@ -537,6 +537,16 @@ public class PanZoomController
updatePosition();
}
private void scrollBy(PointF point) {
ViewportMetrics viewportMetrics = new ViewportMetrics(getMetrics());
PointF origin = viewportMetrics.getOrigin();
origin.offset(point.x, point.y);
viewportMetrics.setOrigin(origin);
mTarget.setViewportMetrics(viewportMetrics);
mTarget.notifyLayerClientOfGeometryChange();
}
private void fling() {
updatePosition();
@ -627,7 +637,7 @@ public class PanZoomController
}
if (! mSubscroller.scrollBy(displacement)) {
synchronized (mTarget.getLock()) {
mTarget.scrollBy(displacement);
scrollBy(displacement);
}
}
}
@ -939,10 +949,10 @@ public class PanZoomController
newZoomFactor = maxZoomFactor + excessZoom;
}
mTarget.scrollBy(new PointF(mLastZoomFocus.x - detector.getFocusX(),
scrollBy(new PointF(mLastZoomFocus.x - detector.getFocusX(),
mLastZoomFocus.y - detector.getFocusY()));
PointF focus = new PointF(detector.getFocusX(), detector.getFocusY());
mTarget.scaleWithFocus(newZoomFactor, focus);
scaleWithFocus(newZoomFactor, focus);
}
mLastZoomFocus.set(detector.getFocusX(), detector.getFocusY());
@ -963,6 +973,17 @@ public class PanZoomController
mTarget.notifyLayerClientOfGeometryChange();
}
/**
* Scales the viewport, keeping the given focus point in the same place before and after the
* scale operation. You must hold the monitor while calling this.
*/
private void scaleWithFocus(float zoomFactor, PointF focus) {
ViewportMetrics viewportMetrics = new ViewportMetrics(getMetrics());
viewportMetrics.scaleTo(zoomFactor, focus);
mTarget.setViewportMetrics(viewportMetrics);
mTarget.notifyLayerClientOfGeometryChange();
}
public boolean getRedrawHint() {
switch (mState) {
case PINCHING:

View File

@ -17,8 +17,6 @@ public interface PanZoomTarget {
public void setAnimationTarget(ViewportMetrics viewport);
public void setViewportMetrics(ViewportMetrics viewport);
public void scrollBy(PointF point);
public void scaleWithFocus(float zoomFactor, PointF focus);
public void notifyLayerClientOfGeometryChange();
public void setForceRedraw();