1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/native_theme/fallback_theme.h"
7 #include "base/basictypes.h"
8 #include "base/logging.h"
9 #include "ui/gfx/color_utils.h"
10 #include "ui/native_theme/common_theme.h"
14 FallbackTheme::FallbackTheme() {
17 FallbackTheme::~FallbackTheme() {
20 SkColor
FallbackTheme::GetSystemColor(ColorId color_id
) const {
21 // This implementation returns hardcoded colors.
23 static const SkColor kInvalidColorIdColor
= SkColorSetRGB(255, 0, 128);
25 static const SkColor kMenuBackgroundColor
= SK_ColorWHITE
;
27 static const SkColor kWindowBackgroundColor
= SK_ColorWHITE
;
29 static const SkColor kDialogBackgroundColor
= SkColorSetRGB(251, 251, 251);
31 static const SkColor kFocusedBorderColor
= SkColorSetRGB(0x4D, 0x90, 0xFE);
32 static const SkColor kUnfocusedBorderColor
= SkColorSetRGB(0xD9, 0xD9, 0xD9);
34 static const SkColor kButtonBackgroundColor
= SkColorSetRGB(0xDE, 0xDE, 0xDE);
35 static const SkColor kButtonEnabledColor
= SkColorSetRGB(0x22, 0x22, 0x22);
36 static const SkColor kButtonDisabledColor
= SkColorSetRGB(0x99, 0x99, 0x99);
37 static const SkColor kButtonHighlightColor
= SkColorSetRGB(0, 0, 0);
38 static const SkColor kButtonHoverColor
= kButtonEnabledColor
;
39 static const SkColor kButtonHoverBackgroundColor
=
40 SkColorSetRGB(0xEA, 0xEA, 0xEA);
42 static const SkColor kEnabledMenuItemForegroundColor
= kButtonEnabledColor
;
43 static const SkColor kDisabledMenuItemForegroundColor
= kButtonDisabledColor
;
44 static const SkColor kFocusedMenuItemBackgroundColor
=
45 SkColorSetRGB(0xF1, 0xF1, 0xF1);
46 static const SkColor kHoverMenuItemBackgroundColor
=
47 SkColorSetARGB(204, 255, 255, 255);
48 static const SkColor kMenuSeparatorColor
= SkColorSetRGB(0xED, 0xED, 0xED);
49 static const SkColor kEnabledMenuButtonBorderColor
=
50 SkColorSetARGB(36, 0, 0, 0);
51 static const SkColor kFocusedMenuButtonBorderColor
=
52 SkColorSetARGB(72, 0, 0, 0);
53 static const SkColor kHoverMenuButtonBorderColor
=
54 SkColorSetARGB(72, 0, 0, 0);
56 static const SkColor kLabelEnabledColor
= kButtonEnabledColor
;
57 static const SkColor kLabelDisabledColor
= kButtonDisabledColor
;
58 static const SkColor kLabelBackgroundColor
= SK_ColorWHITE
;
60 static const SkColor kTextfieldDefaultColor
= SK_ColorBLACK
;
61 static const SkColor kTextfieldDefaultBackground
= SK_ColorWHITE
;
62 static const SkColor kTextfieldReadOnlyColor
= SK_ColorDKGRAY
;
63 static const SkColor kTextfieldReadOnlyBackground
= SK_ColorWHITE
;
64 static const SkColor kTextfieldSelectionBackgroundFocused
=
65 SkColorSetARGB(0x54, 0x60, 0xA8, 0xEB);
66 static const SkColor kTextfieldSelectionColor
=
67 color_utils::AlphaBlend(SK_ColorBLACK
,
68 kTextfieldSelectionBackgroundFocused
, 0xdd);
70 static const SkColor kTooltipBackground
= 0xFFFFFFCC;
71 static const SkColor kTooltipTextColor
= kLabelEnabledColor
;
73 static const SkColor kTreeBackground
= SK_ColorWHITE
;
74 static const SkColor kTreeTextColor
= SK_ColorBLACK
;
75 static const SkColor kTreeSelectedTextColor
= SK_ColorBLACK
;
76 static const SkColor kTreeSelectionBackgroundColor
=
77 SkColorSetRGB(0xEE, 0xEE, 0xEE);
78 static const SkColor kTreeArrowColor
= SkColorSetRGB(0x7A, 0x7A, 0x7A);
80 static const SkColor kTableBackground
= SK_ColorWHITE
;
81 static const SkColor kTableTextColor
= SK_ColorBLACK
;
82 static const SkColor kTableSelectedTextColor
= SK_ColorBLACK
;
83 static const SkColor kTableSelectionBackgroundColor
=
84 SkColorSetRGB(0xEE, 0xEE, 0xEE);
85 static const SkColor kTableGroupingIndicatorColor
=
86 SkColorSetRGB(0xCC, 0xCC, 0xCC);
88 static const SkColor kResultsTableHoveredBackground
=
89 color_utils::AlphaBlend(kTextfieldSelectionBackgroundFocused
,
90 kTextfieldDefaultBackground
, 0x40);
91 static const SkColor kResultsTableNormalText
= color_utils::AlphaBlend(
92 SK_ColorBLACK
, kTextfieldDefaultBackground
, 0xDD);
93 static const SkColor kResultsTableHoveredText
= color_utils::AlphaBlend(
94 SK_ColorBLACK
, kResultsTableHoveredBackground
, 0xDD);
95 static const SkColor kResultsTableSelectedText
= color_utils::AlphaBlend(
96 SK_ColorBLACK
, kTextfieldSelectionBackgroundFocused
, 0xDD);
97 static const SkColor kResultsTableNormalDimmedText
= color_utils::AlphaBlend(
98 SK_ColorBLACK
, kTextfieldDefaultBackground
, 0xBB);
99 static const SkColor kResultsTableHoveredDimmedText
= color_utils::AlphaBlend(
100 SK_ColorBLACK
, kResultsTableHoveredBackground
, 0xBB);
101 static const SkColor kResultsTableSelectedDimmedText
=
102 color_utils::AlphaBlend(
103 SK_ColorBLACK
, kTextfieldSelectionBackgroundFocused
, 0xBB);
104 static const SkColor kResultsTableSelectedOrHoveredUrl
=
105 SkColorSetARGB(0xff, 0x00, 0x66, 0x22);
106 static const SkColor kResultsTableNormalDivider
= color_utils::AlphaBlend(
107 kResultsTableNormalText
, kTextfieldDefaultBackground
, 0x34);
108 static const SkColor kResultsTableHoveredDivider
= color_utils::AlphaBlend(
109 kResultsTableHoveredText
, kResultsTableHoveredBackground
, 0x34);
110 static const SkColor kResultsTabSelectedDivider
= color_utils::AlphaBlend(
111 kResultsTableSelectedText
, kTextfieldSelectionBackgroundFocused
, 0x34);
114 if (CommonThemeGetSystemColor(color_id
, &color
))
119 case kColorId_WindowBackground
:
120 return kWindowBackgroundColor
;
123 case kColorId_DialogBackground
:
124 return kDialogBackgroundColor
;
127 case kColorId_FocusedBorderColor
:
128 return kFocusedBorderColor
;
129 case kColorId_UnfocusedBorderColor
:
130 return kUnfocusedBorderColor
;
133 case kColorId_ButtonBackgroundColor
:
134 return kButtonBackgroundColor
;
135 case kColorId_ButtonEnabledColor
:
136 return kButtonEnabledColor
;
137 case kColorId_ButtonDisabledColor
:
138 return kButtonDisabledColor
;
139 case kColorId_ButtonHighlightColor
:
140 return kButtonHighlightColor
;
141 case kColorId_ButtonHoverColor
:
142 return kButtonHoverColor
;
143 case kColorId_ButtonHoverBackgroundColor
:
144 return kButtonHoverBackgroundColor
;
147 case kColorId_EnabledMenuItemForegroundColor
:
148 return kEnabledMenuItemForegroundColor
;
149 case kColorId_DisabledMenuItemForegroundColor
:
150 return kDisabledMenuItemForegroundColor
;
151 case kColorId_DisabledEmphasizedMenuItemForegroundColor
:
152 return SK_ColorBLACK
;
153 case kColorId_SelectedMenuItemForegroundColor
:
154 return kEnabledMenuItemForegroundColor
;
155 case kColorId_FocusedMenuItemBackgroundColor
:
156 return kFocusedMenuItemBackgroundColor
;
157 case kColorId_HoverMenuItemBackgroundColor
:
158 return kHoverMenuItemBackgroundColor
;
159 case kColorId_MenuSeparatorColor
:
160 return kMenuSeparatorColor
;
161 case kColorId_EnabledMenuButtonBorderColor
:
162 return kEnabledMenuButtonBorderColor
;
163 case kColorId_FocusedMenuButtonBorderColor
:
164 return kFocusedMenuButtonBorderColor
;
165 case kColorId_HoverMenuButtonBorderColor
:
166 return kHoverMenuButtonBorderColor
;
169 case kColorId_LabelEnabledColor
:
170 return kLabelEnabledColor
;
171 case kColorId_LabelDisabledColor
:
172 return kLabelDisabledColor
;
173 case kColorId_LabelBackgroundColor
:
174 return kLabelBackgroundColor
;
177 case kColorId_TextfieldDefaultColor
:
178 return kTextfieldDefaultColor
;
179 case kColorId_TextfieldDefaultBackground
:
180 return kTextfieldDefaultBackground
;
181 case kColorId_TextfieldReadOnlyColor
:
182 return kTextfieldReadOnlyColor
;
183 case kColorId_TextfieldReadOnlyBackground
:
184 return kTextfieldReadOnlyBackground
;
185 case kColorId_TextfieldSelectionColor
:
186 return kTextfieldSelectionColor
;
187 case kColorId_TextfieldSelectionBackgroundFocused
:
188 return kTextfieldSelectionBackgroundFocused
;
191 case kColorId_TooltipBackground
:
192 return kTooltipBackground
;
193 case kColorId_TooltipText
:
194 return kTooltipTextColor
;
197 case kColorId_TreeBackground
:
198 return kTreeBackground
;
199 case kColorId_TreeText
:
200 return kTreeTextColor
;
201 case kColorId_TreeSelectedText
:
202 case kColorId_TreeSelectedTextUnfocused
:
203 return kTreeSelectedTextColor
;
204 case kColorId_TreeSelectionBackgroundFocused
:
205 case kColorId_TreeSelectionBackgroundUnfocused
:
206 return kTreeSelectionBackgroundColor
;
207 case kColorId_TreeArrow
:
208 return kTreeArrowColor
;
211 case kColorId_TableBackground
:
212 return kTableBackground
;
213 case kColorId_TableText
:
214 return kTableTextColor
;
215 case kColorId_TableSelectedText
:
216 case kColorId_TableSelectedTextUnfocused
:
217 return kTableSelectedTextColor
;
218 case kColorId_TableSelectionBackgroundFocused
:
219 case kColorId_TableSelectionBackgroundUnfocused
:
220 return kTableSelectionBackgroundColor
;
221 case kColorId_TableGroupingIndicatorColor
:
222 return kTableGroupingIndicatorColor
;
225 case kColorId_ResultsTableNormalBackground
:
226 return kTextfieldDefaultBackground
;
227 case kColorId_ResultsTableHoveredBackground
:
228 return kResultsTableHoveredBackground
;
229 case kColorId_ResultsTableSelectedBackground
:
230 return kTextfieldSelectionBackgroundFocused
;
231 case kColorId_ResultsTableNormalText
:
232 return kResultsTableNormalText
;
233 case kColorId_ResultsTableHoveredText
:
234 return kResultsTableHoveredText
;
235 case kColorId_ResultsTableSelectedText
:
236 return kResultsTableSelectedText
;
237 case kColorId_ResultsTableNormalDimmedText
:
238 return kResultsTableNormalDimmedText
;
239 case kColorId_ResultsTableHoveredDimmedText
:
240 return kResultsTableHoveredDimmedText
;
241 case kColorId_ResultsTableSelectedDimmedText
:
242 return kResultsTableSelectedDimmedText
;
243 case kColorId_ResultsTableNormalUrl
:
244 return kTextfieldSelectionColor
;
245 case kColorId_ResultsTableHoveredUrl
:
246 case kColorId_ResultsTableSelectedUrl
:
247 return kResultsTableSelectedOrHoveredUrl
;
248 case kColorId_ResultsTableNormalDivider
:
249 return kResultsTableNormalDivider
;
250 case kColorId_ResultsTableHoveredDivider
:
251 return kResultsTableHoveredDivider
;
252 case kColorId_ResultsTableSelectedDivider
:
253 return kResultsTabSelectedDivider
;
255 case kColorId_MenuBackgroundColor
:
256 return kMenuBackgroundColor
;
257 case kColorId_MenuBorderColor
:
262 return kInvalidColorIdColor
;