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/resource/resource_bundle_win.h" | 5 #include "ui/base/resource/resource_bundle_win.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "skia/ext/image_operations.h" | 10 #include "skia/ext/image_operations.h" |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id, ImageRTL rtl) { | 59 gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id, ImageRTL rtl) { |
60 // Flipped image is not used on Windows. | 60 // Flipped image is not used on Windows. |
61 DCHECK_EQ(rtl, RTL_DISABLED); | 61 DCHECK_EQ(rtl, RTL_DISABLED); |
62 | 62 |
63 // Windows only uses SkBitmap for gfx::Image, so this is the same as | 63 // Windows only uses SkBitmap for gfx::Image, so this is the same as |
64 // GetImageNamed. | 64 // GetImageNamed. |
65 return GetImageNamed(resource_id); | 65 return GetImageNamed(resource_id); |
66 } | 66 } |
67 | 67 |
68 // static | 68 // static |
| 69 float ResourceBundle::PlatformGetImageScale(ui::ScaleFactor scale_factor) { |
| 70 if (!gfx::IsHighDPIEnabled()) |
| 71 return ui::GetImageScale(scale_factor); |
| 72 return gfx::win::GetDeviceScaleFactor(); |
| 73 } |
| 74 |
| 75 // static |
69 SkBitmap ResourceBundle::PlatformScaleImage(const SkBitmap& image, | 76 SkBitmap ResourceBundle::PlatformScaleImage(const SkBitmap& image, |
70 float loaded_image_scale, | 77 float loaded_image_scale, |
71 float desired_bitmap_scale) { | 78 float desired_bitmap_scale) { |
72 if (!gfx::IsHighDPIEnabled()) | 79 if (!gfx::IsHighDPIEnabled()) |
73 return image; | 80 return image; |
74 | 81 |
75 // On Windows we can have multiple device scales like 1/1.25/1.5/2, etc. | 82 // On Windows we can have multiple device scales like 1/1.25/1.5/2, etc. |
76 // We only have 1x and 2x data packs. We need to scale the bitmaps | 83 // We only have 1x and 2x data packs. We need to scale the bitmaps |
77 // accordingly. | 84 // accordingly. |
78 if (loaded_image_scale == desired_bitmap_scale) | 85 if (loaded_image_scale == desired_bitmap_scale) |
79 return image; | 86 return image; |
80 | 87 |
81 SkBitmap scaled_image; | 88 SkBitmap scaled_image; |
82 gfx::Size unscaled_size(image.width(), image.height()); | 89 gfx::Size unscaled_size(image.width(), image.height()); |
83 gfx::Size scaled_size = ToCeiledSize( | 90 gfx::Size scaled_size = ToCeiledSize( |
84 gfx::ScaleSize(unscaled_size, | 91 gfx::ScaleSize(unscaled_size, |
85 desired_bitmap_scale / loaded_image_scale)); | 92 desired_bitmap_scale / loaded_image_scale)); |
86 scaled_image = skia::ImageOperations::Resize( | 93 scaled_image = skia::ImageOperations::Resize( |
87 image, | 94 image, |
88 skia::ImageOperations::RESIZE_LANCZOS3, | 95 skia::ImageOperations::RESIZE_LANCZOS3, |
89 scaled_size.width(), | 96 scaled_size.width(), |
90 scaled_size.height()); | 97 scaled_size.height()); |
91 DCHECK_EQ(scaled_image.width(), scaled_size.width()); | 98 DCHECK_EQ(scaled_image.width(), scaled_size.width()); |
92 DCHECK_EQ(scaled_image.height(), scaled_size.height()); | 99 DCHECK_EQ(scaled_image.height(), scaled_size.height()); |
93 return scaled_image; | 100 return scaled_image; |
94 } | 101 } |
95 | 102 |
96 float ResourceBundle::PlatformGetImageScale() { | |
97 if (!gfx::IsHighDPIEnabled()) | |
98 return ui::GetImageScale(GetMaxScaleFactor()); | |
99 return gfx::win::GetDeviceScaleFactor(); | |
100 } | |
101 | |
102 void SetResourcesDataDLL(HINSTANCE handle) { | 103 void SetResourcesDataDLL(HINSTANCE handle) { |
103 resources_data_dll = handle; | 104 resources_data_dll = handle; |
104 } | 105 } |
105 | 106 |
106 HICON LoadThemeIconFromResourcesDataDLL(int icon_id) { | 107 HICON LoadThemeIconFromResourcesDataDLL(int icon_id) { |
107 return ::LoadIcon(GetCurrentResourceDLL(), MAKEINTRESOURCE(icon_id)); | 108 return ::LoadIcon(GetCurrentResourceDLL(), MAKEINTRESOURCE(icon_id)); |
108 } | 109 } |
109 | 110 |
110 } // namespace ui; | 111 } // namespace ui; |
OLD | NEW |