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

Side by Side Diff: chrome/browser/browser_theme_provider.cc

Issue 151153: Allow getting the theme tint as a value so that it can be applied independent... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/browser_theme_provider.h ('k') | chrome/browser/browser_theme_provider_gtk.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "chrome/browser/browser_theme_provider.h" 5 #include "chrome/browser/browser_theme_provider.h"
6 6
7 #include "base/gfx/png_decoder.h" 7 #include "base/gfx/png_decoder.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/browser_list.h" 10 #include "chrome/browser/browser_list.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 } 130 }
131 frame_tints_[IDR_THEME_FRAME] = TINT_FRAME; 131 frame_tints_[IDR_THEME_FRAME] = TINT_FRAME;
132 frame_tints_[IDR_THEME_FRAME_INACTIVE] = TINT_FRAME_INACTIVE; 132 frame_tints_[IDR_THEME_FRAME_INACTIVE] = TINT_FRAME_INACTIVE;
133 frame_tints_[IDR_THEME_FRAME_INCOGNITO] = TINT_FRAME_INCOGNITO; 133 frame_tints_[IDR_THEME_FRAME_INCOGNITO] = TINT_FRAME_INCOGNITO;
134 frame_tints_[IDR_THEME_FRAME_INCOGNITO_INACTIVE] = 134 frame_tints_[IDR_THEME_FRAME_INCOGNITO_INACTIVE] =
135 TINT_FRAME_INCOGNITO_INACTIVE; 135 TINT_FRAME_INCOGNITO_INACTIVE;
136 } 136 }
137 } 137 }
138 138
139 BrowserThemeProvider::~BrowserThemeProvider() { 139 BrowserThemeProvider::~BrowserThemeProvider() {
140 FreeImages(); 140 ClearCaches();
141 } 141 }
142 142
143 void BrowserThemeProvider::Init(Profile* profile) { 143 void BrowserThemeProvider::Init(Profile* profile) {
144 DCHECK(CalledOnValidThread()); 144 DCHECK(CalledOnValidThread());
145 profile_ = profile; 145 profile_ = profile;
146 LoadThemePrefs(); 146 LoadThemePrefs();
147 } 147 }
148 148
149 SkBitmap* BrowserThemeProvider::GetBitmapNamed(int id) { 149 SkBitmap* BrowserThemeProvider::GetBitmapNamed(int id) {
150 DCHECK(CalledOnValidThread()); 150 DCHECK(CalledOnValidThread());
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 return false; 259 return false;
260 #endif 260 #endif
261 } 261 }
262 262
263 bool BrowserThemeProvider::HasCustomImage(int id) { 263 bool BrowserThemeProvider::HasCustomImage(int id) {
264 return (images_.find(id) != images_.end()); 264 return (images_.find(id) != images_.end());
265 } 265 }
266 266
267 void BrowserThemeProvider::SetTheme(Extension* extension) { 267 void BrowserThemeProvider::SetTheme(Extension* extension) {
268 // Clear our image cache. 268 // Clear our image cache.
269 FreeImages(); 269 ClearCaches();
270 270
271 DCHECK(extension); 271 DCHECK(extension);
272 DCHECK(extension->IsTheme()); 272 DCHECK(extension->IsTheme());
273 SetImageData(extension->GetThemeImages(), 273 SetImageData(extension->GetThemeImages(),
274 extension->path()); 274 extension->path());
275 SetColorData(extension->GetThemeColors()); 275 SetColorData(extension->GetThemeColors());
276 SetTintData(extension->GetThemeTints()); 276 SetTintData(extension->GetThemeTints());
277 SetDisplayPropertyData(extension->GetThemeDisplayProperties()); 277 SetDisplayPropertyData(extension->GetThemeDisplayProperties());
278 GenerateFrameColors(); 278 GenerateFrameColors();
279 GenerateFrameImages(); 279 GenerateFrameImages();
280 280
281 SaveImageData(extension->GetThemeImages()); 281 SaveImageData(extension->GetThemeImages());
282 SaveColorData(); 282 SaveColorData();
283 SaveTintData(); 283 SaveTintData();
284 SaveDisplayPropertyData(); 284 SaveDisplayPropertyData();
285 285
286 NotifyThemeChanged(); 286 NotifyThemeChanged();
287 UserMetrics::RecordAction(L"Themes_Installed", profile_); 287 UserMetrics::RecordAction(L"Themes_Installed", profile_);
288 } 288 }
289 289
290 void BrowserThemeProvider::UseDefaultTheme() { 290 void BrowserThemeProvider::UseDefaultTheme() {
291 // Clear our image cache. 291 // Clear our image cache.
292 FreeImages(); 292 ClearCaches();
293 293
294 images_.clear(); 294 images_.clear();
295 colors_.clear(); 295 colors_.clear();
296 tints_.clear(); 296 tints_.clear();
297 display_properties_.clear(); 297 display_properties_.clear();
298 298
299 SaveImageData(NULL); 299 SaveImageData(NULL);
300 SaveColorData(); 300 SaveColorData();
301 SaveTintData(); 301 SaveTintData();
302 SaveDisplayPropertyData(); 302 SaveDisplayPropertyData();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 image_width, 354 image_width,
355 image_height); 355 image_height);
356 } else { 356 } else {
357 // TODO(glen): File no-longer exists, we're out of date. We should 357 // TODO(glen): File no-longer exists, we're out of date. We should
358 // clear the theme (or maybe just the pref that points to this 358 // clear the theme (or maybe just the pref that points to this
359 // image). 359 // image).
360 return NULL; 360 return NULL;
361 } 361 }
362 } 362 }
363 363
364 const std::string BrowserThemeProvider::GetTintKey(int id) {
365 switch (id) {
366 case TINT_FRAME:
367 return kTintFrame;
368 case TINT_FRAME_INACTIVE:
369 return kTintFrameInactive;
370 case TINT_FRAME_INCOGNITO:
371 return kTintFrameIncognito;
372 case TINT_FRAME_INCOGNITO_INACTIVE:
373 return kTintFrameIncognitoInactive;
374 case TINT_BUTTONS:
375 return kTintButtons;
376 case TINT_BACKGROUND_TAB:
377 return kTintBackgroundTab;
378 default:
379 NOTREACHED() << "Unknown tint requested";
380 return "";
381 }
382 }
383
384 skia::HSL BrowserThemeProvider::GetDefaultTint(int id) {
385 switch (id) {
386 case TINT_FRAME:
387 return kDefaultTintFrame;
388 case TINT_FRAME_INACTIVE:
389 return kDefaultTintFrameInactive;
390 case TINT_FRAME_INCOGNITO:
391 return kDefaultTintFrameIncognito;
392 case TINT_FRAME_INCOGNITO_INACTIVE:
393 return kDefaultTintFrameIncognitoInactive;
394 case TINT_BUTTONS:
395 return kDefaultTintButtons;
396 case TINT_BACKGROUND_TAB:
397 return kDefaultTintBackgroundTab;
398 default:
399 skia::HSL result = {-1, -1, -1};
400 return result;
401 }
402 }
403
364 skia::HSL BrowserThemeProvider::GetTint(int id) { 404 skia::HSL BrowserThemeProvider::GetTint(int id) {
365 DCHECK(CalledOnValidThread()); 405 DCHECK(CalledOnValidThread());
366 switch (id) { 406
367 case TINT_FRAME: 407 TintMap::iterator tint_iter = tints_.find(GetTintKey(id));
368 return (tints_.find(kTintFrame) != tints_.end()) ? 408 if (tint_iter != tints_.end())
369 tints_[kTintFrame] : kDefaultTintFrame; 409 return tint_iter->second;
370 case TINT_FRAME_INACTIVE: 410 else
371 return (tints_.find(kTintFrameInactive) != tints_.end()) ? 411 return GetDefaultTint(id);
372 tints_[kTintFrameInactive] : kDefaultTintFrameInactive;
373 case TINT_FRAME_INCOGNITO:
374 return (tints_.count(kTintFrameIncognito)) ?
375 tints_[kTintFrameIncognito] : kDefaultTintFrameIncognito;
376 case TINT_FRAME_INCOGNITO_INACTIVE:
377 return (tints_.count(kTintFrameIncognitoInactive)) ?
378 tints_[kTintFrameIncognitoInactive] :
379 kDefaultTintFrameIncognitoInactive;
380 case TINT_BUTTONS:
381 return (tints_.find(kTintButtons) != tints_.end()) ?
382 tints_[kTintButtons] :
383 kDefaultTintButtons;
384 case TINT_BACKGROUND_TAB:
385 return (tints_.find(kTintBackgroundTab) != tints_.end()) ?
386 tints_[kTintBackgroundTab] :
387 kDefaultTintBackgroundTab;
388 default:
389 NOTREACHED() << "Unknown tint requested";
390 }
391 skia::HSL result = {-1, -1, -1};
392 return result;
393 } 412 }
394 413
395 SkBitmap BrowserThemeProvider::TintBitmap(const SkBitmap& bitmap, int hsl_id) { 414 SkBitmap BrowserThemeProvider::TintBitmap(const SkBitmap& bitmap, int hsl_id) {
396 return skia::ImageOperations::CreateHSLShiftedBitmap(bitmap, GetTint(hsl_id)); 415 return skia::ImageOperations::CreateHSLShiftedBitmap(bitmap, GetTint(hsl_id));
397 } 416 }
398 417
399 void BrowserThemeProvider::SetImageData(DictionaryValue* images_value, 418 void BrowserThemeProvider::SetImageData(DictionaryValue* images_value,
400 FilePath images_path) { 419 FilePath images_path) {
401 images_.clear(); 420 images_.clear();
402 421
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 GenerateFrameImages(); 742 GenerateFrameImages();
724 UserMetrics::RecordAction(L"Themes_loaded", profile_); 743 UserMetrics::RecordAction(L"Themes_loaded", profile_);
725 } 744 }
726 } 745 }
727 746
728 SkColor BrowserThemeProvider::FindColor(const char* id, 747 SkColor BrowserThemeProvider::FindColor(const char* id,
729 SkColor default_color) { 748 SkColor default_color) {
730 return (colors_.find(id) != colors_.end()) ? colors_[id] : default_color; 749 return (colors_.find(id) != colors_.end()) ? colors_[id] : default_color;
731 } 750 }
732 751
733 void BrowserThemeProvider::FreeImages() { 752 void BrowserThemeProvider::ClearCaches() {
734 FreePlatformImages(); 753 FreePlatformCaches();
735 for (ImageCache::iterator i = image_cache_.begin(); 754 for (ImageCache::iterator i = image_cache_.begin();
736 i != image_cache_.end(); i++) { 755 i != image_cache_.end(); i++) {
737 delete i->second; 756 delete i->second;
738 } 757 }
739 image_cache_.clear(); 758 image_cache_.clear();
740 } 759 }
741 760
742 #if defined(OS_WIN) 761 #if defined(OS_WIN)
743 void BrowserThemeProvider::FreePlatformImages() { 762 void BrowserThemeProvider::FreePlatformCaches() {
744 // Windows has no platform image cache to clear. 763 // Windows has no platform image cache to clear.
745 } 764 }
746 #endif 765 #endif
OLDNEW
« no previous file with comments | « chrome/browser/browser_theme_provider.h ('k') | chrome/browser/browser_theme_provider_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698