diff options
Diffstat (limited to 'src/com/android/camera/ui')
-rw-r--r-- | src/com/android/camera/ui/ZoomRenderer.java | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/com/android/camera/ui/ZoomRenderer.java b/src/com/android/camera/ui/ZoomRenderer.java index e1363c574..67dcf34c1 100644 --- a/src/com/android/camera/ui/ZoomRenderer.java +++ b/src/com/android/camera/ui/ZoomRenderer.java @@ -53,11 +53,16 @@ public class ZoomRenderer extends OverlayRenderer private boolean mInZoom; private Rect mTextBounds; private int mOrientation; + private boolean mCamera2 = false; + private float mZoomValue; + private float mZoomMinValue; + private float mZoomMaxValue; public interface OnZoomChangedListener { void onZoomStart(); void onZoomEnd(); void onZoomValueChanged(int index); // only for immediate zoom + void onZoomValueChanged(float value); } public ZoomRenderer(Context ctx) { @@ -85,10 +90,23 @@ public class ZoomRenderer extends OverlayRenderer mMinZoom = 0; } + public void setZoomMax(float zoomMax) { + mCamera2 = true; + mZoomMaxValue = zoomMax; + mZoomMinValue = 1f; + } + public void setZoom(int index) { mCircleSize = mMinCircle + index * (mMaxCircle - mMinCircle) / (mMaxZoom - mMinZoom); } + public void setZoom(float zoomValue) { + mCamera2 = true; + mZoomValue = zoomValue; + mCircleSize = (int) (mMinCircle + (mMaxCircle - mMinCircle) * (mZoomValue - mZoomMinValue) / + (mZoomMaxValue - mZoomMinValue)); + } + public void setZoomValue(int value) { value = value / 10; mZoomSig = value / 10; @@ -124,6 +142,7 @@ public class ZoomRenderer extends OverlayRenderer canvas.drawCircle((float) mCenterX, (float) mCenterY, mCircleSize, mPaint); String txt = mZoomSig+"."+mZoomFraction+"x"; + if (mCamera2) txt = "" + mZoomValue; mTextPaint.getTextBounds(txt, 0, txt.length(), mTextBounds); canvas.drawText(txt, mCenterX - mTextBounds.centerX(), mCenterY - mTextBounds.centerY(), mTextPaint); @@ -137,8 +156,16 @@ public class ZoomRenderer extends OverlayRenderer circle = Math.min(mMaxCircle, circle); if (mListener != null && circle != mCircleSize) { mCircleSize = circle; - int zoom = mMinZoom + (int) ((mCircleSize - mMinCircle) * (mMaxZoom - mMinZoom) / (mMaxCircle - mMinCircle)); - mListener.onZoomValueChanged(zoom); + if (mCamera2) { + float zoom = mZoomMinValue + (mZoomMaxValue - mZoomMinValue) / (mMaxCircle - + mMinCircle) * (mCircleSize - mMinCircle); + zoom = ((int) (zoom * 10)) / 10.0f; + mListener.onZoomValueChanged(zoom); + } else { + int zoom = mMinZoom + (int) ((mCircleSize - mMinCircle) * (mMaxZoom - mMinZoom) / + (mMaxCircle - mMinCircle)); + mListener.onZoomValueChanged(zoom); + } update(); } return true; |