// 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 #include #include #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_