| Index: ui/display/display.h
|
| diff --git a/ui/display/display.h b/ui/display/display.h
|
| index 00c21bc5b5666bcb6b00e13e86dd508d4e247f53..72f8b8cb5a73dcf721bfe7fd0f6b37f47cf7d931 100644
|
| --- a/ui/display/display.h
|
| +++ b/ui/display/display.h
|
| @@ -1,17 +1,169 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// 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_DISPLAY_DISPLAY_H_
|
| #define UI_DISPLAY_DISPLAY_H_
|
|
|
| -#include "ui/gfx/display.h"
|
| +#include <stdint.h>
|
| +
|
| +#include "base/compiler_specific.h"
|
| +#include "ui/display/display_export.h"
|
| +#include "ui/gfx/geometry/rect.h"
|
|
|
| namespace display {
|
|
|
| -// TODO(oshima): move the gfx::Display to display::Display.
|
| -using Display = gfx::Display;
|
| +// This class typically, but does not always, correspond to a physical display
|
| +// connected to the system. A fake Display may exist on a headless system, or a
|
| +// Display may correspond to a remote, virtual display.
|
| +//
|
| +// 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 DISPLAY_EXPORT Display final {
|
| + public:
|
| + // Screen Rotation in clock-wise degrees.
|
| + // This enum corresponds to DisplayRotationDefaultProto::Rotation in
|
| + // chrome/browser/chromeos/policy/proto/chrome_device_policy.proto.
|
| + enum Rotation {
|
| + ROTATE_0 = 0,
|
| + ROTATE_90,
|
| + ROTATE_180,
|
| + ROTATE_270,
|
| + };
|
| +
|
| + // The display rotation can have multiple causes for change. A user can set a
|
| + // preference. On devices with accelerometers, they can change the rotation.
|
| + // RotationSource allows for the tracking of a Rotation per source of the
|
| + // change. ROTATION_SOURCE_ACTIVE is the current rotation of the display.
|
| + // Rotation changes not due to an accelerometer, nor the user, are to use this
|
| + // source directly. ROTATION_SOURCE_UNKNOWN is when no rotation source has
|
| + // been provided.
|
| + enum RotationSource {
|
| + ROTATION_SOURCE_ACCELEROMETER = 0,
|
| + ROTATION_SOURCE_ACTIVE,
|
| + ROTATION_SOURCE_USER,
|
| + ROTATION_SOURCE_UNKNOWN,
|
| + };
|
| +
|
| + // Touch support for the display.
|
| + enum TouchSupport {
|
| + TOUCH_SUPPORT_UNKNOWN,
|
| + TOUCH_SUPPORT_AVAILABLE,
|
| + TOUCH_SUPPORT_UNAVAILABLE,
|
| + };
|
| +
|
| + enum : int64_t { kInvalidDisplayID = -1 };
|
| +
|
| + // Creates a display with kInvalidDisplayID as default.
|
| + Display();
|
| + explicit Display(int64_t id);
|
| + Display(int64_t id, const gfx::Rect& bounds);
|
| + Display(const Display& other);
|
| + ~Display();
|
| +
|
| + // Returns the forced device scale factor, which is given by
|
| + // "--force-device-scale-factor".
|
| + static float GetForcedDeviceScaleFactor();
|
| +
|
| + // Indicates if a device scale factor is being explicitly enforced from the
|
| + // command line via "--force-device-scale-factor".
|
| + static bool HasForceDeviceScaleFactor();
|
| +
|
| + // Resets the caches used to determine if a device scale factor is being
|
| + // forced from the command line via "--force-device-scale-factor", and thus
|
| + // ensures that the command line is reevaluated.
|
| + static void ResetForceDeviceScaleFactorForTesting();
|
| +
|
| + // Sets/Gets unique identifier associated with the display.
|
| + // -1 means invalid display and it doesn't not exit.
|
| + int64_t id() const { return id_; }
|
| + void set_id(int64_t id) { id_ = id; }
|
| +
|
| + // Gets/Sets the display's bounds in display::Screen's coordinates.
|
| + const gfx::Rect& bounds() const { return bounds_; }
|
| + void set_bounds(const gfx::Rect& bounds) { bounds_ = bounds; }
|
| +
|
| + // Gets/Sets the display's work area in display::Screen's coordinates.
|
| + const gfx::Rect& work_area() const { return work_area_; }
|
| + void set_work_area(const gfx::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; }
|
| +
|
| + Rotation rotation() const { return rotation_; }
|
| + void set_rotation(Rotation rotation) { rotation_ = rotation; }
|
| + int RotationAsDegree() const;
|
| + void SetRotationAsDegree(int rotation);
|
| +
|
| + TouchSupport touch_support() const { return touch_support_; }
|
| + void set_touch_support(TouchSupport support) { touch_support_ = support; }
|
| +
|
| + // Utility functions that just return the size of display and
|
| + // work area.
|
| + const gfx::Size& size() const { return bounds_.size(); }
|
| + const gfx::Size& work_area_size() const { return work_area_.size(); }
|
| +
|
| + // Returns the work area insets.
|
| + gfx::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;
|
| +
|
| + // Returns a string representation of the display;
|
| + std::string ToString() const;
|
| +
|
| + // True if the display contains valid display id.
|
| + bool is_valid() const { return id_ != kInvalidDisplayID; }
|
| +
|
| + // True if the display corresponds to internal panel.
|
| + bool IsInternal() const;
|
| +
|
| + // Gets/Sets an id of display corresponding to internal panel.
|
| + static int64_t InternalDisplayId();
|
| + static void SetInternalDisplayId(int64_t internal_display_id);
|
| +
|
| + // Test if the |id| is for the internal display if any.
|
| + static bool IsInternalDisplayId(int64_t id);
|
| +
|
| + // True if there is an internal display.
|
| + static bool HasInternalDisplay();
|
| +
|
| + // Maximum cursor size in native pixels.
|
| + const gfx::Size& maximum_cursor_size() const { return maximum_cursor_size_; }
|
| + void set_maximum_cursor_size(const gfx::Size& size) {
|
| + maximum_cursor_size_ = size;
|
| + }
|
| +
|
| + private:
|
| + int64_t id_;
|
| + gfx::Rect bounds_;
|
| + gfx::Rect work_area_;
|
| + float device_scale_factor_;
|
| + Rotation rotation_;
|
| + TouchSupport touch_support_;
|
| + gfx::Size maximum_cursor_size_;
|
| +};
|
|
|
| -} // display
|
| +} // namespace display
|
|
|
| #endif // UI_DISPLAY_DISPLAY_H_
|
|
|