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 "ui/native_theme/native_theme_base.h" | 5 #include "ui/native_theme/native_theme_base.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
569 const SkColor* startEndColors; | 569 const SkColor* startEndColors; |
570 if (state == kPressed) | 570 if (state == kPressed) |
571 startEndColors = kCheckboxGradientPressedColors; | 571 startEndColors = kCheckboxGradientPressedColors; |
572 else if (state == kHovered) | 572 else if (state == kHovered) |
573 startEndColors = kCheckboxGradientHoveredColors; | 573 startEndColors = kCheckboxGradientHoveredColors; |
574 else if (state == kDisabled) | 574 else if (state == kDisabled) |
575 startEndColors = kCheckboxGradientDisabledColors; | 575 startEndColors = kCheckboxGradientDisabledColors; |
576 else /* kNormal */ | 576 else /* kNormal */ |
577 startEndColors = kCheckboxGradientColors; | 577 startEndColors = kCheckboxGradientColors; |
578 SkColor colors[3] = {startEndColors[0], startEndColors[0], startEndColors[1]}; | 578 SkColor colors[3] = {startEndColors[0], startEndColors[0], startEndColors[1]}; |
579 SkShader* shader = SkGradientShader::CreateLinear( | 579 skia::RefPtr<SkShader> shader = SkGradientShader::CreateLinear( |
580 gradient_bounds, colors, NULL, 3, SkShader::kClamp_TileMode, NULL); | 580 gradient_bounds, colors, NULL, 3, SkShader::kClamp_TileMode, NULL); |
581 SkPaint paint; | 581 SkPaint paint; |
582 paint.setAntiAlias(true); | 582 paint.setAntiAlias(true); |
583 paint.setShader(shader); | 583 paint.setShader(shader.get()); |
584 shader->unref(); | |
585 paint.setStyle(SkPaint::kFill_Style); | 584 paint.setStyle(SkPaint::kFill_Style); |
586 canvas->drawRoundRect(skrect, borderRadius, borderRadius, paint); | 585 canvas->drawRoundRect(skrect, borderRadius, borderRadius, paint); |
587 paint.setShader(NULL); | 586 paint.setShader(NULL); |
588 | 587 |
589 // Draw the border. | 588 // Draw the border. |
590 if (state == kHovered) | 589 if (state == kHovered) |
591 paint.setColor(kCheckboxBorderHoveredColor); | 590 paint.setColor(kCheckboxBorderHoveredColor); |
592 else if (state == kDisabled) | 591 else if (state == kDisabled) |
593 paint.setColor(kCheckboxBorderDisabledColor); | 592 paint.setColor(kCheckboxBorderDisabledColor); |
594 else | 593 else |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 paint.setColor(SK_ColorBLACK); | 717 paint.setColor(SK_ColorBLACK); |
719 const int kLightEnd = state == kPressed ? 1 : 0; | 718 const int kLightEnd = state == kPressed ? 1 : 0; |
720 const int kDarkEnd = !kLightEnd; | 719 const int kDarkEnd = !kLightEnd; |
721 SkPoint gradient_bounds[2]; | 720 SkPoint gradient_bounds[2]; |
722 gradient_bounds[kLightEnd].iset(rect.x(), rect.y()); | 721 gradient_bounds[kLightEnd].iset(rect.x(), rect.y()); |
723 gradient_bounds[kDarkEnd].iset(rect.x(), kBottom - 1); | 722 gradient_bounds[kDarkEnd].iset(rect.x(), kBottom - 1); |
724 SkColor colors[2]; | 723 SkColor colors[2]; |
725 colors[0] = light_color; | 724 colors[0] = light_color; |
726 colors[1] = base_color; | 725 colors[1] = base_color; |
727 | 726 |
728 SkShader* shader = SkGradientShader::CreateLinear( | 727 skia::RefPtr<SkShader> shader = SkGradientShader::CreateLinear( |
729 gradient_bounds, colors, NULL, 2, SkShader::kClamp_TileMode, NULL); | 728 gradient_bounds, colors, NULL, 2, SkShader::kClamp_TileMode, NULL); |
730 paint.setStyle(SkPaint::kFill_Style); | 729 paint.setStyle(SkPaint::kFill_Style); |
731 paint.setAntiAlias(true); | 730 paint.setAntiAlias(true); |
732 paint.setShader(shader); | 731 paint.setShader(shader.get()); |
733 shader->unref(); | |
734 | 732 |
735 canvas->drawRoundRect(skrect, SkIntToScalar(1), SkIntToScalar(1), paint); | 733 canvas->drawRoundRect(skrect, SkIntToScalar(1), SkIntToScalar(1), paint); |
736 paint.setShader(NULL); | 734 paint.setShader(NULL); |
737 | 735 |
738 if (button.has_border) { | 736 if (button.has_border) { |
739 int border_alpha = state == kHovered ? 0x80 : 0x55; | 737 int border_alpha = state == kHovered ? 0x80 : 0x55; |
740 if (button.is_focused) { | 738 if (button.is_focused) { |
741 border_alpha = 0xff; | 739 border_alpha = 0xff; |
742 paint.setColor(GetSystemColor(kColorId_FocusedBorderColor)); | 740 paint.setColor(GetSystemColor(kColorId_FocusedBorderColor)); |
743 } | 741 } |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1129 SkScalar min_diff = Clamp((hsv1[1] + hsv2[1]) * 1.2f, 0.28f, 0.5f); | 1127 SkScalar min_diff = Clamp((hsv1[1] + hsv2[1]) * 1.2f, 0.28f, 0.5f); |
1130 SkScalar diff = Clamp(fabs(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f); | 1128 SkScalar diff = Clamp(fabs(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f); |
1131 | 1129 |
1132 if (hsv1[2] + hsv2[2] > 1.0) | 1130 if (hsv1[2] + hsv2[2] > 1.0) |
1133 diff = -diff; | 1131 diff = -diff; |
1134 | 1132 |
1135 return SaturateAndBrighten(hsv2, -0.2f, diff); | 1133 return SaturateAndBrighten(hsv2, -0.2f, diff); |
1136 } | 1134 } |
1137 | 1135 |
1138 } // namespace ui | 1136 } // namespace ui |
OLD | NEW |