OLD | NEW |
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_BASE_NATIVE_THEME_NATIVE_THEME_ANDROID_H_ | 5 #ifndef UI_BASE_NATIVE_THEME_NATIVE_THEME_ANDROID_H_ |
6 #define UI_BASE_NATIVE_THEME_NATIVE_THEME_ANDROID_H_ | 6 #define UI_BASE_NATIVE_THEME_NATIVE_THEME_ANDROID_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "ui/base/native_theme/native_theme_base.h" |
9 #include "base/compiler_specific.h" | |
10 #include "skia/ext/platform_canvas.h" | |
11 #include "ui/base/native_theme/native_theme.h" | |
12 | |
13 namespace gfx { | |
14 class ImageSkia; | |
15 class Rect; | |
16 class Size; | |
17 } | |
18 | 9 |
19 namespace ui { | 10 namespace ui { |
20 | 11 |
21 // Android theming API. | 12 // Android implementation of native theme support. |
22 class NativeThemeAndroid : public NativeTheme { | 13 class NativeThemeAndroid : public NativeThemeBase { |
23 public: | 14 public: |
24 // Gets our singleton instance. | |
25 static const NativeThemeAndroid* instance(); | 15 static const NativeThemeAndroid* instance(); |
26 | 16 |
27 // Return the size of the part. | |
28 virtual gfx::Size GetPartSize(Part part, | |
29 State state, | |
30 const ExtraParams& extra) const OVERRIDE; | |
31 | |
32 // Paint the part to the canvas. | |
33 virtual void Paint(SkCanvas* canvas, | |
34 Part part, | |
35 State state, | |
36 const gfx::Rect& rect, | |
37 const ExtraParams& extra) const OVERRIDE; | |
38 | |
39 virtual SkColor GetSystemColor(ColorId color_id) const OVERRIDE; | 17 virtual SkColor GetSystemColor(ColorId color_id) const OVERRIDE; |
40 | 18 |
41 private: | 19 private: |
42 NativeThemeAndroid(); | 20 NativeThemeAndroid(); |
43 virtual ~NativeThemeAndroid(); | 21 virtual ~NativeThemeAndroid(); |
44 | |
45 // Draw the arrow. Used by scrollbar and inner spin button. | |
46 void PaintArrowButton(SkCanvas* gc, | |
47 const gfx::Rect& rect, | |
48 Part direction, | |
49 State state) const; | |
50 | |
51 // Draw the checkbox. | |
52 void PaintCheckbox(SkCanvas* canvas, | |
53 State state, | |
54 const gfx::Rect& rect, | |
55 const ButtonExtraParams& button) const; | |
56 | |
57 // Draw the radio. | |
58 void PaintRadio(SkCanvas* canvas, | |
59 State state, | |
60 const gfx::Rect& rect, | |
61 const ButtonExtraParams& button) const; | |
62 | |
63 // Draw the push button. | |
64 void PaintButton(SkCanvas* canvas, | |
65 State state, | |
66 const gfx::Rect& rect, | |
67 const ButtonExtraParams& button) const; | |
68 | |
69 // Draw the text field. | |
70 void PaintTextField(SkCanvas* canvas, | |
71 State state, | |
72 const gfx::Rect& rect, | |
73 const TextFieldExtraParams& text) const; | |
74 | |
75 // Draw the menu list. | |
76 void PaintMenuList(SkCanvas* canvas, | |
77 State state, | |
78 const gfx::Rect& rect, | |
79 const MenuListExtraParams& menu_list) const; | |
80 | |
81 // Draw the slider track. | |
82 void PaintSliderTrack(SkCanvas* canvas, | |
83 State state, | |
84 const gfx::Rect& rect, | |
85 const SliderExtraParams& slider) const; | |
86 | |
87 // Draw the slider thumb. | |
88 void PaintSliderThumb(SkCanvas* canvas, | |
89 State state, | |
90 const gfx::Rect& rect, | |
91 const SliderExtraParams& slider) const; | |
92 | |
93 // Draw the inner spin button. | |
94 void PaintInnerSpinButton( | |
95 SkCanvas* canvas, | |
96 State state, | |
97 const gfx::Rect& rect, | |
98 const InnerSpinButtonExtraParams& spin_button) const; | |
99 | |
100 // Draw the progress bar. | |
101 void PaintProgressBar( | |
102 SkCanvas* canvas, | |
103 State state, | |
104 const gfx::Rect& rect, | |
105 const ProgressBarExtraParams& progress_bar) const; | |
106 | |
107 // Return true if there is intersection between the |canvas| and the given | |
108 // rectangle. | |
109 bool IntersectsClipRectInt(SkCanvas* canvas, | |
110 int x, | |
111 int y, | |
112 int w, | |
113 int h) const; | |
114 | |
115 // Draw the dest rectangle with the given image which might be scaled if its | |
116 // size is not same as target rectangle. | |
117 void DrawImageInt(SkCanvas* canvas, | |
118 const gfx::ImageSkia& image, | |
119 int src_x, | |
120 int src_y, | |
121 int src_w, | |
122 int src_h, | |
123 int dest_x, | |
124 int dest_y, | |
125 int dest_w, | |
126 int dest_h) const; | |
127 | |
128 // Draw the target rectangle with the |bitmap| accroding the given | |
129 // |tile_scale_x| and |tile_scale_y| | |
130 void DrawTiledImage(SkCanvas* canvas, | |
131 const gfx::ImageSkia& image, | |
132 int src_x, | |
133 int src_y, | |
134 float tile_scale_x, | |
135 float tile_scale_y, | |
136 int dest_x, | |
137 int dest_y, | |
138 int w, | |
139 int h) const; | |
140 | |
141 // Return a new color which comes from the |hsv| by adjusting saturate and | |
142 // brighten according |saturate_amount| and |brighten_amount| | |
143 SkColor SaturateAndBrighten(SkScalar* hsv, | |
144 SkScalar saturate_amount, | |
145 SkScalar brighten_amount) const; | |
146 | |
147 void DrawVertLine(SkCanvas* canvas, | |
148 int x, | |
149 int y1, | |
150 int y2, | |
151 const SkPaint& paint) const; | |
152 | |
153 void DrawHorizLine(SkCanvas* canvas, | |
154 int x1, | |
155 int x2, | |
156 int y, | |
157 const SkPaint& paint) const; | |
158 | |
159 void DrawBox(SkCanvas* canvas, | |
160 const gfx::Rect& rect, | |
161 const SkPaint& paint) const; | |
162 | |
163 // Return the |value| if it is between |min| and |max|, otherwise the |min| | |
164 // or |max| is returned dependent on which is mostly near the |value|. | |
165 SkScalar Clamp(SkScalar value, SkScalar min, SkScalar max) const; | |
166 | |
167 // Used to return the color of scrollbar based on the color of thumb and | |
168 // track. | |
169 SkColor OutlineColor(SkScalar* hsv1, SkScalar* hsv2) const; | |
170 | |
171 DISALLOW_COPY_AND_ASSIGN(NativeThemeAndroid); | |
172 }; | 22 }; |
173 | 23 |
174 } // namespace ui | 24 } // namespace ui |
175 | 25 |
176 #endif // UI_BASE_NATIVE_THEME_NATIVE_THEME_ANDROID_H_ | 26 #endif // UI_BASE_NATIVE_THEME_NATIVE_THEME_ANDROID_H_ |
OLD | NEW |