diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-24 03:25:48 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-24 03:25:48 +0000 |
commit | 50b66263c3a926fd1de75248fb2100e72715696e (patch) | |
tree | a4ad06309d29bacf1c6de692a20f7d214f8ea7ab /chrome/browser/themes | |
parent | 2fa342b8ed9c8777f78b3ba8b344dab24a04ef97 (diff) | |
download | chromium_src-50b66263c3a926fd1de75248fb2100e72715696e.zip chromium_src-50b66263c3a926fd1de75248fb2100e72715696e.tar.gz chromium_src-50b66263c3a926fd1de75248fb2100e72715696e.tar.bz2 |
Remove dependency on ui::ScaleFactor from ui/gfx
As part of the work to removed dependencies on ui/base from ui/gfx I have
changed the public api to Canvas, ImageSkia, ImageSkiaRep and ImagePNGRep
to take float scale values instead of ui::ScaleFactor.
The notion of supported scale factors has been broken into 2 parts.
ui::SetSupportedScaleFactors remains and calls the
new ImageSkia::SetSupportedScales().
The initialization of the supported scale factors has been moved from layout.h
into ResourceBundle, and is done explicitly in tests that don't use
ResourceBundle.
BUG=103304
R=ben@chromium.org, oshima@chromium.org, sky@chromium.org
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=224473
Review URL: https://codereview.chromium.org/24175004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224876 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/themes')
-rw-r--r-- | chrome/browser/themes/browser_theme_pack.cc | 49 | ||||
-rw-r--r-- | chrome/browser/themes/browser_theme_pack_unittest.cc | 28 |
2 files changed, 39 insertions, 38 deletions
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc index 988450e..6f163af 100644 --- a/chrome/browser/themes/browser_theme_pack.cc +++ b/chrome/browser/themes/browser_theme_pack.cc @@ -245,7 +245,7 @@ bool InputScalesValid(const base::StringPiece& input, // Do a memcpy to avoid misaligned memory access. memcpy(scales.get(), input.data(), input.size()); for (size_t index = 0; index < scales_size; ++index) { - if (scales[index] != ui::GetScaleFactorScale(expected[index])) + if (scales[index] != ui::GetImageScale(expected[index])) return false; } return true; @@ -256,7 +256,7 @@ std::string GetScaleFactorsAsString( const std::vector<ui::ScaleFactor>& scale_factors) { scoped_ptr<float[]> scales(new float[scale_factors.size()]); for (size_t i = 0; i < scale_factors.size(); ++i) - scales[i] = ui::GetScaleFactorScale(scale_factors[i]); + scales[i] = ui::GetImageScale(scale_factors[i]); std::string out_string = std::string( reinterpret_cast<const char*>(scales.get()), scale_factors.size() * sizeof(float)); @@ -452,8 +452,8 @@ SkBitmap CreateLowQualityResizedBitmap(const SkBitmap& source_bitmap, gfx::Size scaled_size = gfx::ToCeiledSize( gfx::ScaleSize(gfx::Size(source_bitmap.width(), source_bitmap.height()), - ui::GetScaleFactorScale(desired_scale_factor) / - ui::GetScaleFactorScale(source_scale_factor))); + ui::GetImageScale(desired_scale_factor) / + ui::GetImageScale(source_scale_factor))); SkBitmap scaled_bitmap; scaled_bitmap.setConfig(SkBitmap::kARGB_8888_Config, scaled_size.width(), @@ -477,17 +477,15 @@ class ThemeImageSource: public gfx::ImageSkiaSource { } virtual ~ThemeImageSource() {} - virtual gfx::ImageSkiaRep GetImageForScale( - ui::ScaleFactor scale_factor) OVERRIDE { - if (source_.HasRepresentation(scale_factor)) - return source_.GetRepresentation(scale_factor); - const gfx::ImageSkiaRep& rep_100p = - source_.GetRepresentation(ui::SCALE_FACTOR_100P); + virtual gfx::ImageSkiaRep GetImageForScale(float scale) OVERRIDE { + if (source_.HasRepresentation(scale)) + return source_.GetRepresentation(scale); + const gfx::ImageSkiaRep& rep_100p = source_.GetRepresentation(1.0f); SkBitmap scaled_bitmap = CreateLowQualityResizedBitmap( rep_100p.sk_bitmap(), ui::SCALE_FACTOR_100P, - scale_factor); - return gfx::ImageSkiaRep(scaled_bitmap, scale_factor); + ui::GetSupportedScaleFactor(scale)); + return gfx::ImageSkiaRep(scaled_bitmap, scale); } private: @@ -509,13 +507,13 @@ class ThemeImagePngSource : public gfx::ImageSkiaSource { virtual ~ThemeImagePngSource() {} private: - virtual gfx::ImageSkiaRep GetImageForScale( - ui::ScaleFactor scale_factor) OVERRIDE { + virtual gfx::ImageSkiaRep GetImageForScale(float scale) OVERRIDE { + ui::ScaleFactor scale_factor = ui::GetSupportedScaleFactor(scale); // Look up the bitmap for |scale factor| in the bitmap map. If found // return it. BitmapMap::const_iterator exact_bitmap_it = bitmap_map_.find(scale_factor); if (exact_bitmap_it != bitmap_map_.end()) - return gfx::ImageSkiaRep(exact_bitmap_it->second, scale_factor); + return gfx::ImageSkiaRep(exact_bitmap_it->second, scale); // Look up the raw PNG data for |scale_factor| in the png map. If found, // decode it, store the result in the bitmap map and return it. @@ -529,7 +527,7 @@ class ThemeImagePngSource : public gfx::ImageSkiaSource { return gfx::ImageSkiaRep(); } bitmap_map_[scale_factor] = bitmap; - return gfx::ImageSkiaRep(bitmap, scale_factor); + return gfx::ImageSkiaRep(bitmap, scale); } // Find an available PNG for another scale factor. We want to use the @@ -538,8 +536,8 @@ class ThemeImagePngSource : public gfx::ImageSkiaSource { for (PngMap::const_iterator png_it = png_map_.begin(); png_it != png_map_.end(); ++png_it) { if (available_png_it == png_map_.end() || - ui::GetScaleFactorScale(png_it->first) > - ui::GetScaleFactorScale(available_png_it->first)) { + ui::GetImageScale(png_it->first) > + ui::GetImageScale(available_png_it->first)) { available_png_it = png_it; } } @@ -571,7 +569,7 @@ class ThemeImagePngSource : public gfx::ImageSkiaSource { available_scale_factor, scale_factor); bitmap_map_[scale_factor] = scaled_bitmap; - return gfx::ImageSkiaRep(scaled_bitmap, scale_factor); + return gfx::ImageSkiaRep(scaled_bitmap, scale); } PngMap png_map_; @@ -1285,7 +1283,8 @@ bool BrowserThemePack::LoadRawBitmapsTo( if (gfx::PNGCodec::Decode(raw_data->front(), raw_data->size(), &bitmap)) { image_skia.AddRepresentation( - gfx::ImageSkiaRep(bitmap, scale_factor)); + gfx::ImageSkiaRep(bitmap, + ui::GetImageScale(scale_factor))); } else { NOTREACHED() << "Unable to decode theme image resource " << it->first; @@ -1473,7 +1472,9 @@ void BrowserThemePack::RepackImages(const ImageCache& images, NOTREACHED() << "Image file for resource " << it->first << " could not be encoded."; } - int raw_id = GetRawIDByPersistentID(it->first, rep_it->scale_factor()); + int raw_id = GetRawIDByPersistentID( + it->first, + ui::GetSupportedScaleFactor(rep_it->scale())); (*reencoded_images)[raw_id] = base::RefCountedBytes::TakeVector(&bitmap_data); } @@ -1533,7 +1534,7 @@ bool BrowserThemePack::GetScaleFactorFromManifestKey( if (base::StringToInt(key, &percent)) { float scale = static_cast<float>(percent) / 100.0f; for (size_t i = 0; i < scale_factors_.size(); ++i) { - if (fabs(ui::GetScaleFactorScale(scale_factors_[i]) - scale) < 0.001) { + if (fabs(ui::GetImageScale(scale_factors_[i]) - scale) < 0.001) { *scale_factor = scale_factors_[i]; return true; } @@ -1570,8 +1571,8 @@ void BrowserThemePack::GenerateRawImageForAllSupportedScales(int prs_id) { for (size_t i = 0; i < scale_factors_.size(); ++i) { int raw_id = GetRawIDByPersistentID(prs_id, scale_factors_[i]); if ((available_scale_factor == ui::SCALE_FACTOR_NONE || - (ui::GetScaleFactorScale(scale_factors_[i]) > - ui::GetScaleFactorScale(available_scale_factor))) && + (ui::GetImageScale(scale_factors_[i]) > + ui::GetImageScale(available_scale_factor))) && image_memory_.find(raw_id) != image_memory_.end()) { available_scale_factor = scale_factors_[i]; } diff --git a/chrome/browser/themes/browser_theme_pack_unittest.cc b/chrome/browser/themes/browser_theme_pack_unittest.cc index b2fd658..7d41e55 100644 --- a/chrome/browser/themes/browser_theme_pack_unittest.cc +++ b/chrome/browser/themes/browser_theme_pack_unittest.cc @@ -36,8 +36,13 @@ class BrowserThemePackTest : public ::testing::Test { BrowserThemePackTest() : message_loop(), fake_ui_thread(BrowserThread::UI, &message_loop), - fake_file_thread(BrowserThread::FILE, &message_loop), - theme_pack_(new BrowserThemePack) { + fake_file_thread(BrowserThread::FILE, &message_loop) { + std::vector<ui::ScaleFactor> scale_factors; + scale_factors.push_back(ui::SCALE_FACTOR_100P); + scale_factors.push_back(ui::SCALE_FACTOR_200P); + scoped_set_supported_scale_factors_.reset( + new ui::test::ScopedSetSupportedScaleFactors(scale_factors)); + theme_pack_ = new BrowserThemePack(); } // Transformation for link underline colors. @@ -270,8 +275,7 @@ class BrowserThemePackTest : public ::testing::Test { const gfx::ImageSkia* image_skia = image.ToImageSkia(); ASSERT_TRUE(image_skia); // Scale 100%. - const gfx::ImageSkiaRep& rep1 = image_skia->GetRepresentation( - ui::SCALE_FACTOR_100P); + const gfx::ImageSkiaRep& rep1 = image_skia->GetRepresentation(1.0f); ASSERT_FALSE(rep1.is_null()); EXPECT_EQ(80, rep1.sk_bitmap().width()); EXPECT_EQ(80, rep1.sk_bitmap().height()); @@ -283,8 +287,7 @@ class BrowserThemePackTest : public ::testing::Test { EXPECT_EQ(SkColorSetRGB( 0, 241, 237), rep1.sk_bitmap().getColor(32, 32)); rep1.sk_bitmap().unlockPixels(); // Scale 200%. - const gfx::ImageSkiaRep& rep2 = image_skia->GetRepresentation( - ui::SCALE_FACTOR_200P); + const gfx::ImageSkiaRep& rep2 = image_skia->GetRepresentation(2.0f); ASSERT_FALSE(rep2.is_null()); EXPECT_EQ(160, rep2.sk_bitmap().width()); EXPECT_EQ(160, rep2.sk_bitmap().height()); @@ -312,8 +315,7 @@ class BrowserThemePackTest : public ::testing::Test { image_skia = image.ToImageSkia(); ASSERT_TRUE(image_skia); // Scale 100%. - const gfx::ImageSkiaRep& rep3 = image_skia->GetRepresentation( - ui::SCALE_FACTOR_100P); + const gfx::ImageSkiaRep& rep3 = image_skia->GetRepresentation(1.0f); ASSERT_FALSE(rep3.is_null()); EXPECT_EQ(80, rep3.sk_bitmap().width()); EXPECT_EQ(80, rep3.sk_bitmap().height()); @@ -335,8 +337,7 @@ class BrowserThemePackTest : public ::testing::Test { EXPECT_EQ(static_cast<size_t>(9), normal.size()); rep3.sk_bitmap().unlockPixels(); // Scale 200%. - const gfx::ImageSkiaRep& rep4 = image_skia->GetRepresentation( - ui::SCALE_FACTOR_200P); + const gfx::ImageSkiaRep& rep4 = image_skia->GetRepresentation(2.0f); ASSERT_FALSE(rep4.is_null()); EXPECT_EQ(160, rep4.sk_bitmap().width()); EXPECT_EQ(160, rep4.sk_bitmap().height()); @@ -355,6 +356,9 @@ class BrowserThemePackTest : public ::testing::Test { content::TestBrowserThread fake_ui_thread; content::TestBrowserThread fake_file_thread; + typedef scoped_ptr<ui::test::ScopedSetSupportedScaleFactors> + ScopedSetSupportedScaleFactors; + ScopedSetSupportedScaleFactors scoped_set_supported_scale_factors_; scoped_refptr<BrowserThemePack> theme_pack_; }; @@ -584,10 +588,6 @@ TEST_F(BrowserThemePackTest, CanBuildAndReadPack) { } TEST_F(BrowserThemePackTest, HiDpiThemeTest) { - std::vector<ui::ScaleFactor> scale_factors; - scale_factors.push_back(ui::SCALE_FACTOR_100P); - scale_factors.push_back(ui::SCALE_FACTOR_200P); - ui::test::ScopedSetSupportedScaleFactors test_scale_factors(scale_factors); base::ScopedTempDir dir; ASSERT_TRUE(dir.CreateUniqueTempDir()); base::FilePath file = dir.path().AppendASCII("theme_data.pak"); |