diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-02 23:14:18 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-02 23:14:18 +0000 |
commit | 57e51dcb12469532de1439fe2d7a23c44d4704c3 (patch) | |
tree | 253525b59520be044412db8a8a02fcd5dd13150b /ui/base/layout.cc | |
parent | 390ce232aa0167dad2084a7351a2114e97971fec (diff) | |
download | chromium_src-57e51dcb12469532de1439fe2d7a23c44d4704c3.zip chromium_src-57e51dcb12469532de1439fe2d7a23c44d4704c3.tar.gz chromium_src-57e51dcb12469532de1439fe2d7a23c44d4704c3.tar.bz2 |
Use the maximum device scale factor to determine the resolution of thumbnails.
This CL introduces GetMaxScaleFactor in layout.h and uses it for determining the
resolution of thumbnails.
Original CL: http://codereview.chromium.org/11264025/
This CL is slightly modified to sort the supported scale factors.
BUG=155065
TEST=updated LayoutTest
Review URL: https://chromiumcodereview.appspot.com/11367064
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165797 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/base/layout.cc')
-rw-r--r-- | ui/base/layout.cc | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/ui/base/layout.cc b/ui/base/layout.cc index 6cc39d9..6fef499 100644 --- a/ui/base/layout.cc +++ b/ui/base/layout.cc @@ -25,8 +25,18 @@ #include <Windows.h> #endif // defined(OS_WIN) +#if defined(OS_CHROMEOS) +#include "ui/base/resource/resource_bundle.h" +#endif + +namespace ui { + namespace { +bool ScaleFactorComparator(const ScaleFactor& lhs, const ScaleFactor& rhs){ + return GetScaleFactorScale(lhs) < GetScaleFactorScale(rhs); +} + #if defined(OS_WIN) // Helper function that determines whether we want to optimize the UI for touch. bool UseTouchOptimizedUI() { @@ -55,46 +65,47 @@ bool UseTouchOptimizedUI() { #endif // defined(OS_WIN) const float kScaleFactorScales[] = {1.0f, 1.4f, 1.8f, 2.0f}; -COMPILE_ASSERT(ui::NUM_SCALE_FACTORS == arraysize(kScaleFactorScales), +COMPILE_ASSERT(NUM_SCALE_FACTORS == arraysize(kScaleFactorScales), kScaleFactorScales_incorrect_size); const size_t kScaleFactorScalesLength = arraysize(kScaleFactorScales); -std::vector<ui::ScaleFactor>& GetSupportedScaleFactorsInternal() { - static std::vector<ui::ScaleFactor>* supported_scale_factors = - new std::vector<ui::ScaleFactor>(); +std::vector<ScaleFactor>& GetSupportedScaleFactorsInternal() { + static std::vector<ScaleFactor>* supported_scale_factors = + new std::vector<ScaleFactor>(); if (supported_scale_factors->empty()) { #if !defined(OS_IOS) // On platforms other than iOS, 100P is always a supported scale factor. - supported_scale_factors->push_back(ui::SCALE_FACTOR_100P); + supported_scale_factors->push_back(SCALE_FACTOR_100P); #endif #if defined(OS_IOS) gfx::Display display = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay(); if (display.device_scale_factor() > 1.0) { DCHECK_EQ(2.0, display.device_scale_factor()); - supported_scale_factors->push_back(ui::SCALE_FACTOR_200P); + supported_scale_factors->push_back(SCALE_FACTOR_200P); } else { - supported_scale_factors->push_back(ui::SCALE_FACTOR_100P); + supported_scale_factors->push_back(SCALE_FACTOR_100P); } #elif defined(OS_MACOSX) if (base::mac::IsOSLionOrLater()) - supported_scale_factors->push_back(ui::SCALE_FACTOR_200P); + supported_scale_factors->push_back(SCALE_FACTOR_200P); #elif defined(OS_WIN) && defined(ENABLE_HIDPI) if (base::win::IsMetroProcess() && base::win::IsTouchEnabled()) { - supported_scale_factors->push_back(ui::SCALE_FACTOR_140P); - supported_scale_factors->push_back(ui::SCALE_FACTOR_180P); + supported_scale_factors->push_back(SCALE_FACTOR_140P); + supported_scale_factors->push_back(SCALE_FACTOR_180P); } #elif defined(USE_ASH) - supported_scale_factors->push_back(ui::SCALE_FACTOR_200P); + supported_scale_factors->push_back(SCALE_FACTOR_200P); #endif + std::sort(supported_scale_factors->begin(), + supported_scale_factors->end(), + ScaleFactorComparator); } return *supported_scale_factors; } } // namespace -namespace ui { - // Note that this function should be extended to select // LAYOUT_TOUCH when appropriate on more platforms than just // Windows. @@ -130,6 +141,14 @@ float GetScaleFactorScale(ScaleFactor scale_factor) { return kScaleFactorScales[scale_factor]; } +ScaleFactor GetMaxScaleFactor() { +#if defined(OS_CHROMEOS) + return ResourceBundle::GetSharedInstance().max_scale_factor(); +#else + return GetSupportedScaleFactorsInternal().back(); +#endif +} + std::vector<ScaleFactor> GetSupportedScaleFactors() { return GetSupportedScaleFactorsInternal(); } @@ -148,6 +167,9 @@ void SetSupportedScaleFactors( std::vector<ui::ScaleFactor>& supported_scale_factors = GetSupportedScaleFactorsInternal(); supported_scale_factors = scale_factors; + std::sort(supported_scale_factors.begin(), + supported_scale_factors.end(), + ScaleFactorComparator); } } // namespace test |