Chromium Code Reviews| 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/base/native_theme/native_theme_base.h" | 5 #include "ui/base/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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 49 SkColorSetRGB(0xed, 0xed, 0xed), | 49 SkColorSetRGB(0xed, 0xed, 0xed), |
| 50 SkColorSetRGB(0xde, 0xde, 0xde) }; | 50 SkColorSetRGB(0xde, 0xde, 0xde) }; |
| 51 const SkColor kCheckboxGradientPressedColors[] = { | 51 const SkColor kCheckboxGradientPressedColors[] = { |
| 52 SkColorSetRGB(0xe7, 0xe7, 0xe7), | 52 SkColorSetRGB(0xe7, 0xe7, 0xe7), |
| 53 SkColorSetRGB(0xd7, 0xd7, 0xd7) }; | 53 SkColorSetRGB(0xd7, 0xd7, 0xd7) }; |
| 54 const SkColor kCheckboxGradientHoveredColors[] = { | 54 const SkColor kCheckboxGradientHoveredColors[] = { |
| 55 SkColorSetRGB(0xf0, 0xf0, 0xf0), | 55 SkColorSetRGB(0xf0, 0xf0, 0xf0), |
| 56 SkColorSetRGB(0xe0, 0xe0, 0xe0) }; | 56 SkColorSetRGB(0xe0, 0xe0, 0xe0) }; |
| 57 const SkColor kCheckboxGradientDisabledColors[] = { | 57 const SkColor kCheckboxGradientDisabledColors[] = { |
| 58 SkColorSetARGB(0xB3, 0xed, 0xed, 0xed), | 58 SkColorSetARGB(0xB3, 0xed, 0xed, 0xed), |
| 59 SkColorSetARGB(0xB3, 0xde, 0xde, 0xde) }; | 59 SkColorSetARGB(0xB3, 0xed, 0xed, 0xed) }; |
| 60 const SkColor kCheckboxBorderColor = SkColorSetARGB(0x40, 0, 0, 0); | 60 const SkColor kCheckboxBorderColor = SkColorSetARGB(0x40, 0, 0, 0); |
| 61 const SkColor kCheckboxBorderHoveredColor = SkColorSetARGB(0x4D, 0, 0, 0); | 61 const SkColor kCheckboxBorderHoveredColor = SkColorSetARGB(0x4D, 0, 0, 0); |
| 62 const SkColor kCheckboxBorderDisabledColor = SkColorSetARGB(0x30, 0, 0, 0); | 62 const SkColor kCheckboxBorderDisabledColor = SkColorSetARGB(0x30, 0, 0, 0); |
| 63 const SkColor kCheckboxStrokeColor = SkColorSetARGB(0xB3, 0, 0, 0); | 63 const SkColor kCheckboxStrokeColor = SkColorSetARGB(0xB3, 0, 0, 0); |
| 64 const SkColor kCheckboxStrokeDisabledColor = SkColorSetARGB(0x86, 0, 0, 0); | 64 const SkColor kCheckboxStrokeDisabledColor = SkColorSetARGB(0x86, 0, 0, 0); |
| 65 const SkColor kRadioDotColor = SkColorSetRGB(0x66, 0x66, 0x66); | 65 const SkColor kRadioDotColor = SkColorSetRGB(0x66, 0x66, 0x66); |
| 66 const SkColor kRadioDotDisabledColor = SkColorSetARGB(0xC0, 0x66, 0x66, 0x66); | 66 const SkColor kRadioDotDisabledColor = SkColorSetARGB(0xC0, 0x66, 0x66, 0x66); |
| 67 | 67 |
| 68 // Get lightness adjusted color. | 68 // Get lightness adjusted color. |
| 69 SkColor BrightenColor(const color_utils::HSL& hsl, SkAlpha alpha, | 69 SkColor BrightenColor(const color_utils::HSL& hsl, SkAlpha alpha, |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 461 DrawVertLine(canvas, | 461 DrawVertLine(canvas, |
| 462 midx + inter_grippy_offset, | 462 midx + inter_grippy_offset, |
| 463 midy - grippy_half_width, | 463 midy - grippy_half_width, |
| 464 midy + grippy_half_width, | 464 midy + grippy_half_width, |
| 465 paint); | 465 paint); |
| 466 } | 466 } |
| 467 } | 467 } |
| 468 } | 468 } |
| 469 | 469 |
| 470 bool NativeThemeBase::IsNewCheckboxStyleEnabled(SkCanvas* canvas) const { | 470 bool NativeThemeBase::IsNewCheckboxStyleEnabled(SkCanvas* canvas) const { |
| 471 // Mostly this new style is experimental behind a flag. | 471 // The new style is now the default. |
| 472 // TODO(rbyers): Enable new style by default. http://crbug.com/125773 | 472 // TODO(rbyers): Remove this flag once we're sure the new behavior is fine. |
| 473 if (CommandLine::ForCurrentProcess()->HasSwitch( | 473 // http://crbug.com/133991 |
| 474 switches::kNewCheckboxStyle)) | 474 if (!CommandLine::ForCurrentProcess()->HasSwitch( |
| 475 return true; | 475 switches::kOldCheckboxStyle)) |
| 476 | |
| 477 // Also enable explicitly when high-DPI is being used (since this is the only | |
| 478 // way we have to get nice looking widgets in high-DPI. | |
| 479 if (canvas->getTotalMatrix().getScaleX() > 1) | |
| 480 return true; | 476 return true; |
| 481 | 477 |
| 482 return false; | 478 return false; |
| 483 } | 479 } |
| 484 | 480 |
| 485 void NativeThemeBase::PaintCheckbox(SkCanvas* canvas, | 481 void NativeThemeBase::PaintCheckbox(SkCanvas* canvas, |
| 486 State state, | 482 State state, |
| 487 const gfx::Rect& rect, | 483 const gfx::Rect& rect, |
| 488 const ButtonExtraParams& button) const { | 484 const ButtonExtraParams& button) const { |
| 489 if (IsNewCheckboxStyleEnabled(canvas)) { | 485 if (IsNewCheckboxStyleEnabled(canvas)) { |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 516 // Returns the rectangle within which any additional decorations should be | 512 // Returns the rectangle within which any additional decorations should be |
| 517 // drawn, or empty if none. | 513 // drawn, or empty if none. |
| 518 SkRect NativeThemeBase::PaintCheckboxRadioNewCommon( | 514 SkRect NativeThemeBase::PaintCheckboxRadioNewCommon( |
| 519 SkCanvas* canvas, | 515 SkCanvas* canvas, |
| 520 State state, | 516 State state, |
| 521 const gfx::Rect& rect, | 517 const gfx::Rect& rect, |
| 522 const SkScalar borderRadius) const { | 518 const SkScalar borderRadius) const { |
| 523 | 519 |
| 524 SkRect skrect = gfx::RectToSkRect(rect); | 520 SkRect skrect = gfx::RectToSkRect(rect); |
| 525 | 521 |
| 522 // Use the largest square rectangle that fits inside the provided rectangle. | |
|
Avi (use Gerrit)
2012/07/23 19:50:01
s/square rectangle/square/
Rick Byers
2012/07/24 16:28:10
Agreed, thanks. Done.
| |
| 523 // No other browser seems to support non-square widget, so accidentally | |
| 524 // having non-square sizes is common (eg. amazon and webkit dev tools). | |
| 525 if (skrect.width() != skrect.height()) { | |
| 526 SkScalar size = SkMinScalar(skrect.width(), skrect.height()); | |
| 527 skrect.inset((skrect.width() - size) / 2, (skrect.height() - size) / 2); | |
| 528 } | |
| 529 | |
| 526 // If the rectangle is too small then paint only a rectangle. We don't want | 530 // If the rectangle is too small then paint only a rectangle. We don't want |
| 527 // to have to worry about '- 1' and '+ 1' calculations below having overflow | 531 // to have to worry about '- 1' and '+ 1' calculations below having overflow |
| 528 // or underflow. | 532 // or underflow. |
| 529 if (rect.width() <= 2 || rect.height() <= 2) { | 533 if (skrect.width() <= 2) { |
| 530 SkPaint paint; | 534 SkPaint paint; |
| 531 paint.setColor(kCheckboxTinyColor); | 535 paint.setColor(kCheckboxTinyColor); |
| 532 paint.setStyle(SkPaint::kFill_Style); | 536 paint.setStyle(SkPaint::kFill_Style); |
| 533 canvas->drawRect(skrect, paint); | 537 canvas->drawRect(skrect, paint); |
| 534 // Too small to draw anything more. | 538 // Too small to draw anything more. |
| 535 return SkRect::MakeEmpty(); | 539 return SkRect::MakeEmpty(); |
| 536 } | 540 } |
| 537 | 541 |
| 538 // Make room for the drop shadow. | 542 // Make room for the drop shadow. |
| 539 skrect.iset(skrect.x(), skrect.y(), skrect.right() - 1, skrect.bottom() - 1); | 543 skrect.iset(skrect.x(), skrect.y(), skrect.right() - 1, skrect.bottom() - 1); |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1117 SkScalar min_diff = Clamp((hsv1[1] + hsv2[1]) * 1.2f, 0.28f, 0.5f); | 1121 SkScalar min_diff = Clamp((hsv1[1] + hsv2[1]) * 1.2f, 0.28f, 0.5f); |
| 1118 SkScalar diff = Clamp(fabs(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f); | 1122 SkScalar diff = Clamp(fabs(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f); |
| 1119 | 1123 |
| 1120 if (hsv1[2] + hsv2[2] > 1.0) | 1124 if (hsv1[2] + hsv2[2] > 1.0) |
| 1121 diff = -diff; | 1125 diff = -diff; |
| 1122 | 1126 |
| 1123 return SaturateAndBrighten(hsv2, -0.2f, diff); | 1127 return SaturateAndBrighten(hsv2, -0.2f, diff); |
| 1124 } | 1128 } |
| 1125 | 1129 |
| 1126 } // namespace ui | 1130 } // namespace ui |
| OLD | NEW |