| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "flutter/shell/platform/windows/windows_proc_table.h" | |
| #include <WinUser.h> | |
| #include <dwmapi.h> | |
| namespace flutter { | |
| WindowsProcTable::WindowsProcTable() { | |
| user32_ = fml::NativeLibrary::Create("user32.dll"); | |
| get_pointer_type_ = | |
| user32_->ResolveFunction<GetPointerType_*>("GetPointerType"); | |
| } | |
| WindowsProcTable::~WindowsProcTable() { | |
| user32_ = nullptr; | |
| } | |
| BOOL WindowsProcTable::GetPointerType(UINT32 pointer_id, | |
| POINTER_INPUT_TYPE* pointer_type) const { | |
| if (!get_pointer_type_.has_value()) { | |
| return FALSE; | |
| } | |
| return get_pointer_type_.value()(pointer_id, pointer_type); | |
| } | |
| LRESULT WindowsProcTable::GetThreadPreferredUILanguages(DWORD flags, | |
| PULONG count, | |
| PZZWSTR languages, | |
| PULONG length) const { | |
| return ::GetThreadPreferredUILanguages(flags, count, languages, length); | |
| } | |
| bool WindowsProcTable::GetHighContrastEnabled() const { | |
| HIGHCONTRAST high_contrast = {.cbSize = sizeof(HIGHCONTRAST)}; | |
| if (!::SystemParametersInfoW(SPI_GETHIGHCONTRAST, sizeof(HIGHCONTRAST), | |
| &high_contrast, 0)) { | |
| return false; | |
| } | |
| return high_contrast.dwFlags & HCF_HIGHCONTRASTON; | |
| } | |
| bool WindowsProcTable::DwmIsCompositionEnabled() const { | |
| BOOL composition_enabled; | |
| if (SUCCEEDED(::DwmIsCompositionEnabled(&composition_enabled))) { | |
| return composition_enabled; | |
| } | |
| return true; | |
| } | |
| HRESULT WindowsProcTable::DwmFlush() const { | |
| return ::DwmFlush(); | |
| } | |
| } // namespace flutter |