| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/gfx/native_theme_win.h" | 5 #include "ui/gfx/native_theme_win.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <uxtheme.h> | 8 #include <uxtheme.h> |
| 9 #include <vsstyle.h> | 9 #include <vsstyle.h> |
| 10 #include <vssym32.h> | 10 #include <vssym32.h> |
| 11 | 11 |
| 12 #include "base/logging.h" | 12 #include "base/logging.h" |
| 13 #include "base/memory/scoped_handle.h" | 13 #include "base/memory/scoped_handle.h" |
| 14 #include "base/win/scoped_gdi_object.h" | 14 #include "base/win/scoped_gdi_object.h" |
| 15 #include "base/win/scoped_hdc.h" | 15 #include "base/win/scoped_hdc.h" |
| 16 #include "base/win/windows_version.h" | 16 #include "base/win/windows_version.h" |
| 17 #include "skia/ext/platform_canvas.h" | |
| 18 #include "skia/ext/skia_utils_win.h" | 17 #include "skia/ext/skia_utils_win.h" |
| 18 #include "third_party/skia/include/core/SkCanvas.h" |
| 19 #include "third_party/skia/include/core/SkShader.h" | 19 #include "third_party/skia/include/core/SkShader.h" |
| 20 #include "ui/gfx/gdi_util.h" | 20 #include "ui/gfx/gdi_util.h" |
| 21 #include "ui/gfx/rect.h" | 21 #include "ui/gfx/rect.h" |
| 22 | 22 |
| 23 namespace { | 23 namespace { |
| 24 | 24 |
| 25 void SetCheckerboardShader(SkPaint* paint, const RECT& align_rect) { | 25 void SetCheckerboardShader(SkPaint* paint, const RECT& align_rect) { |
| 26 // Create a 2x2 checkerboard pattern using the 3D face and highlight colors. | 26 // Create a 2x2 checkerboard pattern using the 3D face and highlight colors. |
| 27 SkColor face = skia::COLORREFToSkColor(GetSysColor(COLOR_3DFACE)); | 27 SkColor face = skia::COLORREFToSkColor(GetSysColor(COLOR_3DFACE)); |
| 28 SkColor highlight = skia::COLORREFToSkColor(GetSysColor(COLOR_3DHILIGHT)); | 28 SkColor highlight = skia::COLORREFToSkColor(GetSysColor(COLOR_3DHILIGHT)); |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 return S_OK; | 533 return S_OK; |
| 534 } | 534 } |
| 535 | 535 |
| 536 HRESULT NativeThemeWin::PaintScrollbarTrack( | 536 HRESULT NativeThemeWin::PaintScrollbarTrack( |
| 537 HDC hdc, | 537 HDC hdc, |
| 538 int part_id, | 538 int part_id, |
| 539 int state_id, | 539 int state_id, |
| 540 int classic_state, | 540 int classic_state, |
| 541 RECT* target_rect, | 541 RECT* target_rect, |
| 542 RECT* align_rect, | 542 RECT* align_rect, |
| 543 skia::PlatformCanvas* canvas) const { | 543 SkCanvas* canvas) const { |
| 544 HANDLE handle = GetThemeHandle(SCROLLBAR); | 544 HANDLE handle = GetThemeHandle(SCROLLBAR); |
| 545 if (handle && draw_theme_) | 545 if (handle && draw_theme_) |
| 546 return draw_theme_(handle, hdc, part_id, state_id, target_rect, NULL); | 546 return draw_theme_(handle, hdc, part_id, state_id, target_rect, NULL); |
| 547 | 547 |
| 548 // Draw it manually. | 548 // Draw it manually. |
| 549 const DWORD colorScrollbar = GetSysColor(COLOR_SCROLLBAR); | 549 const DWORD colorScrollbar = GetSysColor(COLOR_SCROLLBAR); |
| 550 const DWORD color3DFace = GetSysColor(COLOR_3DFACE); | 550 const DWORD color3DFace = GetSysColor(COLOR_3DFACE); |
| 551 if ((colorScrollbar != color3DFace) && | 551 if ((colorScrollbar != color3DFace) && |
| 552 (colorScrollbar != GetSysColor(COLOR_WINDOW))) { | 552 (colorScrollbar != GetSysColor(COLOR_WINDOW))) { |
| 553 FillRect(hdc, target_rect, reinterpret_cast<HBRUSH>(COLOR_SCROLLBAR + 1)); | 553 FillRect(hdc, target_rect, reinterpret_cast<HBRUSH>(COLOR_SCROLLBAR + 1)); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 // Classic just renders a flat color background. | 616 // Classic just renders a flat color background. |
| 617 FillRect(hdc, rect, reinterpret_cast<HBRUSH>(COLOR_3DFACE + 1)); | 617 FillRect(hdc, rect, reinterpret_cast<HBRUSH>(COLOR_3DFACE + 1)); |
| 618 return S_OK; | 618 return S_OK; |
| 619 } | 619 } |
| 620 | 620 |
| 621 HRESULT NativeThemeWin::PaintTrackbar(HDC hdc, | 621 HRESULT NativeThemeWin::PaintTrackbar(HDC hdc, |
| 622 int part_id, | 622 int part_id, |
| 623 int state_id, | 623 int state_id, |
| 624 int classic_state, | 624 int classic_state, |
| 625 RECT* rect, | 625 RECT* rect, |
| 626 skia::PlatformCanvas* canvas) const { | 626 SkCanvas* canvas) const { |
| 627 // Make the channel be 4 px thick in the center of the supplied rect. (4 px | 627 // Make the channel be 4 px thick in the center of the supplied rect. (4 px |
| 628 // matches what XP does in various menus; GetThemePartSize() doesn't seem to | 628 // matches what XP does in various menus; GetThemePartSize() doesn't seem to |
| 629 // return good values here.) | 629 // return good values here.) |
| 630 RECT channel_rect = *rect; | 630 RECT channel_rect = *rect; |
| 631 const int channel_thickness = 4; | 631 const int channel_thickness = 4; |
| 632 if (part_id == TKP_TRACK) { | 632 if (part_id == TKP_TRACK) { |
| 633 channel_rect.top += | 633 channel_rect.top += |
| 634 ((channel_rect.bottom - channel_rect.top - channel_thickness) / 2); | 634 ((channel_rect.bottom - channel_rect.top - channel_thickness) / 2); |
| 635 channel_rect.bottom = channel_rect.top + channel_thickness; | 635 channel_rect.bottom = channel_rect.top + channel_thickness; |
| 636 } else if (part_id == TKP_TRACKVERT) { | 636 } else if (part_id == TKP_TRACKVERT) { |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 725 gfx::Rect result(*rect); | 725 gfx::Rect result(*rect); |
| 726 result.Inset(size, size); | 726 result.Inset(size, size); |
| 727 return result.ToRECT(); | 727 return result.ToRECT(); |
| 728 } | 728 } |
| 729 | 729 |
| 730 HRESULT NativeThemeWin::PaintProgressBar(HDC hdc, | 730 HRESULT NativeThemeWin::PaintProgressBar(HDC hdc, |
| 731 RECT* bar_rect, | 731 RECT* bar_rect, |
| 732 RECT* value_rect, | 732 RECT* value_rect, |
| 733 bool determinate, | 733 bool determinate, |
| 734 double animated_seconds, | 734 double animated_seconds, |
| 735 skia::PlatformCanvas* canvas) const { | 735 SkCanvas* canvas) const { |
| 736 // There is no documentation about the animation speed, frame-rate, nor | 736 // There is no documentation about the animation speed, frame-rate, nor |
| 737 // size of moving overlay of the indeterminate progress bar. | 737 // size of moving overlay of the indeterminate progress bar. |
| 738 // So we just observed real-world programs and guessed following parameters. | 738 // So we just observed real-world programs and guessed following parameters. |
| 739 const int kDeteminateOverlayPixelsPerSecond = 300; | 739 const int kDeteminateOverlayPixelsPerSecond = 300; |
| 740 const int kDeteminateOverlayWidth = 120; | 740 const int kDeteminateOverlayWidth = 120; |
| 741 const int kIndeterminateOverlayPixelsPerSecond = 175; | 741 const int kIndeterminateOverlayPixelsPerSecond = 175; |
| 742 const int kVistaIndeterminateOverlayWidth = 120; | 742 const int kVistaIndeterminateOverlayWidth = 120; |
| 743 const int kXPIndeterminateOverlayWidth = 55; | 743 const int kXPIndeterminateOverlayWidth = 55; |
| 744 // The thickness of the bar frame inside |value_rect| | 744 // The thickness of the bar frame inside |value_rect| |
| 745 const int kXPBarPadding = 3; | 745 const int kXPBarPadding = 3; |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 default: | 1149 default: |
| 1150 // While transitioning NativeThemeWin to the single Paint() entry point, | 1150 // While transitioning NativeThemeWin to the single Paint() entry point, |
| 1151 // unsupported parts will DCHECK here. | 1151 // unsupported parts will DCHECK here. |
| 1152 DCHECK(false); | 1152 DCHECK(false); |
| 1153 break; | 1153 break; |
| 1154 } | 1154 } |
| 1155 return part_id; | 1155 return part_id; |
| 1156 } | 1156 } |
| 1157 | 1157 |
| 1158 } // namespace gfx | 1158 } // namespace gfx |
| OLD | NEW |