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. Note that this is the "desktop" scale, which 26 // may be differnt than GetModernUIScale(). 27 GFX_EXPORT float GetDPIScale(); 28 29 // Gets the scale factor of the modern (metro) UI display. Returns 1.0 for 30 // unscaled or "not running on win8+" 31 GFX_EXPORT float GetModernUIScale(); 32 33 // Tests to see if the command line flag "--high-dpi-support" is set. 34 GFX_EXPORT bool IsHighDPIEnabled(); 35 36 GFX_EXPORT bool IsInHighDPIMode(); 37 38 GFX_EXPORT void EnableHighDPISupport(); 39 40 // TODO(kevers|girard): Move above methods into win namespace. 41 42 namespace win { 43 44 GFX_EXPORT float GetDeviceScaleFactor(); 45 46 GFX_EXPORT Point ScreenToDIPPoint(const Point& pixel_point); 47 48 GFX_EXPORT Point DIPToScreenPoint(const Point& dip_point); 49 50 GFX_EXPORT Rect ScreenToDIPRect(const Rect& pixel_bounds); 51 52 GFX_EXPORT Rect DIPToScreenRect(const Rect& dip_bounds); 53 54 GFX_EXPORT Size ScreenToDIPSize(const Size& size_in_pixels); 55 56 GFX_EXPORT Size DIPToScreenSize(const Size& dip_size); 57 58 // Win32's GetSystemMetrics uses pixel measures. This function calls 59 // GetSystemMetrics for the given |metric|, then converts the result to DIP. 60 GFX_EXPORT int GetSystemMetricsInDIP(int metric); 61 62 // Sometimes the OS secretly scales apps that are not DPIAware. This is not 63 // visible through standard OS calls like GetWindowPos(), or through 64 // GetDPIScale(). 65 // Returns the scale factor of the display, where 96 DPI is 1.0. 66 // (Avoid this function... use GetDPIScale() instead.) 67 // TODO(girard): Remove this once DPIAware is enabled - http://crbug.com/149881 68 GFX_EXPORT double GetUndocumentedDPIScale(); 69 70 // Win7 and Win8 send touch events scaled according to the current DPI 71 // scaling. Win8.1 corrects this, and sends touch events in DPI units. 72 // This function returns the appropriate scaling factor for touch events. 73 GFX_EXPORT double GetUndocumentedDPITouchScale(); 74 75 } // namespace win 76 } // namespace gfx 77 78 #endif // UI_GFX_DPI_WIN_H_ 79