diff options
author | John Hoford <hoford@google.com> | 2013-05-21 17:11:05 -0700 |
---|---|---|
committer | John Hoford <hoford@google.com> | 2013-05-21 18:09:53 -0700 |
commit | af323d6fe49ab551cb990869d62a9d831c6e8488 (patch) | |
tree | 3683d13c4ffb4bbe69f9232cab9b18ef574afd45 /src/com/android/gallery3d | |
parent | d63f8090161e9924911840ef6c7c8e2ef16d2866 (diff) | |
download | android_packages_apps_Snap-af323d6fe49ab551cb990869d62a9d831c6e8488.tar.gz android_packages_apps_Snap-af323d6fe49ab551cb990869d62a9d831c6e8488.tar.bz2 android_packages_apps_Snap-af323d6fe49ab551cb990869d62a9d831c6e8488.zip |
fix ellipse logic for portrait
bug:9054114
Change-Id: I4bdc7301a60e74bf663fda031c0f2c76ee34b7ec
Diffstat (limited to 'src/com/android/gallery3d')
-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: |