display.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
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#ifndef UI_GFX_DISPLAY_H_ 6#define UI_GFX_DISPLAY_H_ 7 8#include "base/basictypes.h" 9#include "base/compiler_specific.h" 10#include "ui/base/ui_export.h" 11#include "ui/gfx/rect.h" 12 13namespace gfx { 14 15// Note: The screen and display currently uses pixel coordinate 16// system. For platforms that support DIP (density independent pixel), 17// |bounds()| and |work_area| will return values in DIP coordinate 18// system, not in backing pixels. 19class UI_EXPORT Display { 20 public: 21 // Creates a display with kInvalidDisplayID as default. 22 Display(); 23 explicit Display(int64 id); 24 Display(int64 id, const Rect& bounds); 25 ~Display(); 26 27 // Returns the forced device scale factor, which is given by 28 // "--force-device-scale-factor". 29 static float GetForcedDeviceScaleFactor(); 30 31 // Returns 64-bit persistent ID for the specified manufacturer's ID and 32 // serial#. 33 static int64 GetID(uint16 manufacturer_id, uint32 serial_number); 34 35 // Sets/Gets unique identifier associated with the display. 36 // -1 means invalid display and it doesn't not exit. 37 int64 id() const { return id_; } 38 void set_id(int64 id) { id_ = id; } 39 40 // Gets/Sets the display's bounds in gfx::Screen's coordinates. 41 const Rect& bounds() const { return bounds_; } 42 void set_bounds(const Rect& bounds) { bounds_ = bounds; } 43 44 // Gets/Sets the display's work area in gfx::Screen's coordinates. 45 const Rect& work_area() const { return work_area_; } 46 void set_work_area(const Rect& work_area) { work_area_ = work_area; } 47 48 // Output device's pixel scale factor. This specifies how much the 49 // UI should be scaled when the actual output has more pixels than 50 // standard displays (which is around 100~120dpi.) The potential return 51 // values depend on each platforms. 52 float device_scale_factor() const { return device_scale_factor_; } 53 void set_device_scale_factor(float scale) { device_scale_factor_ = scale; } 54 55 // Utility functions that just return the size of display and 56 // work area. 57 const Size& size() const { return bounds_.size(); } 58 const Size& work_area_size() const { return work_area_.size(); } 59 60 // Returns the work area insets. 61 Insets GetWorkAreaInsets() const; 62 63 // Sets the device scale factor and display bounds in pixel. This 64 // updates the work are using the same insets between old bounds and 65 // work area. 66 void SetScaleAndBounds(float device_scale_factor, 67 const gfx::Rect& bounds_in_pixel); 68 69 // Sets the display's size. This updates the work area using the same insets 70 // between old bounds and work area. 71 void SetSize(const gfx::Size& size_in_pixel); 72 73 // Computes and updates the display's work are using 74 // |work_area_insets| and the bounds. 75 void UpdateWorkAreaFromInsets(const gfx::Insets& work_area_insets); 76 77 // Returns the display's size in pixel coordinates. 78 gfx::Size GetSizeInPixel() const; 79 80#if defined(USE_AURA) 81 // TODO(oshima|skuhne): Eliminate the use of bounds_in_pixel in events_x.cc 82 // and remove bounds_in_pixel from gfx::Display. 83 // Returns the display's bounds in pixel coordinates. 84 const Rect& bounds_in_pixel() const { return bounds_in_pixel_; } 85#endif 86 87 // Returns a string representation of the display; 88 std::string ToString() const; 89 90 // True if the display contains valid display id. 91 bool is_valid() const { return id_ != kInvalidDisplayID; } 92 93 static const int64 kInvalidDisplayID; 94 95 private: 96 int64 id_; 97 Rect bounds_; 98 Rect work_area_; 99#if defined(USE_AURA) 100 Rect bounds_in_pixel_; 101#endif 102 float device_scale_factor_; 103}; 104 105} // namespace gfx 106 107#endif // UI_GFX_DISPLAY_H_ 108