summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/ui')
-rw-r--r--src/com/android/camera/ui/ZoomRenderer.java31
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;