diff options
author | jinwu <jinwu@codeaurora.org> | 2018-09-21 18:23:17 +0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-09-24 19:53:46 -0700 |
commit | c6f824f968c1ce44d018035fd0ebc7cf95268f06 (patch) | |
tree | 97ae1d4d2fdb659b48256a906c62cc3f104de1f0 /src/com/android/camera/ui/ProMode.java | |
parent | bb1d239944f9c684fb381444f5b694bcf326646a (diff) | |
download | android_packages_apps_Snap-c6f824f968c1ce44d018035fd0ebc7cf95268f06.tar.gz android_packages_apps_Snap-c6f824f968c1ce44d018035fd0ebc7cf95268f06.tar.bz2 android_packages_apps_Snap-c6f824f968c1ce44d018035fd0ebc7cf95268f06.zip |
SnapdragonCamera: Completed the absolute value of ISO in ProMode
Completed the absolute value of ISO in ProMode.
CRs-Fixed: 2293209
Change-Id: Id2a4fe105d7fe3ca5eeedbe06c0cf77f11f930e5
Diffstat (limited to 'src/com/android/camera/ui/ProMode.java')
-rwxr-xr-x | src/com/android/camera/ui/ProMode.java | 76 |
1 files changed, 70 insertions, 6 deletions
diff --git a/src/com/android/camera/ui/ProMode.java b/src/com/android/camera/ui/ProMode.java index 99182e242..97c9cdb83 100755 --- a/src/com/android/camera/ui/ProMode.java +++ b/src/com/android/camera/ui/ProMode.java @@ -30,6 +30,7 @@ package com.android.camera.ui; import android.content.Context; +import android.content.SharedPreferences; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; @@ -45,12 +46,14 @@ import android.widget.ImageView; import android.widget.TextView; import com.android.camera.SettingsManager; +import com.android.camera.ComboPreferences; import org.codeaurora.snapcam.R; import java.util.ArrayList; public class ProMode extends View { + private static final String TAG = "ProMode"; public static final int NO_MODE = -1; public static final int EXPOSURE_MODE = 0; public static final int MANUAL_MODE = 1; @@ -70,6 +73,7 @@ public class ProMode extends View { private int mCurveLeft; private int mCurveRight; private float mSlider = -1; + private float mIsoSlider = -1; private Paint mPaint = new Paint(); private int mNums; private int mIndex; @@ -106,11 +110,19 @@ public class ProMode extends View { } private void init(int mode) { - String key = getKey(mode); - if (key == null) return; - int index = mSettingsManager.getValueIndex(key); - CharSequence[] cc = mSettingsManager.getEntries(key); - mUI.updateProModeText(mode, cc[index].toString()); + if (mode == ISO_MODE) { + final SharedPreferences sharedPref = mContext.getSharedPreferences( + ComboPreferences.getLocalSharedPreferencesName(mContext, mSettingsManager.getCurrentCameraId()), + Context.MODE_PRIVATE); + String value = sharedPref.getString(SettingsManager.KEY_MANUAL_ISO_VALUE, "100"); + mUI.updateProModeText(mode, "Iso" + value); + } else { + String key = getKey(mode); + if (key == null) return; + int index = mSettingsManager.getValueIndex(key); + CharSequence[] cc = mSettingsManager.getEntries(key); + mUI.updateProModeText(mode, cc[index].toString()); + } } @Override @@ -133,6 +145,16 @@ public class ProMode extends View { canvas.drawCircle(curveCoordinate[0], curveCoordinate[1], SELECTED_DOT_SIZE, mPaint); } + } else if (mMode == ISO_MODE) { + mPaint.setColor(Color.WHITE); + canvas.drawCircle(mCurveLeft, mCurveY, DOT_SIZE, mPaint); + canvas.drawCircle(mCurveRight, mCurveY, DOT_SIZE, mPaint); + mPaint.setColor(BLUE); + if (mIsoSlider >= 0) { + mCurveMeasure.getPosTan(mCurveMeasure.getLength() * mIsoSlider, curveCoordinate, null); + canvas.drawCircle(curveCoordinate[0], curveCoordinate[1], SELECTED_DOT_SIZE, + mPaint); + } } else { for (int i = 0; i < mNums; i++) { if (i == mIndex) { @@ -228,6 +250,30 @@ public class ProMode extends View { mParent.addView(v); mAddedViews.add(v); } + } else if (mMode == ISO_MODE) { + int[] isoRange = mSettingsManager.getIsoRangeValues(mSettingsManager.getCurrentCameraId()); + int value = Integer.parseInt(mSettingsManager.getValue(SettingsManager.KEY_MANUAL_ISO_VALUE)); + if (isoRange == null) { + Log.v(TAG, "getIsoRangeValues is NULL"); + return; + } + setIsoSlider((float)value/isoRange[1],true); + int stride = mCurveRight - mCurveLeft; + for (int i = 0; i < 2; i++) { + TextView v = new TextView(mContext); + String s = "" + isoRange[0]; + if (i == 1) s = "" + isoRange[1]; + v.setText(s); + v.setTextColor(Color.WHITE); + v.measure(0, 0); + ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(v.getMeasuredWidth(), + v.getMeasuredHeight()); + v.setLayoutParams(lp); + v.setX(mCurveLeft + i * stride - v.getMeasuredWidth() / 2); + v.setY(mCurveY - 2 * v.getMeasuredHeight()); + mParent.addView(v); + mAddedViews.add(v); + } } else { if (key == null) return; CharSequence[] cc = mSettingsManager.getEntries(key); @@ -273,7 +319,7 @@ public class ProMode extends View { case WHITE_BALANCE_MODE: return SettingsManager.KEY_WHITE_BALANCE; case ISO_MODE: - return SettingsManager.KEY_ISO; + return SettingsManager.KEY_MANUAL_ISO_VALUE; } return null; } @@ -305,6 +351,19 @@ public class ProMode extends View { invalidate(); } + public void setIsoSlider(float slider, boolean forceNotify) { + mIsoSlider = slider; + int[] isoRange = mSettingsManager.getIsoRangeValues(mSettingsManager.getCurrentCameraId()); + int maxIso = 1600; + if (isoRange != null) { + maxIso = isoRange[1]; + } + mSettingsManager.setIsoValue(SettingsManager.KEY_MANUAL_ISO_VALUE, forceNotify, + mIsoSlider, maxIso); + mUI.updateProModeText(mMode, "Iso" + (int)(mIsoSlider * maxIso)); + invalidate(); + } + private void setIndex(int index, boolean force) { if (mIndex == index && !force) return; if (mIndex != -1) { @@ -351,6 +410,11 @@ public class ProMode extends View { if (slider >= 0) { setSlider(slider,false); } + } else if (mMode == ISO_MODE) { + float slider = getSlider(event.getX(), event.getY()); + if (slider >= 0) { + setIsoSlider(slider,false); + } } else { int idx = findButton(event.getX(), event.getY()); if (idx != -1) { |