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_DPI_WIN_H_ 6 #define UI_GFX_DPI_WIN_H_ 7 8 #include "ui/gfx/gfx_export.h" 9 #include "ui/gfx/point.h" 10 #include "ui/gfx/rect.h" 11 #include "ui/gfx/size.h" 12 13 namespace gfx { 14 15 // Initialization of the scale factor that should be applied for rendering 16 // in this process. Must be called before attempts to call any of the getter 17 // methods below in this file, e.g. in the early toolkit/resource bundle setup. 18 // This can be called multiple times during various tests, but subsequent calls 19 // have no effect. 20 GFX_EXPORT void InitDeviceScaleFactor(float scale); 21 22 GFX_EXPORT Size GetDPI(); 23 24 // Gets the scale factor of the display. For example, if the display DPI is 25 // 96 then the scale factor is 1.0. 26 GFX_EXPORT float GetDPIScale(); 27 28 // Tests to see if the command line flag "--high-dpi-support" is set. 29 GFX_EXPORT bool IsHighDPIEnabled(); 30 31 GFX_EXPORT bool IsInHighDPIMode(); 32 33 GFX_EXPORT void EnableHighDPISupport(); 34 35 GFX_EXPORT void ForceHighDPISupportForTesting(float scale); 36 37 // TODO(kevers|girard): Move above methods into win namespace. 38 39 namespace win { 40 41 GFX_EXPORT float GetDeviceScaleFactor(); 42 43 GFX_EXPORT Point ScreenToDIPPoint(const Point& pixel_point); 44 45 GFX_EXPORT Point DIPToScreenPoint(const Point& dip_point); 46 47 // WARNING: there is no right way to scale sizes and rects. The implementation 48 // of these strives to maintain a constant size by scaling the size independent 49 // of the origin. An alternative is to get the enclosing rect, which is the 50 // right way for some situations. Understand which you need before blindly 51 // assuming this is the right way. 52 GFX_EXPORT Rect ScreenToDIPRect(const Rect& pixel_bounds); 53 GFX_EXPORT Rect DIPToScreenRect(const Rect& dip_bounds); 54 GFX_EXPORT Size ScreenToDIPSize(const Size& size_in_pixels); 55 GFX_EXPORT Size DIPToScreenSize(const Size& dip_size); 56 57 // Win32's GetSystemMetrics uses pixel measures. This function calls 58 // GetSystemMetrics for the given |metric|, then converts the result to DIP. 59 GFX_EXPORT int GetSystemMetricsInDIP(int metric); 60 61 // Returns true if the global device scale factor has been explicitly set for 62 // the process. 63 GFX_EXPORT bool IsDeviceScaleFactorSet(); 64 65 GFX_EXPORT extern const wchar_t kRegistryProfilePath[]; 66 GFX_EXPORT extern const wchar_t kHighDPISupportW[]; 67 68 } // namespace win 69 } // namespace gfx 70 71 #endif // UI_GFX_DPI_WIN_H_ 72