Dominant color is part of icon cache
> Calculating extracted color during icon generation and storing it in model and DB
> Removing unused logic avoid various types of badge rendering
> Icons are badged with extracted colors, while folder is badged with theme color
Bug: 35428783
Change-Id: I93e30c52fbded7515c3ae1778422e84672eafb56
diff --git a/src/com/android/launcher3/FastBitmapDrawable.java b/src/com/android/launcher3/FastBitmapDrawable.java
index 1272e0a..bd19dfa 100644
--- a/src/com/android/launcher3/FastBitmapDrawable.java
+++ b/src/com/android/launcher3/FastBitmapDrawable.java
@@ -32,7 +32,7 @@
import android.util.Property;
import android.util.SparseArray;
-import com.android.launcher3.graphics.IconPalette;
+import com.android.launcher3.graphics.BitmapInfo;
public class FastBitmapDrawable extends Drawable {
@@ -40,19 +40,9 @@
private static final float DISABLED_DESATURATION = 1f;
private static final float DISABLED_BRIGHTNESS = 0.5f;
- public static final TimeInterpolator CLICK_FEEDBACK_INTERPOLATOR = new TimeInterpolator() {
+ public static final TimeInterpolator CLICK_FEEDBACK_INTERPOLATOR = (input) ->
+ (input < 0.05f) ? (input / 0.05f) : ((input < 0.3f) ? 1 : (1 - input) / 0.7f);
- @Override
- public float getInterpolation(float input) {
- if (input < 0.05f) {
- return input / 0.05f;
- } else if (input < 0.3f){
- return 1;
- } else {
- return (1 - input) / 0.7f;
- }
- }
- };
public static final int CLICK_FEEDBACK_DURATION = 2000;
// Since we don't need 256^2 values for combinations of both the brightness and saturation, we
@@ -69,12 +59,11 @@
protected final Paint mPaint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.ANTI_ALIAS_FLAG);
private final Bitmap mBitmap;
+ protected final int mIconColor;
private boolean mIsPressed;
private boolean mIsDisabled;
- private IconPalette mIconPalette;
-
private static final Property<FastBitmapDrawable, Float> BRIGHTNESS
= new Property<FastBitmapDrawable, Float>(Float.TYPE, "brightness") {
@Override
@@ -99,7 +88,20 @@
private ObjectAnimator mBrightnessAnimator;
public FastBitmapDrawable(Bitmap b) {
+ this(b, Color.TRANSPARENT);
+ }
+
+ public FastBitmapDrawable(BitmapInfo info) {
+ this(info.icon, info.color);
+ }
+
+ public FastBitmapDrawable(ItemInfoWithIcon info) {
+ this(info.iconBitmap, info.iconColor);
+ }
+
+ protected FastBitmapDrawable(Bitmap b, int iconColor) {
mBitmap = b;
+ mIconColor = iconColor;
setFilterBitmap(true);
}
@@ -108,14 +110,6 @@
canvas.drawBitmap(mBitmap, null, getBounds(), mPaint);
}
- public IconPalette getIconPalette() {
- if (mIconPalette == null) {
- mIconPalette = IconPalette.fromDominantColor(Utilities
- .findDominantColorByHue(mBitmap, 20), true /* desaturateBackground */);
- }
- return mIconPalette;
- }
-
@Override
public void setColorFilter(ColorFilter cf) {
// No op