Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: ui/gfx/color_analysis.cc

Issue 2943333003: Extracting more than one wallpaper prominent color (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/gfx/color_analysis.cc
diff --git a/ui/gfx/color_analysis.cc b/ui/gfx/color_analysis.cc
index 6a2e87850f69ddbdfc9b2656616dcf5409b0310a..568adbaf3e5bfe3c005e108020e88c6eb7e90c3c 100644
--- a/ui/gfx/color_analysis.cc
+++ b/ui/gfx/color_analysis.cc
@@ -455,6 +455,57 @@ SkColor CalculateProminentColor(const SkBitmap& bitmap,
return best_color;
}
+SkColor CalculateProminentColorOfBitmap(const SkBitmap& bitmap,
+ LumaRange luma,
+ SaturationRange saturation) {
+ if (bitmap.empty() || bitmap.isNull())
+ return SK_ColorTRANSPARENT;
+
+ // The hue is not relevant to our bounds or goal colors.
+ HSL lower_bound = {
+ -1,
+ };
+ HSL upper_bound = {
+ -1,
+ };
+ HSL goal = {
+ -1,
+ };
+
+ switch (luma) {
+ case LumaRange::LIGHT:
+ lower_bound.l = 0.55f;
+ upper_bound.l = 1;
+ goal.l = 0.74f;
+ break;
+ case LumaRange::NORMAL:
+ lower_bound.l = 0.3f;
+ upper_bound.l = 0.7f;
+ goal.l = 0.5f;
+ break;
+ case LumaRange::DARK:
+ lower_bound.l = 0;
+ upper_bound.l = 0.45f;
+ goal.l = 0.26f;
+ break;
+ }
+
+ switch (saturation) {
+ case SaturationRange::VIBRANT:
+ lower_bound.s = 0.35f;
+ upper_bound.s = 1;
+ goal.s = 1;
+ break;
+ case SaturationRange::MUTED:
+ lower_bound.s = 0;
+ upper_bound.s = 0.4f;
+ goal.s = 0.3f;
+ break;
+ }
+
+ return CalculateProminentColor(bitmap, lower_bound, upper_bound, goal);
bruthig 2017/06/20 15:32:14 estade@ will be able to better advise but IIUC Cal
Evan Stade 2017/06/20 17:11:08 yes, as explained in the email, we only want to re
Qiang(Joe) Xu 2017/06/20 22:48:55 done, thanks for explaining!
+}
+
} // namespace
KMeanImageSampler::KMeanImageSampler() {
@@ -723,55 +774,15 @@ SkColor CalculateKMeanColorOfBitmap(const SkBitmap& bitmap) {
bitmap, kDefaultLowerHSLBound, kDefaultUpperHSLBound, &sampler);
}
-SkColor CalculateProminentColorOfBitmap(const SkBitmap& bitmap,
- LumaRange luma,
- SaturationRange saturation) {
- if (bitmap.empty() || bitmap.isNull())
- return SK_ColorTRANSPARENT;
-
- // The hue is not relevant to our bounds or goal colors.
- HSL lower_bound = {
- -1,
- };
- HSL upper_bound = {
- -1,
- };
- HSL goal = {
- -1,
- };
-
- switch (luma) {
- case LumaRange::LIGHT:
- lower_bound.l = 0.55f;
- upper_bound.l = 1;
- goal.l = 0.74f;
- break;
- case LumaRange::NORMAL:
- lower_bound.l = 0.3f;
- upper_bound.l = 0.7f;
- goal.l = 0.5f;
- break;
- case LumaRange::DARK:
- lower_bound.l = 0;
- upper_bound.l = 0.45f;
- goal.l = 0.26f;
- break;
- }
-
- switch (saturation) {
- case SaturationRange::VIBRANT:
- lower_bound.s = 0.35f;
- upper_bound.s = 1;
- goal.s = 1;
- break;
- case SaturationRange::MUTED:
- lower_bound.s = 0;
- upper_bound.s = 0.4f;
- goal.s = 0.3f;
- break;
+std::vector<SkColor> CalculateProminentColorsOfBitmap(
+ const SkBitmap& bitmap,
+ const ColorProfiles& color_profiles) {
+ std::vector<SkColor> colors;
+ for (auto profile : color_profiles) {
+ colors.push_back(CalculateProminentColorOfBitmap(bitmap, profile.luma,
+ profile.saturation));
}
-
- return CalculateProminentColor(bitmap, lower_bound, upper_bound, goal);
+ return colors;
}
gfx::Matrix3F ComputeColorCovariance(const SkBitmap& bitmap) {

Powered by Google App Engine
This is Rietveld 408576698