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

Side by Side Diff: ui/native_theme/native_theme_aura.cc

Issue 2763373002: Overlay scrollbars flush with window edge (Closed)
Patch Set: Created 3 years, 9 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 #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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698