Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Side by Side Diff: ui/native_theme/native_theme_base.h

Issue 2640983002: Rename paint data structures (Closed)
Patch Set: Rebase Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 #ifndef UI_NATIVE_THEME_NATIVE_THEME_BASE_H_ 5 #ifndef UI_NATIVE_THEME_NATIVE_THEME_BASE_H_
6 #define UI_NATIVE_THEME_NATIVE_THEME_BASE_H_ 6 #define UI_NATIVE_THEME_NATIVE_THEME_BASE_H_
7 7
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
11 #include "base/gtest_prod_util.h" 11 #include "base/gtest_prod_util.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "skia/ext/platform_canvas.h" 13 #include "cc/paint/paint_flags.h"
14 #include "ui/native_theme/native_theme.h" 14 #include "ui/native_theme/native_theme.h"
15 15
16 namespace gfx { 16 namespace gfx {
17 class Rect; 17 class Rect;
18 class Size; 18 class Size;
19 } 19 }
20 20
21 namespace ui { 21 namespace ui {
22 22
23 // Theme support for non-Windows toolkits. 23 // Theme support for non-Windows toolkits.
24 class NATIVE_THEME_EXPORT NativeThemeBase : public NativeTheme { 24 class NATIVE_THEME_EXPORT NativeThemeBase : public NativeTheme {
25 public: 25 public:
26 // NativeTheme implementation: 26 // NativeTheme implementation:
27 gfx::Size GetPartSize(Part part, 27 gfx::Size GetPartSize(Part part,
28 State state, 28 State state,
29 const ExtraParams& extra) const override; 29 const ExtraParams& extra) const override;
30 void Paint(SkCanvas* canvas, 30 void Paint(cc::PaintCanvas* canvas,
31 Part part, 31 Part part,
32 State state, 32 State state,
33 const gfx::Rect& rect, 33 const gfx::Rect& rect,
34 const ExtraParams& extra) const override; 34 const ExtraParams& extra) const override;
35 35
36 protected: 36 protected:
37 NativeThemeBase(); 37 NativeThemeBase();
38 ~NativeThemeBase() override; 38 ~NativeThemeBase() override;
39 39
40 // Draw the arrow. Used by scrollbar and inner spin button. 40 // Draw the arrow. Used by scrollbar and inner spin button.
41 virtual void PaintArrowButton( 41 virtual void PaintArrowButton(cc::PaintCanvas* gc,
42 SkCanvas* gc, 42 const gfx::Rect& rect,
43 const gfx::Rect& rect, 43 Part direction,
44 Part direction, 44 State state) const;
45 State state) const;
46 // Paint the scrollbar track. Done before the thumb so that it can contain 45 // Paint the scrollbar track. Done before the thumb so that it can contain
47 // alpha. 46 // alpha.
48 virtual void PaintScrollbarTrack( 47 virtual void PaintScrollbarTrack(
49 SkCanvas* canvas, 48 cc::PaintCanvas* canvas,
50 Part part, 49 Part part,
51 State state, 50 State state,
52 const ScrollbarTrackExtraParams& extra_params, 51 const ScrollbarTrackExtraParams& extra_params,
53 const gfx::Rect& rect) const; 52 const gfx::Rect& rect) const;
54 // Draw the scrollbar thumb over the track. 53 // Draw the scrollbar thumb over the track.
55 virtual void PaintScrollbarThumb( 54 virtual void PaintScrollbarThumb(
56 SkCanvas* canvas, 55 cc::PaintCanvas* canvas,
57 Part part, 56 Part part,
58 State state, 57 State state,
59 const gfx::Rect& rect, 58 const gfx::Rect& rect,
60 NativeTheme::ScrollbarOverlayColorTheme theme) const; 59 NativeTheme::ScrollbarOverlayColorTheme theme) const;
61 60
62 virtual void PaintScrollbarCorner(SkCanvas* canvas, 61 virtual void PaintScrollbarCorner(cc::PaintCanvas* canvas,
63 State state, 62 State state,
64 const gfx::Rect& rect) const; 63 const gfx::Rect& rect) const;
65 64
66 virtual void PaintCheckbox( 65 virtual void PaintCheckbox(cc::PaintCanvas* canvas,
67 SkCanvas* canvas, 66 State state,
68 State state, 67 const gfx::Rect& rect,
69 const gfx::Rect& rect, 68 const ButtonExtraParams& button) const;
70 const ButtonExtraParams& button) const;
71 69
72 virtual void PaintRadio( 70 virtual void PaintRadio(cc::PaintCanvas* canvas,
73 SkCanvas* canvas, 71 State state,
74 State state, 72 const gfx::Rect& rect,
75 const gfx::Rect& rect, 73 const ButtonExtraParams& button) const;
76 const ButtonExtraParams& button) const;
77 74
78 virtual void PaintButton( 75 virtual void PaintButton(cc::PaintCanvas* canvas,
79 SkCanvas* canvas, 76 State state,
80 State state, 77 const gfx::Rect& rect,
81 const gfx::Rect& rect, 78 const ButtonExtraParams& button) const;
82 const ButtonExtraParams& button) const;
83 79
84 virtual void PaintTextField( 80 virtual void PaintTextField(cc::PaintCanvas* canvas,
85 SkCanvas* canvas, 81 State state,
86 State state, 82 const gfx::Rect& rect,
87 const gfx::Rect& rect, 83 const TextFieldExtraParams& text) const;
88 const TextFieldExtraParams& text) const;
89 84
90 virtual void PaintMenuList( 85 virtual void PaintMenuList(cc::PaintCanvas* canvas,
91 SkCanvas* canvas, 86 State state,
92 State state, 87 const gfx::Rect& rect,
93 const gfx::Rect& rect, 88 const MenuListExtraParams& menu_list) const;
94 const MenuListExtraParams& menu_list) const;
95 89
96 virtual void PaintMenuPopupBackground( 90 virtual void PaintMenuPopupBackground(
97 SkCanvas* canvas, 91 cc::PaintCanvas* canvas,
98 const gfx::Size& size, 92 const gfx::Size& size,
99 const MenuBackgroundExtraParams& menu_background) const; 93 const MenuBackgroundExtraParams& menu_background) const;
100 94
101 virtual void PaintMenuItemBackground( 95 virtual void PaintMenuItemBackground(
102 SkCanvas* canvas, 96 cc::PaintCanvas* canvas,
103 State state, 97 State state,
104 const gfx::Rect& rect, 98 const gfx::Rect& rect,
105 const MenuItemExtraParams& menu_item) const; 99 const MenuItemExtraParams& menu_item) const;
106 100
107 virtual void PaintSliderTrack( 101 virtual void PaintSliderTrack(cc::PaintCanvas* canvas,
108 SkCanvas* canvas, 102 State state,
109 State state, 103 const gfx::Rect& rect,
110 const gfx::Rect& rect, 104 const SliderExtraParams& slider) const;
111 const SliderExtraParams& slider) const;
112 105
113 virtual void PaintSliderThumb( 106 virtual void PaintSliderThumb(cc::PaintCanvas* canvas,
114 SkCanvas* canvas, 107 State state,
115 State state, 108 const gfx::Rect& rect,
116 const gfx::Rect& rect, 109 const SliderExtraParams& slider) const;
117 const SliderExtraParams& slider) const;
118 110
119 virtual void PaintInnerSpinButton( 111 virtual void PaintInnerSpinButton(
120 SkCanvas* canvas, 112 cc::PaintCanvas* canvas,
121 State state, 113 State state,
122 const gfx::Rect& rect, 114 const gfx::Rect& rect,
123 const InnerSpinButtonExtraParams& spin_button) const; 115 const InnerSpinButtonExtraParams& spin_button) const;
124 116
125 virtual void PaintProgressBar( 117 virtual void PaintProgressBar(
126 SkCanvas* canvas, 118 cc::PaintCanvas* canvas,
127 State state, 119 State state,
128 const gfx::Rect& rect, 120 const gfx::Rect& rect,
129 const ProgressBarExtraParams& progress_bar) const; 121 const ProgressBarExtraParams& progress_bar) const;
130 122
131 virtual void PaintFrameTopArea( 123 virtual void PaintFrameTopArea(
132 SkCanvas* canvas, 124 SkCanvas* canvas,
133 State state, 125 State state,
134 const gfx::Rect& rect, 126 const gfx::Rect& rect,
135 const FrameTopAreaExtraParams& frame_top_area) const; 127 const FrameTopAreaExtraParams& frame_top_area) const;
136 128
137 // Shrinks checkbox/radio button rect, if necessary, to make room for padding 129 // Shrinks checkbox/radio button rect, if necessary, to make room for padding
138 // and drop shadow. 130 // and drop shadow.
139 // TODO(mohsen): This is needed because checkboxes/radio buttons on Android 131 // TODO(mohsen): This is needed because checkboxes/radio buttons on Android
140 // have different padding from those on desktop Chrome. Get rid of this when 132 // have different padding from those on desktop Chrome. Get rid of this when
141 // crbug.com/530746 is resolved. 133 // crbug.com/530746 is resolved.
142 virtual void AdjustCheckboxRadioRectForPadding(SkRect* rect) const; 134 virtual void AdjustCheckboxRadioRectForPadding(SkRect* rect) const;
143 135
144 void set_scrollbar_button_length(int length) { 136 void set_scrollbar_button_length(int length) {
145 scrollbar_button_length_ = length; 137 scrollbar_button_length_ = length;
146 } 138 }
147 int scrollbar_button_length() const { return scrollbar_button_length_; } 139 int scrollbar_button_length() const { return scrollbar_button_length_; }
148 140
149 SkColor SaturateAndBrighten(SkScalar* hsv, 141 SkColor SaturateAndBrighten(SkScalar* hsv,
150 SkScalar saturate_amount, 142 SkScalar saturate_amount,
151 SkScalar brighten_amount) const; 143 SkScalar brighten_amount) const;
152 144
153 // Paints the arrow used on the scrollbar and spinner. 145 // Paints the arrow used on the scrollbar and spinner.
154 void PaintArrow(SkCanvas* canvas, 146 void PaintArrow(cc::PaintCanvas* canvas,
155 const gfx::Rect& rect, 147 const gfx::Rect& rect,
156 Part direction, 148 Part direction,
157 SkColor color) const; 149 SkColor color) const;
158 150
159 // Returns the color used to draw the arrow. 151 // Returns the color used to draw the arrow.
160 SkColor GetArrowColor(State state) const; 152 SkColor GetArrowColor(State state) const;
161 153
162 int scrollbar_width_; 154 int scrollbar_width_;
163 155
164 private: 156 private:
165 friend class NativeThemeAuraTest; 157 friend class NativeThemeAuraTest;
166 158
167 SkPath PathForArrow(const gfx::Rect& rect, Part direction) const; 159 SkPath PathForArrow(const gfx::Rect& rect, Part direction) const;
168 gfx::Rect BoundingRectForArrow(const gfx::Rect& rect) const; 160 gfx::Rect BoundingRectForArrow(const gfx::Rect& rect) const;
169 161
170 void DrawVertLine(SkCanvas* canvas, 162 void DrawVertLine(cc::PaintCanvas* canvas,
171 int x, 163 int x,
172 int y1, 164 int y1,
173 int y2, 165 int y2,
174 const SkPaint& paint) const; 166 const cc::PaintFlags& paint) const;
175 void DrawHorizLine(SkCanvas* canvas, 167 void DrawHorizLine(cc::PaintCanvas* canvas,
176 int x1, 168 int x1,
177 int x2, 169 int x2,
178 int y, 170 int y,
179 const SkPaint& paint) const; 171 const cc::PaintFlags& paint) const;
180 void DrawBox(SkCanvas* canvas, 172 void DrawBox(cc::PaintCanvas* canvas,
181 const gfx::Rect& rect, 173 const gfx::Rect& rect,
182 const SkPaint& paint) const; 174 const cc::PaintFlags& paint) const;
183 SkScalar Clamp(SkScalar value, 175 SkScalar Clamp(SkScalar value,
184 SkScalar min, 176 SkScalar min,
185 SkScalar max) const; 177 SkScalar max) const;
186 SkColor OutlineColor(SkScalar* hsv1, SkScalar* hsv2) const; 178 SkColor OutlineColor(SkScalar* hsv1, SkScalar* hsv2) const;
187 179
188 // Paint the common parts of the checkboxes and radio buttons. 180 // Paint the common parts of the checkboxes and radio buttons.
189 // borderRadius specifies how rounded the corners should be. 181 // borderRadius specifies how rounded the corners should be.
190 SkRect PaintCheckboxRadioCommon( 182 SkRect PaintCheckboxRadioCommon(cc::PaintCanvas* canvas,
191 SkCanvas* canvas, 183 State state,
192 State state, 184 const gfx::Rect& rect,
193 const gfx::Rect& rect, 185 const SkScalar borderRadius) const;
194 const SkScalar borderRadius) const;
195 186
196 // The length of the arrow buttons, 0 means no buttons are drawn. 187 // The length of the arrow buttons, 0 means no buttons are drawn.
197 int scrollbar_button_length_; 188 int scrollbar_button_length_;
198 189
199 DISALLOW_COPY_AND_ASSIGN(NativeThemeBase); 190 DISALLOW_COPY_AND_ASSIGN(NativeThemeBase);
200 }; 191 };
201 192
202 } // namespace ui 193 } // namespace ui
203 194
204 #endif // UI_NATIVE_THEME_NATIVE_THEME_BASE_H_ 195 #endif // UI_NATIVE_THEME_NATIVE_THEME_BASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698