1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
// 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/gfx/screen.h"
#import <UIKit/UIKit.h>
#include "base/logging.h"
#include "ui/gfx/display.h"
namespace {
class ScreenIos : public gfx::Screen {
virtual gfx::Point GetCursorScreenPoint() override {
NOTIMPLEMENTED();
return gfx::Point(0, 0);
}
virtual gfx::NativeWindow GetWindowUnderCursor() override {
NOTIMPLEMENTED();
return gfx::NativeWindow();
}
virtual gfx::NativeWindow GetWindowAtScreenPoint(const gfx::Point& point)
override {
NOTIMPLEMENTED();
return gfx::NativeWindow();
}
virtual int GetNumDisplays() const override {
#if TARGET_IPHONE_SIMULATOR
// UIScreen does not reliably return correct results on the simulator.
return 1;
#else
return [[UIScreen screens] count];
#endif
}
virtual std::vector<gfx::Display> GetAllDisplays() const override {
NOTIMPLEMENTED();
return std::vector<gfx::Display>(1, GetPrimaryDisplay());
}
// Returns the display nearest the specified window.
virtual gfx::Display GetDisplayNearestWindow(
gfx::NativeView view) const override {
NOTIMPLEMENTED();
return gfx::Display();
}
// Returns the the display nearest the specified point.
virtual gfx::Display GetDisplayNearestPoint(
const gfx::Point& point) const override {
NOTIMPLEMENTED();
return gfx::Display();
}
// Returns the display that most closely intersects the provided bounds.
virtual gfx::Display GetDisplayMatching(
const gfx::Rect& match_rect) const override {
NOTIMPLEMENTED();
return gfx::Display();
}
// Returns the primary display.
virtual gfx::Display GetPrimaryDisplay() const override {
UIScreen* mainScreen = [UIScreen mainScreen];
CHECK(mainScreen);
gfx::Display display(0, gfx::Rect(mainScreen.bounds));
display.set_device_scale_factor([mainScreen scale]);
return display;
}
virtual void AddObserver(gfx::DisplayObserver* observer) override {
// no display change on iOS.
}
virtual void RemoveObserver(gfx::DisplayObserver* observer) override {
// no display change on iOS.
}
};
} // namespace
namespace gfx {
Screen* CreateNativeScreen() {
return new ScreenIos;
}
} // namespace gfx
|