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 "chrome/browser/ui/views/tabs/tab_strip.h" | 5 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <iterator> | 10 #include <iterator> |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 canvas->ClipPath(stroke, true); | 411 canvas->ClipPath(stroke, true); |
412 Op(stroke, fill, kDifference_SkPathOp, &stroke); | 412 Op(stroke, fill, kDifference_SkPathOp, &stroke); |
413 if (!pressed) | 413 if (!pressed) |
414 canvas->sk_canvas()->clipPath(fill, SkRegion::kDifference_Op, true); | 414 canvas->sk_canvas()->clipPath(fill, SkRegion::kDifference_Op, true); |
415 // Now draw the stroke and shadow; the stroke will always be visible, while | 415 // Now draw the stroke and shadow; the stroke will always be visible, while |
416 // the shadow will be affected by the clip we set above. | 416 // the shadow will be affected by the clip we set above. |
417 SkPaint paint; | 417 SkPaint paint; |
418 paint.setAntiAlias(true); | 418 paint.setAntiAlias(true); |
419 const SkColor stroke_color = | 419 const SkColor stroke_color = |
420 tp->GetColor(ThemeProperties::COLOR_TOOLBAR_TOP_SEPARATOR); | 420 tp->GetColor(ThemeProperties::COLOR_TOOLBAR_TOP_SEPARATOR); |
| 421 const float alpha = SkColorGetA(stroke_color); |
| 422 const SkAlpha shadow_alpha = |
| 423 base::saturated_cast<SkAlpha>(std::round(2.1875f * alpha)); |
421 skia::RefPtr<SkDrawLooper> stroke_looper = | 424 skia::RefPtr<SkDrawLooper> stroke_looper = |
422 CreateShadowDrawLooper(SkColorSetA(stroke_color, 0x8C)); | 425 CreateShadowDrawLooper(SkColorSetA(stroke_color, shadow_alpha)); |
423 paint.setLooper(stroke_looper.get()); | 426 paint.setLooper(stroke_looper.get()); |
424 paint.setColor(SkColorSetA(stroke_color, pressed ? 0x38 : 0x27)); | 427 const SkAlpha path_alpha = static_cast<SkAlpha>( |
| 428 std::round((pressed ? 0.875f : 0.609375f) * alpha)); |
| 429 paint.setColor(SkColorSetA(stroke_color, path_alpha)); |
425 canvas->DrawPath(stroke, paint); | 430 canvas->DrawPath(stroke, paint); |
426 } else { | 431 } else { |
427 // Fill. | 432 // Fill. |
428 gfx::ImageSkia* mask = tp->GetImageSkiaNamed(IDR_NEWTAB_BUTTON_MASK); | 433 gfx::ImageSkia* mask = tp->GetImageSkiaNamed(IDR_NEWTAB_BUTTON_MASK); |
429 // The canvas and mask have to use the same scale factor. | 434 // The canvas and mask have to use the same scale factor. |
430 const float fill_canvas_scale = mask->HasRepresentation(scale) ? | 435 const float fill_canvas_scale = mask->HasRepresentation(scale) ? |
431 scale : ui::GetScaleForScaleFactor(ui::SCALE_FACTOR_100P); | 436 scale : ui::GetScaleForScaleFactor(ui::SCALE_FACTOR_100P); |
432 gfx::Canvas fill_canvas(GetLayoutSize(NEW_TAB_BUTTON), fill_canvas_scale, | 437 gfx::Canvas fill_canvas(GetLayoutSize(NEW_TAB_BUTTON), fill_canvas_scale, |
433 false); | 438 false); |
434 PaintFill(pressed, fill_canvas_scale, fill, &fill_canvas); | 439 PaintFill(pressed, fill_canvas_scale, fill, &fill_canvas); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
560 if (custom_image) { | 565 if (custom_image) { |
561 const bool succeeded = canvas->InitSkPaintForTiling( | 566 const bool succeeded = canvas->InitSkPaintForTiling( |
562 *tp->GetImageSkiaNamed(bg_id), x, y, x_scale * scale, scale, 0, 0, | 567 *tp->GetImageSkiaNamed(bg_id), x, y, x_scale * scale, scale, 0, 0, |
563 &paint); | 568 &paint); |
564 DCHECK(succeeded); | 569 DCHECK(succeeded); |
565 } else { | 570 } else { |
566 paint.setColor(tp->GetColor(ThemeProperties::COLOR_BACKGROUND_TAB)); | 571 paint.setColor(tp->GetColor(ThemeProperties::COLOR_BACKGROUND_TAB)); |
567 } | 572 } |
568 const SkColor stroke_color = GetThemeProvider()->GetColor( | 573 const SkColor stroke_color = GetThemeProvider()->GetColor( |
569 ThemeProperties::COLOR_TOOLBAR_TOP_SEPARATOR); | 574 ThemeProperties::COLOR_TOOLBAR_TOP_SEPARATOR); |
| 575 const SkAlpha alpha = static_cast<SkAlpha>( |
| 576 std::round(SkColorGetA(stroke_color) * 0.59375f)); |
570 skia::RefPtr<SkDrawLooper> looper = | 577 skia::RefPtr<SkDrawLooper> looper = |
571 CreateShadowDrawLooper(SkColorSetA(stroke_color, 0x26)); | 578 CreateShadowDrawLooper(SkColorSetA(stroke_color, alpha)); |
572 paint.setLooper(looper.get()); | 579 paint.setLooper(looper.get()); |
573 canvas->DrawPath(fill, paint); | 580 canvas->DrawPath(fill, paint); |
574 } | 581 } |
575 | 582 |
576 // Draw a white highlight on hover. | 583 // Draw a white highlight on hover. |
577 SkPaint paint; | 584 SkPaint paint; |
578 paint.setAntiAlias(true); | 585 paint.setAntiAlias(true); |
579 const SkAlpha hover_alpha = static_cast<SkAlpha>( | 586 const SkAlpha hover_alpha = static_cast<SkAlpha>( |
580 hover_animation().CurrentValueBetween(0x00, 0x4D)); | 587 hover_animation().CurrentValueBetween(0x00, 0x4D)); |
581 if (hover_alpha != SK_AlphaTRANSPARENT) { | 588 if (hover_alpha != SK_AlphaTRANSPARENT) { |
(...skipping 2295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2877 ConvertPointToViewAndGetEventHandler(this, newtab_button_, point); | 2884 ConvertPointToViewAndGetEventHandler(this, newtab_button_, point); |
2878 if (view) | 2885 if (view) |
2879 return view; | 2886 return view; |
2880 } | 2887 } |
2881 Tab* tab = FindTabForEvent(point); | 2888 Tab* tab = FindTabForEvent(point); |
2882 if (tab) | 2889 if (tab) |
2883 return ConvertPointToViewAndGetEventHandler(this, tab, point); | 2890 return ConvertPointToViewAndGetEventHandler(this, tab, point); |
2884 } | 2891 } |
2885 return this; | 2892 return this; |
2886 } | 2893 } |
OLD | NEW |