diff options
-rw-r--r-- | res/values/config.xml | 3 | ||||
-rw-r--r-- | src/com/android/launcher3/dynamicui/ColorExtractionAlgorithm.java (renamed from src/com/android/launcher3/dynamicui/colorextraction/types/Tonal.java) | 63 | ||||
-rw-r--r-- | src/com/android/launcher3/dynamicui/WallpaperColorInfo.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/dynamicui/colorextraction/types/ExtractionType.java | 22 | ||||
-rw-r--r-- | src_flags/com/android/launcher3/config/FeatureFlags.java | 2 |
5 files changed, 39 insertions, 57 deletions
diff --git a/res/values/config.xml b/res/values/config.xml index a467a5ccc..9b7c795cc 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -105,6 +105,9 @@ <!-- Name of a user event dispatcher class. --> <string name="user_event_dispatcher_class" translatable="false"></string> + <!-- Name of a color extraction implementation class. --> + <string name="color_extraction_impl_class" translatable="false"></string> + <!-- Package name of the default wallpaper picker. --> <string name="wallpaper_picker_package" translatable="false"></string> diff --git a/src/com/android/launcher3/dynamicui/colorextraction/types/Tonal.java b/src/com/android/launcher3/dynamicui/ColorExtractionAlgorithm.java index 7c131f117..5a0e78b12 100644 --- a/src/com/android/launcher3/dynamicui/colorextraction/types/Tonal.java +++ b/src/com/android/launcher3/dynamicui/ColorExtractionAlgorithm.java @@ -1,5 +1,22 @@ -package com.android.launcher3.dynamicui.colorextraction.types; +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3.dynamicui; +import android.content.Context; import android.graphics.Color; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -8,6 +25,8 @@ import android.util.Log; import android.util.Pair; import android.util.SparseIntArray; +import com.android.launcher3.R; +import com.android.launcher3.Utilities; import com.android.launcher3.compat.WallpaperColorsCompat; import java.util.ArrayList; @@ -15,13 +34,16 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; - /** * Implementation of tonal color extraction - * - * TODO remove this class if available by platform - */ -public class Tonal implements ExtractionType { + **/ +public class ColorExtractionAlgorithm { + + public static ColorExtractionAlgorithm newInstance(Context context) { + return Utilities.getOverrideObject(ColorExtractionAlgorithm.class, + context.getApplicationContext(), R.string.color_extraction_impl_class); + } + private static final String TAG = "Tonal"; // Used for tonal palette fitting @@ -32,6 +54,9 @@ public class Tonal implements ExtractionType { private static final float MIN_COLOR_OCCURRENCE = 0.1f; private static final float MIN_LUMINOSITY = 0.5f; + public ColorExtractionAlgorithm() { + } + public @Nullable Pair<Integer, Integer> extractInto(WallpaperColorsCompat wallpaperColors) { if (wallpaperColors == null) { return null; @@ -142,34 +167,12 @@ public class Tonal implements ExtractionType { float delta = v - data[index]; for (int i = 0; i < data.length; i++) { - fitData[i] = constrain(data[i] + delta, min, max); + fitData[i] = Utilities.boundToRange(data[i] + delta, min, max); } return fitData; } - // TODO no MathUtils - private static float constrain(float x, float min, float max) { - x = Math.min(x, max); - x = Math.max(x, min); - return x; - } - - /*function adjustSatLumForFit(val, points, fitIndex) { - var fitValue = lerpBetweenPoints(points, fitIndex); - var diff = val - fitValue; - - var newPoints = []; - for (var ii=0; ii<points.length; ii++) { - var point = [points[ii][0], points[ii][1]]; - point[1] += diff; - if (point[1] > 1) point[1] = 1; - if (point[1] < 0) point[1] = 0; - newPoints[ii] = point; - } - return newPoints; - }*/ - /** * Finds the closest color in a palette, given another HSL color * @@ -308,5 +311,5 @@ public class Tonal implements ExtractionType { new float[] { 0.241f, 0.316f, 0.46f, 0.586f, 0.655f, 0.7f, 0.75f, 0.8f, 0.84f, 0.88f } ) }; -} +} diff --git a/src/com/android/launcher3/dynamicui/WallpaperColorInfo.java b/src/com/android/launcher3/dynamicui/WallpaperColorInfo.java index 20fc42431..ca85b6af1 100644 --- a/src/com/android/launcher3/dynamicui/WallpaperColorInfo.java +++ b/src/com/android/launcher3/dynamicui/WallpaperColorInfo.java @@ -7,8 +7,6 @@ import android.util.Pair; import com.android.launcher3.compat.WallpaperColorsCompat; import com.android.launcher3.compat.WallpaperManagerCompat; -import com.android.launcher3.dynamicui.colorextraction.types.ExtractionType; -import com.android.launcher3.dynamicui.colorextraction.types.Tonal; import java.util.ArrayList; @@ -31,7 +29,7 @@ public class WallpaperColorInfo implements WallpaperManagerCompat.OnColorsChange private final ArrayList<OnChangeListener> mListeners = new ArrayList<>(); private final WallpaperManagerCompat mWallpaperManager; - private final ExtractionType mExtractionType; + private final ColorExtractionAlgorithm mExtractionType; private int mMainColor; private int mSecondaryColor; private boolean mIsDark; @@ -40,7 +38,7 @@ public class WallpaperColorInfo implements WallpaperManagerCompat.OnColorsChange private WallpaperColorInfo(Context context) { mWallpaperManager = WallpaperManagerCompat.getInstance(context); mWallpaperManager.addOnColorsChangedListener(this); - mExtractionType = new Tonal(); // TODO create and use DefaultExtractionLogic + mExtractionType = ColorExtractionAlgorithm.newInstance(context); update(mWallpaperManager.getWallpaperColors(FLAG_SYSTEM)); } diff --git a/src/com/android/launcher3/dynamicui/colorextraction/types/ExtractionType.java b/src/com/android/launcher3/dynamicui/colorextraction/types/ExtractionType.java deleted file mode 100644 index ba7408f60..000000000 --- a/src/com/android/launcher3/dynamicui/colorextraction/types/ExtractionType.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.android.launcher3.dynamicui.colorextraction.types; - -import android.support.annotation.Nullable; -import android.util.Pair; - -import com.android.launcher3.compat.WallpaperColorsCompat; - - -/** - * Interface to allow various color extraction implementations. - */ -public interface ExtractionType { - - /** - * Executes color extraction by reading WallpaperColors and setting - * main and secondary colors. - * - * @param wallpaperColors where to read from - * @return a pair of main and secondary color - */ - @Nullable Pair<Integer, Integer> extractInto(WallpaperColorsCompat wallpaperColors); -} diff --git a/src_flags/com/android/launcher3/config/FeatureFlags.java b/src_flags/com/android/launcher3/config/FeatureFlags.java index 656246667..ed169b6f1 100644 --- a/src_flags/com/android/launcher3/config/FeatureFlags.java +++ b/src_flags/com/android/launcher3/config/FeatureFlags.java @@ -39,7 +39,7 @@ public final class FeatureFlags { // When enabled the promise icon is visible in all apps while installation an app. public static boolean LAUNCHER3_PROMISE_APPS_IN_ALL_APPS = true; // When enabled uses the AllAppsRadialGradientAndScrimDrawable for all apps - public static boolean LAUNCHER3_GRADIENT_ALL_APPS = false; + public static boolean LAUNCHER3_GRADIENT_ALL_APPS = true; // When enabled allows use of physics based motions in the Launcher. public static boolean LAUNCHER3_PHYSICS = true; |