rscenes_raylib_connector/
rgestures.rs1use raylib_ffi::{enums::Gesture, *};
2use std::{fmt::Debug, usize};
3
4#[derive(Clone, Copy, Debug, Default)]
5pub(crate) struct RgesturesImpl;
6
7impl RgesturesImpl {
9 pub fn __set_gestures_enabled(flags: impl Into<usize>) {
10 unsafe { SetGesturesEnabled(flags.into() as u32) }
11 }
12
13 pub fn __is_gesture_detected(gesture: impl Into<usize>) -> bool {
14 unsafe { IsGestureDetected(gesture.into() as u32) }
15 }
16
17 pub fn __get_gesture_detected() -> Vec<Gesture> {
18 unsafe {
19 let raw = GetGestureDetected() as usize;
20 let mut res: Vec<Gesture> = vec![];
21 for &gesture in [
22 Gesture::Tap,
23 Gesture::Doubletap,
24 Gesture::Hold,
25 Gesture::Drag,
26 Gesture::SwipeRight,
27 Gesture::SwipeLeft,
28 Gesture::SwipeUp,
29 Gesture::SwipeDown,
30 Gesture::PinchIn,
31 Gesture::PinchOut,
32 ]
33 .iter()
34 {
35 let code = gesture as usize;
36 if raw & code != 0 {
37 res.push(gesture);
38 }
39 }
40 res
41 }
42 }
43
44 pub fn __get_gesture_hold_duration() -> f32 {
45 unsafe { GetGestureHoldDuration() }
46 }
47
48 pub fn __get_gesture_drag_vector() -> Vector2 {
49 unsafe { GetGestureDragVector() }
50 }
51
52 pub fn __get_gesture_drag_angle() -> f32 {
53 unsafe { GetGestureDragAngle() }
54 }
55
56 pub fn __get_gesture_pinch_vector() -> Vector2 {
57 unsafe { GetGesturePinchVector() }
58 }
59
60 pub fn __get_gesture_pinch_angle() -> f32 {
61 unsafe { GetGesturePinchAngle() }
62 }
63}
64
65pub trait Rgestures: Debug {
67 fn set_gestures_enable(&self, flags: impl Into<usize>) {
69 RgesturesImpl::__set_gestures_enabled(flags)
70 }
71
72 fn is_gesture_detected(&self, gesture: Gesture) -> bool {
74 RgesturesImpl::__is_gesture_detected(gesture as usize)
75 }
76
77 fn get_gesture_detected(&self) -> Vec<Gesture> {
79 RgesturesImpl::__get_gesture_detected()
80 }
81
82 fn get_gesture_hold_duration(&self) -> f32 {
84 RgesturesImpl::__get_gesture_hold_duration()
85 }
86
87 fn get_gesture_drag_vector(&self) -> Vector2 {
89 RgesturesImpl::__get_gesture_drag_vector()
90 }
91
92 fn get_gesture_drag_angle(&self) -> f32 {
94 RgesturesImpl::__get_gesture_drag_angle()
95 }
96
97 fn get_gesture_pinch_vector(&self) -> Vector2 {
99 RgesturesImpl::__get_gesture_pinch_vector()
100 }
101
102 fn get_gesture_pinch_angle(&self) -> f32 {
104 RgesturesImpl::__get_gesture_pinch_angle()
105 }
106}