Chromium Code Reviews| Index: ui/base/resource/resource_bundle_win.cc |
| diff --git a/ui/base/resource/resource_bundle_win.cc b/ui/base/resource/resource_bundle_win.cc |
| index 79355d67eb6f506ec200aaf93ee6da593e1f528b..d5933f6b4ad8e48de33aa85c9077a89ac03ffc9a 100644 |
| --- a/ui/base/resource/resource_bundle_win.cc |
| +++ b/ui/base/resource/resource_bundle_win.cc |
| @@ -1,76 +1,95 @@ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| -// Use of this source code is governed by a BSD-style license that can be |
| -// found in the LICENSE file. |
| - |
| -#include "ui/base/resource/resource_bundle_win.h" |
| - |
| -#include "base/logging.h" |
| -#include "base/path_service.h" |
| -#include "ui/base/resource/resource_bundle.h" |
| -#include "ui/base/resource/resource_data_dll_win.h" |
| -#include "ui/base/win/dpi.h" |
| - |
| -namespace ui { |
| - |
| -namespace { |
| - |
| -HINSTANCE resources_data_dll; |
| - |
| -HINSTANCE GetCurrentResourceDLL() { |
| - if (resources_data_dll) |
| - return resources_data_dll; |
| - return GetModuleHandle(NULL); |
| -} |
| - |
| -FilePath GetResourcesPakFilePath(const std::string& pak_name) { |
| - FilePath path; |
| - if (PathService::Get(base::DIR_MODULE, &path)) |
| - return path.AppendASCII(pak_name.c_str()); |
| - return FilePath(); |
| -} |
| - |
| -} // end anonymous namespace |
| - |
| -void ResourceBundle::LoadCommonResources() { |
| - // As a convenience, add the current resource module as a data packs. |
| - data_packs_.push_back(new ResourceDataDLL(GetCurrentResourceDLL())); |
| - |
| - bool use_hidpi_pak = false; |
| -#if defined(ENABLE_HIDPI) |
| - // If we're running in HiDPI mode then use the 2x resource for DPI greater |
| - // than 1.5. Otherwise use the 1x resource. |
| - use_hidpi_pak = ui::GetDPIScale() > 1.5; |
| -#endif |
| - |
| - if (!use_hidpi_pak) { |
| - AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak")); |
| - AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak")); |
| - } else { |
| - AddDataPack(GetResourcesPakFilePath("theme_resources_2x.pak")); |
| - AddDataPack(GetResourcesPakFilePath("ui_resources_2x.pak")); |
| - } |
| -} |
| - |
| -void ResourceBundle::LoadTestResources(const FilePath& path) { |
| - // On Windows, the test resources are normally compiled into the binary |
| - // itself. |
| -} |
| - |
| -gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id, ImageRTL rtl) { |
| - // Flipped image is not used on Windows. |
| - DCHECK_EQ(rtl, RTL_DISABLED); |
| - |
| - // Windows only uses SkBitmap for gfx::Image, so this is the same as |
| - // GetImageNamed. |
| - return GetImageNamed(resource_id); |
| -} |
| - |
| -void SetResourcesDataDLL(HINSTANCE handle) { |
| - resources_data_dll = handle; |
| -} |
| - |
| -HICON LoadThemeIconFromResourcesDataDLL(int icon_id) { |
| - return ::LoadIcon(GetCurrentResourceDLL(), MAKEINTRESOURCE(icon_id)); |
| -} |
| - |
| -} // namespace ui; |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "ui/base/resource/resource_bundle_win.h" |
| + |
| +#include "base/logging.h" |
| +#include "base/path_service.h" |
| +#include "ui/base/resource/resource_bundle.h" |
| +#include "ui/base/resource/resource_data_dll_win.h" |
| +#include "ui/base/win/dpi.h" |
| + |
| +namespace ui { |
| + |
| +namespace { |
| + |
| +HINSTANCE resources_data_dll; |
| + |
| +HINSTANCE GetCurrentResourceDLL() { |
| + if (resources_data_dll) |
| + return resources_data_dll; |
| + return GetModuleHandle(NULL); |
| +} |
| + |
| +FilePath GetResourcesPakFilePath(const std::string& pak_name) { |
| + FilePath path; |
| + if (PathService::Get(base::DIR_MODULE, &path)) |
| + return path.AppendASCII(pak_name.c_str()); |
| + return FilePath(); |
| +} |
| + |
| +bool IsInMetroMode() { |
| + const char* kMetroModeEnvVar = "CHROME_METRO_DLL"; |
|
sky
2012/04/13 22:56:15
Can you use base/win/metro.h?
sail
2012/04/18 15:46:40
Done.
|
| + char buffer[2]; |
| + if (!::GetEnvironmentVariableA(kMetroModeEnvVar, buffer, arraysize(buffer))) |
| + return false; |
| + return buffer == std::string("1"); |
| +} |
| + |
| +} // end anonymous namespace |
| + |
| +void ResourceBundle::LoadCommonResources() { |
| + // As a convenience, add the current resource module as a data packs. |
| + data_packs_.push_back(new ResourceDataDLL(GetCurrentResourceDLL())); |
| + |
| + bool use_hidpi_pak = false; |
| +#if defined(ENABLE_HIDPI) |
| + // If we're running in HiDPI mode then use the 2x resource for DPI greater |
| + // than 1.5. Otherwise use the 1x resource. |
| + use_hidpi_pak = ui::GetDPIScale() > 1.5; |
| +#endif |
| + |
| + bool use_metro_pak = false; |
| +#if defined(ENABLE_METRO) |
| + use_metro_pak = IsInMetroMode(); |
| +#endif |
| + |
| + if (use_metro_pak) { |
| + AddDataPack(GetResourcesPakFilePath("theme_resources_metro_1x.pak")); |
| + } else if (use_hidpi_pak) { |
| + AddDataPack(GetResourcesPakFilePath("theme_resources_2x.pak")); |
| + } else { |
| + AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak")); |
| + } |
| + |
| + if (use_hidpi_pak) { |
| + AddDataPack(GetResourcesPakFilePath("ui_resources_2x.pak")); |
| + } else { |
| + AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak")); |
| + } |
| +} |
| + |
| +void ResourceBundle::LoadTestResources(const FilePath& path) { |
| + // On Windows, the test resources are normally compiled into the binary |
| + // itself. |
| +} |
| + |
| +gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id, ImageRTL rtl) { |
| + // Flipped image is not used on Windows. |
| + DCHECK_EQ(rtl, RTL_DISABLED); |
| + |
| + // Windows only uses SkBitmap for gfx::Image, so this is the same as |
| + // GetImageNamed. |
| + return GetImageNamed(resource_id); |
| +} |
| + |
| +void SetResourcesDataDLL(HINSTANCE handle) { |
| + resources_data_dll = handle; |
| +} |
| + |
| +HICON LoadThemeIconFromResourcesDataDLL(int icon_id) { |
| + return ::LoadIcon(GetCurrentResourceDLL(), MAKEINTRESOURCE(icon_id)); |
| +} |
| + |
| +} // namespace ui; |