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

Side by Side Diff: ui/views/controls/button/toggle_button.cc

Issue 2523673004: [NOT FOR COMMIT] Fully replace SkCanvas uses.
Patch Set: Support Android build. Created 4 years 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
« no previous file with comments | « ui/views/controls/button/radio_button.cc ('k') | ui/views/controls/combobox/combobox.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/views/controls/button/toggle_button.h" 5 #include "ui/views/controls/button/toggle_button.h"
6 6
7 #include "skia/ext/cdl_paint.h"
7 #include "third_party/skia/include/core/SkDrawLooper.h" 8 #include "third_party/skia/include/core/SkDrawLooper.h"
8 #include "third_party/skia/include/core/SkPaint.h" 9 #include "third_party/skia/include/core/SkPaint.h"
9 #include "ui/accessibility/ax_node_data.h" 10 #include "ui/accessibility/ax_node_data.h"
10 #include "ui/gfx/canvas.h" 11 #include "ui/gfx/canvas.h"
11 #include "ui/gfx/color_palette.h" 12 #include "ui/gfx/color_palette.h"
12 #include "ui/gfx/color_utils.h" 13 #include "ui/gfx/color_utils.h"
13 #include "ui/gfx/geometry/rect_conversions.h" 14 #include "ui/gfx/geometry/rect_conversions.h"
14 #include "ui/views/animation/ink_drop_impl.h" 15 #include "ui/views/animation/ink_drop_impl.h"
15 #include "ui/views/animation/ink_drop_ripple.h" 16 #include "ui/views/animation/ink_drop_ripple.h"
16 #include "ui/views/border.h" 17 #include "ui/views/border.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 70
70 void OnPaint(gfx::Canvas* canvas) override { 71 void OnPaint(gfx::Canvas* canvas) override {
71 const float dsf = canvas->UndoDeviceScaleFactor(); 72 const float dsf = canvas->UndoDeviceScaleFactor();
72 std::vector<gfx::ShadowValue> shadows; 73 std::vector<gfx::ShadowValue> shadows;
73 gfx::ShadowValue shadow( 74 gfx::ShadowValue shadow(
74 gfx::Vector2d(kShadowOffsetX, kShadowOffsetY), 2 * kShadowBlur, 75 gfx::Vector2d(kShadowOffsetX, kShadowOffsetY), 2 * kShadowBlur,
75 SkColorSetA(GetNativeTheme()->GetSystemColor( 76 SkColorSetA(GetNativeTheme()->GetSystemColor(
76 ui::NativeTheme::kColorId_LabelEnabledColor), 77 ui::NativeTheme::kColorId_LabelEnabledColor),
77 0x99)); 78 0x99));
78 shadows.push_back(shadow.Scale(dsf)); 79 shadows.push_back(shadow.Scale(dsf));
79 SkPaint thumb_paint; 80 CdlPaint thumb_paint;
80 thumb_paint.setLooper(gfx::CreateShadowDrawLooperCorrectBlur(shadows)); 81 thumb_paint.setLooper(gfx::CreateShadowDrawLooperCorrectBlur(shadows));
81 thumb_paint.setAntiAlias(true); 82 thumb_paint.setAntiAlias(true);
82 const SkColor thumb_on_color = GetNativeTheme()->GetSystemColor( 83 const SkColor thumb_on_color = GetNativeTheme()->GetSystemColor(
83 ui::NativeTheme::kColorId_ProminentButtonColor); 84 ui::NativeTheme::kColorId_ProminentButtonColor);
84 const SkColor thumb_off_color = GetNativeTheme()->GetSystemColor( 85 const SkColor thumb_off_color = GetNativeTheme()->GetSystemColor(
85 ui::NativeTheme::kColorId_DialogBackground); 86 ui::NativeTheme::kColorId_DialogBackground);
86 const SkAlpha blend = static_cast<SkAlpha>(SK_AlphaOPAQUE * color_ratio_); 87 const SkAlpha blend = static_cast<SkAlpha>(SK_AlphaOPAQUE * color_ratio_);
87 thumb_paint.setColor( 88 thumb_paint.setColor(
88 color_utils::AlphaBlend(thumb_on_color, thumb_off_color, blend)); 89 color_utils::AlphaBlend(thumb_on_color, thumb_off_color, blend));
89 90
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 } 189 }
189 190
190 void ToggleButton::OnPaint(gfx::Canvas* canvas) { 191 void ToggleButton::OnPaint(gfx::Canvas* canvas) {
191 // Paint the toggle track. To look sharp even at fractional scale factors, 192 // Paint the toggle track. To look sharp even at fractional scale factors,
192 // round up to pixel boundaries. 193 // round up to pixel boundaries.
193 canvas->Save(); 194 canvas->Save();
194 float dsf = canvas->UndoDeviceScaleFactor(); 195 float dsf = canvas->UndoDeviceScaleFactor();
195 gfx::RectF track_rect(GetTrackBounds()); 196 gfx::RectF track_rect(GetTrackBounds());
196 track_rect.Scale(dsf); 197 track_rect.Scale(dsf);
197 track_rect = gfx::RectF(gfx::ToEnclosingRect(track_rect)); 198 track_rect = gfx::RectF(gfx::ToEnclosingRect(track_rect));
198 SkPaint track_paint; 199 CdlPaint track_paint;
199 track_paint.setAntiAlias(true); 200 track_paint.setAntiAlias(true);
200 const double color_ratio = slide_animation_.GetCurrentValue(); 201 const double color_ratio = slide_animation_.GetCurrentValue();
201 track_paint.setColor(color_utils::AlphaBlend( 202 track_paint.setColor(color_utils::AlphaBlend(
202 GetTrackColor(true), GetTrackColor(false), 203 GetTrackColor(true), GetTrackColor(false),
203 static_cast<SkAlpha>(SK_AlphaOPAQUE * color_ratio))); 204 static_cast<SkAlpha>(SK_AlphaOPAQUE * color_ratio)));
204 canvas->DrawRoundRect(track_rect, track_rect.height() / 2, track_paint); 205 canvas->DrawRoundRect(track_rect, track_rect.height() / 2, track_paint);
205 canvas->Restore(); 206 canvas->Restore();
206 207
207 Painter::PaintFocusPainter(this, canvas, focus_painter_.get()); 208 Painter::PaintFocusPainter(this, canvas, focus_painter_.get());
208 } 209 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 // TODO(varkha, estade): The thumb is using its own view. Investigate if 271 // TODO(varkha, estade): The thumb is using its own view. Investigate if
271 // repainting in every animation step to update colors could be avoided. 272 // repainting in every animation step to update colors could be avoided.
272 UpdateThumb(); 273 UpdateThumb();
273 SchedulePaint(); 274 SchedulePaint();
274 return; 275 return;
275 } 276 }
276 CustomButton::AnimationProgressed(animation); 277 CustomButton::AnimationProgressed(animation);
277 } 278 }
278 279
279 } // namespace views 280 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/button/radio_button.cc ('k') | ui/views/controls/combobox/combobox.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698