| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_UI_GTK_GTK_THEME_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_UI_GTK_GTK_THEME_SERVICE_H_ |
| 6 #define CHROME_BROWSER_UI_GTK_GTK_THEME_SERVICE_H_ | 6 #define CHROME_BROWSER_UI_GTK_GTK_THEME_SERVICE_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "chrome/browser/prefs/pref_change_registrar.h" | 14 #include "chrome/browser/prefs/pref_change_registrar.h" |
| 15 #include "chrome/browser/themes/theme_service.h" | 15 #include "chrome/browser/themes/theme_service.h" |
| 16 #include "content/public/browser/notification_observer.h" | 16 #include "content/public/browser/notification_observer.h" |
| 17 #include "ui/base/glib/glib_integers.h" | 17 #include "ui/base/glib/glib_integers.h" |
| 18 #include "ui/base/gtk/gtk_signal.h" | 18 #include "ui/base/gtk/gtk_signal.h" |
| 19 #include "ui/base/gtk/owned_widget_gtk.h" | 19 #include "ui/base/gtk/owned_widget_gtk.h" |
| 20 #include "ui/gfx/color_utils.h" | 20 #include "ui/gfx/color_utils.h" |
| 21 | 21 |
| 22 class Profile; |
| 23 |
| 24 namespace gfx { |
| 22 class CairoCachedSurface; | 25 class CairoCachedSurface; |
| 23 class Profile; | 26 } |
| 24 | 27 |
| 25 namespace ui { | 28 namespace ui { |
| 26 class GtkSignalRegistrar; | 29 class GtkSignalRegistrar; |
| 27 } | 30 } |
| 28 | 31 |
| 29 typedef struct _GdkDisplay GdkDisplay; | 32 typedef struct _GdkDisplay GdkDisplay; |
| 30 typedef struct _GdkEventExpose GdkEventExpose; | 33 typedef struct _GdkEventExpose GdkEventExpose; |
| 31 typedef struct _GdkPixbuf GdkPixbuf; | 34 typedef struct _GdkPixbuf GdkPixbuf; |
| 32 typedef struct _GtkIconSet GtkIconSet; | 35 typedef struct _GtkIconSet GtkIconSet; |
| 33 typedef struct _GtkStyle GtkStyle; | 36 typedef struct _GtkStyle GtkStyle; |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 void GetScrollbarColors(GdkColor* thumb_active_color, | 112 void GetScrollbarColors(GdkColor* thumb_active_color, |
| 110 GdkColor* thumb_inactive_color, | 113 GdkColor* thumb_inactive_color, |
| 111 GdkColor* track_color); | 114 GdkColor* track_color); |
| 112 | 115 |
| 113 // Expose the inner label. Only used for testing. | 116 // Expose the inner label. Only used for testing. |
| 114 GtkWidget* fake_label() { return fake_label_.get(); } | 117 GtkWidget* fake_label() { return fake_label_.get(); } |
| 115 | 118 |
| 116 // Returns a CairoCachedSurface for a particular Display. CairoCachedSurfaces | 119 // Returns a CairoCachedSurface for a particular Display. CairoCachedSurfaces |
| 117 // (hopefully) live on the X server, instead of the client so we don't have | 120 // (hopefully) live on the X server, instead of the client so we don't have |
| 118 // to send the image to the server on each expose. | 121 // to send the image to the server on each expose. |
| 119 CairoCachedSurface* GetSurfaceNamed(int id, GtkWidget* widget_on_display); | 122 gfx::CairoCachedSurface* GetSurfaceNamed( |
| 123 int id, GtkWidget* widget_on_display); |
| 120 | 124 |
| 121 // Same as above, but auto-mirrors the underlying pixbuf in RTL mode. | 125 // Same as above, but auto-mirrors the underlying pixbuf in RTL mode. |
| 122 CairoCachedSurface* GetRTLEnabledSurfaceNamed(int id, | 126 gfx::CairoCachedSurface* GetRTLEnabledSurfaceNamed( |
| 123 GtkWidget* widget_on_display); | 127 int id, GtkWidget* widget_on_display); |
| 124 | 128 |
| 125 // Same as above, but gets the resource from the ResourceBundle instead of the | 129 // Same as above, but gets the resource from the ResourceBundle instead of the |
| 126 // ThemeService. | 130 // ThemeService. |
| 127 // NOTE: Never call this with resource IDs that are ever passed to the above | 131 // NOTE: Never call this with resource IDs that are ever passed to the above |
| 128 // two functions! Depending on which call comes first, all callers will | 132 // two functions! Depending on which call comes first, all callers will |
| 129 // either get the themed or the unthemed version. | 133 // either get the themed or the unthemed version. |
| 130 CairoCachedSurface* GetUnthemedSurfaceNamed(int id, | 134 gfx::CairoCachedSurface* GetUnthemedSurfaceNamed( |
| 131 GtkWidget* widget_on_display); | 135 int id, GtkWidget* widget_on_display); |
| 132 | 136 |
| 133 // A way to get a cached cairo surface for the equivalent of GetFolderIcon() | 137 // A way to get a cached cairo surface for the equivalent of GetFolderIcon() |
| 134 // or GetDefaultFavicon(). Uses the ids defined in CairoDefaultIcon. | 138 // or GetDefaultFavicon(). Uses the ids defined in CairoDefaultIcon. |
| 135 CairoCachedSurface* GetCairoIcon(int id, GtkWidget* widget_on_display); | 139 gfx::CairoCachedSurface* GetCairoIcon(int id, GtkWidget* widget_on_display); |
| 136 | 140 |
| 137 // Returns colors that we pass to webkit to match the system theme. | 141 // Returns colors that we pass to webkit to match the system theme. |
| 138 const SkColor& get_focus_ring_color() const { return focus_ring_color_; } | 142 const SkColor& get_focus_ring_color() const { return focus_ring_color_; } |
| 139 const SkColor& get_thumb_active_color() const { return thumb_active_color_; } | 143 const SkColor& get_thumb_active_color() const { return thumb_active_color_; } |
| 140 const SkColor& get_thumb_inactive_color() const { | 144 const SkColor& get_thumb_inactive_color() const { |
| 141 return thumb_inactive_color_; | 145 return thumb_inactive_color_; |
| 142 } | 146 } |
| 143 const SkColor& get_track_color() const { return track_color_; } | 147 const SkColor& get_track_color() const { return track_color_; } |
| 144 const SkColor& get_active_selection_bg_color() const { | 148 const SkColor& get_active_selection_bg_color() const { |
| 145 return active_selection_bg_color_; | 149 return active_selection_bg_color_; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 160 static GdkPixbuf* GetDefaultFavicon(bool native); | 164 static GdkPixbuf* GetDefaultFavicon(bool native); |
| 161 | 165 |
| 162 // Whether we use the GTK theme by default in the current desktop | 166 // Whether we use the GTK theme by default in the current desktop |
| 163 // environment. Returns true when we GTK defaults to on. | 167 // environment. Returns true when we GTK defaults to on. |
| 164 static bool DefaultUsesSystemTheme(); | 168 static bool DefaultUsesSystemTheme(); |
| 165 | 169 |
| 166 private: | 170 private: |
| 167 typedef std::map<int, SkColor> ColorMap; | 171 typedef std::map<int, SkColor> ColorMap; |
| 168 typedef std::map<int, color_utils::HSL> TintMap; | 172 typedef std::map<int, color_utils::HSL> TintMap; |
| 169 typedef std::map<int, SkBitmap*> ImageCache; | 173 typedef std::map<int, SkBitmap*> ImageCache; |
| 170 typedef std::map<int, CairoCachedSurface*> CairoCachedSurfaceMap; | 174 typedef std::map<int, gfx::CairoCachedSurface*> CairoCachedSurfaceMap; |
| 171 typedef std::map<GdkDisplay*, CairoCachedSurfaceMap> PerDisplaySurfaceMap; | 175 typedef std::map<GdkDisplay*, CairoCachedSurfaceMap> PerDisplaySurfaceMap; |
| 172 | 176 |
| 173 typedef GdkPixbuf*(GtkThemeService::*PixbufProvidingMethod)(int id) const; | 177 typedef GdkPixbuf*(GtkThemeService::*PixbufProvidingMethod)(int id) const; |
| 174 | 178 |
| 175 // Clears all the GTK color overrides. | 179 // Clears all the GTK color overrides. |
| 176 virtual void ClearAllThemeData() OVERRIDE; | 180 virtual void ClearAllThemeData() OVERRIDE; |
| 177 | 181 |
| 178 // Load theme data from preferences, possibly picking colors from GTK. | 182 // Load theme data from preferences, possibly picking colors from GTK. |
| 179 virtual void LoadThemePrefs() OVERRIDE; | 183 virtual void LoadThemePrefs() OVERRIDE; |
| 180 | 184 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 void GetNormalButtonTintHSL(color_utils::HSL* tint) const; | 248 void GetNormalButtonTintHSL(color_utils::HSL* tint) const; |
| 245 | 249 |
| 246 // Returns a tint that's the color of the current normal text in an entry. | 250 // Returns a tint that's the color of the current normal text in an entry. |
| 247 void GetNormalEntryForegroundHSL(color_utils::HSL* tint) const; | 251 void GetNormalEntryForegroundHSL(color_utils::HSL* tint) const; |
| 248 | 252 |
| 249 // Returns a tint that's the color of the current highlighted text in an | 253 // Returns a tint that's the color of the current highlighted text in an |
| 250 // entry. | 254 // entry. |
| 251 void GetSelectedEntryForegroundHSL(color_utils::HSL* tint) const; | 255 void GetSelectedEntryForegroundHSL(color_utils::HSL* tint) const; |
| 252 | 256 |
| 253 // Implements GetXXXSurfaceNamed(), given the appropriate pixbuf to use. | 257 // Implements GetXXXSurfaceNamed(), given the appropriate pixbuf to use. |
| 254 CairoCachedSurface* GetSurfaceNamedImpl( | 258 gfx::CairoCachedSurface* GetSurfaceNamedImpl( |
| 255 int id, | 259 int id, |
| 256 PerDisplaySurfaceMap* surface_map, | 260 PerDisplaySurfaceMap* surface_map, |
| 257 PixbufProvidingMethod provider, | 261 PixbufProvidingMethod provider, |
| 258 GtkWidget* widget_on_display); | 262 GtkWidget* widget_on_display); |
| 259 | 263 |
| 260 // PixbufProvidingMethods passed to GetSurfaceNamedImpl from GetSurface* | 264 // PixbufProvidingMethods passed to GetSurfaceNamedImpl from GetSurface* |
| 261 // methods. We don't want to always fetch the pixbuf and pass the pixbuf to | 265 // methods. We don't want to always fetch the pixbuf and pass the pixbuf to |
| 262 // GetSurfaceNamedImpl which will throw away the result most of the time. | 266 // GetSurfaceNamedImpl which will throw away the result most of the time. |
| 263 // | 267 // |
| 264 // Especially since GetUnthemedNativePixbuf always locks and | 268 // Especially since GetUnthemedNativePixbuf always locks and |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 | 347 |
| 344 // The default folder icon and default bookmark icon for the GTK theme. | 348 // The default folder icon and default bookmark icon for the GTK theme. |
| 345 // These are static because the system can only have one theme at a time. | 349 // These are static because the system can only have one theme at a time. |
| 346 // They are cached when they are requested the first time, and cleared when | 350 // They are cached when they are requested the first time, and cleared when |
| 347 // the system theme changes. | 351 // the system theme changes. |
| 348 static GdkPixbuf* default_folder_icon_; | 352 static GdkPixbuf* default_folder_icon_; |
| 349 static GdkPixbuf* default_bookmark_icon_; | 353 static GdkPixbuf* default_bookmark_icon_; |
| 350 }; | 354 }; |
| 351 | 355 |
| 352 #endif // CHROME_BROWSER_UI_GTK_GTK_THEME_SERVICE_H_ | 356 #endif // CHROME_BROWSER_UI_GTK_GTK_THEME_SERVICE_H_ |
| OLD | NEW |