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

Commit 75708262 authored by Pat Manning's avatar Pat Manning
Browse files

Update scaleRectAboutCenter to correctly account for negative left/top values...

Update scaleRectAboutCenter to correctly account for negative left/top values and floating point errors using centerX/Y.

Fix: 290211274
Test: manual.

Change-Id: Ieddce683d76c696b5ac3eae4fb9f73a5827a50ad
parent 3396b5c3
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -334,14 +334,12 @@ public final class Utilities {

    public static void scaleRectAboutCenter(Rect r, float scale) {
        if (scale != 1.0f) {
            int cx = r.centerX();
            int cy = r.centerY();
            r.offset(-cx, -cy);
            r.left = (int) (r.left * scale + 0.5f);
            r.top = (int) (r.top * scale + 0.5f);
            r.right = (int) (r.right * scale + 0.5f);
            r.bottom = (int) (r.bottom * scale + 0.5f);
            r.offset(cx, cy);
            float cx = r.exactCenterX();
            float cy = r.exactCenterY();
            r.left = Math.round(cx + (r.left - cx) * scale);
            r.top = Math.round(cy + (r.top - cy) * scale);
            r.right = Math.round(cx + (r.right - cx) * scale);
            r.bottom = Math.round(cy + (r.bottom - cy) * scale);
        }
    }