tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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_