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

Commit 5b56c5fb authored by Evan Laird's avatar Evan Laird Committed by Cherrypicker Worker
Browse files

Add pixel scaling to ScreenDecorationUtils

SreenDecorationUtils was querying rounded_corner_radius directly using
static methods defined in RoundedCorners.java, and was not taking into
consideration the potential for physical pixel scaling.

This CL replicates the logic that exists in RoundedCorners.java and
ScreenDecorations.java to implement similar scaling in the static
getter.

Test: manual
Flag: NONE
Bug: 335357341
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:1bd662453b41f64bcafdb125aae73782bdc40a4c)
Merged-In: I3ce403510b3ca35970685fc97a4fbcedaeb79151
Change-Id: I3ce403510b3ca35970685fc97a4fbcedaeb79151
parent 27c58b4b
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@ package com.android.internal.policy;

import android.content.Context;
import android.content.res.Resources;
import android.util.DisplayUtils;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.RoundedCorners;

import com.android.internal.R;
@@ -57,11 +60,31 @@ public class ScreenDecorationsUtils {
            bottomRadius = defaultRadius;
        }

        // If the physical pixels are scaled, apply it here
        float scale = getPhysicalPixelDisplaySizeRatio(context);
        if (scale != 1f) {
            topRadius = topRadius * scale;
            bottomRadius = bottomRadius * scale;
        }

        // Always use the smallest radius to make sure the rounded corners will
        // completely cover the display.
        return Math.min(topRadius, bottomRadius);
    }

    static float getPhysicalPixelDisplaySizeRatio(Context context) {
        DisplayInfo displayInfo = new DisplayInfo();
        context.getDisplay().getDisplayInfo(displayInfo);
        final Display.Mode maxDisplayMode =
                DisplayUtils.getMaximumResolutionDisplayMode(displayInfo.supportedModes);
        if (maxDisplayMode == null) {
            return 1f;
        }
        return DisplayUtils.getPhysicalPixelDisplaySizeRatio(
                maxDisplayMode.getPhysicalWidth(), maxDisplayMode.getPhysicalHeight(),
                displayInfo.getNaturalWidth(), displayInfo.getNaturalHeight());
    }

    /**
     * If live rounded corners are supported on windows.
     */