WindowsDpiInitialization.h (2157B)
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef MOZILLA_MOZGLUE_MISC_WINDOWSDPIINITIALIZATION_H_ 7 #define MOZILLA_MOZGLUE_MISC_WINDOWSDPIINITIALIZATION_H_ 8 #include "mozilla/Types.h" 9 #include <cstdint> 10 11 namespace mozilla { 12 13 // The result codes that may be returned from WindowsDpiInitialization() 14 enum class WindowsDpiInitializationResult : uint32_t { 15 Success, 16 FindSetProcessDpiAwarenessContextFailed, 17 SetProcessDpiAwarenessContextFailed, 18 FindSetProcessDpiAwarenessFailed, 19 SetProcessDpiAwarenessFailed, 20 }; 21 22 // Get a string representation of any WindowsDpiInitializationResult value 23 inline const char* WindowsDpiInitializationResultString( 24 WindowsDpiInitializationResult result) { 25 switch (result) { 26 case WindowsDpiInitializationResult::Success: 27 return "Success"; 28 case WindowsDpiInitializationResult:: 29 FindSetProcessDpiAwarenessContextFailed: 30 return "Failed to find SetProcessDpiAwarenessContext"; 31 case WindowsDpiInitializationResult::SetProcessDpiAwarenessContextFailed: 32 return "SetProcessDpiAwarenessContext failed"; 33 case WindowsDpiInitializationResult::FindSetProcessDpiAwarenessFailed: 34 return "Failed to find SetProcessDpiAwareness"; 35 case WindowsDpiInitializationResult::SetProcessDpiAwarenessFailed: 36 return "SetProcessDpiAwareness failed"; 37 default: 38 return "Unknown result"; 39 } 40 } 41 42 // Initialize DPI awareness to the best available for the current OS 43 // According to MSDN, this will be: 44 // Per-Monitor V2 for Windows 10 Creators Update (1703) and later 45 // Per-Monitor V1 for Windows 8.1 and later 46 // System DPI for Vista and later (we don't support anything older) 47 // https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows 48 MFBT_API WindowsDpiInitializationResult WindowsDpiInitialization(); 49 50 } // namespace mozilla 51 52 #endif // MOZILLA_MOZGLUE_MISC_WINDOWSDPIINITIALIZATION_H_