| Flutter Windows Embedder |

cursor_handler.h
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 #ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_CURSOR_HANDLER_H_
6 #define FLUTTER_SHELL_PLATFORM_WINDOWS_CURSOR_HANDLER_H_
7
8 #include <unordered_map>
9
10 #include "flutter/fml/macros.h"
11 #include "flutter/shell/platform/common/client_wrapper/include/flutter/binary_messenger.h"
12 #include "flutter/shell/platform/common/client_wrapper/include/flutter/encodable_value.h"
13 #include "flutter/shell/platform/common/client_wrapper/include/flutter/method_channel.h"
14 #include "flutter/shell/platform/windows/public/flutter_windows.h"
15 #include "flutter/shell/platform/windows/window_binding_handler.h"
16
17 namespace flutter {
18
19 class FlutterWindowsEngine;
20
21 // Handler for the cursor system channel.
22 class CursorHandler {
23 public:
24 explicit CursorHandler(flutter::BinaryMessenger* messenger,
25 flutter::FlutterWindowsEngine* engine);
26
27 private:
28 // Called when a method is called on |channel_|;
29 void HandleMethodCall(
30 const flutter::MethodCall<EncodableValue>& method_call,
31 std::unique_ptr<flutter::MethodResult<EncodableValue>> result);
32
33 // The MethodChannel used for communication with the Flutter engine.
34 std::unique_ptr<flutter::MethodChannel<EncodableValue>> channel_;
35
36 // The Flutter engine that will be notified for cursor updates.
37 FlutterWindowsEngine* engine_;
38
39 // The cache map for custom cursors.
40 std::unordered_map<std::string, HCURSOR> custom_cursors_;
41
42 FML_DISALLOW_COPY_AND_ASSIGN(CursorHandler);
43 };
44
45 // Create a cursor from a rawBGRA buffer and the cursor info.
46 HCURSOR GetCursorFromBuffer(const std::vector<uint8_t>& buffer,
47 double hot_x,
48 double hot_y,
49 int width,
50 int height);
51
52 // Get the corresponding mask bitmap from the source bitmap.
53 void GetMaskBitmaps(HBITMAP bitmap, HBITMAP& mask_bitmap);
54
55 } // namespace flutter
56
57 #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_CURSOR_HANDLER_H_
binary_messenger.h
flutter::BinaryMessenger
Definition: binary_messenger.h:28
flutter::CursorHandler
Definition: cursor_handler.h:22
flutter::CursorHandler::CursorHandler
CursorHandler(flutter::BinaryMessenger *messenger, flutter::FlutterWindowsEngine *engine)
Definition: cursor_handler.cc:50
flutter::FlutterWindowsEngine
Definition: flutter_windows_engine.h:90
flutter::MethodCall
Definition: method_call.h:18
flutter::MethodResult< EncodableValue >
encodable_value.h
flutter_windows.h
method_channel.h
flutter
Definition: accessibility_bridge_windows.cc:11
flutter::GetMaskBitmaps
void GetMaskBitmaps(HBITMAP bitmap, HBITMAP &mask_bitmap)
Definition: cursor_handler.cc:249
flutter::GetCursorFromBuffer
HCURSOR GetCursorFromBuffer(const std::vector< uint8_t > &buffer, double hot_x, double hot_y, int width, int height)
Definition: cursor_handler.cc:205
window_binding_handler.h