| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |