Commit 509e5aa9 authored by mazda@chromium.org's avatar mazda@chromium.org

Add a function to layout.h for getting ScaleFactor of the native view.

BUG=125043

Review URL: https://chromiumcodereview.appspot.com/10823067

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149775 0039d316-1c4b-4281-b951-d872f2087c98
parent 7248a981
......@@ -48,6 +48,7 @@
#include "third_party/skia/include/core/SkColor.h"
#import "ui/base/cocoa/fullscreen_window_manager.h"
#import "ui/base/cocoa/underlay_opengl_hosting_window.h"
#include "ui/base/layout.h"
#include "ui/gfx/point.h"
#include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h"
#include "ui/surface/io_surface_support_mac.h"
......@@ -74,10 +75,6 @@ using WebKit::WebGestureEvent;
+ (void)removeMonitor:(id)eventMonitor;
@end
@interface NSScreen (LionAPI)
- (CGFloat)backingScaleFactor;
@end
@interface NSWindow (LionAPI)
- (CGFloat)backingScaleFactor;
@end
......@@ -110,17 +107,7 @@ static inline int ToWebKitModifiers(NSUInteger flags) {
}
static float ScaleFactor(NSView* view) {
if (NSWindow* window = [view window]) {
if ([window respondsToSelector:@selector(backingScaleFactor)])
return [window backingScaleFactor];
return [window userSpaceScaleFactor];
}
if (NSScreen* screen = [NSScreen mainScreen]) {
if ([screen respondsToSelector:@selector(backingScaleFactor)])
return [screen backingScaleFactor];
return [screen userSpaceScaleFactor];
}
return 1;
return ui::GetScaleFactorScale(ui::GetScaleFactorForNativeView(view));
}
// Private methods:
......
......@@ -13,6 +13,11 @@
#include "build/build_config.h"
#include "ui/base/ui_base_switches.h"
#if defined(USE_AURA) && !defined(OS_WIN)
#include "ui/aura/root_window.h"
#include "ui/compositor/compositor.h"
#endif // defined(USE_AURA) && !defined(OS_WIN)
#if defined(USE_AURA) && defined(USE_X11)
#include "ui/base/touch/touch_factory.h"
#endif // defined(USE_AURA) && defined(USE_X11)
......@@ -73,18 +78,6 @@ bool UseTouchOptimizedUI() {
const float kScaleFactorScales[] = {1.0, 2.0};
const size_t kScaleFactorScalesLength = arraysize(kScaleFactorScales);
#if defined(OS_MACOSX)
std::vector<ui::ScaleFactor>& GetSupportedScaleFactorsInternal() {
static std::vector<ui::ScaleFactor>* supported_scale_factors =
new std::vector<ui::ScaleFactor>();
if (supported_scale_factors->empty()) {
supported_scale_factors->push_back(ui::SCALE_FACTOR_100P);
supported_scale_factors->push_back(ui::SCALE_FACTOR_200P);
}
return *supported_scale_factors;
}
#endif // OS_MACOSX
} // namespace
namespace ui {
......@@ -123,25 +116,16 @@ float GetScaleFactorScale(ScaleFactor scale_factor) {
return kScaleFactorScales[scale_factor];
}
#if defined(OS_MACOSX)
std::vector<ScaleFactor> GetSupportedScaleFactors() {
return GetSupportedScaleFactorsInternal();
}
namespace test {
void SetSupportedScaleFactors(
const std::vector<ui::ScaleFactor>& scale_factors) {
std::vector<ui::ScaleFactor>& supported_scale_factors =
GetSupportedScaleFactorsInternal();
supported_scale_factors.clear();
for (size_t i = 0; i < scale_factors.size(); ++i)
supported_scale_factors.push_back(scale_factors[i]);
#if !defined(OS_MACOSX)
ScaleFactor GetScaleFactorForNativeView(gfx::NativeView view) {
#if defined(USE_AURA) && !defined(OS_WIN)
return GetScaleFactorFromScale(
view->GetRootWindow()->compositor()->device_scale_factor());
#else
NOTIMPLEMENTED();
return SCALE_FACTOR_NONE;
#endif
}
} // namespace test
#endif // OS_MACOSX
#endif // !defined(OS_MACOSX)
} // namespace ui
......@@ -9,6 +9,7 @@
#include "build/build_config.h"
#include "ui/base/ui_export.h"
#include "ui/gfx/native_widget_types.h"
namespace ui {
......@@ -49,6 +50,9 @@ UI_EXPORT float GetScaleFactorScale(ScaleFactor scale_factor);
// little as possible.
UI_EXPORT ScaleFactor GetScaleFactorFromScale(float scale);
// Returns the ScaleFactor used by |view|.
UI_EXPORT ScaleFactor GetScaleFactorForNativeView(gfx::NativeView view);
#if defined(OS_MACOSX)
// Returns a vector with the scale factors which are supported by this
......
// 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/layout.h"
#include <Cocoa/Cocoa.h>
@interface NSScreen (LionAPI)
- (CGFloat)backingScaleFactor;
@end
@interface NSWindow (LionAPI)
- (CGFloat)backingScaleFactor;
@end
namespace {
std::vector<ui::ScaleFactor>& GetSupportedScaleFactorsInternal() {
static std::vector<ui::ScaleFactor>* supported_scale_factors =
new std::vector<ui::ScaleFactor>();
if (supported_scale_factors->empty()) {
supported_scale_factors->push_back(ui::SCALE_FACTOR_100P);
supported_scale_factors->push_back(ui::SCALE_FACTOR_200P);
}
return *supported_scale_factors;
}
float GetScaleFactorScaleForNativeView(gfx::NativeView view) {
float scale_factor = 1.0f;
if (NSWindow* window = [view window]) {
if ([window respondsToSelector:@selector(backingScaleFactor)])
return [window backingScaleFactor];
scale_factor = [window userSpaceScaleFactor];
}
if (NSScreen* screen = [NSScreen mainScreen]) {
if ([screen respondsToSelector:@selector(backingScaleFactor)])
return [screen backingScaleFactor];
return [screen userSpaceScaleFactor];
}
return 1.0f;
}
} // namespace
namespace ui {
ScaleFactor GetScaleFactorForNativeView(gfx::NativeView view) {
return GetScaleFactorFromScale(GetScaleFactorScaleForNativeView(view));
}
std::vector<ScaleFactor> GetSupportedScaleFactors() {
return GetSupportedScaleFactorsInternal();
}
namespace test {
void SetSupportedScaleFactors(
const std::vector<ui::ScaleFactor>& scale_factors) {
std::vector<ui::ScaleFactor>& supported_scale_factors =
GetSupportedScaleFactorsInternal();
supported_scale_factors = scale_factors;
}
} // namespace test
} // namespace ui
......@@ -218,6 +218,7 @@
'base/l10n/l10n_util_win.h',
'base/layout.cc',
'base/layout.h',
'base/layout_mac.mm',
'base/models/button_menu_item_model.cc',
'base/models/button_menu_item_model.h',
'base/models/combobox_model.h',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment