summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoris Liu <tianliu@google.com>2013-08-29 00:02:22 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-08-29 00:02:23 +0000
commit0df03318d36f77aaec11238854921bd45f50c035 (patch)
tree2854f7ae6a360be855fff953f19675b9b88047c3
parent2d1c49c2959d8b5adecd8bb5668fd50c1bf0190c (diff)
parent29da2db13029f8896018836693139a05d1139362 (diff)
downloadandroid_packages_apps_Snap-0df03318d36f77aaec11238854921bd45f50c035.tar.gz
android_packages_apps_Snap-0df03318d36f77aaec11238854921bd45f50c035.tar.bz2
android_packages_apps_Snap-0df03318d36f77aaec11238854921bd45f50c035.zip
Merge "Flip capture thumb when using front facing camera" into gb-ub-photos-carlsbad
-rw-r--r--src/com/android/camera/PhotoModule.java12
-rw-r--r--src/com/android/camera/PhotoUI.java16
2 files changed, 18 insertions, 10 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index f56bd68f0..cdd27f148 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -184,6 +184,8 @@ public class PhotoModule
private int mDisplayOrientation;
// The value for android.hardware.Camera.Parameters.setRotation.
private int mJpegRotation;
+ // Indicates whether we are using front camera
+ private boolean mMirror;
private boolean mFirstTimeInitialized;
private boolean mIsImageCaptureIntent;
@@ -471,8 +473,8 @@ public class PhotoModule
}
initializeCapabilities();
CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId];
- boolean mirror = (info.facing == CameraInfo.CAMERA_FACING_FRONT);
- mFocusManager.setMirror(mirror);
+ mMirror = (info.facing == CameraInfo.CAMERA_FACING_FRONT);
+ mFocusManager.setMirror(mMirror);
mFocusManager.setParameters(mInitialParams);
setupPreview();
@@ -752,7 +754,7 @@ public class PhotoModule
orientation, exif, mOnMediaSavedListener, mContentResolver);
}
// Animate capture with real jpeg data instead of a preview frame.
- mUI.animateCapture(jpegData, orientation);
+ mUI.animateCapture(jpegData, orientation, mMirror);
} else {
mJpegImageData = jpegData;
if (!mQuickCapture) {
@@ -1300,11 +1302,11 @@ public class PhotoModule
mFocusManager.removeMessages();
} else {
CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId];
- boolean mirror = (info.facing == CameraInfo.CAMERA_FACING_FRONT);
+ mMirror = (info.facing == CameraInfo.CAMERA_FACING_FRONT);
String[] defaultFocusModes = mActivity.getResources().getStringArray(
R.array.pref_camera_focusmode_default_array);
mFocusManager = new FocusOverlayManager(mPreferences, defaultFocusModes,
- mInitialParams, this, mirror,
+ mInitialParams, this, mMirror,
mActivity.getMainLooper(), mUI);
}
}
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index 7adb27f90..a29630f81 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -148,19 +148,25 @@ public class PhotoUI implements PieListener,
private class DecodeTask extends AsyncTask<Integer, Void, Bitmap> {
private final byte [] mData;
private int mOrientation;
+ private boolean mMirror;
- public DecodeTask(byte[] data, int orientation) {
+ public DecodeTask(byte[] data, int orientation, boolean mirror) {
mData = data;
mOrientation = orientation;
+ mMirror = mirror;
}
@Override
protected Bitmap doInBackground(Integer... params) {
// Decode image in background.
Bitmap bitmap = CameraUtil.downSample(mData, DOWN_SAMPLE_FACTOR);
- if (mOrientation != 0) {
+ if (mOrientation != 0 || mMirror) {
Matrix m = new Matrix();
- m.postRotate(mOrientation);
+ m.preRotate(mOrientation);
+ if (mMirror) {
+ // Flip horizontally
+ m.setScale(-1f, 1f);
+ }
return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m,
false);
}
@@ -308,9 +314,9 @@ public class PhotoUI implements PieListener,
updateOnScreenIndicators(params, prefGroup, prefs);
}
- public void animateCapture(final byte[] jpegData, int orientation) {
+ public void animateCapture(final byte[] jpegData, int orientation, boolean mirror) {
// Decode jpeg byte array and then animate the jpeg
- DecodeTask task = new DecodeTask(jpegData, orientation);
+ DecodeTask task = new DecodeTask(jpegData, orientation, mirror);
task.execute();
}