diff options
author | Doris Liu <tianliu@google.com> | 2013-10-28 14:44:24 -0700 |
---|---|---|
committer | Doris Liu <tianliu@google.com> | 2013-10-28 15:31:29 -0700 |
commit | 36ebcb11b15fb00d3a641499c0f8a16745a2fbb0 (patch) | |
tree | db8c6bfd18f48907c05212b41262c42343a62a06 /src/com/android/camera/util | |
parent | 5737b93254f451859c7924792c46354d385da946 (diff) | |
download | android_packages_apps_Snap-36ebcb11b15fb00d3a641499c0f8a16745a2fbb0.tar.gz android_packages_apps_Snap-36ebcb11b15fb00d3a641499c0f8a16745a2fbb0.tar.bz2 android_packages_apps_Snap-36ebcb11b15fb00d3a641499c0f8a16745a2fbb0.zip |
Fix the mapping between preview UI and camera sensor
Bug: 11409659
Change-Id: I46ae3d7797590d59befbdc394d5304f14a212a80
Diffstat (limited to 'src/com/android/camera/util')
-rw-r--r-- | src/com/android/camera/util/CameraUtil.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java index eff0c4078..cbc9ebe34 100644 --- a/src/com/android/camera/util/CameraUtil.java +++ b/src/com/android/camera/util/CameraUtil.java @@ -678,6 +678,16 @@ public class CameraUtil { rect.bottom = Math.round(rectF.bottom); } + public static Rect rectFToRect(RectF rectF) { + Rect rect = new Rect(); + rectFToRect(rectF, rect); + return rect; + } + + public static RectF rectToRectF(Rect r) { + return new RectF(r.left, r.top, r.right, r.bottom); + } + public static void prepareMatrix(Matrix matrix, boolean mirror, int displayOrientation, int viewWidth, int viewHeight) { // Need mirror for front camera. @@ -690,6 +700,21 @@ public class CameraUtil { matrix.postTranslate(viewWidth / 2f, viewHeight / 2f); } + public static void prepareMatrix(Matrix matrix, boolean mirror, int displayOrientation, + Rect previewRect) { + // Need mirror for front camera. + matrix.setScale(mirror ? -1 : 1, 1); + // This is the value for android.hardware.Camera.setDisplayOrientation. + matrix.postRotate(displayOrientation); + + // Camera driver coordinates range from (-1000, -1000) to (1000, 1000). + // We need to map camera driver coordinates to preview rect coordinates + Matrix mapping = new Matrix(); + mapping.setRectToRect(new RectF(-1000, -1000, 1000, 1000), rectToRectF(previewRect), + Matrix.ScaleToFit.FILL); + matrix.setConcat(mapping, matrix); + } + public static String createJpegName(long dateTaken) { synchronized (sImageFileNamer) { return sImageFileNamer.generateName(dateTaken); |