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 3 // found in the LICENSE file. 4 5 #include "ui/base/resource/resource_bundle_win.h" 6 7 #include "base/logging.h" 8 #include "base/path_service.h" 9 #include "base/strings/utf_string_conversions.h" 10 #include "skia/ext/image_operations.h" 11 #include "ui/base/layout.h" 12 #include "ui/base/resource/resource_bundle.h" 13 #include "ui/base/resource/resource_data_dll_win.h" 14 #include "ui/gfx/geometry/size_conversions.h" 15 #include "ui/gfx/image/image_skia.h" 16 #include "ui/gfx/image/image_skia_source.h" 17 #include "ui/gfx/win/dpi.h" 18 19 namespace ui { 20 21 namespace { 22 23 HINSTANCE resources_data_dll; 24 GetCurrentResourceDLL()25HINSTANCE GetCurrentResourceDLL() { 26 if (resources_data_dll) 27 return resources_data_dll; 28 return GetModuleHandle(NULL); 29 } 30 GetResourcesPakFilePath(const std::string & pak_name)31base::FilePath GetResourcesPakFilePath(const std::string& pak_name) { 32 base::FilePath path; 33 if (PathService::Get(base::DIR_MODULE, &path)) 34 return path.AppendASCII(pak_name.c_str()); 35 36 // Return just the name of the pack file. 37 return base::FilePath(base::ASCIIToUTF16(pak_name)); 38 } 39 40 } // namespace 41 LoadCommonResources()42void ResourceBundle::LoadCommonResources() { 43 // As a convenience, add the current resource module as a data packs. 44 data_packs_.push_back(new ResourceDataDLL(GetCurrentResourceDLL())); 45 46 if (IsScaleFactorSupported(SCALE_FACTOR_100P)) { 47 AddDataPackFromPath( 48 GetResourcesPakFilePath("chrome_100_percent.pak"), 49 SCALE_FACTOR_100P); 50 } 51 if (IsScaleFactorSupported(SCALE_FACTOR_200P)) { 52 DCHECK(gfx::IsHighDPIEnabled()); 53 AddDataPackFromPath( 54 GetResourcesPakFilePath("chrome_200_percent.pak"), 55 SCALE_FACTOR_200P); 56 } 57 } 58 GetNativeImageNamed(int resource_id,ImageRTL rtl)59gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id, ImageRTL rtl) { 60 // Flipped image is not used on Windows. 61 DCHECK_EQ(rtl, RTL_DISABLED); 62 63 // Windows only uses SkBitmap for gfx::Image, so this is the same as 64 // GetImageNamed. 65 return GetImageNamed(resource_id); 66 } 67 SetResourcesDataDLL(HINSTANCE handle)68void SetResourcesDataDLL(HINSTANCE handle) { 69 resources_data_dll = handle; 70 } 71 LoadThemeIconFromResourcesDataDLL(int icon_id)72HICON LoadThemeIconFromResourcesDataDLL(int icon_id) { 73 return ::LoadIcon(GetCurrentResourceDLL(), MAKEINTRESOURCE(icon_id)); 74 } 75 76 } // namespace ui; 77