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 #include "ui/native_theme/native_theme_aura.h" | 5 #include "ui/native_theme/native_theme_aura.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
179 cc::PaintFlags flags; | 179 cc::PaintFlags flags; |
180 flags.setColor(kTrackColor); | 180 flags.setColor(kTrackColor); |
181 canvas->drawIRect(gfx::RectToSkIRect(rect), flags); | 181 canvas->drawIRect(gfx::RectToSkIRect(rect), flags); |
182 } | 182 } |
183 | 183 |
184 void NativeThemeAura::PaintScrollbarThumb( | 184 void NativeThemeAura::PaintScrollbarThumb( |
185 cc::PaintCanvas* canvas, | 185 cc::PaintCanvas* canvas, |
186 Part part, | 186 Part part, |
187 State state, | 187 State state, |
188 const gfx::Rect& rect, | 188 const gfx::Rect& rect, |
189 ScrollbarOverlayColorTheme theme) const { | 189 const NativeTheme::ScrollbarThumbExtraParams& params) const { |
190 // Do not paint if state is disabled. | 190 // Do not paint if state is disabled. |
191 if (state == kDisabled) | 191 if (state == kDisabled) |
192 return; | 192 return; |
193 | 193 |
194 TRACE_EVENT0("blink", "NativeThemeAura::PaintScrollbarThumb"); | 194 TRACE_EVENT0("blink", "NativeThemeAura::PaintScrollbarThumb"); |
195 | 195 |
196 SkAlpha thumb_alpha = SK_AlphaTRANSPARENT; | 196 SkAlpha thumb_alpha = SK_AlphaTRANSPARENT; |
197 gfx::Rect thumb_rect(rect); | 197 gfx::Rect thumb_rect(rect); |
198 SkColor thumb_color; | 198 SkColor thumb_color; |
199 | 199 |
200 if (use_overlay_scrollbars_) { | 200 if (use_overlay_scrollbars_) { |
201 // Constants used for painting overlay scrollbar thumb. | 201 // Constants used for painting overlay scrollbar thumb. |
202 constexpr SkAlpha kOverlayScrollbarFillAlphaNormal = 0x4D; | 202 constexpr SkAlpha kOverlayScrollbarFillAlphaNormal = 0x4D; |
203 constexpr SkAlpha kOverlayScrollbarFillAlphaHovered = 0x80; | 203 constexpr SkAlpha kOverlayScrollbarFillAlphaHovered = 0x80; |
204 constexpr SkAlpha kOverlayScrollbarFillAlphaPressed = 0x80; | 204 constexpr SkAlpha kOverlayScrollbarFillAlphaPressed = 0x80; |
205 constexpr SkAlpha kOverlayScrollbarStrokeAlphaNormal = 0x4D; | 205 constexpr SkAlpha kOverlayScrollbarStrokeAlphaNormal = 0x4D; |
206 constexpr SkAlpha kOverlayScrollbarStrokeAlphaHovered = 0x58; | 206 constexpr SkAlpha kOverlayScrollbarStrokeAlphaHovered = 0x58; |
207 constexpr SkAlpha kOverlayScrollbarStrokeAlphaPressed = 0x80; | 207 constexpr SkAlpha kOverlayScrollbarStrokeAlphaPressed = 0x80; |
208 | 208 |
209 // Indexed by ScrollbarOverlayColorTheme. | 209 // Indexed by ScrollbarOverlayColorTheme. |
210 constexpr SkColor kOverlayScrollbarThumbColor[] = {SK_ColorBLACK, | 210 constexpr SkColor kOverlayScrollbarThumbColor[] = {SK_ColorBLACK, |
211 SK_ColorWHITE}; | 211 SK_ColorWHITE}; |
212 constexpr SkColor kOverlayScrollbarStrokeColor[] = {SK_ColorWHITE, | 212 constexpr SkColor kOverlayScrollbarStrokeColor[] = {SK_ColorWHITE, |
213 SK_ColorBLACK}; | 213 SK_ColorBLACK}; |
214 | 214 |
215 thumb_color = kOverlayScrollbarThumbColor[theme]; | 215 thumb_color = kOverlayScrollbarThumbColor[params.scrollbar_theme]; |
216 | 216 |
217 SkAlpha stroke_alpha = SK_AlphaTRANSPARENT; | 217 SkAlpha stroke_alpha = SK_AlphaTRANSPARENT; |
218 switch (state) { | 218 switch (state) { |
219 case NativeTheme::kDisabled: | 219 case NativeTheme::kDisabled: |
220 thumb_alpha = SK_AlphaTRANSPARENT; | 220 thumb_alpha = SK_AlphaTRANSPARENT; |
221 stroke_alpha = SK_AlphaTRANSPARENT; | 221 stroke_alpha = SK_AlphaTRANSPARENT; |
222 break; | 222 break; |
223 case NativeTheme::kHovered: | 223 case NativeTheme::kHovered: |
224 thumb_alpha = kOverlayScrollbarFillAlphaHovered; | 224 thumb_alpha = kOverlayScrollbarFillAlphaHovered; |
225 stroke_alpha = kOverlayScrollbarStrokeAlphaHovered; | 225 stroke_alpha = kOverlayScrollbarStrokeAlphaHovered; |
226 break; | 226 break; |
227 case NativeTheme::kNormal: | 227 case NativeTheme::kNormal: |
228 thumb_alpha = kOverlayScrollbarFillAlphaNormal; | 228 thumb_alpha = kOverlayScrollbarFillAlphaNormal; |
229 stroke_alpha = kOverlayScrollbarStrokeAlphaNormal; | 229 stroke_alpha = kOverlayScrollbarStrokeAlphaNormal; |
230 break; | 230 break; |
231 case NativeTheme::kPressed: | 231 case NativeTheme::kPressed: |
232 thumb_alpha = kOverlayScrollbarFillAlphaPressed; | 232 thumb_alpha = kOverlayScrollbarFillAlphaPressed; |
233 stroke_alpha = kOverlayScrollbarStrokeAlphaPressed; | 233 stroke_alpha = kOverlayScrollbarStrokeAlphaPressed; |
234 break; | 234 break; |
235 case NativeTheme::kNumStates: | 235 case NativeTheme::kNumStates: |
236 NOTREACHED(); | 236 NOTREACHED(); |
237 break; | 237 break; |
238 } | 238 } |
239 | 239 |
240 #if defined(OS_ANDROID) | |
bokan
2017/03/22 20:07:25
This file is only compiled for Aura platforms so C
| |
240 // In overlay mode, draw a stroke (border). | 241 // In overlay mode, draw a stroke (border). |
241 constexpr int kStrokeWidth = kOverlayScrollbarStrokeWidth; | 242 constexpr int kStrokeWidth = kOverlayScrollbarStrokeWidth; |
242 cc::PaintFlags flags; | 243 cc::PaintFlags flags; |
243 flags.setColor( | 244 flags.setColor( |
244 SkColorSetA(kOverlayScrollbarStrokeColor[theme], stroke_alpha)); | 245 SkColorSetA(kOverlayScrollbarStrokeColor[theme], stroke_alpha)); |
245 flags.setStyle(cc::PaintFlags::kStroke_Style); | 246 flags.setStyle(cc::PaintFlags::kStroke_Style); |
246 flags.setStrokeWidth(kStrokeWidth); | 247 flags.setStrokeWidth(kStrokeWidth); |
247 | 248 |
248 gfx::RectF stroke_rect(thumb_rect); | 249 gfx::RectF stroke_rect(thumb_rect); |
249 constexpr float kHalfStrokeWidth = kStrokeWidth / 2.f; | 250 constexpr float kHalfStrokeWidth = kStrokeWidth / 2.f; |
250 stroke_rect.Inset(kHalfStrokeWidth, kHalfStrokeWidth); | 251 stroke_rect.Inset(kHalfStrokeWidth, kHalfStrokeWidth); |
251 canvas->drawRect(gfx::RectFToSkRect(stroke_rect), flags); | 252 canvas->drawRect(gfx::RectFToSkRect(stroke_rect), flags); |
252 | 253 |
253 // Inset the all the edges edges so we fill-in the stroke below. | 254 // Inset the all the edges edges so we fill-in the stroke below. |
254 thumb_rect.Inset(kStrokeWidth, kStrokeWidth); | 255 thumb_rect.Inset(kStrokeWidth, kStrokeWidth); |
256 #else // OS_ANDROID | |
257 // In overlay mode, draw a stroke (border). | |
258 constexpr int kStrokeWidth = kOverlayScrollbarStrokeWidth; | |
259 cc::PaintFlags flags; | |
260 flags.setColor(SkColorSetA( | |
261 kOverlayScrollbarStrokeColor[params.scrollbar_theme], stroke_alpha)); | |
262 flags.setStyle(cc::PaintFlags::kStroke_Style); | |
263 flags.setStrokeWidth(kStrokeWidth); | |
264 | |
265 gfx::RectF stroke_rect(thumb_rect); | |
266 constexpr float kHalfStrokeWidth = kStrokeWidth / 2.f; | |
267 | |
268 float left_stroke_width, top_stroke_width, right_stroke_width, | |
269 bottom_stroke_width; | |
270 | |
271 left_stroke_width = top_stroke_width = right_stroke_width = | |
272 bottom_stroke_width = kHalfStrokeWidth; | |
273 | |
274 if (params.isLeftVerticalScrollbar) { | |
275 left_stroke_width = 0; | |
276 } else if (params.isVerticalScrollbar) { | |
277 right_stroke_width = 0; | |
278 } else { | |
279 bottom_stroke_width = 0; | |
280 } | |
281 | |
282 if (params.hitStart) { | |
283 if (params.isVerticalScrollbar) { | |
284 top_stroke_width = 0; | |
285 } else { | |
286 left_stroke_width = 0; | |
287 } | |
288 } | |
289 | |
290 if (params.hitEnd) { | |
291 if (params.isVerticalScrollbar) { | |
292 bottom_stroke_width = 0; | |
293 } else { | |
294 right_stroke_width = 0; | |
295 } | |
296 } | |
297 | |
298 stroke_rect.Inset(left_stroke_width, top_stroke_width, right_stroke_width, | |
299 bottom_stroke_width); | |
300 canvas->drawRect(gfx::RectFToSkRect(stroke_rect), flags); | |
301 | |
302 // Inset the all the edges edges so we fill-in the stroke below. | |
303 thumb_rect.Inset(left_stroke_width * 2, top_stroke_width * 2, | |
304 right_stroke_width * 2, bottom_stroke_width * 2); | |
305 #endif | |
255 } else { | 306 } else { |
256 switch (state) { | 307 switch (state) { |
257 case NativeTheme::kDisabled: | 308 case NativeTheme::kDisabled: |
258 thumb_alpha = SK_AlphaTRANSPARENT; | 309 thumb_alpha = SK_AlphaTRANSPARENT; |
259 break; | 310 break; |
260 case NativeTheme::kHovered: | 311 case NativeTheme::kHovered: |
261 thumb_alpha = 0x4D; | 312 thumb_alpha = 0x4D; |
262 break; | 313 break; |
263 case NativeTheme::kNormal: | 314 case NativeTheme::kNormal: |
264 thumb_alpha = 0x33; | 315 thumb_alpha = 0x33; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
340 | 391 |
341 gfx::Rect NativeThemeAura::GetNinePatchAperture(Part part) const { | 392 gfx::Rect NativeThemeAura::GetNinePatchAperture(Part part) const { |
342 DCHECK(SupportsNinePatch(part)); | 393 DCHECK(SupportsNinePatch(part)); |
343 | 394 |
344 return gfx::Rect( | 395 return gfx::Rect( |
345 kOverlayScrollbarBorderPatchWidth, kOverlayScrollbarBorderPatchWidth, | 396 kOverlayScrollbarBorderPatchWidth, kOverlayScrollbarBorderPatchWidth, |
346 kOverlayScrollbarCenterPatchSize, kOverlayScrollbarCenterPatchSize); | 397 kOverlayScrollbarCenterPatchSize, kOverlayScrollbarCenterPatchSize); |
347 } | 398 } |
348 | 399 |
349 } // namespace ui | 400 } // namespace ui |
OLD | NEW |