summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorJohn Hoford <hoford@google.com>2013-05-21 17:11:05 -0700
committerJohn Hoford <hoford@google.com>2013-05-21 18:09:53 -0700
commitaf323d6fe49ab551cb990869d62a9d831c6e8488 (patch)
tree3683d13c4ffb4bbe69f9232cab9b18ef574afd45 /src/com
parentd63f8090161e9924911840ef6c7c8e2ef16d2866 (diff)
downloadandroid_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')
-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: