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 // Windows: 25 static const SkColor kWindowBackgroundColor = SK_ColorWHITE; 26 // Dialogs: 27 static const SkColor kDialogBackgroundColor = SkColorSetRGB(251, 251, 251); 28 // FocusableBorder: 29 static const SkColor kFocusedBorderColor = SkColorSetRGB(0x4D, 0x90, 0xFE); 30 static const SkColor kUnfocusedBorderColor = SkColorSetRGB(0xD9, 0xD9, 0xD9); 31 // Button: 32 static const SkColor kButtonBackgroundColor = SkColorSetRGB(0xDE, 0xDE, 0xDE); 33 static const SkColor kButtonEnabledColor = SkColorSetRGB(0x22, 0x22, 0x22); 34 static const SkColor kButtonHighlightColor = SkColorSetRGB(0, 0, 0); 35 static const SkColor kButtonHoverColor = kButtonEnabledColor; 36 // Label: 37 static const SkColor kLabelEnabledColor = kButtonEnabledColor; 38 static const SkColor kLabelBackgroundColor = SK_ColorWHITE; 39 // Textfield: 40 static const SkColor kTextfieldDefaultColor = SK_ColorBLACK; 41 static const SkColor kTextfieldDefaultBackground = SK_ColorWHITE; 42 static const SkColor kTextfieldReadOnlyColor = SK_ColorDKGRAY; 43 static const SkColor kTextfieldReadOnlyBackground = SK_ColorWHITE; 44 static const SkColor kTextfieldSelectionBackgroundFocused = 45 SkColorSetARGB(0x54, 0x60, 0xA8, 0xEB); 46 static const SkColor kTextfieldSelectionColor = 47 color_utils::AlphaBlend(SK_ColorBLACK, 48 kTextfieldSelectionBackgroundFocused, 0xdd); 49 // Tooltip 50 static const SkColor kTooltipBackground = 0xFFFFFFCC; 51 static const SkColor kTooltipTextColor = kLabelEnabledColor; 52 // Tree 53 static const SkColor kTreeBackground = SK_ColorWHITE; 54 static const SkColor kTreeTextColor = SK_ColorBLACK; 55 static const SkColor kTreeSelectedTextColor = SK_ColorBLACK; 56 static const SkColor kTreeSelectionBackgroundColor = 57 SkColorSetRGB(0xEE, 0xEE, 0xEE); 58 static const SkColor kTreeArrowColor = SkColorSetRGB(0x7A, 0x7A, 0x7A); 59 // Table 60 static const SkColor kTableBackground = SK_ColorWHITE; 61 static const SkColor kTableTextColor = SK_ColorBLACK; 62 static const SkColor kTableSelectedTextColor = SK_ColorBLACK; 63 static const SkColor kTableSelectionBackgroundColor = 64 SkColorSetRGB(0xEE, 0xEE, 0xEE); 65 static const SkColor kTableGroupingIndicatorColor = 66 SkColorSetRGB(0xCC, 0xCC, 0xCC); 67 // Results Tables 68 static const SkColor kResultsTableHoveredBackground = 69 color_utils::AlphaBlend(kTextfieldSelectionBackgroundFocused, 70 kTextfieldDefaultBackground, 0x40); 71 static const SkColor kResultsTableNormalText = color_utils::AlphaBlend( 72 SK_ColorBLACK, kTextfieldDefaultBackground, 0xDD); 73 static const SkColor kResultsTableHoveredText = color_utils::AlphaBlend( 74 SK_ColorBLACK, kResultsTableHoveredBackground, 0xDD); 75 static const SkColor kResultsTableSelectedText = color_utils::AlphaBlend( 76 SK_ColorBLACK, kTextfieldSelectionBackgroundFocused, 0xDD); 77 static const SkColor kResultsTableNormalDimmedText = color_utils::AlphaBlend( 78 SK_ColorBLACK, kTextfieldDefaultBackground, 0xBB); 79 static const SkColor kResultsTableHoveredDimmedText = color_utils::AlphaBlend( 80 SK_ColorBLACK, kResultsTableHoveredBackground, 0xBB); 81 static const SkColor kResultsTableSelectedDimmedText = 82 color_utils::AlphaBlend( 83 SK_ColorBLACK, kTextfieldSelectionBackgroundFocused, 0xBB); 84 static const SkColor kResultsTableSelectedOrHoveredUrl = 85 SkColorSetARGB(0xff, 0x00, 0x66, 0x22); 86 static const SkColor kResultsTableNormalDivider = color_utils::AlphaBlend( 87 kResultsTableNormalText, kTextfieldDefaultBackground, 0x34); 88 static const SkColor kResultsTableHoveredDivider = color_utils::AlphaBlend( 89 kResultsTableHoveredText, kResultsTableHoveredBackground, 0x34); 90 static const SkColor kResultsTabSelectedDivider = color_utils::AlphaBlend( 91 kResultsTableSelectedText, kTextfieldSelectionBackgroundFocused, 0x34); 92 93 SkColor color; 94 if (CommonThemeGetSystemColor(color_id, &color)) 95 return color; 96 97 switch (color_id) { 98 // Windows 99 case kColorId_WindowBackground: 100 return kWindowBackgroundColor; 101 102 // Dialogs 103 case kColorId_DialogBackground: 104 return kDialogBackgroundColor; 105 106 // FocusableBorder 107 case kColorId_FocusedBorderColor: 108 return kFocusedBorderColor; 109 case kColorId_UnfocusedBorderColor: 110 return kUnfocusedBorderColor; 111 112 // Button 113 case kColorId_ButtonBackgroundColor: 114 return kButtonBackgroundColor; 115 case kColorId_ButtonEnabledColor: 116 return kButtonEnabledColor; 117 case kColorId_ButtonHighlightColor: 118 return kButtonHighlightColor; 119 case kColorId_ButtonHoverColor: 120 return kButtonHoverColor; 121 122 // Label 123 case kColorId_LabelEnabledColor: 124 return kLabelEnabledColor; 125 case kColorId_LabelDisabledColor: 126 return GetSystemColor(kColorId_ButtonDisabledColor); 127 case kColorId_LabelBackgroundColor: 128 return kLabelBackgroundColor; 129 130 // Textfield 131 case kColorId_TextfieldDefaultColor: 132 return kTextfieldDefaultColor; 133 case kColorId_TextfieldDefaultBackground: 134 return kTextfieldDefaultBackground; 135 case kColorId_TextfieldReadOnlyColor: 136 return kTextfieldReadOnlyColor; 137 case kColorId_TextfieldReadOnlyBackground: 138 return kTextfieldReadOnlyBackground; 139 case kColorId_TextfieldSelectionColor: 140 return kTextfieldSelectionColor; 141 case kColorId_TextfieldSelectionBackgroundFocused: 142 return kTextfieldSelectionBackgroundFocused; 143 144 // Tooltip 145 case kColorId_TooltipBackground: 146 return kTooltipBackground; 147 case kColorId_TooltipText: 148 return kTooltipTextColor; 149 150 // Tree 151 case kColorId_TreeBackground: 152 return kTreeBackground; 153 case kColorId_TreeText: 154 return kTreeTextColor; 155 case kColorId_TreeSelectedText: 156 case kColorId_TreeSelectedTextUnfocused: 157 return kTreeSelectedTextColor; 158 case kColorId_TreeSelectionBackgroundFocused: 159 case kColorId_TreeSelectionBackgroundUnfocused: 160 return kTreeSelectionBackgroundColor; 161 case kColorId_TreeArrow: 162 return kTreeArrowColor; 163 164 // Table 165 case kColorId_TableBackground: 166 return kTableBackground; 167 case kColorId_TableText: 168 return kTableTextColor; 169 case kColorId_TableSelectedText: 170 case kColorId_TableSelectedTextUnfocused: 171 return kTableSelectedTextColor; 172 case kColorId_TableSelectionBackgroundFocused: 173 case kColorId_TableSelectionBackgroundUnfocused: 174 return kTableSelectionBackgroundColor; 175 case kColorId_TableGroupingIndicatorColor: 176 return kTableGroupingIndicatorColor; 177 178 // Results Tables 179 case kColorId_ResultsTableNormalBackground: 180 return kTextfieldDefaultBackground; 181 case kColorId_ResultsTableHoveredBackground: 182 return kResultsTableHoveredBackground; 183 case kColorId_ResultsTableSelectedBackground: 184 return kTextfieldSelectionBackgroundFocused; 185 case kColorId_ResultsTableNormalText: 186 return kResultsTableNormalText; 187 case kColorId_ResultsTableHoveredText: 188 return kResultsTableHoveredText; 189 case kColorId_ResultsTableSelectedText: 190 return kResultsTableSelectedText; 191 case kColorId_ResultsTableNormalDimmedText: 192 return kResultsTableNormalDimmedText; 193 case kColorId_ResultsTableHoveredDimmedText: 194 return kResultsTableHoveredDimmedText; 195 case kColorId_ResultsTableSelectedDimmedText: 196 return kResultsTableSelectedDimmedText; 197 case kColorId_ResultsTableNormalUrl: 198 return kTextfieldSelectionColor; 199 case kColorId_ResultsTableHoveredUrl: 200 case kColorId_ResultsTableSelectedUrl: 201 return kResultsTableSelectedOrHoveredUrl; 202 case kColorId_ResultsTableNormalDivider: 203 return kResultsTableNormalDivider; 204 case kColorId_ResultsTableHoveredDivider: 205 return kResultsTableHoveredDivider; 206 case kColorId_ResultsTableSelectedDivider: 207 return kResultsTabSelectedDivider; 208 209 default: 210 NOTREACHED(); 211 break; 212 } 213 214 return kInvalidColorIdColor; 215 } 216 217 } // namespace ui 218