diff --git a/src/sdl3/event.rs b/src/sdl3/event.rs index 29bec7c..1b7132a 100644 --- a/src/sdl3/event.rs +++ b/src/sdl3/event.rs @@ -2574,6 +2574,34 @@ impl Event { pub fn is_unknown(&self) -> bool { matches!(self, Self::Unknown { .. }) } + + // Returns `None` if the event cannot be converted to its raw form (should not happen). + pub fn get_converted_coords( + &self, + canvas: &crate::render::Canvas, + ) -> Option { + let mut raw = self.to_ll()?; + unsafe { + sys::render::SDL_ConvertEventToRenderCoordinates(canvas.raw(), &mut raw); + } + Some(Self::from_ll(raw)) + } + + // Returns `true` on success and false if the event cannot be converted to its raw form (should not happen) + pub fn convert_coords( + &mut self, + canvas: &crate::render::Canvas, + ) -> bool { + if let Some(mut raw) = self.to_ll() { + unsafe { + sys::render::SDL_ConvertEventToRenderCoordinates(canvas.raw(), &mut raw); + } + *self = Self::from_ll(raw); + true + } else { + false + } + } } unsafe fn poll_event() -> Option {