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

Unified Diff: chrome/browser/ui/libgtkui/gtk_util.cc

Issue 2579683002: LibGtkUi: Partition NativeThemeGtk into NativeThemeGtk2 and NativeThemeGtk3 (Closed)
Patch Set: Fix lsan error Created 4 years 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
« no previous file with comments | « chrome/browser/ui/libgtkui/gtk_util.h ('k') | chrome/browser/ui/libgtkui/native_theme_gtk.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/libgtkui/gtk_util.cc
diff --git a/chrome/browser/ui/libgtkui/gtk_util.cc b/chrome/browser/ui/libgtkui/gtk_util.cc
index 6b83e386e6f109608d19937329ffc16bbd265078..aab971785907c7b330a0fd56d43f49e7cde63823 100644
--- a/chrome/browser/ui/libgtkui/gtk_util.cc
+++ b/chrome/browser/ui/libgtkui/gtk_util.cc
@@ -19,6 +19,7 @@
#include "ui/base/accelerators/accelerator.h"
#include "ui/events/event_constants.h"
#include "ui/events/keycodes/keyboard_code_conversion_x.h"
+#include "ui/gfx/color_utils.h"
#include "ui/gfx/geometry/size.h"
namespace {
@@ -52,6 +53,52 @@ void CommonInitFromCommandLine(const base::CommandLine& command_line,
namespace libgtkui {
+// Theme colors returned by GetSystemColor().
+const SkColor kInvalidColorIdColor = SkColorSetRGB(255, 0, 128);
+const SkColor kURLTextColor = SkColorSetRGB(0x0b, 0x80, 0x43);
+
+SkColor NormalURLColor(SkColor foreground) {
+ color_utils::HSL fg_hsl, hue_hsl;
+ color_utils::SkColorToHSL(foreground, &fg_hsl);
+ color_utils::SkColorToHSL(kURLTextColor, &hue_hsl);
+
+ // Only allow colors that have a fair amount of saturation in them (color vs
+ // white). This means that our output color will always be fairly green.
+ double s = std::max(0.5, fg_hsl.s);
+
+ // Make sure the luminance is at least as bright as the |kURLTextColor| green
+ // would be if we were to use that.
+ double l;
+ if (fg_hsl.l < hue_hsl.l)
+ l = hue_hsl.l;
+ else
+ l = (fg_hsl.l + hue_hsl.l) / 2;
+
+ color_utils::HSL output = {hue_hsl.h, s, l};
+ return color_utils::HSLToSkColor(output, 255);
+}
+
+SkColor SelectedURLColor(SkColor foreground, SkColor background) {
+ color_utils::HSL fg_hsl, bg_hsl, hue_hsl;
+ color_utils::SkColorToHSL(foreground, &fg_hsl);
+ color_utils::SkColorToHSL(background, &bg_hsl);
+ color_utils::SkColorToHSL(kURLTextColor, &hue_hsl);
+
+ // The saturation of the text should be opposite of the background, clamped
+ // to 0.2-0.8. We make sure it's greater than 0.2 so there's some color, but
+ // less than 0.8 so it's not the oversaturated neon-color.
+ double opposite_s = 1 - bg_hsl.s;
+ double s = std::max(0.2, std::min(0.8, opposite_s));
+
+ // The luminance should match the luminance of the foreground text. Again,
+ // we clamp so as to have at some amount of color (green) in the text.
+ double opposite_l = fg_hsl.l;
+ double l = std::max(0.1, std::min(0.9, opposite_l));
+
+ color_utils::HSL output = {hue_hsl.h, s, l};
+ return color_utils::HSLToSkColor(output, 255);
+}
+
void GtkInitFromCommandLine(const base::CommandLine& command_line) {
CommonInitFromCommandLine(command_line, gtk_init);
}
« no previous file with comments | « chrome/browser/ui/libgtkui/gtk_util.h ('k') | chrome/browser/ui/libgtkui/native_theme_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698