diff options
Diffstat (limited to 'ui')
-rw-r--r-- | ui/base/resource/data_pack.cc | 11 | ||||
-rw-r--r-- | ui/base/resource/data_pack.h | 7 | ||||
-rw-r--r-- | ui/base/resource/data_pack_unittest.cc | 8 | ||||
-rw-r--r-- | ui/base/resource/resource_bundle.cc | 13 | ||||
-rw-r--r-- | ui/base/resource/resource_bundle.h | 7 | ||||
-rw-r--r-- | ui/base/resource/resource_bundle_android.cc | 10 | ||||
-rw-r--r-- | ui/base/resource/resource_bundle_aurax11.cc | 13 | ||||
-rw-r--r-- | ui/base/resource/resource_bundle_gtk.cc | 10 | ||||
-rw-r--r-- | ui/base/resource/resource_bundle_mac.mm | 18 | ||||
-rw-r--r-- | ui/base/resource/resource_bundle_unittest.cc | 2 | ||||
-rw-r--r-- | ui/base/resource/resource_bundle_win.cc | 18 | ||||
-rw-r--r-- | ui/base/resource/resource_data_dll_win.cc | 4 | ||||
-rw-r--r-- | ui/base/resource/resource_data_dll_win.h | 1 | ||||
-rw-r--r-- | ui/base/resource/resource_handle.cc | 12 | ||||
-rw-r--r-- | ui/base/resource/resource_handle.h | 8 | ||||
-rw-r--r-- | ui/test/test_suite.cc | 4 | ||||
-rw-r--r-- | ui/ui.gyp | 1 |
17 files changed, 108 insertions, 39 deletions
diff --git a/ui/base/resource/data_pack.cc b/ui/base/resource/data_pack.cc index 6a8490c..0fa97a8 100644 --- a/ui/base/resource/data_pack.cc +++ b/ui/base/resource/data_pack.cc @@ -61,9 +61,12 @@ enum LoadErrors { namespace ui { -// In .cc for MemoryMappedFile dtor. -DataPack::DataPack() : resource_count_(0), text_encoding_type_(BINARY) { +DataPack::DataPack(float scale_factor) + : resource_count_(0), + text_encoding_type_(BINARY), + scale_factor_(scale_factor) { } + DataPack::~DataPack() { } @@ -183,6 +186,10 @@ ResourceHandle::TextEncodingType DataPack::GetTextEncodingType() const { return text_encoding_type_; } +float DataPack::GetScaleFactor() const { + return scale_factor_; +} + // static bool DataPack::WritePack(const FilePath& path, const std::map<uint16, base::StringPiece>& resources, diff --git a/ui/base/resource/data_pack.h b/ui/base/resource/data_pack.h index 5e3426f..0ac5efe 100644 --- a/ui/base/resource/data_pack.h +++ b/ui/base/resource/data_pack.h @@ -32,7 +32,7 @@ namespace ui { class UI_EXPORT DataPack : public ResourceHandle { public: - DataPack(); + DataPack(float scale_factor); virtual ~DataPack(); // Load a pack file from |path|, returning false on error. @@ -52,6 +52,7 @@ class UI_EXPORT DataPack : public ResourceHandle { virtual base::RefCountedStaticMemory* GetStaticMemory( uint16 resource_id) const OVERRIDE; virtual TextEncodingType GetTextEncodingType() const OVERRIDE; + virtual float GetScaleFactor() const OVERRIDE; private: // The memory-mapped data. @@ -63,6 +64,10 @@ class UI_EXPORT DataPack : public ResourceHandle { // Type of encoding for text resources. TextEncodingType text_encoding_type_; + // The scale of the image in this resource pack relative to images in the 1x + // resource pak. + float scale_factor_; + DISALLOW_COPY_AND_ASSIGN(DataPack); }; diff --git a/ui/base/resource/data_pack_unittest.cc b/ui/base/resource/data_pack_unittest.cc index 1c0bd7a..36be6fd 100644 --- a/ui/base/resource/data_pack_unittest.cc +++ b/ui/base/resource/data_pack_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// 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. @@ -31,7 +31,7 @@ TEST(DataPackTest, Load) { static_cast<int>(kSamplePakSize)); // Load the file through the data pack API. - DataPack pack; + DataPack pack(ResourceHandle::kScaleFactor100x); ASSERT_TRUE(pack.Load(data_path)); base::StringPiece data; @@ -63,7 +63,7 @@ TEST(DataPackTest, LoadFileWithTruncatedHeader) { data_path = data_path.Append(FILE_PATH_LITERAL( "ui/base/test/data/data_pack_unittest/truncated-header.pak")); - DataPack pack; + DataPack pack(ResourceHandle::kScaleFactor100x); ASSERT_FALSE(pack.Load(data_path)); } @@ -87,7 +87,7 @@ TEST_P(DataPackTest, Write) { ASSERT_TRUE(DataPack::WritePack(file, resources, GetParam())); // Now try to read the data back in. - DataPack pack; + DataPack pack(ResourceHandle::kScaleFactor100x); ASSERT_TRUE(pack.Load(file)); EXPECT_EQ(pack.GetTextEncodingType(), GetParam()); diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc index 13aaacf..4c5a50b 100644 --- a/ui/base/resource/resource_bundle.cc +++ b/ui/base/resource/resource_bundle.cc @@ -89,8 +89,9 @@ bool ResourceBundle::LocaleDataPakExists(const std::string& locale) { return !GetLocaleFilePath(locale).empty(); } -void ResourceBundle::AddDataPack(const FilePath& path) { - scoped_ptr<DataPack> data_pack(new DataPack()); +void ResourceBundle::AddDataPack(const FilePath& path, float scale_factor) { + scoped_ptr<DataPack> data_pack( + new DataPack(ResourceHandle::kScaleFactor100x)); if (data_pack->Load(path)) { data_packs_.push_back(data_pack.release()); } else { @@ -141,7 +142,8 @@ std::string ResourceBundle::LoadLocaleResources( return std::string(); } - scoped_ptr<DataPack> data_pack(new DataPack()); + scoped_ptr<DataPack> data_pack( + new DataPack(ResourceHandle::kScaleFactor100x)); if (!data_pack->Load(locale_file_path)) { UMA_HISTOGRAM_ENUMERATION("ResourceBundle.LoadLocaleResourcesError", logging::GetLastSystemErrorCode(), 16000); @@ -155,11 +157,12 @@ std::string ResourceBundle::LoadLocaleResources( void ResourceBundle::LoadTestResources(const FilePath& path) { // Use the given resource pak for both common and localized resources. - scoped_ptr<DataPack> data_pack(new DataPack()); + scoped_ptr<DataPack> data_pack( + new DataPack(ResourceHandle::kScaleFactor100x)); if (data_pack->Load(path)) data_packs_.push_back(data_pack.release()); - data_pack.reset(new DataPack()); + data_pack.reset(new DataPack(ResourceHandle::kScaleFactor100x)); if (data_pack->Load(path)) locale_resources_data_.reset(data_pack.release()); } diff --git a/ui/base/resource/resource_bundle.h b/ui/base/resource/resource_bundle.h index 974e5d3..7b06e5e9 100644 --- a/ui/base/resource/resource_bundle.h +++ b/ui/base/resource/resource_bundle.h @@ -87,9 +87,10 @@ class UI_EXPORT ResourceBundle { // Registers additional data pack files with the global ResourceBundle. When // looking for a DataResource, we will search these files after searching the - // main module. This method is not thread safe! You should call it - // immediately after calling InitSharedInstance. - void AddDataPack(const FilePath& path); + // main module. |scale_factor| is the scale of images in this resource pak + // relative to the images in the 1x resource pak. This method is not thread + // safe! You should call it immediately after calling InitSharedInstance. + void AddDataPack(const FilePath& path, float scale_factor); // Changes the locale for an already-initialized ResourceBundle, returning the // name of the newly-loaded locale. Future calls to get strings will return diff --git a/ui/base/resource/resource_bundle_android.cc b/ui/base/resource/resource_bundle_android.cc index 62a53c6..6825c40 100644 --- a/ui/base/resource/resource_bundle_android.cc +++ b/ui/base/resource/resource_bundle_android.cc @@ -11,6 +11,7 @@ #include "base/logging.h" #include "base/path_service.h" #include "base/stringprintf.h" +#include "ui/base/resource/resource_handle.h" namespace { @@ -26,9 +27,12 @@ FilePath GetResourcesPakFilePath(const std::string& pak_name) { namespace ui { void ResourceBundle::LoadCommonResources() { - AddDataPack(GetResourcesPakFilePath("chrome.pak")); - AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak")); - AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak")); + AddDataPack(GetResourcesPakFilePath("chrome.pak"), + ResourceHandle::kScaleFactor100x); + AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak"), + ResourceHandle::kScaleFactor100x); + AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak"), + ResourceHandle::kScaleFactor100x); } gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id, ImageRTL rtl) { diff --git a/ui/base/resource/resource_bundle_aurax11.cc b/ui/base/resource/resource_bundle_aurax11.cc index 3c1f824..76152ea 100644 --- a/ui/base/resource/resource_bundle_aurax11.cc +++ b/ui/base/resource/resource_bundle_aurax11.cc @@ -7,6 +7,7 @@ #include "base/logging.h" #include "base/path_service.h" #include "ui/base/layout.h" +#include "ui/base/resource/resource_handle.h" #include "ui/base/ui_base_paths.h" #include "ui/gfx/image/image.h" @@ -24,13 +25,17 @@ FilePath GetResourcesPakFilePath(const std::string& pak_name) { namespace ui { void ResourceBundle::LoadCommonResources() { - AddDataPack(GetResourcesPakFilePath("chrome.pak")); - AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak")); + AddDataPack(GetResourcesPakFilePath("chrome.pak"), + ResourceHandle::kScaleFactor100x); + AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak"), + ResourceHandle::kScaleFactor100x); if (ui::GetDisplayLayout() == ui::LAYOUT_TOUCH) { - AddDataPack(GetResourcesPakFilePath("ui_resources_touch.pak")); + AddDataPack(GetResourcesPakFilePath("ui_resources_touch.pak"), + ResourceHandle::kScaleFactor100x); } else { - AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak")); + AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak"), + ResourceHandle::kScaleFactor100x); } } diff --git a/ui/base/resource/resource_bundle_gtk.cc b/ui/base/resource/resource_bundle_gtk.cc index bc4a5cc..6125dd7 100644 --- a/ui/base/resource/resource_bundle_gtk.cc +++ b/ui/base/resource/resource_bundle_gtk.cc @@ -8,6 +8,7 @@ #include "base/logging.h" #include "base/memory/ref_counted_memory.h" #include "base/path_service.h" +#include "ui/base/resource/resource_handle.h" #include "base/synchronization/lock.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/base/gtk/scoped_gobject.h" @@ -61,9 +62,12 @@ FilePath GetResourcesPakFilePath(const std::string& pak_name) { } // namespace void ResourceBundle::LoadCommonResources() { - AddDataPack(GetResourcesPakFilePath("chrome.pak")); - AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak")); - AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak")); + AddDataPack(GetResourcesPakFilePath("chrome.pak"), + ResourceHandle::kScaleFactor100x); + AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak"), + ResourceHandle::kScaleFactor100x); + AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak"), + ResourceHandle::kScaleFactor100x); } gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id, ImageRTL rtl) { diff --git a/ui/base/resource/resource_bundle_mac.mm b/ui/base/resource/resource_bundle_mac.mm index ee2a6ef..cd89433 100644 --- a/ui/base/resource/resource_bundle_mac.mm +++ b/ui/base/resource/resource_bundle_mac.mm @@ -44,17 +44,23 @@ FilePath GetResourcesPakFilePath(NSString* name, NSString* mac_locale) { } // namespace void ResourceBundle::LoadCommonResources() { - AddDataPack(GetResourcesPakFilePath(@"chrome", nil)); - AddDataPack(GetResourcesPakFilePath(@"theme_resources_standard", nil)); - AddDataPack(GetResourcesPakFilePath(@"ui_resources_standard", nil)); + AddDataPack(GetResourcesPakFilePath(@"chrome", nil), + ResourceHandle::kScaleFactor100x); + AddDataPack(GetResourcesPakFilePath(@"theme_resources_standard", nil), + ResourceHandle::kScaleFactor100x); + AddDataPack(GetResourcesPakFilePath(@"ui_resources_standard", nil), + ResourceHandle::kScaleFactor100x); // On Windows and ChromeOS we load either the 1x resource or the 2x resource. // On Mac we load both and let the UI framework decide which one to use. #if defined(ENABLE_HIDPI) if (base::mac::IsOSLionOrLater()) { - AddDataPack(GetResourcesPakFilePath(@"theme_resources_2x", nil)); - AddDataPack(GetResourcesPakFilePath(@"theme_resources_standard_2x", nil)); - AddDataPack(GetResourcesPakFilePath(@"ui_resources_standard_2x", nil)); + AddDataPack(GetResourcesPakFilePath(@"theme_resources_2x", nil), + ResourceHandle::kScaleFactor200x); + AddDataPack(GetResourcesPakFilePath(@"theme_resources_standard_2x", nil), + ResourceHandle::kScaleFactor200x); + AddDataPack(GetResourcesPakFilePath(@"ui_resources_standard_2x", nil), + ResourceHandle::kScaleFactor200x); } #endif } diff --git a/ui/base/resource/resource_bundle_unittest.cc b/ui/base/resource/resource_bundle_unittest.cc index f98d8a7..5e2598ed 100644 --- a/ui/base/resource/resource_bundle_unittest.cc +++ b/ui/base/resource/resource_bundle_unittest.cc @@ -40,7 +40,7 @@ TEST(ResourceBundle, LoadDataResourceBytes) { // Give a .pak file that doesn't exist so we will fail to load it. resource_bundle.AddDataPack(FilePath( - FILE_PATH_LITERAL("non-existant-file.pak"))); + FILE_PATH_LITERAL("non-existant-file.pak")), 1.0); EXPECT_EQ(NULL, resource_bundle.LoadDataResourceBytes(kUnfoundResourceId)); } diff --git a/ui/base/resource/resource_bundle_win.cc b/ui/base/resource/resource_bundle_win.cc index 7890002..c28cf12 100644 --- a/ui/base/resource/resource_bundle_win.cc +++ b/ui/base/resource/resource_bundle_win.cc @@ -45,16 +45,22 @@ void ResourceBundle::LoadCommonResources() { switch (ui::GetDisplayLayout()) { case ui::LAYOUT_TOUCH: - AddDataPack(GetResourcesPakFilePath("theme_resources_metro_1x.pak")); - AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak")); + AddDataPack(GetResourcesPakFilePath("theme_resources_metro_1x.pak"), + ResourceHandle::kScaleFactor100x); + AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak"), + ResourceHandle::kScaleFactor100x); break; default: if (use_hidpi) { - AddDataPack(GetResourcesPakFilePath("theme_resources_2x.pak")); - AddDataPack(GetResourcesPakFilePath("ui_resources_2x.pak")); + AddDataPack(GetResourcesPakFilePath("theme_resources_2x.pak"), + ResourceHandle::kScaleFactor200x); + AddDataPack(GetResourcesPakFilePath("ui_resources_2x.pak"), + ResourceHandle::kScaleFactor200x); } else { - AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak")); - AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak")); + AddDataPack(GetResourcesPakFilePath("theme_resources_standard.pak"), + ResourceHandle::kScaleFactor100x); + AddDataPack(GetResourcesPakFilePath("ui_resources_standard.pak"), + ResourceHandle::kScaleFactor100x); } break; } diff --git a/ui/base/resource/resource_data_dll_win.cc b/ui/base/resource/resource_data_dll_win.cc index 4c7e052..48e9db1 100644 --- a/ui/base/resource/resource_data_dll_win.cc +++ b/ui/base/resource/resource_data_dll_win.cc @@ -48,4 +48,8 @@ ResourceHandle::TextEncodingType ResourceDataDLL::GetTextEncodingType() const { return BINARY; } +float ResourceDataDLL::GetScaleFactor() const { + return 1.0; +} + } // namespace ui diff --git a/ui/base/resource/resource_data_dll_win.h b/ui/base/resource/resource_data_dll_win.h index 9b9a6a0..e21e9aa 100644 --- a/ui/base/resource/resource_data_dll_win.h +++ b/ui/base/resource/resource_data_dll_win.h @@ -24,6 +24,7 @@ class ResourceDataDLL : public ResourceHandle { virtual base::RefCountedStaticMemory* GetStaticMemory( uint16 resource_id) const OVERRIDE; virtual TextEncodingType GetTextEncodingType() const OVERRIDE; + virtual float GetScaleFactor() const OVERRIDE; private: const HINSTANCE module_; diff --git a/ui/base/resource/resource_handle.cc b/ui/base/resource/resource_handle.cc new file mode 100644 index 0000000..947ff80 --- /dev/null +++ b/ui/base/resource/resource_handle.cc @@ -0,0 +1,12 @@ +// 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_handle.h" + +namespace ui { + +const float ResourceHandle::kScaleFactor100x = 1.0; +const float ResourceHandle::kScaleFactor200x = 2.0; + +} // namespace ui diff --git a/ui/base/resource/resource_handle.h b/ui/base/resource/resource_handle.h index ce3a23b..b40741e 100644 --- a/ui/base/resource/resource_handle.h +++ b/ui/base/resource/resource_handle.h @@ -25,6 +25,10 @@ class UI_EXPORT ResourceHandle { UTF16 }; + // The scale factors for image resources. + static const float kScaleFactor100x; + static const float kScaleFactor200x; + virtual ~ResourceHandle() {} // Get resource by id |resource_id|, filling in |data|. @@ -40,6 +44,10 @@ class UI_EXPORT ResourceHandle { // Get the encoding type of text resources. virtual TextEncodingType GetTextEncodingType() const = 0; + + // The scale of images in this resource pack relative to images in the 1x + // resource pak. + virtual float GetScaleFactor() const = 0; }; } // namespace ui diff --git a/ui/test/test_suite.cc b/ui/test/test_suite.cc index 024543e..538b5d7 100644 --- a/ui/test/test_suite.cc +++ b/ui/test/test_suite.cc @@ -8,6 +8,7 @@ #include "base/path_service.h" #include "build/build_config.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/base/resource/resource_handle.h" #include "ui/base/ui_base_paths.h" #include "ui/gfx/gfx_paths.h" @@ -54,7 +55,8 @@ void UITestSuite::Initialize() { #if !defined(OS_MACOSX) && defined(OS_POSIX) ui::ResourceBundle::GetSharedInstance().AddDataPack( - pak_dir.AppendASCII("ui_resources.pak")); + pak_dir.AppendASCII("ui_resources.pak"), + ResourceHandle::kScaleFactor100x); #endif } @@ -226,6 +226,7 @@ 'base/resource/resource_bundle_win.h', 'base/resource/resource_data_dll_win.cc', 'base/resource/resource_data_dll_win.h', + 'base/resource/resource_handle.cc', 'base/resource/resource_handle.h', 'base/text/bytes_formatting.cc', 'base/text/bytes_formatting.h', |