| Index: ui/gfx/screen_win.h
|
| diff --git a/ui/gfx/screen_win.h b/ui/gfx/screen_win.h
|
| index 2849e6623de312f412e32cc5a544a69080a9717b..152899978eaf0aa8c1013bc3fb3f684679d83bb5 100644
|
| --- a/ui/gfx/screen_win.h
|
| +++ b/ui/gfx/screen_win.h
|
| @@ -21,6 +21,7 @@ namespace gfx {
|
| class Display;
|
| class Point;
|
| class Rect;
|
| +class Size;
|
|
|
| namespace win {
|
|
|
| @@ -34,6 +35,63 @@ class GFX_EXPORT ScreenWin : public Screen {
|
| ScreenWin();
|
| ~ScreenWin() override;
|
|
|
| + // Converts a screen pixel point to a DIP point.
|
| + // The DPI scale is performed relative to the display containing the screen
|
| + // pixel point maintaining a constant origin on both Screen and DIP (same as
|
| + // Windows).
|
| + static Point ScreenToDIPPoint(const Point& pixel_point);
|
| +
|
| + // Converts a DIP point to a screen pixel point.
|
| + // The DPI scale is performed relative to the display containing the DIP point
|
| + // maintaining a constant origin on both Screen and DIP (same as Windows).
|
| + static Point DIPToScreenPoint(const Point& dip_point);
|
| +
|
| + // Converts a client pixel point relative to |hwnd| to a DIP point.
|
| + // The DPI scale is performed relative to |hwnd| using an origin of (0, 0).
|
| + static Point ClientToDIPPoint(HWND hwnd, const Point& client_point);
|
| +
|
| + // Converts a client DIP point relative to |hwnd| to a client pixel point.
|
| + // The DPI scale is performed relative to |hwnd| using an origin of (0, 0).
|
| + static Point DIPToClientPoint(HWND hwnd, const Point& dip_point);
|
| +
|
| + // WARNING: There is no right way to scale sizes and rects.
|
| + // Sometimes you may need the enclosing rect (which favors transformations
|
| + // that stretch the bounds towards integral values) or the enclosed rect
|
| + // (transformations that shrink the bounds towards integral values).
|
| + // This implementation favors the enclosing rect.
|
| + //
|
| + // Understand which you need before blindly assuming this is the right way.
|
| +
|
| + // Converts a screen rect to a DIP rect.
|
| + // The DPI scale is performed relative to the display nearest to |hwnd|
|
| + // maintaining a constant origin on both Screen and DIP (same as Windows).
|
| + // If |hwnd| is null, scaling will be performed to the display nearest to
|
| + // |pixel_bounds|.
|
| + static Rect ScreenToDIPRect(HWND hwnd, const Rect& pixel_bounds);
|
| +
|
| + // Converts a DIP rect to a screen rect.
|
| + // The DPI scale is performed relative to the display nearest to |hwnd|
|
| + // maintaining a constant origin on both Screen and DIP (same as Windows).
|
| + // If |hwnd| is null, scaling will be performed to the display nearest to
|
| + // |dip_bounds|.
|
| + static Rect DIPToScreenRect(HWND hwnd, const Rect& dip_bounds);
|
| +
|
| + // Converts a client rect to a DIP rect.
|
| + // The DPI scale is performed relative to |hwnd| using an origin of (0, 0).
|
| + static Rect ClientToDIPRect(HWND hwnd, const Rect& pixel_bounds);
|
| +
|
| + // Converts a DIP rect to a client rect.
|
| + // The DPI scale is performed relative to |hwnd| using an origin of (0, 0).
|
| + static Rect DIPToClientRect(HWND hwnd, const Rect& dip_bounds);
|
| +
|
| + // Converts a screen size to a DIP size.
|
| + // The DPI scale is performed relative to the display nearest to |hwnd|.
|
| + static Size ScreenToDIPSize(HWND hwnd, const Size& size_in_pixels);
|
| +
|
| + // Converts a DIP size to a screen size.
|
| + // The DPI scale is performed relative to the display nearest to |hwnd|.
|
| + static Size DIPToScreenSize(HWND hwnd, const Size& dip_size);
|
| +
|
| // Returns the HWND associated with the NativeView.
|
| virtual HWND GetHWNDFromNativeView(NativeView window) const;
|
|
|
| @@ -53,6 +111,10 @@ class GFX_EXPORT ScreenWin : public Screen {
|
| gfx::Display GetPrimaryDisplay() const override;
|
| void AddObserver(DisplayObserver* observer) override;
|
| void RemoveObserver(DisplayObserver* observer) override;
|
| + gfx::Rect ScreenToDIPRectInWindow(
|
| + NativeView view, const gfx::Rect& screen_rect) const override;
|
| + gfx::Rect DIPToScreenRectInWindow(
|
| + NativeView view, const gfx::Rect& dip_rect) const override;
|
|
|
| void UpdateFromDisplayInfos(
|
| const std::vector<gfx::win::DisplayInfo>& display_infos);
|
| @@ -81,12 +143,28 @@ class GFX_EXPORT ScreenWin : public Screen {
|
| gfx::win::ScreenWinDisplay GetScreenWinDisplayNearestScreenPoint(
|
| const Point& screen_point) const;
|
|
|
| + // Returns the ScreenWinDisplay closest to or enclosing |dip_point|.
|
| + gfx::win::ScreenWinDisplay GetScreenWinDisplayNearestDIPPoint(
|
| + const Point& dip_point) const;
|
| +
|
| + // Returns the ScreenWinDisplay closest to or enclosing |dip_rect|.
|
| + gfx::win::ScreenWinDisplay ScreenWin::GetScreenWinDisplayNearestDIPRect(
|
| + const Rect& dip_rect) const;
|
| +
|
| // Returns the ScreenWinDisplay corresponding to the primary monitor.
|
| gfx::win::ScreenWinDisplay GetPrimaryScreenWinDisplay() const;
|
|
|
| gfx::win::ScreenWinDisplay GetScreenWinDisplay(
|
| const MONITORINFOEX& monitor_info) const;
|
|
|
| + static float GetScaleFactorForHWND(HWND hwnd);
|
| +
|
| + // Returns the result of calling |getter| with |value| on the global
|
| + // ScreenWin if it exists, otherwise return the default ScreenWinDisplay.
|
| + template <typename Getter, typename GetterType>
|
| + static gfx::win::ScreenWinDisplay GetScreenWinDisplayVia(Getter getter,
|
| + GetterType value);
|
| +
|
| // Helper implementing the DisplayObserver handling.
|
| gfx::DisplayChangeNotifier change_notifier_;
|
|
|
|
|