diff options
author | John Hoford <hoford@google.com> | 2013-05-22 13:09:16 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-05-22 13:09:16 -0700 |
commit | 3d4fbf40115389ed33487db2059048163c9afd1a (patch) | |
tree | 14485611a19859a83836621556e8a2b556911453 /src/com/android | |
parent | 410635e7f8df429fcecc328bf6191b053b989004 (diff) | |
parent | 4d25d129d1c9f92033382e12260d3f40521cf3fd (diff) | |
download | android_packages_apps_Gallery2-3d4fbf40115389ed33487db2059048163c9afd1a.tar.gz android_packages_apps_Gallery2-3d4fbf40115389ed33487db2059048163c9afd1a.tar.bz2 android_packages_apps_Gallery2-3d4fbf40115389ed33487db2059048163c9afd1a.zip |
am 4d25d129: Merge "fix ellipse logic for portrait" into gb-ub-photos-bryce
* commit '4d25d129d1c9f92033382e12260d3f40521cf3fd':
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: |