OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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_BROWSER_THEME_PROVIDER_H_ | 5 #ifndef CHROME_BROWSER_BROWSER_THEME_PROVIDER_H_ |
6 #define CHROME_BROWSER_BROWSER_THEME_PROVIDER_H_ | 6 #define CHROME_BROWSER_BROWSER_THEME_PROVIDER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 22 matching lines...) Expand all Loading... |
33 | 33 |
34 enum { | 34 enum { |
35 COLOR_FRAME, | 35 COLOR_FRAME, |
36 COLOR_FRAME_INACTIVE, | 36 COLOR_FRAME_INACTIVE, |
37 COLOR_FRAME_INCOGNITO, | 37 COLOR_FRAME_INCOGNITO, |
38 COLOR_FRAME_INCOGNITO_INACTIVE, | 38 COLOR_FRAME_INCOGNITO_INACTIVE, |
39 COLOR_TOOLBAR, | 39 COLOR_TOOLBAR, |
40 COLOR_TAB_TEXT, | 40 COLOR_TAB_TEXT, |
41 COLOR_BACKGROUND_TAB_TEXT, | 41 COLOR_BACKGROUND_TAB_TEXT, |
42 COLOR_BOOKMARK_TEXT, | 42 COLOR_BOOKMARK_TEXT, |
| 43 COLOR_NTP_BACKGROUND, |
43 COLOR_NTP_TEXT, | 44 COLOR_NTP_TEXT, |
44 COLOR_NTP_LINK, | 45 COLOR_NTP_LINK, |
45 COLOR_NTP_SECTION, | 46 COLOR_NTP_SECTION, |
46 TINT_BUTTONS, | 47 TINT_BUTTONS, |
47 TINT_FRAME, | 48 TINT_FRAME, |
48 TINT_FRAME_INACTIVE, | 49 TINT_FRAME_INACTIVE, |
49 TINT_FRAME_INCOGNITO, | 50 TINT_FRAME_INCOGNITO, |
50 TINT_FRAME_INCOGNITO_INACTIVE, | 51 TINT_FRAME_INCOGNITO_INACTIVE, |
51 TINT_BACKGROUND_TAB | 52 TINT_BACKGROUND_TAB, |
| 53 NTP_BACKGROUND_ALIGNMENT |
52 }; | 54 }; |
53 | 55 |
| 56 // A bitfield mask for alignments. |
| 57 typedef enum { |
| 58 ALIGN_CENTER = 0x0, |
| 59 ALIGN_LEFT = 0x1, |
| 60 ALIGN_TOP = 0x2, |
| 61 ALIGN_RIGHT = 0x4, |
| 62 ALIGN_BOTTOM = 0x8, |
| 63 } AlignmentMasks; |
| 64 |
54 void Init(Profile* profile); | 65 void Init(Profile* profile); |
55 | 66 |
56 // ThemeProvider implementation. | 67 // ThemeProvider implementation. |
57 virtual SkBitmap* GetBitmapNamed(int id); | 68 virtual SkBitmap* GetBitmapNamed(int id); |
58 virtual SkColor GetColor(int id); | 69 virtual SkColor GetColor(int id); |
| 70 virtual bool GetDisplayProperty(int id, int* result); |
59 virtual bool ShouldUseNativeFrame(); | 71 virtual bool ShouldUseNativeFrame(); |
60 #if defined(OS_LINUX) | 72 #if defined(OS_LINUX) |
61 virtual GdkPixbuf* GetPixbufNamed(int id); | 73 virtual GdkPixbuf* GetPixbufNamed(int id); |
62 #endif | 74 #endif |
63 | 75 |
64 // Set the current theme to the theme defined in |extension|. | 76 // Set the current theme to the theme defined in |extension|. |
65 void SetTheme(Extension* extension); | 77 void SetTheme(Extension* extension); |
66 | 78 |
67 // Reset the theme to default. | 79 // Reset the theme to default. |
68 void UseDefaultTheme(); | 80 void UseDefaultTheme(); |
69 | 81 |
| 82 // Convert a bitfield alignment into a string like "top left". Public so that |
| 83 // it can be used to generate CSS values. Takes a bitfield of AlignmentMasks. |
| 84 static std::string AlignmentToString(int alignment); |
| 85 |
| 86 // Parse alignments from something like "top left" into a bitfield of |
| 87 // AlignmentMasks |
| 88 static int StringToAlignment(const std::string &alignment); |
| 89 |
70 private: | 90 private: |
71 typedef std::map<const int, std::string> ImageMap; | 91 typedef std::map<const int, std::string> ImageMap; |
72 typedef std::map<const std::string, SkColor> ColorMap; | 92 typedef std::map<const std::string, SkColor> ColorMap; |
73 typedef std::map<const std::string, skia::HSL> TintMap; | 93 typedef std::map<const std::string, skia::HSL> TintMap; |
| 94 typedef std::map<const std::string, int> DisplayPropertyMap; |
74 | 95 |
75 // Loads a bitmap from the theme, which may be tinted or | 96 // Loads a bitmap from the theme, which may be tinted or |
76 // otherwise modified, or an application default. | 97 // otherwise modified, or an application default. |
77 SkBitmap* LoadThemeBitmap(int id); | 98 SkBitmap* LoadThemeBitmap(int id); |
78 | 99 |
79 // Get the specified tint - |id| is one of the TINT_* enum values. | 100 // Get the specified tint - |id| is one of the TINT_* enum values. |
80 skia::HSL GetTint(int id); | 101 skia::HSL GetTint(int id); |
81 | 102 |
82 // Tint |bitmap| with the tint specified by |hsl_id| | 103 // Tint |bitmap| with the tint specified by |hsl_id| |
83 SkBitmap TintBitmap(const SkBitmap& bitmap, int hsl_id); | 104 SkBitmap TintBitmap(const SkBitmap& bitmap, int hsl_id); |
84 | 105 |
85 // The following load data from specified dictionaries (either from | 106 // The following load data from specified dictionaries (either from |
86 // preferences or from an extension manifest) and update our theme | 107 // preferences or from an extension manifest) and update our theme |
87 // data appropriately. | 108 // data appropriately. |
88 // Allow any ResourceBundle image to be overridden. |images| should | 109 // Allow any ResourceBundle image to be overridden. |images| should |
89 // contain keys defined in ThemeResourceMap, and values as paths to | 110 // contain keys defined in ThemeResourceMap, and values as paths to |
90 // the images on-disk. | 111 // the images on-disk. |
91 void SetImageData(DictionaryValue* images, | 112 void SetImageData(DictionaryValue* images, |
92 FilePath images_path); | 113 FilePath images_path); |
93 // Set our theme colors. The keys of |colors| are any of the kColor* | 114 // Set our theme colors. The keys of |colors| are any of the kColor* |
94 // constants, and the values are a three-item list containing 8-bit | 115 // constants, and the values are a three-item list containing 8-bit |
95 // RGB values. | 116 // RGB values. |
96 void SetColorData(DictionaryValue* colors); | 117 void SetColorData(DictionaryValue* colors); |
| 118 |
97 // Set tint data for our images and colors. The keys of |tints| are | 119 // Set tint data for our images and colors. The keys of |tints| are |
98 // any of the kTint* contstants, and the values are a three-item list | 120 // any of the kTint* contstants, and the values are a three-item list |
99 // containing real numbers in the range 0-1 (and -1 for 'null'). | 121 // containing real numbers in the range 0-1 (and -1 for 'null'). |
100 void SetTintData(DictionaryValue* tints); | 122 void SetTintData(DictionaryValue* tints); |
101 | 123 |
| 124 // Set miscellaneous display properties. While these can be defined as |
| 125 // strings, they are currently stored as integers. |
| 126 void SetDisplayPropertyData(DictionaryValue* display_properties); |
| 127 |
102 // Generate any frame colors that weren't specified. | 128 // Generate any frame colors that weren't specified. |
103 void GenerateFrameColors(); | 129 void GenerateFrameColors(); |
104 | 130 |
105 // Generate any frame images that weren't specified. The resulting images | 131 // Generate any frame images that weren't specified. The resulting images |
106 // will be stored in our cache. | 132 // will be stored in our cache. |
107 void GenerateFrameImages(); | 133 void GenerateFrameImages(); |
108 | 134 |
109 // Create any images that aren't pregenerated (e.g. background tab images). | 135 // Create any images that aren't pregenerated (e.g. background tab images). |
110 SkBitmap* GenerateBitmap(int id); | 136 SkBitmap* GenerateBitmap(int id); |
111 | 137 |
112 // Save our data - when saving images we need the original dictionary | 138 // Save our data - when saving images we need the original dictionary |
113 // from the extension because it contains the text ids that we want to save. | 139 // from the extension because it contains the text ids that we want to save. |
114 void SaveImageData(DictionaryValue* images); | 140 void SaveImageData(DictionaryValue* images); |
115 void SaveColorData(); | 141 void SaveColorData(); |
116 void SaveTintData(); | 142 void SaveTintData(); |
| 143 void SaveDisplayPropertyData(); |
117 | 144 |
118 // Let all the browser views know that themes have changed. | 145 // Let all the browser views know that themes have changed. |
119 void NotifyThemeChanged(); | 146 void NotifyThemeChanged(); |
120 | 147 |
121 // Load theme data from preferences. | 148 // Load theme data from preferences. |
122 void LoadThemePrefs(); | 149 void LoadThemePrefs(); |
123 | 150 |
124 // Frees generated images and clears the image cache. | 151 // Frees generated images and clears the image cache. |
125 void FreeImages(); | 152 void FreeImages(); |
126 | 153 |
127 // Cached images. We cache all retrieved and generated bitmaps and keep | 154 // Cached images. We cache all retrieved and generated bitmaps and keep |
128 // track of the pointers. | 155 // track of the pointers. |
129 typedef std::map<int, SkBitmap*> ImageCache; | 156 typedef std::map<int, SkBitmap*> ImageCache; |
130 ImageCache image_cache_; | 157 ImageCache image_cache_; |
131 #if defined(OS_LINUX) | 158 #if defined(OS_LINUX) |
132 typedef std::map<int, GdkPixbuf*> GdkPixbufMap; | 159 typedef std::map<int, GdkPixbuf*> GdkPixbufMap; |
133 GdkPixbufMap gdk_pixbufs_; | 160 GdkPixbufMap gdk_pixbufs_; |
134 #endif | 161 #endif |
135 | 162 |
136 // List of generate images that aren't stored in ResourceBundles image cache | 163 // List of generate images that aren't stored in ResourceBundles image cache |
137 // and need to be freed. | 164 // and need to be freed. |
138 std::vector<SkBitmap*> generated_images_; | 165 std::vector<SkBitmap*> generated_images_; |
139 | 166 |
140 ResourceBundle& rb_; | 167 ResourceBundle& rb_; |
141 Profile* profile_; | 168 Profile* profile_; |
142 | 169 |
143 ImageMap images_; | 170 ImageMap images_; |
144 ColorMap colors_; | 171 ColorMap colors_; |
145 TintMap tints_; | 172 TintMap tints_; |
| 173 DisplayPropertyMap display_properties_; |
146 | 174 |
147 DISALLOW_COPY_AND_ASSIGN(BrowserThemeProvider); | 175 DISALLOW_COPY_AND_ASSIGN(BrowserThemeProvider); |
148 }; | 176 }; |
149 | 177 |
150 #endif // CHROME_BROWSER_BROWSER_THEME_PROVIDER_H_ | 178 #endif // CHROME_BROWSER_BROWSER_THEME_PROVIDER_H_ |
OLD | NEW |