Ensure iconScale never exceeds 1.

The rest of the scaled values should scale accordingly.

Bug: 190777089
Test: manual
Change-Id: I97f1724b7e96eea3ad81c295a98ccb71da756abb
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 009e098..88e8171 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -120,6 +120,7 @@
     public int iconDrawablePaddingPx;
     public int iconDrawablePaddingOriginalPx;
 
+    public float cellScaleToFit;
     public int cellWidthPx;
     public int cellHeightPx;
     public int workspaceCellPaddingXPx;
@@ -354,20 +355,20 @@
         // Now that we have all of the variables calculated, we can tune certain sizes.
         if (isScalableGrid && inv.devicePaddings != null) {
             // Paddings were created assuming no scaling, so we first unscale the extra space.
-            int unscaledExtraSpace = (int) (extraSpace / iconScale);
+            int unscaledExtraSpace = (int) (extraSpace / cellScaleToFit);
             DevicePadding padding = inv.devicePaddings.getDevicePadding(unscaledExtraSpace);
 
             int paddingWorkspaceTop = padding.getWorkspaceTopPadding(unscaledExtraSpace);
             int paddingWorkspaceBottom = padding.getWorkspaceBottomPadding(unscaledExtraSpace);
             int paddingHotseatBottom = padding.getHotseatBottomPadding(unscaledExtraSpace);
 
-            workspaceTopPadding = Math.round(paddingWorkspaceTop * iconScale);
-            workspaceBottomPadding = Math.round(paddingWorkspaceBottom * iconScale);
-            extraHotseatBottomPadding = Math.round(paddingHotseatBottom * iconScale);
+            workspaceTopPadding = Math.round(paddingWorkspaceTop * cellScaleToFit);
+            workspaceBottomPadding = Math.round(paddingWorkspaceBottom * cellScaleToFit);
+            extraHotseatBottomPadding = Math.round(paddingHotseatBottom * cellScaleToFit);
 
             hotseatBarSizePx += extraHotseatBottomPadding;
 
-            qsbBottomMarginPx = Math.round(qsbBottomMarginOriginalPx * iconScale);
+            qsbBottomMarginPx = Math.round(qsbBottomMarginOriginalPx * cellScaleToFit);
         } else if (!isVerticalBarLayout() && isPhone && isTallDevice) {
             // We increase the hotseat size when there is extra space.
             // ie. For a display with a large aspect ratio, we can keep the icons on the workspace
@@ -535,15 +536,18 @@
      * hotseat sizes, workspaceSpringLoadedShrinkFactor, folderIconSizePx, and folderIconOffsetYPx.
      */
     public void updateIconSize(float scale, Resources res) {
-        iconScale = scale;
+        // Icon scale should never exceed 1, otherwise pixellation may occur.
+        iconScale = Math.min(1f, scale);
+        cellScaleToFit = scale;
+
 
         // Workspace
         final boolean isVerticalLayout = isVerticalBarLayout();
         float invIconSizeDp = isLandscape ? inv.landscapeIconSize : inv.iconSize;
-        iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale));
+        iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, iconScale));
         float invIconTextSizeSp = isLandscape ? inv.landscapeIconTextSize : inv.iconTextSize;
-        iconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * scale);
-        iconDrawablePaddingPx = (int) (iconDrawablePaddingOriginalPx * scale);
+        iconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * iconScale);
+        iconDrawablePaddingPx = (int) (iconDrawablePaddingOriginalPx * iconScale);
 
         setCellLayoutBorderSpacing((int) (cellLayoutBorderSpacingOriginalPx * scale));
 
@@ -887,6 +891,9 @@
         writer.println(prefix + "\tinv.minCellWidth:" + inv.minCellWidth + "dp");
         writer.println(prefix + "\tinv.minCellHeight:" + inv.minCellHeight + "dp");
 
+        writer.println(prefix + "\tinv.numColumns:" + inv.numColumns);
+        writer.println(prefix + "\tinv.numRows:" + inv.numRows);
+
         writer.println(prefix + pxToDpStr("cellWidthPx", cellWidthPx));
         writer.println(prefix + pxToDpStr("cellHeightPx", cellHeightPx));
 
@@ -940,7 +947,8 @@
         writer.println(prefix + pxToDpStr("workspacePadding.right", workspacePadding.right));
         writer.println(prefix + pxToDpStr("workspacePadding.bottom", workspacePadding.bottom));
 
-        writer.println(prefix + pxToDpStr("scaleToFit", iconScale));
+        writer.println(prefix + pxToDpStr("iconScale", iconScale));
+        writer.println(prefix + pxToDpStr("cellScaleToFit ", cellScaleToFit));
         writer.println(prefix + pxToDpStr("extraSpace", extraSpace));
 
         if (inv.devicePaddings != null) {