Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / ui / native_theme / fallback_theme.cc
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
12 namespace ui {
13
14 FallbackTheme::FallbackTheme() {
15 }
16
17 FallbackTheme::~FallbackTheme() {
18 }
19
20 SkColor 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