diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-12 14:43:01 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-12 14:43:01 +0000 |
commit | 7da9c4cf0e9f949dd1f2a3322118344c5d7369c7 (patch) | |
tree | ec91a8b4f8a211bc557a9bb28b61c17f90749d02 /ui/gfx/display.h | |
parent | c5ba8a93317a8363bcaf4b17cab96a296782803c (diff) | |
download | chromium_src-7da9c4cf0e9f949dd1f2a3322118344c5d7369c7.zip chromium_src-7da9c4cf0e9f949dd1f2a3322118344c5d7369c7.tar.gz chromium_src-7da9c4cf0e9f949dd1f2a3322118344c5d7369c7.tar.bz2 |
Rename gfx::Monitor to gfx::Display
BUG=130828
R=oshima@chromium.org
TBR=sky@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10540091
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141659 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/gfx/display.h')
-rw-r--r-- | ui/gfx/display.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/ui/gfx/display.h b/ui/gfx/display.h new file mode 100644 index 0000000..13aaa8f --- /dev/null +++ b/ui/gfx/display.h @@ -0,0 +1,100 @@ +// 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. + +#ifndef UI_GFX_DISPLAY_H_ +#define UI_GFX_DISPLAY_H_ +#pragma once + +#include "base/basictypes.h" +#include "base/compiler_specific.h" +#include "ui/base/ui_export.h" +#include "ui/gfx/rect.h" + +namespace gfx { + +// Note: The screen and display currently uses pixel coordinate +// system. For platforms that support DIP (density independent pixel), +// |bounds()| and |work_area| will return values in DIP coordinate +// system, not in backing pixels. +class UI_EXPORT Display { + public: + // Returns the default value for the device scale factor, which is + // given by "--default-device-scale-factor". + static float GetDefaultDeviceScaleFactor(); + + // Creates a display with invalid id(-1) as default. + Display(); + explicit Display(int id); + Display(int id, const Rect& bounds); + ~Display(); + + // Sets/Gets unique identifier associated with the display. + int id() const { return id_; } + void set_id(int id) { id_ = id; } + + // Gets/Sets the display's bounds in gfx::Screen's coordinates. + // -1 means invalid display and it doesn't not exit. + const Rect& bounds() const { return bounds_; } + void set_bounds(const Rect& bounds) { bounds_ = bounds; } + + // Gets/Sets the display's work area in gfx::Screen's coordinates. + const Rect& work_area() const { return work_area_; } + void set_work_area(const Rect& work_area) { work_area_ = work_area; } + + // Output device's pixel scale factor. This specifies how much the + // UI should be scaled when the actual output has more pixels than + // standard displays (which is around 100~120dpi.) The potential return + // values depend on each platforms. + float device_scale_factor() const { return device_scale_factor_; } + void set_device_scale_factor(float scale) { device_scale_factor_ = scale; } + + // Utility functions that just return the size of display and + // work area. + const Size& size() const { return bounds_.size(); } + const Size& work_area_size() const { return work_area_.size(); } + + // Returns the work area insets. + Insets GetWorkAreaInsets() const; + + // Sets the device scale factor and display bounds in pixel. This + // updates the work are using the same insets between old bounds and + // work area. + void SetScaleAndBounds(float device_scale_factor, + const gfx::Rect& bounds_in_pixel); + + // Sets the display's size. This updates the work area using the same insets + // between old bounds and work area. + void SetSize(const gfx::Size& size_in_pixel); + + // Computes and updates the display's work are using + // |work_area_insets| and the bounds. + void UpdateWorkAreaFromInsets(const gfx::Insets& work_area_insets); + + // Returns the display's size in pixel coordinates. + gfx::Size GetSizeInPixel() const; + +#if defined(USE_AURA) + // TODO(oshima): |bounds()| on ash is not screen's coordinate and + // this is an workaround for this. This will be removed when ash + // has true multi display support. crbug.com/119268. + // Returns the display's bounds in pixel coordinates. + const Rect& bounds_in_pixel() const { return bounds_in_pixel_; } +#endif + + // Returns a string representation of the display; + std::string ToString() const; + + private: + int id_; + Rect bounds_; + Rect work_area_; +#if defined(USE_AURA) + Rect bounds_in_pixel_; +#endif + float device_scale_factor_; +}; + +} // namespace gfx + +#endif // UI_GFX_DISPLAY_H_ |