fallback_theme.cc revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
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.
4
5#include "ui/native_theme/fallback_theme.h"
6
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"
11
12namespace ui {
13
14FallbackTheme::FallbackTheme() {
15}
16
17FallbackTheme::~FallbackTheme() {
18}
19
20SkColor FallbackTheme::GetSystemColor(ColorId color_id) const {
21  // This implementation returns hardcoded colors.
22
23  static const SkColor kInvalidColorIdColor = SkColorSetRGB(255, 0, 128);
24  // Menu:
25  static const SkColor kMenuBackgroundColor = SK_ColorWHITE;
26  // Windows:
27  static const SkColor kWindowBackgroundColor = SK_ColorWHITE;
28  // Dialogs:
29  static const SkColor kDialogBackgroundColor = SkColorSetRGB(251, 251, 251);
30  // FocusableBorder:
31  static const SkColor kFocusedBorderColor = SkColorSetRGB(0x4D, 0x90, 0xFE);
32  static const SkColor kUnfocusedBorderColor = SkColorSetRGB(0xD9, 0xD9, 0xD9);
33  // Button:
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);
41  // MenuItem:
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);
55  // Label:
56  static const SkColor kLabelEnabledColor = kButtonEnabledColor;
57  static const SkColor kLabelDisabledColor = kButtonDisabledColor;
58  static const SkColor kLabelBackgroundColor = SK_ColorWHITE;
59  // Textfield:
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);
69  // Tooltip
70  static const SkColor kTooltipBackground = 0xFFFFFFCC;
71  // Tree
72  static const SkColor kTreeBackground = SK_ColorWHITE;
73  static const SkColor kTreeTextColor = SK_ColorBLACK;
74  static const SkColor kTreeSelectedTextColor = SK_ColorBLACK;
75  static const SkColor kTreeSelectionBackgroundColor =
76      SkColorSetRGB(0xEE, 0xEE, 0xEE);
77  static const SkColor kTreeArrowColor = SkColorSetRGB(0x7A, 0x7A, 0x7A);
78  // Table
79  static const SkColor kTableBackground = SK_ColorWHITE;
80  static const SkColor kTableTextColor = SK_ColorBLACK;
81  static const SkColor kTableSelectedTextColor = SK_ColorBLACK;
82  static const SkColor kTableSelectionBackgroundColor =
83      SkColorSetRGB(0xEE, 0xEE, 0xEE);
84  static const SkColor kTableGroupingIndicatorColor =
85      SkColorSetRGB(0xCC, 0xCC, 0xCC);
86  // Results Tables
87  static const SkColor kResultsTableHoveredBackground =
88      color_utils::AlphaBlend(kTextfieldSelectionBackgroundFocused,
89                              kTextfieldDefaultBackground, 0x40);
90  static const SkColor kResultsTableNormalText = color_utils::AlphaBlend(
91      SK_ColorBLACK, kTextfieldDefaultBackground, 0xDD);
92  static const SkColor kResultsTableHoveredText = color_utils::AlphaBlend(
93      SK_ColorBLACK, kResultsTableHoveredBackground, 0xDD);
94  static const SkColor kResultsTableSelectedText = color_utils::AlphaBlend(
95      SK_ColorBLACK, kTextfieldSelectionBackgroundFocused, 0xDD);
96  static const SkColor kResultsTableNormalDimmedText = color_utils::AlphaBlend(
97      SK_ColorBLACK, kTextfieldDefaultBackground, 0xBB);
98  static const SkColor kResultsTableHoveredDimmedText = color_utils::AlphaBlend(
99      SK_ColorBLACK, kResultsTableHoveredBackground, 0xBB);
100  static const SkColor kResultsTableSelectedDimmedText =
101      color_utils::AlphaBlend(
102          SK_ColorBLACK, kTextfieldSelectionBackgroundFocused, 0xBB);
103  static const SkColor kResultsTableSelectedOrHoveredUrl =
104      SkColorSetARGB(0xff, 0x00, 0x66, 0x22);
105  static const SkColor kResultsTableNormalDivider = color_utils::AlphaBlend(
106      kResultsTableNormalText, kTextfieldDefaultBackground, 0x34);
107  static const SkColor kResultsTableHoveredDivider = color_utils::AlphaBlend(
108      kResultsTableHoveredText, kResultsTableHoveredBackground, 0x34);
109  static const SkColor kResultsTabSelectedDivider = color_utils::AlphaBlend(
110      kResultsTableSelectedText, kTextfieldSelectionBackgroundFocused, 0x34);
111
112  SkColor color;
113  if (CommonThemeGetSystemColor(color_id, &color))
114    return color;
115
116  switch (color_id) {
117    // Windows
118    case kColorId_WindowBackground:
119      return kWindowBackgroundColor;
120
121    // Dialogs
122    case kColorId_DialogBackground:
123      return kDialogBackgroundColor;
124
125    // FocusableBorder
126    case kColorId_FocusedBorderColor:
127      return kFocusedBorderColor;
128    case kColorId_UnfocusedBorderColor:
129      return kUnfocusedBorderColor;
130
131    // Button
132    case kColorId_ButtonBackgroundColor:
133      return kButtonBackgroundColor;
134    case kColorId_ButtonEnabledColor:
135      return kButtonEnabledColor;
136    case kColorId_ButtonDisabledColor:
137      return kButtonDisabledColor;
138    case kColorId_ButtonHighlightColor:
139      return kButtonHighlightColor;
140    case kColorId_ButtonHoverColor:
141      return kButtonHoverColor;
142    case kColorId_ButtonHoverBackgroundColor:
143      return kButtonHoverBackgroundColor;
144
145    // MenuItem
146    case kColorId_EnabledMenuItemForegroundColor:
147      return kEnabledMenuItemForegroundColor;
148    case kColorId_DisabledMenuItemForegroundColor:
149      return kDisabledMenuItemForegroundColor;
150    case kColorId_DisabledEmphasizedMenuItemForegroundColor:
151      return SK_ColorBLACK;
152    case kColorId_SelectedMenuItemForegroundColor:
153      return kEnabledMenuItemForegroundColor;
154    case kColorId_FocusedMenuItemBackgroundColor:
155      return kFocusedMenuItemBackgroundColor;
156    case kColorId_HoverMenuItemBackgroundColor:
157      return kHoverMenuItemBackgroundColor;
158    case kColorId_MenuSeparatorColor:
159      return kMenuSeparatorColor;
160    case kColorId_EnabledMenuButtonBorderColor:
161      return kEnabledMenuButtonBorderColor;
162    case kColorId_FocusedMenuButtonBorderColor:
163      return kFocusedMenuButtonBorderColor;
164    case kColorId_HoverMenuButtonBorderColor:
165      return kHoverMenuButtonBorderColor;
166
167    // Label
168    case kColorId_LabelEnabledColor:
169      return kLabelEnabledColor;
170    case kColorId_LabelDisabledColor:
171      return kLabelDisabledColor;
172    case kColorId_LabelBackgroundColor:
173      return kLabelBackgroundColor;
174
175    // Textfield
176    case kColorId_TextfieldDefaultColor:
177      return kTextfieldDefaultColor;
178    case kColorId_TextfieldDefaultBackground:
179      return kTextfieldDefaultBackground;
180    case kColorId_TextfieldReadOnlyColor:
181      return kTextfieldReadOnlyColor;
182    case kColorId_TextfieldReadOnlyBackground:
183      return kTextfieldReadOnlyBackground;
184    case kColorId_TextfieldSelectionColor:
185      return kTextfieldSelectionColor;
186    case kColorId_TextfieldSelectionBackgroundFocused:
187      return kTextfieldSelectionBackgroundFocused;
188
189    // Tooltip
190    case kColorId_TooltipBackground:
191      return kTooltipBackground;
192
193    // Tree
194    case kColorId_TreeBackground:
195      return kTreeBackground;
196    case kColorId_TreeText:
197      return kTreeTextColor;
198    case kColorId_TreeSelectedText:
199    case kColorId_TreeSelectedTextUnfocused:
200      return kTreeSelectedTextColor;
201    case kColorId_TreeSelectionBackgroundFocused:
202    case kColorId_TreeSelectionBackgroundUnfocused:
203      return kTreeSelectionBackgroundColor;
204    case kColorId_TreeArrow:
205      return kTreeArrowColor;
206
207    // Table
208    case kColorId_TableBackground:
209      return kTableBackground;
210    case kColorId_TableText:
211      return kTableTextColor;
212    case kColorId_TableSelectedText:
213    case kColorId_TableSelectedTextUnfocused:
214      return kTableSelectedTextColor;
215    case kColorId_TableSelectionBackgroundFocused:
216    case kColorId_TableSelectionBackgroundUnfocused:
217      return kTableSelectionBackgroundColor;
218    case kColorId_TableGroupingIndicatorColor:
219      return kTableGroupingIndicatorColor;
220
221    // Results Tables
222    case kColorId_ResultsTableNormalBackground:
223      return kTextfieldDefaultBackground;
224    case kColorId_ResultsTableHoveredBackground:
225      return kResultsTableHoveredBackground;
226    case kColorId_ResultsTableSelectedBackground:
227      return kTextfieldSelectionBackgroundFocused;
228    case kColorId_ResultsTableNormalText:
229      return kResultsTableNormalText;
230    case kColorId_ResultsTableHoveredText:
231      return kResultsTableHoveredText;
232    case kColorId_ResultsTableSelectedText:
233      return kResultsTableSelectedText;
234    case kColorId_ResultsTableNormalDimmedText:
235      return kResultsTableNormalDimmedText;
236    case kColorId_ResultsTableHoveredDimmedText:
237      return kResultsTableHoveredDimmedText;
238    case kColorId_ResultsTableSelectedDimmedText:
239      return kResultsTableSelectedDimmedText;
240    case kColorId_ResultsTableNormalUrl:
241      return kTextfieldSelectionColor;
242    case kColorId_ResultsTableHoveredUrl:
243    case kColorId_ResultsTableSelectedUrl:
244      return kResultsTableSelectedOrHoveredUrl;
245    case kColorId_ResultsTableNormalDivider:
246      return kResultsTableNormalDivider;
247    case kColorId_ResultsTableHoveredDivider:
248      return kResultsTableHoveredDivider;
249    case kColorId_ResultsTableSelectedDivider:
250      return kResultsTabSelectedDivider;
251
252    case kColorId_MenuBackgroundColor:
253      return kMenuBackgroundColor;
254    case kColorId_MenuBorderColor:
255      NOTREACHED();
256      break;
257  }
258
259  return kInvalidColorIdColor;
260}
261
262}  // namespace ui
263