summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorJohn Hoford <hoford@google.com>2013-05-22 13:12:15 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-05-22 13:12:15 -0700
commit4eb1825cb6c305f1c4479f55fac9047a4001b8e4 (patch)
tree21be0fe72467d9f8394eba3045d76c755523a101 /src/com/android
parente3ea05489d870d9fb0c6c45401e01a07c7b90b4c (diff)
parent3d4fbf40115389ed33487db2059048163c9afd1a (diff)
downloadandroid_packages_apps_Gallery2-4eb1825cb6c305f1c4479f55fac9047a4001b8e4.tar.gz
android_packages_apps_Gallery2-4eb1825cb6c305f1c4479f55fac9047a4001b8e4.tar.bz2
android_packages_apps_Gallery2-4eb1825cb6c305f1c4479f55fac9047a4001b8e4.zip
am 3d4fbf40: am 4d25d129: Merge "fix ellipse logic for portrait" into gb-ub-photos-bryce
* commit '3d4fbf40115389ed33487db2059048163c9afd1a': fix ellipse logic for portrait
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/EclipseControl.java25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/filtershow/imageshow/EclipseControl.java b/src/com/android/gallery3d/filtershow/imageshow/EclipseControl.java
index e334fc9f4..8ceb37599 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/EclipseControl.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/EclipseControl.java
@@ -118,6 +118,13 @@ public class EclipseControl {
mScrToImg.mapPoints(point);
x = point[0];
y = point[1];
+
+ // Test if the matrix is swapping x and y
+ point[0] = 0;
+ point[1] = 1;
+ mScrToImg.mapVectors(point);
+ boolean swapxy = (point[0] > 0.0f);
+
int sign = 1;
switch (handle) {
case HAN_CENTER:
@@ -129,14 +136,24 @@ public class EclipseControl {
case HAN_NORTH:
sign = -1;
case HAN_SOUTH:
- float raddy = mDownRadiusY - Math.abs(mDownY - mDownCenterY);
- oval.setRadiusY(Math.abs(y - oval.getCenterY() + sign * raddy));
+ if (swapxy) {
+ float raddx = mDownRadiusY - Math.abs(mDownX - mDownCenterY);
+ oval.setRadiusY(Math.abs(x - oval.getCenterY() + sign * raddx));
+ } else {
+ float raddy = mDownRadiusY - Math.abs(mDownY - mDownCenterY);
+ oval.setRadiusY(Math.abs(y - oval.getCenterY() + sign * raddy));
+ }
break;
case HAN_EAST:
sign = -1;
case HAN_WEST:
- float raddx = mDownRadiusX - Math.abs(mDownX - mDownCenterX);
- oval.setRadiusX(Math.abs(x - oval.getCenterX() - sign * raddx));
+ if (swapxy) {
+ float raddy = mDownRadiusX - Math.abs(mDownY - mDownCenterX);
+ oval.setRadiusX(Math.abs(y - oval.getCenterX() + sign * raddy));
+ } else {
+ float raddx = mDownRadiusX - Math.abs(mDownX - mDownCenterX);
+ oval.setRadiusX(Math.abs(x - oval.getCenterX() - sign * raddx));
+ }
break;
case HAN_SE:
case HAN_NE: