| // Copyright 2014 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 RUNNER_FLUTTER_WINDOW_H_ |
| #define RUNNER_FLUTTER_WINDOW_H_ |
| |
| #include <flutter/dart_project.h> |
| #include <flutter/flutter_view_controller.h> |
| #include <flutter/method_channel.h> |
| #include <flutter/standard_method_codec.h> |
| #include <flutter/texture_registrar.h> |
| #include <flutter/encodable_value.h> |
| |
| #include <memory> |
| |
| #include "win32_window.h" |
| |
| class MyTexture; |
| |
| // A window that does nothing but host a Flutter view. |
| class FlutterWindow : public Win32Window { |
| public: |
| // Creates a new FlutterWindow hosting a Flutter view running |project|. |
| explicit FlutterWindow(const flutter::DartProject& project); |
| virtual ~FlutterWindow(); |
| |
| protected: |
| // Win32Window: |
| bool OnCreate() override; |
| void OnDestroy() override; |
| LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, |
| LPARAM const lparam) noexcept override; |
| |
| private: |
| // The project to run. |
| flutter::DartProject project_; |
| |
| // The Flutter instance hosted by this window. |
| std::unique_ptr<flutter::FlutterViewController> flutter_controller_; |
| |
| // Channel to receive texture requests from Flutter. |
| std::unique_ptr<flutter::MethodChannel<flutter::EncodableValue>> texture_channel_; |
| |
| // Texture we've created. |
| std::unique_ptr<MyTexture> my_texture_; |
| int64_t texture_id_ = -1; |
| }; |
| |
| #endif // RUNNER_FLUTTER_WINDOW_H_ |