Revert of Add button to add new FSP services to Files app. (patchset #8 id:140001...
[chromium-blink-merge.git] / chrome / browser / themes / theme_properties.h
blob530315c1ae361af1b5292287a40f0283306dfbcc
1 // Copyright (c) 2013 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 #ifndef CHROME_BROWSER_THEMES_THEME_PROPERTIES_H_
6 #define CHROME_BROWSER_THEMES_THEME_PROPERTIES_H_
8 #include <set>
9 #include <string>
11 #include "base/basictypes.h"
12 #include "third_party/skia/include/core/SkColor.h"
13 #include "ui/gfx/color_utils.h"
15 // Static only class for querying which properties / images are themeable and
16 // the defaults of these properties.
17 // All methods are thread safe unless indicated otherwise.
18 class ThemeProperties {
19 public:
20 // ---------------------------------------------------------------------------
21 // The int values of OverwritableByUserThemeProperties, Alignment, and Tiling
22 // are used as a key to store the property in the browser theme pack. If you
23 // modify any of these enums, increment the version number in
24 // browser_theme_pack.h
26 enum OverwritableByUserThemeProperty {
27 COLOR_FRAME,
28 COLOR_FRAME_INACTIVE,
29 COLOR_FRAME_INCOGNITO,
30 COLOR_FRAME_INCOGNITO_INACTIVE,
31 COLOR_TOOLBAR,
32 COLOR_TAB_TEXT,
33 COLOR_BACKGROUND_TAB_TEXT,
34 COLOR_BOOKMARK_TEXT,
35 COLOR_NTP_BACKGROUND,
36 COLOR_NTP_TEXT,
37 COLOR_NTP_LINK,
38 COLOR_NTP_LINK_UNDERLINE,
39 COLOR_NTP_HEADER,
40 COLOR_NTP_SECTION,
41 COLOR_NTP_SECTION_TEXT,
42 COLOR_NTP_SECTION_LINK,
43 COLOR_NTP_SECTION_LINK_UNDERLINE,
44 COLOR_BUTTON_BACKGROUND,
46 TINT_BUTTONS,
47 TINT_FRAME,
48 TINT_FRAME_INACTIVE,
49 TINT_FRAME_INCOGNITO,
50 TINT_FRAME_INCOGNITO_INACTIVE,
51 TINT_BACKGROUND_TAB,
53 NTP_BACKGROUND_ALIGNMENT,
54 NTP_BACKGROUND_TILING,
55 NTP_LOGO_ALTERNATE
58 // A bitfield mask for alignments.
59 enum Alignment {
60 ALIGN_CENTER = 0,
61 ALIGN_LEFT = 1 << 0,
62 ALIGN_TOP = 1 << 1,
63 ALIGN_RIGHT = 1 << 2,
64 ALIGN_BOTTOM = 1 << 3,
67 // Background tiling choices.
68 enum Tiling {
69 NO_REPEAT = 0,
70 REPEAT_X = 1,
71 REPEAT_Y = 2,
72 REPEAT = 3
75 // --------------------------------------------------------------------------
76 // The int value of the properties in NotOverwritableByUserThemeProperties
77 // has no special meaning. Modify the enum to your heart's content.
78 // The enum takes on values >= 1000 as not to overlap with
79 // OverwritableByUserThemeProperties.
80 enum NotOverwritableByUserThemeProperty {
81 COLOR_CONTROL_BACKGROUND = 1000,
82 COLOR_TOOLBAR_SEPARATOR,
84 // These colors don't have constant default values. They are derived from
85 // the runtime value of other colors.
86 COLOR_NTP_SECTION_HEADER_TEXT,
87 COLOR_NTP_SECTION_HEADER_TEXT_HOVER,
88 COLOR_NTP_SECTION_HEADER_RULE,
89 COLOR_NTP_SECTION_HEADER_RULE_LIGHT,
90 COLOR_NTP_TEXT_LIGHT,
91 #if defined(ENABLE_SUPERVISED_USERS)
92 COLOR_SUPERVISED_USER_LABEL,
93 COLOR_SUPERVISED_USER_LABEL_BACKGROUND,
94 COLOR_SUPERVISED_USER_LABEL_BORDER,
95 #endif
97 COLOR_STATUS_BAR_TEXT,
99 #if defined(OS_MACOSX)
100 COLOR_TOOLBAR_BEZEL,
101 COLOR_TOOLBAR_STROKE,
102 COLOR_TOOLBAR_STROKE_INACTIVE,
103 COLOR_TOOLBAR_BUTTON_STROKE,
104 COLOR_TOOLBAR_BUTTON_STROKE_INACTIVE,
105 GRADIENT_FRAME_INCOGNITO,
106 GRADIENT_FRAME_INCOGNITO_INACTIVE,
107 GRADIENT_TOOLBAR,
108 GRADIENT_TOOLBAR_INACTIVE,
109 GRADIENT_TOOLBAR_BUTTON,
110 GRADIENT_TOOLBAR_BUTTON_INACTIVE,
111 GRADIENT_TOOLBAR_BUTTON_PRESSED,
112 GRADIENT_TOOLBAR_BUTTON_PRESSED_INACTIVE
113 #endif // OS_MACOSX
116 // Used by the browser theme pack to parse alignments from something like
117 // "top left" into a bitmask of Alignment.
118 static int StringToAlignment(const std::string& alignment);
120 // Used by the browser theme pack to parse alignments from something like
121 // "no-repeat" into a Tiling value.
122 static int StringToTiling(const std::string& tiling);
124 // Converts a bitmask of Alignment into a string like "top left". The result
125 // is used to generate a CSS value.
126 static std::string AlignmentToString(int alignment);
128 // Converts a Tiling into a string like "no-repeat". The result is used to
129 // generate a CSS value.
130 static std::string TilingToString(int tiling);
132 // Returns the set of IDR_* resources that should be tinted.
133 // This method is not thread safe.
134 static const std::set<int>& GetTintableToolbarButtons();
136 // Returns the default tint for the given tint |id| TINT_* enum value.
137 // Returns an HSL value of {-1, -1, -1} if |id| is invalid.
138 static color_utils::HSL GetDefaultTint(int id);
140 // Returns the default color for the given color |id| COLOR_* enum value.
141 // Returns SK_ColorRED if |id| is invalid.
142 static SkColor GetDefaultColor(int id);
144 // Returns the default value for the given property |id|. Returns -1 if |id|
145 // is invalid.
146 static int GetDefaultDisplayProperty(int id);
148 private:
149 DISALLOW_IMPLICIT_CONSTRUCTORS(ThemeProperties);
152 #endif // CHROME_BROWSER_THEMES_THEME_PROPERTIES_H_