summaryrefslogtreecommitdiffstats
path: root/ui/base/layout.cc
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-02 23:14:18 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-02 23:14:18 +0000
commit57e51dcb12469532de1439fe2d7a23c44d4704c3 (patch)
tree253525b59520be044412db8a8a02fcd5dd13150b /ui/base/layout.cc
parent390ce232aa0167dad2084a7351a2114e97971fec (diff)
downloadchromium_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.cc48
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