From 09482a442e4c57a2baa334e94c831491b83cdc13 Mon Sep 17 00:00:00 2001 From: Amir Zaidi Date: Sat, 16 May 2020 22:00:53 +0200 Subject: [PATCH] Shade: Skip wrapping when creating masked icon pack icons --- .../shade/icons/pack/IconResolverMasked.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/shade/src/amirz/shade/icons/pack/IconResolverMasked.java b/shade/src/amirz/shade/icons/pack/IconResolverMasked.java index 37180fbda2..1f0173197c 100644 --- a/shade/src/amirz/shade/icons/pack/IconResolverMasked.java +++ b/shade/src/amirz/shade/icons/pack/IconResolverMasked.java @@ -15,13 +15,10 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; -import com.android.launcher3.icons.BaseIconFactory; import com.android.launcher3.icons.LauncherIcons; import amirz.shade.icons.clock.CustomClock; -import static com.android.launcher3.icons.BaseIconFactory.CONFIG_HINT_NO_WRAP; - public class IconResolverMasked implements IconResolver { private final Context mContext; private final IconPack.Data mData; @@ -63,8 +60,13 @@ public Drawable getIcon(int iconDpi, DefaultDrawableProvider fallback) { try { Resources res = pm.getResourcesForApplication(mPackInfo); - // Scale the bitmap using the icon pack scale. + // Re-render without scaling after creating the bitmap in the right dimensions. Bitmap iconBm = li.createScaledBitmapWithoutShadow(icon, 0); + mCanvas.setBitmap(iconBm); + icon.setBounds(0, 0, iconBm.getWidth(), iconBm.getHeight()); + icon.draw(mCanvas); + + // Scale the bitmap using the icon pack scale. scaleBitmap(iconBm, mData.scale); // Cut parts off using the mask image. @@ -136,8 +138,12 @@ private void maskBitmap(Bitmap bitmap, Drawable mask) { @SuppressLint("WrongConstant") private void backBitmap(Bitmap bitmap, Drawable back, LauncherIcons li) { if (back != null) { - back.setChangingConfigurations(back.getChangingConfigurations() | CONFIG_HINT_NO_WRAP); - Bitmap backBm = li.createScaledBitmapWithoutShadow(back, 0); + Bitmap backBm = Bitmap.createBitmap( + bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); + + mCanvas.setBitmap(backBm); + back.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight()); + back.draw(mCanvas); mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER)); mCanvas.setBitmap(bitmap);