diff options
author | Doris Liu <tianliu@google.com> | 2013-08-29 00:02:22 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-08-29 00:02:23 +0000 |
commit | 0df03318d36f77aaec11238854921bd45f50c035 (patch) | |
tree | 2854f7ae6a360be855fff953f19675b9b88047c3 | |
parent | 2d1c49c2959d8b5adecd8bb5668fd50c1bf0190c (diff) | |
parent | 29da2db13029f8896018836693139a05d1139362 (diff) | |
download | android_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.java | 12 | ||||
-rw-r--r-- | src/com/android/camera/PhotoUI.java | 16 |
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(); } |