| // 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. |
| |
| #ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_WINDOW_BINDING_HANDLER_H_ |
| #define FLUTTER_SHELL_PLATFORM_WINDOWS_WINDOW_BINDING_HANDLER_H_ |
| |
| #include <windows.h> |
| |
| #include <string> |
| #include <variant> |
| |
| #include "flutter/shell/platform/windows/public/flutter_windows.h" |
| #include "flutter/shell/platform/windows/window_binding_handler_delegate.h" |
| |
| namespace flutter { |
| |
| class FlutterWindowsView; |
| |
| // Structure containing physical bounds of a Window |
| struct PhysicalWindowBounds { |
| size_t width; |
| size_t height; |
| }; |
| |
| using WindowsRenderTarget = std::variant< |
| /*winrt::Windows::UI::Composition::SpriteVisual, */ HWND>; |
| |
| // Abstract class for binding Windows platform windows to Flutter views. |
| class WindowBindingHandler { |
| public: |
| virtual ~WindowBindingHandler() = default; |
| |
| // Sets the delegate used to communicate state changes from window to view |
| // such as key presses, mouse position updates etc. |
| virtual void SetView(WindowBindingHandlerDelegate* view) = 0; |
| |
| // Returns a valid WindowsRenderTarget representing the backing |
| // window. |
| virtual WindowsRenderTarget GetRenderTarget() = 0; |
| |
| // Returns the scale factor for the backing window. |
| virtual float GetDpiScale() = 0; |
| |
| // Returns the bounds of the backing window in physical pixels. |
| virtual PhysicalWindowBounds GetPhysicalWindowBounds() = 0; |
| |
| // Sets the cursor that should be used when the mouse is over the Flutter |
| // content. See mouse_cursor.dart for the values and meanings of cursor_name. |
| virtual void UpdateFlutterCursor(const std::string& cursor_name) = 0; |
| }; |
| |
| } // namespace flutter |
| |
| #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_WINDOW_BINDING_HANDLER_H_ |