use crate::input::MouseButton;
use crate::io::{Io, assert_finite_f32, assert_finite_vec2};
const MOUSE_BUTTON_COUNT: usize = 5;
fn mouse_button_index(button: MouseButton) -> usize {
button as i32 as usize
}
impl Io {
pub fn mouse_pos(&self) -> [f32; 2] {
[self.inner().MousePos.x, self.inner().MousePos.y]
}
pub fn set_mouse_pos(&mut self, pos: [f32; 2]) {
assert_finite_vec2("Io::set_mouse_pos()", "pos", pos);
self.inner_mut().MousePos.x = pos[0];
self.inner_mut().MousePos.y = pos[1];
}
pub fn mouse_wheel(&self) -> f32 {
self.inner().MouseWheel
}
pub fn set_mouse_wheel(&mut self, wheel: f32) {
assert_finite_f32("Io::set_mouse_wheel()", "wheel", wheel);
self.inner_mut().MouseWheel = wheel;
}
pub fn mouse_wheel_h(&self) -> f32 {
self.inner().MouseWheelH
}
pub fn set_mouse_wheel_h(&mut self, wheel_h: f32) {
assert_finite_f32("Io::set_mouse_wheel_h()", "wheel_h", wheel_h);
self.inner_mut().MouseWheelH = wheel_h;
}
pub fn mouse_down(&self, button: MouseButton) -> bool {
self.mouse_down_raw_index(mouse_button_index(button))
}
pub fn mouse_down_raw_index(&self, button: usize) -> bool {
if button < MOUSE_BUTTON_COUNT {
self.inner().MouseDown[button]
} else {
false
}
}
pub fn mouse_down_button(&self, button: MouseButton) -> bool {
self.mouse_down(button)
}
pub fn set_mouse_down(&mut self, button: MouseButton, down: bool) {
self.set_mouse_down_raw_index(mouse_button_index(button), down);
}
pub fn set_mouse_down_raw_index(&mut self, button: usize, down: bool) {
if button < MOUSE_BUTTON_COUNT {
self.inner_mut().MouseDown[button] = down;
}
}
pub fn set_mouse_down_button(&mut self, button: MouseButton, down: bool) {
self.set_mouse_down(button, down);
}
pub fn want_capture_mouse(&self) -> bool {
self.inner().WantCaptureMouse
}
#[doc(alias = "WantCaptureMouseUnlessPopupClose")]
pub fn want_capture_mouse_unless_popup_close(&self) -> bool {
self.inner().WantCaptureMouseUnlessPopupClose
}
pub fn want_capture_keyboard(&self) -> bool {
self.inner().WantCaptureKeyboard
}
pub fn want_text_input(&self) -> bool {
self.inner().WantTextInput
}
pub fn want_set_mouse_pos(&self) -> bool {
self.inner().WantSetMousePos
}
pub fn mouse_draw_cursor(&self) -> bool {
self.inner().MouseDrawCursor
}
pub fn set_mouse_draw_cursor(&mut self, draw: bool) {
self.inner_mut().MouseDrawCursor = draw;
}
pub fn want_save_ini_settings(&self) -> bool {
self.inner().WantSaveIniSettings
}
}