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

Unified Diff: ui/views/controls/button/toggle_button.cc

Issue 2165413002: Add shadow for md toggle button. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: emplace_back Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/controls/button/toggle_button.cc
diff --git a/ui/views/controls/button/toggle_button.cc b/ui/views/controls/button/toggle_button.cc
index 9d700a8b4e77e5830d948640bbb6622f43ae1c89..4a4cb3d7c1006f427aea8bb5b14623ebeb62bd8f 100644
--- a/ui/views/controls/button/toggle_button.cc
+++ b/ui/views/controls/button/toggle_button.cc
@@ -4,6 +4,8 @@
#include "ui/views/controls/button/toggle_button.h"
+#include "third_party/skia/include/core/SkDrawLooper.h"
+#include "third_party/skia/include/core/SkPaint.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/color_utils.h"
#include "ui/views/border.h"
@@ -16,10 +18,13 @@ namespace {
const int kTrackHeight = 14;
const int kTrackWidth = 36;
// Margins from edge of track to edge of view.
-const int kTrackVerticalMargin = 4;
-const int kTrackHorizontalMargin = 1;
-// Margin from edge of thumb to closest three edges of view.
-const int kThumbMargin = 1;
+const int kTrackVerticalMargin = 6;
+const int kTrackHorizontalMargin = 2;
+// Margin from edge of thumb to closest edge of view. Note that the thumb
+// margins must be sufficiently large to allow space for the shadow.
+const int kThumbHorizontalMargin = 2;
+// Margin from top/bottom edge of thumb to top/bottom edge of view.
+const int kThumbVerticalMargin = 3;
} // namespace
@@ -57,38 +62,43 @@ void ToggleButton::OnPaint(gfx::Canvas* canvas) {
SkAlpha blend =
static_cast<SkAlpha>(SK_AlphaOPAQUE * slide_animation_.GetCurrentValue());
- gfx::RectF track_rect(GetContentsBounds());
- SkPaint paint;
- paint.setAntiAlias(true);
-
// Track.
+ gfx::RectF track_rect(GetContentsBounds());
+ SkPaint track_paint;
+ track_paint.setAntiAlias(true);
const SkColor track_on_color =
SkColorSetA(GetNativeTheme()->GetSystemColor(
ui::NativeTheme::kColorId_CallToActionColor),
0xFF / 2);
// TODO(estade): get this color from the theme.
const SkColor track_off_color = SkColorSetA(SK_ColorBLACK, 0x61);
- paint.setColor(
+ track_paint.setColor(
color_utils::AlphaBlend(track_on_color, track_off_color, blend));
- canvas->DrawRoundRect(track_rect, track_rect.height() / 2, paint);
+ canvas->DrawRoundRect(track_rect, track_rect.height() / 2, track_paint);
// Thumb.
- const SkColor thumb_on_color = GetNativeTheme()->GetSystemColor(
- ui::NativeTheme::kColorId_CallToActionColor);
- // TODO(estade): get this color from the theme.
- const SkColor thumb_off_color = SkColorSetRGB(0xFA, 0xFA, 0xFA);
- paint.setColor(
- color_utils::AlphaBlend(thumb_on_color, thumb_off_color, blend));
gfx::Rect thumb_bounds = GetLocalBounds();
- thumb_bounds.Inset(gfx::Insets(kThumbMargin));
+ thumb_bounds.Inset(gfx::Insets(kThumbVerticalMargin, kThumbHorizontalMargin));
thumb_bounds.set_x(thumb_bounds.x() +
slide_animation_.GetCurrentValue() *
(thumb_bounds.width() - thumb_bounds.height()));
thumb_bounds.set_width(thumb_bounds.height());
thumb_bounds.set_x(GetMirroredXForRect(thumb_bounds));
+ SkPaint thumb_paint;
+ std::vector<gfx::ShadowValue> shadows;
+ shadows.emplace_back(gfx::Vector2d(0, 1), 5.f,
+ SkColorSetA(SK_ColorBLACK, 0x99));
+ thumb_paint.setLooper(gfx::CreateShadowDrawLooperCorrectBlur(shadows));
+ thumb_paint.setStyle(SkPaint::kStrokeAndFill_Style);
+ thumb_paint.setAntiAlias(true);
+ const SkColor thumb_on_color = GetNativeTheme()->GetSystemColor(
+ ui::NativeTheme::kColorId_CallToActionColor);
+ // TODO(estade): get this color from the theme.
+ const SkColor thumb_off_color = SkColorSetRGB(0xFA, 0xFA, 0xFA);
+ thumb_paint.setColor(
+ color_utils::AlphaBlend(thumb_on_color, thumb_off_color, blend));
canvas->DrawCircle(gfx::RectF(thumb_bounds).CenterPoint(),
- thumb_bounds.height() / 2.f, paint);
- // TODO(estade): add a shadow to the thumb.
+ thumb_bounds.height() / 2.f, thumb_paint);
}
void ToggleButton::NotifyClick(const ui::Event& event) {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698