Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52fab9f1 authored by John Hoford's avatar John Hoford
Browse files

fix ellipse logic for portrait

bug:9054114
Change-Id: I4bdc7301a60e74bf663fda031c0f2c76ee34b7ec
parent 37be6658
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -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:
                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:
                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: