Home | History | Annotate | Download | only in gfx
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "ui/gfx/screen.h"
      6 
      7 #include "base/logging.h"
      8 #include "ui/gfx/android/device_display_info.h"
      9 #include "ui/gfx/display.h"
     10 #include "ui/gfx/size_conversions.h"
     11 
     12 namespace gfx {
     13 
     14 class ScreenAndroid : public Screen {
     15  public:
     16   ScreenAndroid() {}
     17 
     18   virtual bool IsDIPEnabled() OVERRIDE { return true; }
     19 
     20   virtual gfx::Point GetCursorScreenPoint() OVERRIDE { return gfx::Point(); }
     21 
     22   virtual gfx::NativeWindow GetWindowUnderCursor() OVERRIDE {
     23     NOTIMPLEMENTED();
     24     return NULL;
     25   }
     26 
     27   virtual gfx::NativeWindow GetWindowAtScreenPoint(const gfx::Point& point)
     28       OVERRIDE {
     29     NOTIMPLEMENTED();
     30     return NULL;
     31   }
     32 
     33   virtual gfx::Display GetPrimaryDisplay() const OVERRIDE {
     34     gfx::DeviceDisplayInfo device_info;
     35     const float device_scale_factor = device_info.GetDIPScale();
     36     const gfx::Rect bounds_in_pixels =
     37         gfx::Rect(
     38             device_info.GetDisplayWidth(),
     39             device_info.GetDisplayHeight());
     40     const gfx::Rect bounds_in_dip =
     41         gfx::Rect(gfx::ToCeiledSize(gfx::ScaleSize(
     42             bounds_in_pixels.size(), 1.0f / device_scale_factor)));
     43     gfx::Display display(0, bounds_in_dip);
     44     if (!gfx::Display::HasForceDeviceScaleFactor())
     45       display.set_device_scale_factor(device_scale_factor);
     46     return display;
     47   }
     48 
     49   virtual gfx::Display GetDisplayNearestWindow(
     50       gfx::NativeView view) const OVERRIDE {
     51     return GetPrimaryDisplay();
     52   }
     53 
     54   virtual gfx::Display GetDisplayNearestPoint(
     55       const gfx::Point& point) const OVERRIDE {
     56     return GetPrimaryDisplay();
     57   }
     58 
     59   virtual int GetNumDisplays() const OVERRIDE { return 1; }
     60 
     61   virtual std::vector<gfx::Display> GetAllDisplays() const OVERRIDE {
     62     return std::vector<gfx::Display>(1, GetPrimaryDisplay());
     63   }
     64 
     65   virtual gfx::Display GetDisplayMatching(
     66       const gfx::Rect& match_rect) const OVERRIDE {
     67     return GetPrimaryDisplay();
     68   }
     69 
     70   virtual void AddObserver(DisplayObserver* observer) OVERRIDE {
     71     // no display change on Android.
     72   }
     73 
     74   virtual void RemoveObserver(DisplayObserver* observer) OVERRIDE {
     75     // no display change on Android.
     76   }
     77 
     78  private:
     79   DISALLOW_COPY_AND_ASSIGN(ScreenAndroid);
     80 };
     81 
     82 Screen* CreateNativeScreen() {
     83   return new ScreenAndroid;
     84 }
     85 
     86 }  // namespace gfx
     87