diff options
author | John Hoford <hoford@google.com> | 2013-05-22 13:12:15 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-05-22 13:12:15 -0700 |
commit | 4eb1825cb6c305f1c4479f55fac9047a4001b8e4 (patch) | |
tree | 21be0fe72467d9f8394eba3045d76c755523a101 /src/com/android | |
parent | e3ea05489d870d9fb0c6c45401e01a07c7b90b4c (diff) | |
parent | 3d4fbf40115389ed33487db2059048163c9afd1a (diff) | |
download | android_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.java | 25 |
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: |