OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // TestShellWebTheme::Control implements the generic rendering of controls | 5 // TestShellWebTheme::Control implements the generic rendering of controls |
6 // needed by TestShellWebTheme::Engine. See the comments in that class | 6 // needed by TestShellWebTheme::Engine. See the comments in that class |
7 // header file for why this class is needed and used. | 7 // header file for why this class is needed and used. |
8 // | 8 // |
9 // This class implements a generic set of widgets using Skia. The widgets | 9 // This class implements a generic set of widgets using Skia. The widgets |
10 // are optimized for testability, not a pleasing appearance. | 10 // are optimized for testability, not a pleasing appearance. |
11 // | 11 // |
(...skipping 24 matching lines...) Expand all Loading... |
36 // selected | 36 // selected |
37 // Normal - the normal state of control on the page when it isn't | 37 // Normal - the normal state of control on the page when it isn't |
38 // focused or otherwise active | 38 // focused or otherwise active |
39 // Hot - when the mouse is hovering over a part of the control, | 39 // Hot - when the mouse is hovering over a part of the control, |
40 // all the other parts are considered "hot" | 40 // all the other parts are considered "hot" |
41 // Hover - when the mouse is directly over a control (the CSS | 41 // Hover - when the mouse is directly over a control (the CSS |
42 // :hover pseudo-class) | 42 // :hover pseudo-class) |
43 // Focused - when the control has the keyboard focus | 43 // Focused - when the control has the keyboard focus |
44 // Pressed - when the control is being triggered (by a mousedown or | 44 // Pressed - when the control is being triggered (by a mousedown or |
45 // a key event). | 45 // a key event). |
| 46 // Indeterminate - when set to indeterminate (only for progress bar) |
46 enum State { | 47 enum State { |
47 kUnknown_State = 0, | 48 kUnknown_State = 0, |
48 kDisabled_State, | 49 kDisabled_State, |
49 kReadOnly_State, | 50 kReadOnly_State, |
50 kNormal_State, | 51 kNormal_State, |
51 kHot_State, | 52 kHot_State, |
52 kHover_State, | 53 kHover_State, |
53 kFocused_State, | 54 kFocused_State, |
54 kPressed_State | 55 kPressed_State, |
| 56 kIndeterminate_State |
55 }; | 57 }; |
56 | 58 |
57 // This list of types mostly mirrors the list in | 59 // This list of types mostly mirrors the list in |
58 // third_party/WebKit/WebCore/platform/ThemeTypes.h but is maintained | 60 // third_party/WebKit/WebCore/platform/ThemeTypes.h but is maintained |
59 // separately since that isn't public and also to minimize dependencies. | 61 // separately since that isn't public and also to minimize dependencies. |
60 // | 62 // |
61 // Note that what the user might think of as a single control can be | 63 // Note that what the user might think of as a single control can be |
62 // made up of multiple parts. For example, a single scroll bar contains | 64 // made up of multiple parts. For example, a single scroll bar contains |
63 // six clickable parts - two arrows, the "thumb" indicating the current | 65 // six clickable parts - two arrows, the "thumb" indicating the current |
64 // position on the bar, the other two parts of the bar (before and after | 66 // position on the bar, the other two parts of the bar (before and after |
(...skipping 14 matching lines...) Expand all Loading... |
79 kVerticalScrollTrackBack_Type, | 81 kVerticalScrollTrackBack_Type, |
80 kVerticalScrollTrackForward_Type, | 82 kVerticalScrollTrackForward_Type, |
81 kVerticalScrollThumb_Type, | 83 kVerticalScrollThumb_Type, |
82 kVerticalScrollGrip_Type, | 84 kVerticalScrollGrip_Type, |
83 kLeftArrow_Type, | 85 kLeftArrow_Type, |
84 kRightArrow_Type, | 86 kRightArrow_Type, |
85 kUpArrow_Type, | 87 kUpArrow_Type, |
86 kDownArrow_Type, | 88 kDownArrow_Type, |
87 kHorizontalSliderTrack_Type, | 89 kHorizontalSliderTrack_Type, |
88 kHorizontalSliderThumb_Type, | 90 kHorizontalSliderThumb_Type, |
89 kDropDownButton_Type | 91 kDropDownButton_Type, |
| 92 kProgressBar_Type |
90 }; | 93 }; |
91 | 94 |
92 // canvas is the canvas to draw onto, and rect gives the size of the | 95 // canvas is the canvas to draw onto, and rect gives the size of the |
93 // control. ctype and cstate specify the type and state of the control. | 96 // control. ctype and cstate specify the type and state of the control. |
94 Control(skia::PlatformCanvas *canvas, const SkIRect &rect, | 97 Control(skia::PlatformCanvas* canvas, const SkIRect& rect, |
95 Type ctype, State cstate); | 98 Type ctype, State cstate); |
96 ~Control(); | 99 ~Control(); |
97 | 100 |
98 // Draws the control. | 101 // Draws the control. |
99 void draw(); | 102 void draw(); |
100 | 103 |
101 // Use this for TextField controls instead, because the logic | 104 // Use this for TextField controls instead, because the logic |
102 // for drawing them is dependent on what WebKit tells us to do. | 105 // for drawing them is dependent on what WebKit tells us to do. |
103 // If draw_edges is true, draw an edge around the control. If | 106 // If draw_edges is true, draw an edge around the control. If |
104 // fill_content_area is true, fill the content area with the given color. | 107 // fill_content_area is true, fill the content area with the given color. |
105 void drawTextField(bool draw_edges, bool fill_content_area, SkColor color); | 108 void drawTextField(bool draw_edges, bool fill_content_area, SkColor color); |
106 | 109 |
| 110 // Use this for drawing ProgressBar controls instead, since we |
| 111 // need to know the rect to fill inside the bar. |
| 112 void drawProgressBar(const SkIRect& fill_rect); |
| 113 |
107 private: | 114 private: |
108 // Draws a box of size specified by irect, filled with the given color. | 115 // Draws a box of size specified by irect, filled with the given color. |
109 // The box will have a border drawn in the default edge color. | 116 // The box will have a border drawn in the default edge color. |
110 void box(const SkIRect &irect, SkColor color); | 117 void box(const SkIRect& irect, SkColor color); |
111 | 118 |
112 | 119 |
113 // Draws a triangle of size specified by the three pairs of coordinates, | 120 // Draws a triangle of size specified by the three pairs of coordinates, |
114 // filled with the given color. The box will have an edge drawn in the | 121 // filled with the given color. The box will have an edge drawn in the |
115 // default edge color. | 122 // default edge color. |
116 void triangle(int x0, int y0, int x1, int y1, int x2, int y2, | 123 void triangle(int x0, int y0, int x1, int y1, int x2, int y2, |
117 SkColor color); | 124 SkColor color); |
118 | 125 |
119 // Draws a rectangle the size of the control with rounded corners, filled | 126 // Draws a rectangle the size of the control with rounded corners, filled |
120 // with the specified color (and with a border in the default edge color). | 127 // with the specified color (and with a border in the default edge color). |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 const int width_; | 168 const int width_; |
162 const int height_; | 169 const int height_; |
163 | 170 |
164 DISALLOW_COPY_AND_ASSIGN(Control); | 171 DISALLOW_COPY_AND_ASSIGN(Control); |
165 }; | 172 }; |
166 | 173 |
167 } // namespace TestShellWebTheme | 174 } // namespace TestShellWebTheme |
168 | 175 |
169 #endif // WEBKIT_TOOLS_TEST_SHELL_TEST_SHELL_WEBTHEMECONTROL_H_ | 176 #endif // WEBKIT_TOOLS_TEST_SHELL_TEST_SHELL_WEBTHEMECONTROL_H_ |
170 | 177 |
OLD | NEW |