Skip to content

Commit e3d90fd

Browse files
guuswKryptos-FR
authored andcommitted
Add rust wrapper for EguiInputTranslator
1 parent f5c09f8 commit e3d90fd

File tree

3 files changed

+56
-3
lines changed

3 files changed

+56
-3
lines changed

src/gfx/egui/input.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
#include "renderer.hpp"
66

77
namespace gfx {
8-
const egui::Input *EguiInputTranslator::translateFromInputEvents(const std::vector<SDL_Event>& sdlEvents, Window &window, double time,
9-
float deltaTime) {
8+
const egui::Input *EguiInputTranslator::translateFromInputEvents(const std::vector<SDL_Event> &sdlEvents, Window &window,
9+
double time, float deltaTime) {
1010
using egui::InputEvent;
1111
using egui::InputEventType;
1212

@@ -96,4 +96,8 @@ const egui::Input *EguiInputTranslator::translateFromInputEvents(const std::vect
9696

9797
return &input;
9898
}
99+
100+
EguiInputTranslator *EguiInputTranslator::create() { return new EguiInputTranslator(); }
101+
void EguiInputTranslator::destroy(EguiInputTranslator *obj) { delete obj; }
102+
99103
} // namespace gfx

src/gfx/egui/input.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@ struct EguiInputTranslator {
1515
egui::Pos2 lastCursorPosition;
1616

1717
public:
18-
const egui::Input* translateFromInputEvents(const std::vector<SDL_Event>& sdlEvents, Window& window, double time, float deltaTime);
18+
const egui::Input *translateFromInputEvents(const std::vector<SDL_Event> &sdlEvents, Window &window, double time,
19+
float deltaTime);
20+
21+
static EguiInputTranslator *create();
22+
static void destroy(EguiInputTranslator *renderer);
23+
1924
};
2025
} // namespace gfx
2126

src/gfx/egui/src/input.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,47 @@ pub fn translate_raw_input(input: &egui_Input) -> egui::RawInput {
7373
max_texture_side: None,
7474
}
7575
}
76+
77+
pub struct InputTranslator {
78+
egui_translator: *mut gfx_EguiInputTranslator,
79+
}
80+
81+
impl Drop for InputTranslator {
82+
fn drop(&mut self) {
83+
unsafe {
84+
gfx_EguiInputTranslator_destroy(self.egui_translator);
85+
}
86+
}
87+
}
88+
89+
impl InputTranslator {
90+
pub fn new() -> Self {
91+
unsafe {
92+
Self {
93+
egui_translator: gfx_EguiInputTranslator_create(),
94+
}
95+
}
96+
}
97+
98+
pub fn as_mut_ptr(self: &Self) -> *mut gfx_EguiInputTranslator {
99+
self.egui_translator
100+
}
101+
102+
pub fn translate(
103+
self: &Self,
104+
window: *mut gfx_Window,
105+
sdl_events: *const u8,
106+
time: f64,
107+
delta_time: f32,
108+
) -> *const egui_Input {
109+
unsafe {
110+
gfx_EguiInputTranslator_translateFromInputEvents(
111+
self.egui_translator,
112+
sdl_events,
113+
window,
114+
time,
115+
delta_time,
116+
)
117+
}
118+
}
119+
}

0 commit comments

Comments
 (0)