diff options
author | John Reck <jreck@google.com> | 2012-10-15 16:11:04 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2012-10-15 16:30:12 -0700 |
commit | 6d3d603b15ec260b70223460fd92db31394e112e (patch) | |
tree | 2dc99cb042ec7b1d5b492b8154675ed12ec0e368 | |
parent | bb9b933ce04eb50c85c0c592ebbc85d00dcbf47f (diff) | |
download | android_packages_apps_Snap-6d3d603b15ec260b70223460fd92db31394e112e.tar.gz android_packages_apps_Snap-6d3d603b15ec260b70223460fd92db31394e112e.tar.bz2 android_packages_apps_Snap-6d3d603b15ec260b70223460fd92db31394e112e.zip |
Fix SRI Pano orientation
Bug: 7345511
Change-Id: I9a06f03b67ba820b86520588415ff3ab16f05829
-rw-r--r-- | src/com/android/gallery3d/ui/GLRoot.java | 3 | ||||
-rw-r--r-- | src/com/android/gallery3d/ui/PhotoView.java | 17 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/com/android/gallery3d/ui/GLRoot.java b/src/com/android/gallery3d/ui/GLRoot.java index 1651b4361..13b610b23 100644 --- a/src/com/android/gallery3d/ui/GLRoot.java +++ b/src/com/android/gallery3d/ui/GLRoot.java @@ -16,6 +16,7 @@ package com.android.gallery3d.ui; +import android.content.Context; import android.graphics.Matrix; import com.android.gallery3d.anim.CanvasAnimation; @@ -45,4 +46,6 @@ public interface GLRoot { public void freeze(); public void unfreeze(); public void setLightsOutMode(boolean enabled); + + public Context getContext(); } diff --git a/src/com/android/gallery3d/ui/PhotoView.java b/src/com/android/gallery3d/ui/PhotoView.java index 5978159e4..c6bf535db 100644 --- a/src/com/android/gallery3d/ui/PhotoView.java +++ b/src/com/android/gallery3d/ui/PhotoView.java @@ -17,6 +17,7 @@ package com.android.gallery3d.ui; import android.content.Context; +import android.content.res.Configuration; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Rect; @@ -546,10 +547,20 @@ public class PhotoView extends GLView { } private int getPanoramaRotation() { - // Panorama only support rotations of 0 and 90, so if it is greater - // than that flip the output surface texture to compensate - if (mDisplayRotation > 180) + // This function is magic + // The issue here is that Pano makes bad assumptions about rotation and + // orientation. The first is it assumes only two rotations are possible, + // 0 and 90. Thus, if display rotation is >= 180, we invert the output. + // The second is that it assumes landscape is a 90 rotation from portrait, + // however on landscape devices this is not true. Thus, if we are in portrait + // on a landscape device, we need to invert the output + int orientation = getGLRoot().getContext().getResources().getConfiguration().orientation; + boolean invertPortrait = (orientation == Configuration.ORIENTATION_PORTRAIT + && (mDisplayRotation == 90 || mDisplayRotation == 270)); + boolean invert = (mDisplayRotation >= 180); + if (invert != invertPortrait) { return (mCompensation + 180) % 360; + } return mCompensation; } |