summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2012-10-15 16:11:04 -0700
committerJohn Reck <jreck@google.com>2012-10-15 16:30:12 -0700
commit6d3d603b15ec260b70223460fd92db31394e112e (patch)
tree2dc99cb042ec7b1d5b492b8154675ed12ec0e368
parentbb9b933ce04eb50c85c0c592ebbc85d00dcbf47f (diff)
downloadandroid_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.java3
-rw-r--r--src/com/android/gallery3d/ui/PhotoView.java17
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;
}