| Flutter Windows Embedder |

flutter_view_controller.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "include/flutter/flutter_view_controller.h"
6
7 #include <algorithm>
8 #include <iostream>
9
10 namespace flutter {
11
12 FlutterViewController::FlutterViewController(int width,
13 int height,
14 const DartProject& project) {
15 engine_ = std::make_shared<FlutterEngine>(project);
16 controller_ = FlutterDesktopViewControllerCreate(width, height,
17 engine_->RelinquishEngine());
18 if (!controller_) {
19 std::cerr << "Failed to create view controller." << std::endl;
20 return;
21 }
22 view_ = std::make_unique<FlutterView>(
23 FlutterDesktopViewControllerGetView(controller_));
24 }
25
26 FlutterViewController::~FlutterViewController() {
27 if (controller_) {
28 FlutterDesktopViewControllerDestroy(controller_);
29 }
30 }
31
32 FlutterViewId FlutterViewController::view_id() const {
33 auto view_id = FlutterDesktopViewControllerGetViewId(controller_);
34
35 return static_cast<FlutterViewId>(view_id);
36 }
37
38 void FlutterViewController::ForceRedraw() {
39 FlutterDesktopViewControllerForceRedraw(controller_);
40 }
41
42 std::optional<LRESULT> FlutterViewController::HandleTopLevelWindowProc(
43 HWND hwnd,
44 UINT message,
45 WPARAM wparam,
46 LPARAM lparam) {
47 LRESULT result;
48 bool handled = FlutterDesktopViewControllerHandleTopLevelWindowProc(
49 controller_, hwnd, message, wparam, lparam, &result);
50 return handled ? result : std::optional<LRESULT>(std::nullopt);
51 }
52
53 } // namespace flutter
flutter::DartProject
Definition: dart_project.h:35
flutter::FlutterViewController::HandleTopLevelWindowProc
std::optional< LRESULT > HandleTopLevelWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
Definition: flutter_view_controller.cc:42
flutter::FlutterViewController::ForceRedraw
void ForceRedraw()
Definition: flutter_view_controller.cc:38
flutter::FlutterViewController::FlutterViewController
FlutterViewController(int width, int height, const DartProject &project)
Definition: flutter_view_controller.cc:12
flutter::FlutterViewController::view_id
FlutterViewId view_id() const
Definition: flutter_view_controller.cc:32
flutter::FlutterViewController::~FlutterViewController
virtual ~FlutterViewController()
Definition: flutter_view_controller.cc:26
flutter_view_controller.h
FlutterDesktopViewControllerForceRedraw
void FlutterDesktopViewControllerForceRedraw(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:159
FlutterDesktopViewControllerCreate
FlutterDesktopViewControllerRef FlutterDesktopViewControllerCreate(int width, int height, FlutterDesktopEngineRef engine)
Definition: flutter_windows.cc:121
FlutterDesktopViewControllerHandleTopLevelWindowProc
bool FlutterDesktopViewControllerHandleTopLevelWindowProc(FlutterDesktopViewControllerRef ref, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, LRESULT *result)
Definition: flutter_windows.cc:165
FlutterDesktopViewControllerGetViewId
FlutterDesktopViewId FlutterDesktopViewControllerGetViewId(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:141
FlutterDesktopViewControllerGetView
FlutterDesktopViewRef FlutterDesktopViewControllerGetView(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:153
FlutterDesktopViewControllerDestroy
void FlutterDesktopViewControllerDestroy(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:135
message
Win32Message message
Definition: keyboard_unittests.cc:137
flutter
Definition: accessibility_bridge_windows.cc:11
flutter::FlutterViewId
int64_t FlutterViewId
Definition: flutter_view.h:13