OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/themes/browser_theme_provider.h" | 5 #include "chrome/browser/themes/browser_theme_provider.h" |
6 | 6 |
7 #include "app/resource_bundle.h" | 7 #include "app/resource_bundle.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/browser/extensions/extensions_service.h" | 10 #include "chrome/browser/extensions/extensions_service.h" |
(...skipping 25 matching lines...) Expand all Loading... |
36 | 36 |
37 // Saved default values. | 37 // Saved default values. |
38 const char* BrowserThemeProvider::kDefaultThemeID = ""; | 38 const char* BrowserThemeProvider::kDefaultThemeID = ""; |
39 | 39 |
40 namespace { | 40 namespace { |
41 | 41 |
42 SkColor TintForUnderline(SkColor input) { | 42 SkColor TintForUnderline(SkColor input) { |
43 return SkColorSetA(input, SkColorGetA(input) / 3); | 43 return SkColorSetA(input, SkColorGetA(input) / 3); |
44 } | 44 } |
45 | 45 |
| 46 SkColor IncreaseLightness(SkColor color, double percent) { |
| 47 color_utils::HSL result; |
| 48 color_utils::SkColorToHSL(color, &result); |
| 49 result.l += (1 - result.l) * percent; |
| 50 return color_utils::HSLToSkColor(result, SkColorGetA(color)); |
| 51 } |
| 52 |
46 // Default colors. | 53 // Default colors. |
47 const SkColor kDefaultColorFrame = SkColorSetRGB(66, 116, 201); | 54 const SkColor kDefaultColorFrame = SkColorSetRGB(66, 116, 201); |
48 const SkColor kDefaultColorFrameInactive = SkColorSetRGB(161, 182, 228); | 55 const SkColor kDefaultColorFrameInactive = SkColorSetRGB(161, 182, 228); |
49 const SkColor kDefaultColorFrameIncognito = SkColorSetRGB(83, 106, 139); | 56 const SkColor kDefaultColorFrameIncognito = SkColorSetRGB(83, 106, 139); |
50 const SkColor kDefaultColorFrameIncognitoInactive = | 57 const SkColor kDefaultColorFrameIncognitoInactive = |
51 SkColorSetRGB(126, 139, 156); | 58 SkColorSetRGB(126, 139, 156); |
52 #if defined(OS_MACOSX) | 59 #if defined(OS_MACOSX) |
53 const SkColor kDefaultColorToolbar = SkColorSetRGB(230, 230, 230); | 60 const SkColor kDefaultColorToolbar = SkColorSetRGB(230, 230, 230); |
54 #else | 61 #else |
55 const SkColor kDefaultColorToolbar = SkColorSetRGB(223, 223, 223); | 62 const SkColor kDefaultColorToolbar = SkColorSetRGB(223, 223, 223); |
(...skipping 16 matching lines...) Expand all Loading... |
72 #else | 79 #else |
73 // TODO(beng): source from theme provider. | 80 // TODO(beng): source from theme provider. |
74 const SkColor kDefaultColorNTPBackground = SK_ColorWHITE; | 81 const SkColor kDefaultColorNTPBackground = SK_ColorWHITE; |
75 const SkColor kDefaultColorNTPText = SK_ColorBLACK; | 82 const SkColor kDefaultColorNTPText = SK_ColorBLACK; |
76 const SkColor kDefaultColorNTPLink = SkColorSetRGB(6, 55, 116); | 83 const SkColor kDefaultColorNTPLink = SkColorSetRGB(6, 55, 116); |
77 #endif | 84 #endif |
78 const SkColor kDefaultColorNTPHeader = SkColorSetRGB(75, 140, 220); | 85 const SkColor kDefaultColorNTPHeader = SkColorSetRGB(75, 140, 220); |
79 const SkColor kDefaultColorNTPSection = SkColorSetRGB(229, 239, 254); | 86 const SkColor kDefaultColorNTPSection = SkColorSetRGB(229, 239, 254); |
80 const SkColor kDefaultColorNTPSectionText = SK_ColorBLACK; | 87 const SkColor kDefaultColorNTPSectionText = SK_ColorBLACK; |
81 const SkColor kDefaultColorNTPSectionLink = SkColorSetRGB(6, 55, 116); | 88 const SkColor kDefaultColorNTPSectionLink = SkColorSetRGB(6, 55, 116); |
82 const SkColor kDefaultColorNTPSectionHeaderText = SkColorSetRGB(76, 76, 76); | |
83 const SkColor kDefaultColorNTPSectionHeaderRule = SkColorSetRGB(179, 179, 179); | |
84 const SkColor kDefaultColorNTPSectionHeaderRuleLight = | |
85 SkColorSetRGB(220, 220, 220); | |
86 const SkColor kDefaultColorControlBackground = SkColorSetARGB(0, 0, 0, 0); | 89 const SkColor kDefaultColorControlBackground = SkColorSetARGB(0, 0, 0, 0); |
87 const SkColor kDefaultColorButtonBackground = SkColorSetARGB(0, 0, 0, 0); | 90 const SkColor kDefaultColorButtonBackground = SkColorSetARGB(0, 0, 0, 0); |
88 #if defined(OS_MACOSX) | 91 #if defined(OS_MACOSX) |
89 const SkColor kDefaultColorToolbarButtonStroke = SkColorSetARGB(75, 81, 81, 81); | 92 const SkColor kDefaultColorToolbarButtonStroke = SkColorSetARGB(75, 81, 81, 81); |
90 const SkColor kDefaultColorToolbarButtonStrokeInactive = | 93 const SkColor kDefaultColorToolbarButtonStrokeInactive = |
91 SkColorSetARGB(75, 99, 99, 99); | 94 SkColorSetARGB(75, 99, 99, 99); |
92 const SkColor kDefaultColorToolbarBezel = SkColorSetRGB(247, 247, 247); | 95 const SkColor kDefaultColorToolbarBezel = SkColorSetRGB(247, 247, 247); |
93 const SkColor kDefaultColorToolbarStroke = SkColorSetRGB(103, 103, 103); | 96 const SkColor kDefaultColorToolbarStroke = SkColorSetRGB(103, 103, 103); |
94 const SkColor kDefaultColorToolbarStrokeInactive = SkColorSetRGB(123, 123, 123); | 97 const SkColor kDefaultColorToolbarStrokeInactive = SkColorSetRGB(123, 123, 123); |
95 #endif | 98 #endif |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 return bitmap; | 220 return bitmap; |
218 } | 221 } |
219 | 222 |
220 SkColor BrowserThemeProvider::GetColor(int id) const { | 223 SkColor BrowserThemeProvider::GetColor(int id) const { |
221 DCHECK(CalledOnValidThread()); | 224 DCHECK(CalledOnValidThread()); |
222 | 225 |
223 SkColor color; | 226 SkColor color; |
224 if (theme_pack_.get() && theme_pack_->GetColor(id, &color)) | 227 if (theme_pack_.get() && theme_pack_->GetColor(id, &color)) |
225 return color; | 228 return color; |
226 | 229 |
| 230 // For backward compat with older themes, some newer colors are generated from |
| 231 // older ones if they are missing. |
| 232 switch (id) { |
| 233 case COLOR_NTP_SECTION_HEADER_TEXT: |
| 234 return IncreaseLightness(GetColor(COLOR_NTP_TEXT), 0.30); |
| 235 case COLOR_NTP_SECTION_HEADER_TEXT_HOVER: |
| 236 return GetColor(COLOR_NTP_TEXT); |
| 237 case COLOR_NTP_SECTION_HEADER_RULE: |
| 238 return IncreaseLightness(GetColor(COLOR_NTP_TEXT), 0.70); |
| 239 case COLOR_NTP_SECTION_HEADER_RULE_LIGHT: |
| 240 return IncreaseLightness(GetColor(COLOR_NTP_TEXT), 0.86); |
| 241 } |
| 242 |
227 return GetDefaultColor(id); | 243 return GetDefaultColor(id); |
228 } | 244 } |
229 | 245 |
230 bool BrowserThemeProvider::GetDisplayProperty(int id, int* result) const { | 246 bool BrowserThemeProvider::GetDisplayProperty(int id, int* result) const { |
231 if (theme_pack_.get()) | 247 if (theme_pack_.get()) |
232 return theme_pack_->GetDisplayProperty(id, result); | 248 return theme_pack_->GetDisplayProperty(id, result); |
233 | 249 |
234 return GetDefaultDisplayProperty(id, result); | 250 return GetDefaultDisplayProperty(id, result); |
235 } | 251 } |
236 | 252 |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 case COLOR_NTP_HEADER: | 457 case COLOR_NTP_HEADER: |
442 return kDefaultColorNTPHeader; | 458 return kDefaultColorNTPHeader; |
443 case COLOR_NTP_SECTION: | 459 case COLOR_NTP_SECTION: |
444 return kDefaultColorNTPSection; | 460 return kDefaultColorNTPSection; |
445 case COLOR_NTP_SECTION_TEXT: | 461 case COLOR_NTP_SECTION_TEXT: |
446 return kDefaultColorNTPSectionText; | 462 return kDefaultColorNTPSectionText; |
447 case COLOR_NTP_SECTION_LINK: | 463 case COLOR_NTP_SECTION_LINK: |
448 return kDefaultColorNTPSectionLink; | 464 return kDefaultColorNTPSectionLink; |
449 case COLOR_NTP_SECTION_LINK_UNDERLINE: | 465 case COLOR_NTP_SECTION_LINK_UNDERLINE: |
450 return TintForUnderline(kDefaultColorNTPSectionLink); | 466 return TintForUnderline(kDefaultColorNTPSectionLink); |
451 case COLOR_NTP_SECTION_HEADER_TEXT: | |
452 return kDefaultColorNTPSectionHeaderText; | |
453 case COLOR_NTP_SECTION_HEADER_TEXT_HOVER: | |
454 return kDefaultColorNTPText; | |
455 case COLOR_NTP_SECTION_HEADER_RULE: | |
456 return kDefaultColorNTPSectionHeaderRule; | |
457 case COLOR_NTP_SECTION_HEADER_RULE_LIGHT: | |
458 return kDefaultColorNTPSectionHeaderRuleLight; | |
459 case COLOR_CONTROL_BACKGROUND: | 467 case COLOR_CONTROL_BACKGROUND: |
460 return kDefaultColorControlBackground; | 468 return kDefaultColorControlBackground; |
461 case COLOR_BUTTON_BACKGROUND: | 469 case COLOR_BUTTON_BACKGROUND: |
462 return kDefaultColorButtonBackground; | 470 return kDefaultColorButtonBackground; |
463 #if defined(OS_MACOSX) | 471 #if defined(OS_MACOSX) |
464 case COLOR_TOOLBAR_BUTTON_STROKE: | 472 case COLOR_TOOLBAR_BUTTON_STROKE: |
465 return kDefaultColorToolbarButtonStroke; | 473 return kDefaultColorToolbarButtonStroke; |
466 case COLOR_TOOLBAR_BUTTON_STROKE_INACTIVE: | 474 case COLOR_TOOLBAR_BUTTON_STROKE_INACTIVE: |
467 return kDefaultColorToolbarButtonStrokeInactive; | 475 return kDefaultColorToolbarButtonStrokeInactive; |
468 case COLOR_TOOLBAR_BEZEL: | 476 case COLOR_TOOLBAR_BEZEL: |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 void BrowserThemeProvider::OnInfobarDisplayed() { | 620 void BrowserThemeProvider::OnInfobarDisplayed() { |
613 number_of_infobars_++; | 621 number_of_infobars_++; |
614 } | 622 } |
615 | 623 |
616 void BrowserThemeProvider::OnInfobarDestroyed() { | 624 void BrowserThemeProvider::OnInfobarDestroyed() { |
617 number_of_infobars_--; | 625 number_of_infobars_--; |
618 | 626 |
619 if (number_of_infobars_ == 0) | 627 if (number_of_infobars_ == 0) |
620 RemoveUnusedThemes(); | 628 RemoveUnusedThemes(); |
621 } | 629 } |
OLD | NEW |