| // 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_LIB_UI_WINDOW_POINTER_DATA_H_ |
| #define FLUTTER_LIB_UI_WINDOW_POINTER_DATA_H_ |
| |
| #include <cstdint> |
| |
| namespace flutter { |
| |
| // If this value changes, update the pointer data unpacking code in |
| // platform_dispatcher.dart. |
| static constexpr int kPointerDataFieldCount = 35; |
| static constexpr int kBytesPerField = sizeof(int64_t); |
| // Must match the button constants in events.dart. |
| enum PointerButtonMouse : int64_t { |
| kPointerButtonMousePrimary = 1 << 0, |
| kPointerButtonMouseSecondary = 1 << 1, |
| kPointerButtonMouseMiddle = 1 << 2, |
| kPointerButtonMouseBack = 1 << 3, |
| kPointerButtonMouseForward = 1 << 4, |
| }; |
| |
| enum PointerButtonTouch : int64_t { |
| kPointerButtonTouchContact = 1 << 0, |
| }; |
| |
| enum PointerButtonStylus : int64_t { |
| kPointerButtonStylusContact = 1 << 0, |
| kPointerButtonStylusPrimary = 1 << 1, |
| kPointerButtonStylusSecondary = 1 << 2, |
| }; |
| |
| // This structure is unpacked by hooks.dart. |
| struct alignas(8) PointerData { |
| // Must match the PointerChange enum in pointer.dart. |
| enum class Change : int64_t { |
| kCancel, |
| kAdd, |
| kRemove, |
| kHover, |
| kDown, |
| kMove, |
| kUp, |
| kPanZoomStart, |
| kPanZoomUpdate, |
| kPanZoomEnd, |
| }; |
| |
| // Must match the PointerDeviceKind enum in pointer.dart. |
| enum class DeviceKind : int64_t { |
| kTouch, |
| kMouse, |
| kStylus, |
| kInvertedStylus, |
| kTrackpad, |
| }; |
| |
| // Must match the PointerSignalKind enum in pointer.dart. |
| enum class SignalKind : int64_t { |
| kNone, |
| kScroll, |
| kScrollInertiaCancel, |
| kScale, |
| }; |
| |
| int64_t embedder_id; |
| int64_t time_stamp; |
| Change change; |
| DeviceKind kind; |
| SignalKind signal_kind; |
| int64_t device; |
| int64_t pointer_identifier; |
| double physical_x; |
| double physical_y; |
| double physical_delta_x; |
| double physical_delta_y; |
| int64_t buttons; |
| int64_t obscured; |
| int64_t synthesized; |
| double pressure; |
| double pressure_min; |
| double pressure_max; |
| double distance; |
| double distance_max; |
| double size; |
| double radius_major; |
| double radius_minor; |
| double radius_min; |
| double radius_max; |
| double orientation; |
| double tilt; |
| int64_t platformData; |
| double scroll_delta_x; |
| double scroll_delta_y; |
| double pan_x; |
| double pan_y; |
| double pan_delta_x; |
| double pan_delta_y; |
| double scale; |
| double rotation; |
| |
| void Clear(); |
| }; |
| |
| } // namespace flutter |
| |
| #endif // FLUTTER_LIB_UI_WINDOW_POINTER_DATA_H_ |