| 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/common_theme.h" | 5 #include "ui/native_theme/common_theme.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "third_party/skia/include/core/SkCanvas.h" | 8 #include "third_party/skia/include/core/SkCanvas.h" |
| 9 #include "ui/base/material_design/material_design_controller.h" | 9 #include "ui/base/material_design/material_design_controller.h" |
| 10 #include "ui/base/resource/resource_bundle.h" | 10 #include "ui/base/resource/resource_bundle.h" |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 | 430 |
| 431 return size; | 431 return size; |
| 432 } | 432 } |
| 433 | 433 |
| 434 void CommonThemePaintComboboxArrow(SkCanvas* canvas, const gfx::Rect& rect) { | 434 void CommonThemePaintComboboxArrow(SkCanvas* canvas, const gfx::Rect& rect) { |
| 435 gfx::ImageSkia* arrow = ui::ResourceBundle::GetSharedInstance(). | 435 gfx::ImageSkia* arrow = ui::ResourceBundle::GetSharedInstance(). |
| 436 GetImageSkiaNamed(IDR_MENU_DROPARROW); | 436 GetImageSkiaNamed(IDR_MENU_DROPARROW); |
| 437 CommonThemeCreateCanvas(canvas)->DrawImageInt(*arrow, rect.x(), rect.y()); | 437 CommonThemeCreateCanvas(canvas)->DrawImageInt(*arrow, rect.x(), rect.y()); |
| 438 } | 438 } |
| 439 | 439 |
| 440 void CommonThemePaintMenuSeparator(SkCanvas* canvas, const gfx::Rect& rect) { | |
| 441 SkPaint paint; | |
| 442 paint.setColor( | |
| 443 GetAuraColor(NativeTheme::kColorId_MenuSeparatorColor, nullptr)); | |
| 444 int position_y = rect.y() + rect.height() / 2; | |
| 445 canvas->drawLine(rect.x(), position_y, rect.right(), position_y, paint); | |
| 446 } | |
| 447 | |
| 448 void CommonThemePaintMenuGutter(SkCanvas* canvas, const gfx::Rect& rect) { | |
| 449 SkPaint paint; | |
| 450 paint.setColor( | |
| 451 GetAuraColor(NativeTheme::kColorId_MenuSeparatorColor, nullptr)); | |
| 452 int position_x = rect.x() + rect.width() / 2; | |
| 453 canvas->drawLine(position_x, rect.y(), position_x, rect.bottom(), paint); | |
| 454 } | |
| 455 | |
| 456 void CommonThemePaintMenuBackground(SkCanvas* canvas, const gfx::Rect& rect) { | |
| 457 SkPaint paint; | |
| 458 paint.setColor( | |
| 459 GetAuraColor(NativeTheme::kColorId_MenuBackgroundColor, nullptr)); | |
| 460 canvas->drawRect(gfx::RectToSkRect(rect), paint); | |
| 461 } | |
| 462 | |
| 463 void CommonThemePaintMenuItemBackground( | 440 void CommonThemePaintMenuItemBackground( |
| 441 const NativeTheme* theme, |
| 464 SkCanvas* canvas, | 442 SkCanvas* canvas, |
| 465 NativeTheme::State state, | 443 NativeTheme::State state, |
| 466 const gfx::Rect& rect, | 444 const gfx::Rect& rect, |
| 467 const NativeTheme::MenuItemExtraParams& menu_item) { | 445 const NativeTheme::MenuItemExtraParams& menu_item) { |
| 468 SkPaint paint; | 446 SkPaint paint; |
| 469 switch (state) { | 447 switch (state) { |
| 470 case NativeTheme::kNormal: | 448 case NativeTheme::kNormal: |
| 471 case NativeTheme::kDisabled: | 449 case NativeTheme::kDisabled: |
| 472 paint.setColor( | 450 paint.setColor( |
| 473 GetAuraColor(NativeTheme::kColorId_MenuBackgroundColor, nullptr)); | 451 theme->GetSystemColor(NativeTheme::kColorId_MenuBackgroundColor)); |
| 474 break; | 452 break; |
| 475 case NativeTheme::kHovered: | 453 case NativeTheme::kHovered: |
| 476 paint.setColor(GetAuraColor( | 454 paint.setColor(theme->GetSystemColor( |
| 477 NativeTheme::kColorId_FocusedMenuItemBackgroundColor, nullptr)); | 455 NativeTheme::kColorId_FocusedMenuItemBackgroundColor)); |
| 478 break; | 456 break; |
| 479 default: | 457 default: |
| 480 NOTREACHED() << "Invalid state " << state; | 458 NOTREACHED() << "Invalid state " << state; |
| 481 break; | 459 break; |
| 482 } | 460 } |
| 483 if (menu_item.corner_radius > 0) { | 461 if (menu_item.corner_radius > 0) { |
| 484 const SkScalar radius = SkIntToScalar(menu_item.corner_radius); | 462 const SkScalar radius = SkIntToScalar(menu_item.corner_radius); |
| 485 canvas->drawRoundRect(gfx::RectToSkRect(rect), radius, radius, paint); | 463 canvas->drawRoundRect(gfx::RectToSkRect(rect), radius, radius, paint); |
| 486 return; | 464 return; |
| 487 } | 465 } |
| 488 canvas->drawRect(gfx::RectToSkRect(rect), paint); | 466 canvas->drawRect(gfx::RectToSkRect(rect), paint); |
| 489 } | 467 } |
| 490 | 468 |
| 491 // static | 469 // static |
| 492 scoped_ptr<gfx::Canvas> CommonThemeCreateCanvas(SkCanvas* sk_canvas) { | 470 scoped_ptr<gfx::Canvas> CommonThemeCreateCanvas(SkCanvas* sk_canvas) { |
| 493 // TODO(pkotwicz): Do something better and don't infer device | 471 // TODO(pkotwicz): Do something better and don't infer device |
| 494 // scale factor from canvas scale. | 472 // scale factor from canvas scale. |
| 495 SkMatrix m = sk_canvas->getTotalMatrix(); | 473 SkMatrix m = sk_canvas->getTotalMatrix(); |
| 496 float device_scale = static_cast<float>(SkScalarAbs(m.getScaleX())); | 474 float device_scale = static_cast<float>(SkScalarAbs(m.getScaleX())); |
| 497 return make_scoped_ptr(new gfx::Canvas(skia::SharePtr(sk_canvas), | 475 return make_scoped_ptr(new gfx::Canvas(skia::SharePtr(sk_canvas), |
| 498 device_scale)); | 476 device_scale)); |
| 499 } | 477 } |
| 500 | 478 |
| 501 } // namespace ui | 479 } // namespace ui |
| OLD | NEW |