diff --git a/examples/keyboard-state.rs b/examples/keyboard-state.rs index e8aa740b87d..3f9332701d3 100644 --- a/examples/keyboard-state.rs +++ b/examples/keyboard-state.rs @@ -34,7 +34,7 @@ pub fn main() { let old_keys = &prev_keys - &keys; if !new_keys.is_empty() || !old_keys.is_empty() { - println!("{:?} -> {:?}", new_keys, old_keys); + println!("new_keys: {:?}\told_keys:{:?}", new_keys, old_keys); } prev_keys = keys; diff --git a/src/sdl2/audio.rs b/src/sdl2/audio.rs index c5982da4ea3..20a1916fcff 100644 --- a/src/sdl2/audio.rs +++ b/src/sdl2/audio.rs @@ -113,28 +113,29 @@ impl AudioSubsystem { } } +#[repr(i32)] #[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)] pub enum AudioFormat { /// Unsigned 8-bit samples - U8 = ll::AUDIO_U8 as isize, + U8 = ll::AUDIO_U8 as i32, /// Signed 8-bit samples - S8 = ll::AUDIO_S8 as isize, + S8 = ll::AUDIO_S8 as i32, /// Unsigned 16-bit samples, little-endian - U16LSB = ll::AUDIO_U16LSB as isize, + U16LSB = ll::AUDIO_U16LSB as i32, /// Unsigned 16-bit samples, big-endian - U16MSB = ll::AUDIO_U16MSB as isize, + U16MSB = ll::AUDIO_U16MSB as i32, /// Signed 16-bit samples, little-endian - S16LSB = ll::AUDIO_S16LSB as isize, + S16LSB = ll::AUDIO_S16LSB as i32, /// Signed 16-bit samples, big-endian - S16MSB = ll::AUDIO_S16MSB as isize, + S16MSB = ll::AUDIO_S16MSB as i32, /// Signed 32-bit samples, little-endian - S32LSB = ll::AUDIO_S32LSB as isize, + S32LSB = ll::AUDIO_S32LSB as i32, /// Signed 32-bit samples, big-endian - S32MSB = ll::AUDIO_S32MSB as isize, + S32MSB = ll::AUDIO_S32MSB as i32, /// 32-bit floating point samples, little-endian - F32LSB = ll::AUDIO_F32LSB as isize, + F32LSB = ll::AUDIO_F32LSB as i32, /// 32-bit floating point samples, big-endian - F32MSB = ll::AUDIO_F32MSB as isize + F32MSB = ll::AUDIO_F32MSB as i32 } impl AudioFormat { @@ -184,12 +185,12 @@ impl AudioFormat { #[inline] pub fn f32_sys() -> AudioFormat { AudioFormat::F32MSB } } -#[repr(C)] +#[repr(i32)] #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub enum AudioStatus { - Stopped = ll::SDL_AUDIO_STOPPED as isize, - Playing = ll::SDL_AUDIO_PLAYING as isize, - Paused = ll::SDL_AUDIO_PAUSED as isize, + Stopped = ll::SDL_AUDIO_STOPPED as i32, + Playing = ll::SDL_AUDIO_PLAYING as i32, + Paused = ll::SDL_AUDIO_PAUSED as i32, } impl FromPrimitive for AudioStatus { diff --git a/src/sdl2/event.rs b/src/sdl2/event.rs index 67cbc88b64e..8c06612268c 100644 --- a/src/sdl2/event.rs +++ b/src/sdl2/event.rs @@ -6,7 +6,6 @@ use std::ffi::CStr; use std::mem; use libc::{c_int, c_void, uint32_t}; use num::FromPrimitive; -use num::ToPrimitive; use std::ptr; use std::borrow::ToOwned; use std::iter::FromIterator; @@ -267,56 +266,56 @@ impl ::EventSubsystem { #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] #[repr(u32)] pub enum EventType { - First = ll::SDL_FIRSTEVENT, - - Quit = ll::SDL_QUIT, - AppTerminating = ll::SDL_APP_TERMINATING, - AppLowMemory = ll::SDL_APP_LOWMEMORY, - AppWillEnterBackground = ll::SDL_APP_WILLENTERBACKGROUND, - AppDidEnterBackground = ll::SDL_APP_DIDENTERBACKGROUND, - AppWillEnterForeground = ll::SDL_APP_WILLENTERFOREGROUND, - AppDidEnterForeground = ll::SDL_APP_DIDENTERFOREGROUND, - - Window = ll::SDL_WINDOWEVENT, - // TODO: SysWM = ll::SDL_SYSWMEVENT, - - KeyDown = ll::SDL_KEYDOWN, - KeyUp = ll::SDL_KEYUP, - TextEditing = ll::SDL_TEXTEDITING, - TextInput = ll::SDL_TEXTINPUT, - - MouseMotion = ll::SDL_MOUSEMOTION, - MouseButtonDown = ll::SDL_MOUSEBUTTONDOWN, - MouseButtonUp = ll::SDL_MOUSEBUTTONUP, - MouseWheel = ll::SDL_MOUSEWHEEL, - - JoyAxisMotion = ll::SDL_JOYAXISMOTION, - JoyBallMotion = ll::SDL_JOYBALLMOTION, - JoyHatMotion = ll::SDL_JOYHATMOTION, - JoyButtonDown = ll::SDL_JOYBUTTONDOWN, - JoyButtonUp = ll::SDL_JOYBUTTONUP, - JoyDeviceAdded = ll::SDL_JOYDEVICEADDED, - JoyDeviceRemoved = ll::SDL_JOYDEVICEREMOVED, - - ControllerAxisMotion = ll::SDL_CONTROLLERAXISMOTION, - ControllerButtonDown = ll::SDL_CONTROLLERBUTTONDOWN, - ControllerButtonUp = ll::SDL_CONTROLLERBUTTONUP, - ControllerDeviceAdded = ll::SDL_CONTROLLERDEVICEADDED, - ControllerDeviceRemoved = ll::SDL_CONTROLLERDEVICEREMOVED, - ControllerDeviceRemapped = ll::SDL_CONTROLLERDEVICEREMAPPED, - - FingerDown = ll::SDL_FINGERDOWN, - FingerUp = ll::SDL_FINGERUP, - FingerMotion = ll::SDL_FINGERMOTION, - DollarGesture = ll::SDL_DOLLARGESTURE, - DollarRecord = ll::SDL_DOLLARRECORD, - MultiGesture = ll::SDL_MULTIGESTURE, - - ClipboardUpdate = ll::SDL_CLIPBOARDUPDATE, - DropFile = ll::SDL_DROPFILE, - - User = ll::SDL_USEREVENT, - Last = ll::SDL_LASTEVENT, + First = ll::SDL_FIRSTEVENT as u32, + + Quit = ll::SDL_QUIT as u32, + AppTerminating = ll::SDL_APP_TERMINATING as u32, + AppLowMemory = ll::SDL_APP_LOWMEMORY as u32, + AppWillEnterBackground = ll::SDL_APP_WILLENTERBACKGROUND as u32, + AppDidEnterBackground = ll::SDL_APP_DIDENTERBACKGROUND as u32, + AppWillEnterForeground = ll::SDL_APP_WILLENTERFOREGROUND as u32, + AppDidEnterForeground = ll::SDL_APP_DIDENTERFOREGROUND as u32, + + Window = ll::SDL_WINDOWEVENT as u32, + // TODO: SysWM = ll::SDL_SYSWMEVENT as u32, + + KeyDown = ll::SDL_KEYDOWN as u32, + KeyUp = ll::SDL_KEYUP as u32, + TextEditing = ll::SDL_TEXTEDITING as u32, + TextInput = ll::SDL_TEXTINPUT as u32, + + MouseMotion = ll::SDL_MOUSEMOTION as u32, + MouseButtonDown = ll::SDL_MOUSEBUTTONDOWN as u32, + MouseButtonUp = ll::SDL_MOUSEBUTTONUP as u32, + MouseWheel = ll::SDL_MOUSEWHEEL as u32, + + JoyAxisMotion = ll::SDL_JOYAXISMOTION as u32, + JoyBallMotion = ll::SDL_JOYBALLMOTION as u32, + JoyHatMotion = ll::SDL_JOYHATMOTION as u32, + JoyButtonDown = ll::SDL_JOYBUTTONDOWN as u32, + JoyButtonUp = ll::SDL_JOYBUTTONUP as u32, + JoyDeviceAdded = ll::SDL_JOYDEVICEADDED as u32, + JoyDeviceRemoved = ll::SDL_JOYDEVICEREMOVED as u32, + + ControllerAxisMotion = ll::SDL_CONTROLLERAXISMOTION as u32, + ControllerButtonDown = ll::SDL_CONTROLLERBUTTONDOWN as u32, + ControllerButtonUp = ll::SDL_CONTROLLERBUTTONUP as u32, + ControllerDeviceAdded = ll::SDL_CONTROLLERDEVICEADDED as u32, + ControllerDeviceRemoved = ll::SDL_CONTROLLERDEVICEREMOVED as u32, + ControllerDeviceRemapped = ll::SDL_CONTROLLERDEVICEREMAPPED as u32, + + FingerDown = ll::SDL_FINGERDOWN as u32, + FingerUp = ll::SDL_FINGERUP as u32, + FingerMotion = ll::SDL_FINGERMOTION as u32, + DollarGesture = ll::SDL_DOLLARGESTURE as u32, + DollarRecord = ll::SDL_DOLLARRECORD as u32, + MultiGesture = ll::SDL_MULTIGESTURE as u32, + + ClipboardUpdate = ll::SDL_CLIPBOARDUPDATE as u32, + DropFile = ll::SDL_DROPFILE as u32, + + User = ll::SDL_USEREVENT as u32, + Last = ll::SDL_LASTEVENT as u32, } impl FromPrimitive for EventType { @@ -515,7 +514,7 @@ pub enum Event { timestamp: u32, window_id: u32, which: u32, - mouse_btn: Option, + mouse_btn: MouseButton, x: i32, y: i32 }, @@ -523,7 +522,7 @@ pub enum Event { timestamp: u32, window_id: u32, which: u32, - mouse_btn: Option, + mouse_btn: MouseButton, x: i32, y: i32 }, @@ -746,10 +745,10 @@ fn mk_keysym(scancode: Option, keycode: Option, keymod: Mod) -> syskeyboard::SDL_Keysym { let scancode = scancode - .map(|sc| sc.to_u32().unwrap_or(0u32)) + .map(|sc| sc as scancode::SDL_Scancode) .unwrap_or(scancode::SDL_SCANCODE_UNKNOWN); let keycode = keycode - .map(|kc| kc.to_i32().unwrap_or(0i32)) + .map(|kc| kc as keycode::SDL_Keycode) .unwrap_or(keycode::SDLK_UNKNOWN); let keymod = keymod.bits() as u16; syskeyboard::SDL_Keysym { @@ -760,11 +759,6 @@ fn mk_keysym(scancode: Option, } } -/// Helper function is only to unwrap a mouse_button to u8 -fn mk_mouse_button(mouse_button: Option) -> u8 { - mouse_button.unwrap().to_ll().unwrap() -} - // TODO: Remove this when from_utf8 is updated in Rust // This would honestly be nice if it took &self instead of self, // but Event::User's raw pointers kind of removes that possibility. @@ -905,13 +899,12 @@ impl Event { x, y } => { - let button = mk_mouse_button(mouse_btn); let event = ll::SDL_MouseButtonEvent { type_: ll::SDL_MOUSEBUTTONDOWN, timestamp: timestamp, windowID: window_id, which: which, - button: button, + button: mouse_btn as u8, state: ll::SDL_PRESSED, padding1: 0, padding2: 0, @@ -931,13 +924,12 @@ impl Event { x, y } => { - let button = mk_mouse_button(mouse_btn); let event = ll::SDL_MouseButtonEvent { type_: ll::SDL_MOUSEBUTTONUP, timestamp: timestamp, windowID: window_id, which: which, - button: button, + button: mouse_btn as u8, state: ll::SDL_RELEASED, padding1: 0, padding2: 0, @@ -1304,8 +1296,8 @@ impl Event { Event::KeyDown { timestamp: event.timestamp, window_id: event.windowID, - keycode: FromPrimitive::from_i32(event.keysym.sym), - scancode: FromPrimitive::from_u32(event.keysym.scancode), + keycode: Keycode::from_i32(event.keysym.sym as i32), + scancode: Scancode::from_i32(event.keysym.scancode as i32), keymod: keyboard::Mod::from_bits(event.keysym._mod as SDL_Keymod).unwrap(), repeat: event.repeat != 0 } @@ -1316,8 +1308,8 @@ impl Event { Event::KeyUp { timestamp: event.timestamp, window_id: event.windowID, - keycode: FromPrimitive::from_i32(event.keysym.sym), - scancode: FromPrimitive::from_u32(event.keysym.scancode), + keycode: Keycode::from_i32(event.keysym.sym as i32), + scancode: Scancode::from_i32(event.keysym.scancode as i32), keymod: keyboard::Mod::from_bits(event.keysym._mod as SDL_Keymod).unwrap(), repeat: event.repeat != 0 } @@ -1909,7 +1901,7 @@ mod test { timestamp: 5634, window_id: 2, which: 0, - mouse_btn: Some(MouseButton::Left), + mouse_btn: MouseButton::Left, x: 543, y: 345, }; @@ -1921,7 +1913,7 @@ mod test { timestamp: 0, window_id: 2, which: 0, - mouse_btn: Some(MouseButton::Left), + mouse_btn: MouseButton::Left, x: 543, y: 345, diff --git a/src/sdl2/gfx/imagefilter.rs b/src/sdl2/gfx/imagefilter.rs index f59be425d10..2c979626db7 100644 --- a/src/sdl2/gfx/imagefilter.rs +++ b/src/sdl2/gfx/imagefilter.rs @@ -420,7 +420,7 @@ pub fn clip_to_range(src1: CVec, tmin: u8, tmax: u8) -> Result, Str } /// Filter using NormalizeLinear: D = saturation255((Nmax - Nmin)/(Cmax - Cmin)*(S - Cmin) + Nmin). -pub fn normalize_linear(src1: CVec, cmin: isize, cmax: isize, nmin: isize, nmax: isize) -> Result, String> { +pub fn normalize_linear(src1: CVec, cmin: i32, cmax: i32, nmin: i32, nmax: i32) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); let ret = unsafe { ll::SDL_imageFilterNormalizeLinear(mem::transmute(src1.get(0)), diff --git a/src/sdl2/gfx/primitives.rs b/src/sdl2/gfx/primitives.rs index e0b02b69309..39d2bca16fb 100644 --- a/src/sdl2/gfx/primitives.rs +++ b/src/sdl2/gfx/primitives.rs @@ -267,7 +267,7 @@ pub trait DrawRenderer { fn aa_polygon(&self, vx: &[i16], vy: &[i16], color: C) -> Result<(), String>; fn filled_polygon(&self, vx: &[i16], vy: &[i16], color: C) -> Result<(), String>; fn textured_polygon(&self, vx: &[i16], vy: &[i16], texture: &Surface, texture_dx: i16, texture_dy: i16, color: C) -> Result<(), String>; - fn bezier(&self, vx: &[i16], vy: &[i16], s: isize, color: C) -> Result<(), String>; + fn bezier(&self, vx: &[i16], vy: &[i16], s: i32, color: C) -> Result<(), String>; fn character(&self, x: i16, y: i16, c: char, color: C) -> Result<(), String>; fn string(&self, x: i16, y: i16, s: &str, color: C) -> Result<(), String>; } @@ -462,7 +462,7 @@ impl<'a> DrawRenderer for Renderer<'a> { unimplemented!() } - fn bezier(&self, vx: &[i16], vy: &[i16], s: isize, color: C) -> Result<(), String> { + fn bezier(&self, vx: &[i16], vy: &[i16], s: i32, color: C) -> Result<(), String> { assert_eq!(vx.len(), vy.len()); let n = vx.len() as c_int; let ret = unsafe { diff --git a/src/sdl2/gfx/rotozoom.rs b/src/sdl2/gfx/rotozoom.rs index d6f4009648d..4845ac6ad8f 100644 --- a/src/sdl2/gfx/rotozoom.rs +++ b/src/sdl2/gfx/rotozoom.rs @@ -46,9 +46,9 @@ pub trait RotozoomSurface { /// Zoom a surface by independent horizontal and vertical factors with optional smoothing. fn zoom(&self, zoomx: f64, zoomy: f64, smooth: bool) -> Result; /// Shrink a surface by an integer ratio using averaging. - fn shrink(&self, factorx: isize, factory: isize) -> Result; + fn shrink(&self, factorx: i32, factory: i32) -> Result; /// Rotates a 8/16/24/32 bit surface in increments of 90 degrees. - fn rotate_90deg(&self, turns: isize) -> Result; + fn rotate_90deg(&self, turns: i32) -> Result; } impl<'a> RotozoomSurface for Surface<'a> { @@ -82,7 +82,7 @@ impl<'a> RotozoomSurface for Surface<'a> { unsafe { Ok(Surface::from_ll(raw)) } } } - fn shrink(&self, factorx: isize, factory: isize) -> Result { + fn shrink(&self, factorx: i32, factory: i32) -> Result { let raw = unsafe { ll::shrinkSurface(self.raw(), factorx as c_int, factory as c_int) }; @@ -92,7 +92,7 @@ impl<'a> RotozoomSurface for Surface<'a> { unsafe { Ok(Surface::from_ll(raw)) } } } - fn rotate_90deg(&self, turns: isize) -> Result { + fn rotate_90deg(&self, turns: i32) -> Result { let raw = unsafe { ll::rotateSurface90Degrees(self.raw(), turns as c_int) }; @@ -104,23 +104,23 @@ impl<'a> RotozoomSurface for Surface<'a> { } } -pub fn get_zoom_size(width: isize, height: isize, zoomx: f64, zoomy: f64) -> (isize, isize) { +pub fn get_zoom_size(width: i32, height: i32, zoomx: f64, zoomy: f64) -> (i32, i32) { let mut w: c_int = 0; let mut h: c_int = 0; unsafe { ll::zoomSurfaceSize(width as c_int, height as c_int, zoomx, zoomy, &mut w, &mut h) } - (w as isize, h as isize) + (w as i32, h as i32) } -pub fn get_rotozoom_size(width: isize, height: isize, angle: f64, zoom: f64) -> (isize, isize) { +pub fn get_rotozoom_size(width: i32, height: i32, angle: f64, zoom: f64) -> (i32, i32) { let mut w: c_int = 0; let mut h: c_int = 0; unsafe { ll::rotozoomSurfaceSize(width as c_int, height as c_int, angle, zoom, &mut w, &mut h) } - (w as isize, h as isize) + (w as i32, h as i32) } -pub fn get_rotozoom_xy_size(width: isize, height: isize, angle: f64, zoomx: f64, zoomy: f64) -> (isize, isize) { +pub fn get_rotozoom_xy_size(width: i32, height: i32, angle: f64, zoomx: f64, zoomy: f64) -> (i32, i32) { let mut w: c_int = 0; let mut h: c_int = 0; unsafe { ll::rotozoomSurfaceSizeXY(width as c_int, height as c_int, angle, zoomx, zoomy, &mut w, &mut h) } - (w as isize, h as isize) + (w as i32, h as i32) } diff --git a/src/sdl2/keyboard/keycode.rs b/src/sdl2/keyboard/keycode.rs index 7dd21638ffa..db4b1ad8e0e 100644 --- a/src/sdl2/keyboard/keycode.rs +++ b/src/sdl2/keyboard/keycode.rs @@ -1,267 +1,250 @@ -use num::{ToPrimitive, FromPrimitive}; use std::ffi::{CString, CStr}; use libc::c_char; use sys::keycode as ll; #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] +#[repr(i32)] pub enum Keycode { - Backspace = ll::SDLK_BACKSPACE as isize, - Tab = ll::SDLK_TAB as isize, - Return = ll::SDLK_RETURN as isize, - Escape = ll::SDLK_ESCAPE as isize, - Space = ll::SDLK_SPACE as isize, - Exclaim = ll::SDLK_EXCLAIM as isize, - Quotedbl = ll::SDLK_QUOTEDBL as isize, - Hash = ll::SDLK_HASH as isize, - Dollar = ll::SDLK_DOLLAR as isize, - Percent = ll::SDLK_PERCENT as isize, - Ampersand = ll::SDLK_AMPERSAND as isize, - Quote = ll::SDLK_QUOTE as isize, - LeftParen = ll::SDLK_LEFTPAREN as isize, - RightParen = ll::SDLK_RIGHTPAREN as isize, - Asterisk = ll::SDLK_ASTERISK as isize, - Plus = ll::SDLK_PLUS as isize, - Comma = ll::SDLK_COMMA as isize, - Minus = ll::SDLK_MINUS as isize, - Period = ll::SDLK_PERIOD as isize, - Slash = ll::SDLK_SLASH as isize, - Num0 = ll::SDLK_0 as isize, - Num1 = ll::SDLK_1 as isize, - Num2 = ll::SDLK_2 as isize, - Num3 = ll::SDLK_3 as isize, - Num4 = ll::SDLK_4 as isize, - Num5 = ll::SDLK_5 as isize, - Num6 = ll::SDLK_6 as isize, - Num7 = ll::SDLK_7 as isize, - Num8 = ll::SDLK_8 as isize, - Num9 = ll::SDLK_9 as isize, - Colon = ll::SDLK_COLON as isize, - Semicolon = ll::SDLK_SEMICOLON as isize, - Less = ll::SDLK_LESS as isize, - Equals = ll::SDLK_EQUALS as isize, - Greater = ll::SDLK_GREATER as isize, - Question = ll::SDLK_QUESTION as isize, - At = ll::SDLK_AT as isize, - LeftBracket = ll::SDLK_LEFTBRACKET as isize, - Backslash = ll::SDLK_BACKSLASH as isize, - RightBracket = ll::SDLK_RIGHTBRACKET as isize, - Caret = ll::SDLK_CARET as isize, - Underscore = ll::SDLK_UNDERSCORE as isize, - Backquote = ll::SDLK_BACKQUOTE as isize, - A = ll::SDLK_a as isize, - B = ll::SDLK_b as isize, - C = ll::SDLK_c as isize, - D = ll::SDLK_d as isize, - E = ll::SDLK_e as isize, - F = ll::SDLK_f as isize, - G = ll::SDLK_g as isize, - H = ll::SDLK_h as isize, - I = ll::SDLK_i as isize, - J = ll::SDLK_j as isize, - K = ll::SDLK_k as isize, - L = ll::SDLK_l as isize, - M = ll::SDLK_m as isize, - N = ll::SDLK_n as isize, - O = ll::SDLK_o as isize, - P = ll::SDLK_p as isize, - Q = ll::SDLK_q as isize, - R = ll::SDLK_r as isize, - S = ll::SDLK_s as isize, - T = ll::SDLK_t as isize, - U = ll::SDLK_u as isize, - V = ll::SDLK_v as isize, - W = ll::SDLK_w as isize, - X = ll::SDLK_x as isize, - Y = ll::SDLK_y as isize, - Z = ll::SDLK_z as isize, - Delete = ll::SDLK_DELETE as isize, - CapsLock = ll::SDLK_CAPSLOCK as isize, - F1 = ll::SDLK_F1 as isize, - F2 = ll::SDLK_F2 as isize, - F3 = ll::SDLK_F3 as isize, - F4 = ll::SDLK_F4 as isize, - F5 = ll::SDLK_F5 as isize, - F6 = ll::SDLK_F6 as isize, - F7 = ll::SDLK_F7 as isize, - F8 = ll::SDLK_F8 as isize, - F9 = ll::SDLK_F9 as isize, - F10 = ll::SDLK_F10 as isize, - F11 = ll::SDLK_F11 as isize, - F12 = ll::SDLK_F12 as isize, - PrintScreen = ll::SDLK_PRINTSCREEN as isize, - ScrollLock = ll::SDLK_SCROLLLOCK as isize, - Pause = ll::SDLK_PAUSE as isize, - Insert = ll::SDLK_INSERT as isize, - Home = ll::SDLK_HOME as isize, - PageUp = ll::SDLK_PAGEUP as isize, - End = ll::SDLK_END as isize, - PageDown = ll::SDLK_PAGEDOWN as isize, - Right = ll::SDLK_RIGHT as isize, - Left = ll::SDLK_LEFT as isize, - Down = ll::SDLK_DOWN as isize, - Up = ll::SDLK_UP as isize, - NumLockClear = ll::SDLK_NUMLOCKCLEAR as isize, - KpDivide = ll::SDLK_KPDIVIDE as isize, - KpMultiply = ll::SDLK_KPMULTIPLY as isize, - KpMinus = ll::SDLK_KPMINUS as isize, - KpPlus = ll::SDLK_KPPLUS as isize, - KpEnter = ll::SDLK_KPENTER as isize, - Kp1 = ll::SDLK_KP1 as isize, - Kp2 = ll::SDLK_KP2 as isize, - Kp3 = ll::SDLK_KP3 as isize, - Kp4 = ll::SDLK_KP4 as isize, - Kp5 = ll::SDLK_KP5 as isize, - Kp6 = ll::SDLK_KP6 as isize, - Kp7 = ll::SDLK_KP7 as isize, - Kp8 = ll::SDLK_KP8 as isize, - Kp9 = ll::SDLK_KP9 as isize, - Kp0 = ll::SDLK_KP0 as isize, - KpPeriod = ll::SDLK_KPPERIOD as isize, - Application = ll::SDLK_APPLICATION as isize, - Power = ll::SDLK_POWER as isize, - KpEquals = ll::SDLK_KPEQUALS as isize, - F13 = ll::SDLK_F13 as isize, - F14 = ll::SDLK_F14 as isize, - F15 = ll::SDLK_F15 as isize, - F16 = ll::SDLK_F16 as isize, - F17 = ll::SDLK_F17 as isize, - F18 = ll::SDLK_F18 as isize, - F19 = ll::SDLK_F19 as isize, - F20 = ll::SDLK_F20 as isize, - F21 = ll::SDLK_F21 as isize, - F22 = ll::SDLK_F22 as isize, - F23 = ll::SDLK_F23 as isize, - F24 = ll::SDLK_F24 as isize, - Execute = ll::SDLK_EXECUTE as isize, - Help = ll::SDLK_HELP as isize, - Menu = ll::SDLK_MENU as isize, - Select = ll::SDLK_SELECT as isize, - Stop = ll::SDLK_STOP as isize, - Again = ll::SDLK_AGAIN as isize, - Undo = ll::SDLK_UNDO as isize, - Cut = ll::SDLK_CUT as isize, - Copy = ll::SDLK_COPY as isize, - Paste = ll::SDLK_PASTE as isize, - Find = ll::SDLK_FIND as isize, - Mute = ll::SDLK_MUTE as isize, - VolumeUp = ll::SDLK_VOLUMEUP as isize, - VolumeDown = ll::SDLK_VOLUMEDOWN as isize, - KpComma = ll::SDLK_KPCOMMA as isize, - KpEqualsAS400 = ll::SDLK_KPEQUALSAS400 as isize, - AltErase = ll::SDLK_ALTERASE as isize, - Sysreq = ll::SDLK_SYSREQ as isize, - Cancel = ll::SDLK_CANCEL as isize, - Clear = ll::SDLK_CLEAR as isize, - Prior = ll::SDLK_PRIOR as isize, - Return2 = ll::SDLK_RETURN2 as isize, - Separator = ll::SDLK_SEPARATOR as isize, - Out = ll::SDLK_OUT as isize, - Oper = ll::SDLK_OPER as isize, - ClearAgain = ll::SDLK_CLEARAGAIN as isize, - CrSel = ll::SDLK_CRSEL as isize, - ExSel = ll::SDLK_EXSEL as isize, - Kp00 = ll::SDLK_KP00 as isize, - Kp000 = ll::SDLK_KP000 as isize, - ThousandsSeparator = ll::SDLK_THOUSANDSSEPARATOR as isize, - DecimalSeparator = ll::SDLK_DECIMALSEPARATOR as isize, - CurrencyUnit = ll::SDLK_CURRENCYUNIT as isize, - CurrencySubUnit = ll::SDLK_CURRENCYSUBUNIT as isize, - KpLeftParen = ll::SDLK_KPLEFTPAREN as isize, - KpRightParen = ll::SDLK_KPRIGHTPAREN as isize, - KpLeftBrace = ll::SDLK_KPLEFTBRACE as isize, - KpRightBrace = ll::SDLK_KPRIGHTBRACE as isize, - KpTab = ll::SDLK_KPTAB as isize, - KpBackspace = ll::SDLK_KPBACKSPACE as isize, - KpA = ll::SDLK_KPA as isize, - KpB = ll::SDLK_KPB as isize, - KpC = ll::SDLK_KPC as isize, - KpD = ll::SDLK_KPD as isize, - KpE = ll::SDLK_KPE as isize, - KpF = ll::SDLK_KPF as isize, - KpXor = ll::SDLK_KPXOR as isize, - KpPower = ll::SDLK_KPPOWER as isize, - KpPercent = ll::SDLK_KPPERCENT as isize, - KpLess = ll::SDLK_KPLESS as isize, - KpGreater = ll::SDLK_KPGREATER as isize, - KpAmpersand = ll::SDLK_KPAMPERSAND as isize, - KpDblAmpersand = ll::SDLK_KPDBLAMPERSAND as isize, - KpVerticalBar = ll::SDLK_KPVERTICALBAR as isize, - KpDblVerticalBar = ll::SDLK_KPDBLVERTICALBAR as isize, - KpColon = ll::SDLK_KPCOLON as isize, - KpHash = ll::SDLK_KPHASH as isize, - KpSpace = ll::SDLK_KPSPACE as isize, - KpAt = ll::SDLK_KPAT as isize, - KpExclam = ll::SDLK_KPEXCLAM as isize, - KpMemStore = ll::SDLK_KPMEMSTORE as isize, - KpMemRecall = ll::SDLK_KPMEMRECALL as isize, - KpMemClear = ll::SDLK_KPMEMCLEAR as isize, - KpMemAdd = ll::SDLK_KPMEMADD as isize, - KpMemSubtract = ll::SDLK_KPMEMSUBTRACT as isize, - KpMemMultiply = ll::SDLK_KPMEMMULTIPLY as isize, - KpMemDivide = ll::SDLK_KPMEMDIVIDE as isize, - KpPlusMinus = ll::SDLK_KPPLUSMINUS as isize, - KpClear = ll::SDLK_KPCLEAR as isize, - KpClearEntry = ll::SDLK_KPCLEARENTRY as isize, - KpBinary = ll::SDLK_KPBINARY as isize, - KpOctal = ll::SDLK_KPOCTAL as isize, - KpDecimal = ll::SDLK_KPDECIMAL as isize, - KpHexadecimal = ll::SDLK_KPHEXADECIMAL as isize, - LCtrl = ll::SDLK_LCTRL as isize, - LShift = ll::SDLK_LSHIFT as isize, - LAlt = ll::SDLK_LALT as isize, - LGui = ll::SDLK_LGUI as isize, - RCtrl = ll::SDLK_RCTRL as isize, - RShift = ll::SDLK_RSHIFT as isize, - RAlt = ll::SDLK_RALT as isize, - RGui = ll::SDLK_RGUI as isize, - Mode = ll::SDLK_MODE as isize, - AudioNext = ll::SDLK_AUDIONEXT as isize, - AudioPrev = ll::SDLK_AUDIOPREV as isize, - AudioStop = ll::SDLK_AUDIOSTOP as isize, - AudioPlay = ll::SDLK_AUDIOPLAY as isize, - AudioMute = ll::SDLK_AUDIOMUTE as isize, - MediaSelect = ll::SDLK_MEDIASELECT as isize, - Www = ll::SDLK_WWW as isize, - Mail = ll::SDLK_MAIL as isize, - Calculator = ll::SDLK_CALCULATOR as isize, - Computer = ll::SDLK_COMPUTER as isize, - AcSearch = ll::SDLK_ACSEARCH as isize, - AcHome = ll::SDLK_ACHOME as isize, - AcBack = ll::SDLK_ACBACK as isize, - AcForward = ll::SDLK_ACFORWARD as isize, - AcStop = ll::SDLK_ACSTOP as isize, - AcRefresh = ll::SDLK_ACREFRESH as isize, - AcBookmarks = ll::SDLK_ACBOOKMARKS as isize, - BrightnessDown = ll::SDLK_BRIGHTNESSDOWN as isize, - BrightnessUp = ll::SDLK_BRIGHTNESSUP as isize, - DisplaySwitch = ll::SDLK_DISPLAYSWITCH as isize, - KbdIllumToggle = ll::SDLK_KBDILLUMTOGGLE as isize, - KbdIllumDown = ll::SDLK_KBDILLUMDOWN as isize, - KbdIllumUp = ll::SDLK_KBDILLUMUP as isize, - Eject = ll::SDLK_EJECT as isize, - Sleep = ll::SDLK_SLEEP as isize, + Backspace = ll::SDLK_BACKSPACE as i32, + Tab = ll::SDLK_TAB as i32, + Return = ll::SDLK_RETURN as i32, + Escape = ll::SDLK_ESCAPE as i32, + Space = ll::SDLK_SPACE as i32, + Exclaim = ll::SDLK_EXCLAIM as i32, + Quotedbl = ll::SDLK_QUOTEDBL as i32, + Hash = ll::SDLK_HASH as i32, + Dollar = ll::SDLK_DOLLAR as i32, + Percent = ll::SDLK_PERCENT as i32, + Ampersand = ll::SDLK_AMPERSAND as i32, + Quote = ll::SDLK_QUOTE as i32, + LeftParen = ll::SDLK_LEFTPAREN as i32, + RightParen = ll::SDLK_RIGHTPAREN as i32, + Asterisk = ll::SDLK_ASTERISK as i32, + Plus = ll::SDLK_PLUS as i32, + Comma = ll::SDLK_COMMA as i32, + Minus = ll::SDLK_MINUS as i32, + Period = ll::SDLK_PERIOD as i32, + Slash = ll::SDLK_SLASH as i32, + Num0 = ll::SDLK_0 as i32, + Num1 = ll::SDLK_1 as i32, + Num2 = ll::SDLK_2 as i32, + Num3 = ll::SDLK_3 as i32, + Num4 = ll::SDLK_4 as i32, + Num5 = ll::SDLK_5 as i32, + Num6 = ll::SDLK_6 as i32, + Num7 = ll::SDLK_7 as i32, + Num8 = ll::SDLK_8 as i32, + Num9 = ll::SDLK_9 as i32, + Colon = ll::SDLK_COLON as i32, + Semicolon = ll::SDLK_SEMICOLON as i32, + Less = ll::SDLK_LESS as i32, + Equals = ll::SDLK_EQUALS as i32, + Greater = ll::SDLK_GREATER as i32, + Question = ll::SDLK_QUESTION as i32, + At = ll::SDLK_AT as i32, + LeftBracket = ll::SDLK_LEFTBRACKET as i32, + Backslash = ll::SDLK_BACKSLASH as i32, + RightBracket = ll::SDLK_RIGHTBRACKET as i32, + Caret = ll::SDLK_CARET as i32, + Underscore = ll::SDLK_UNDERSCORE as i32, + Backquote = ll::SDLK_BACKQUOTE as i32, + A = ll::SDLK_a as i32, + B = ll::SDLK_b as i32, + C = ll::SDLK_c as i32, + D = ll::SDLK_d as i32, + E = ll::SDLK_e as i32, + F = ll::SDLK_f as i32, + G = ll::SDLK_g as i32, + H = ll::SDLK_h as i32, + I = ll::SDLK_i as i32, + J = ll::SDLK_j as i32, + K = ll::SDLK_k as i32, + L = ll::SDLK_l as i32, + M = ll::SDLK_m as i32, + N = ll::SDLK_n as i32, + O = ll::SDLK_o as i32, + P = ll::SDLK_p as i32, + Q = ll::SDLK_q as i32, + R = ll::SDLK_r as i32, + S = ll::SDLK_s as i32, + T = ll::SDLK_t as i32, + U = ll::SDLK_u as i32, + V = ll::SDLK_v as i32, + W = ll::SDLK_w as i32, + X = ll::SDLK_x as i32, + Y = ll::SDLK_y as i32, + Z = ll::SDLK_z as i32, + Delete = ll::SDLK_DELETE as i32, + CapsLock = ll::SDLK_CAPSLOCK as i32, + F1 = ll::SDLK_F1 as i32, + F2 = ll::SDLK_F2 as i32, + F3 = ll::SDLK_F3 as i32, + F4 = ll::SDLK_F4 as i32, + F5 = ll::SDLK_F5 as i32, + F6 = ll::SDLK_F6 as i32, + F7 = ll::SDLK_F7 as i32, + F8 = ll::SDLK_F8 as i32, + F9 = ll::SDLK_F9 as i32, + F10 = ll::SDLK_F10 as i32, + F11 = ll::SDLK_F11 as i32, + F12 = ll::SDLK_F12 as i32, + PrintScreen = ll::SDLK_PRINTSCREEN as i32, + ScrollLock = ll::SDLK_SCROLLLOCK as i32, + Pause = ll::SDLK_PAUSE as i32, + Insert = ll::SDLK_INSERT as i32, + Home = ll::SDLK_HOME as i32, + PageUp = ll::SDLK_PAGEUP as i32, + End = ll::SDLK_END as i32, + PageDown = ll::SDLK_PAGEDOWN as i32, + Right = ll::SDLK_RIGHT as i32, + Left = ll::SDLK_LEFT as i32, + Down = ll::SDLK_DOWN as i32, + Up = ll::SDLK_UP as i32, + NumLockClear = ll::SDLK_NUMLOCKCLEAR as i32, + KpDivide = ll::SDLK_KPDIVIDE as i32, + KpMultiply = ll::SDLK_KPMULTIPLY as i32, + KpMinus = ll::SDLK_KPMINUS as i32, + KpPlus = ll::SDLK_KPPLUS as i32, + KpEnter = ll::SDLK_KPENTER as i32, + Kp1 = ll::SDLK_KP1 as i32, + Kp2 = ll::SDLK_KP2 as i32, + Kp3 = ll::SDLK_KP3 as i32, + Kp4 = ll::SDLK_KP4 as i32, + Kp5 = ll::SDLK_KP5 as i32, + Kp6 = ll::SDLK_KP6 as i32, + Kp7 = ll::SDLK_KP7 as i32, + Kp8 = ll::SDLK_KP8 as i32, + Kp9 = ll::SDLK_KP9 as i32, + Kp0 = ll::SDLK_KP0 as i32, + KpPeriod = ll::SDLK_KPPERIOD as i32, + Application = ll::SDLK_APPLICATION as i32, + Power = ll::SDLK_POWER as i32, + KpEquals = ll::SDLK_KPEQUALS as i32, + F13 = ll::SDLK_F13 as i32, + F14 = ll::SDLK_F14 as i32, + F15 = ll::SDLK_F15 as i32, + F16 = ll::SDLK_F16 as i32, + F17 = ll::SDLK_F17 as i32, + F18 = ll::SDLK_F18 as i32, + F19 = ll::SDLK_F19 as i32, + F20 = ll::SDLK_F20 as i32, + F21 = ll::SDLK_F21 as i32, + F22 = ll::SDLK_F22 as i32, + F23 = ll::SDLK_F23 as i32, + F24 = ll::SDLK_F24 as i32, + Execute = ll::SDLK_EXECUTE as i32, + Help = ll::SDLK_HELP as i32, + Menu = ll::SDLK_MENU as i32, + Select = ll::SDLK_SELECT as i32, + Stop = ll::SDLK_STOP as i32, + Again = ll::SDLK_AGAIN as i32, + Undo = ll::SDLK_UNDO as i32, + Cut = ll::SDLK_CUT as i32, + Copy = ll::SDLK_COPY as i32, + Paste = ll::SDLK_PASTE as i32, + Find = ll::SDLK_FIND as i32, + Mute = ll::SDLK_MUTE as i32, + VolumeUp = ll::SDLK_VOLUMEUP as i32, + VolumeDown = ll::SDLK_VOLUMEDOWN as i32, + KpComma = ll::SDLK_KPCOMMA as i32, + KpEqualsAS400 = ll::SDLK_KPEQUALSAS400 as i32, + AltErase = ll::SDLK_ALTERASE as i32, + Sysreq = ll::SDLK_SYSREQ as i32, + Cancel = ll::SDLK_CANCEL as i32, + Clear = ll::SDLK_CLEAR as i32, + Prior = ll::SDLK_PRIOR as i32, + Return2 = ll::SDLK_RETURN2 as i32, + Separator = ll::SDLK_SEPARATOR as i32, + Out = ll::SDLK_OUT as i32, + Oper = ll::SDLK_OPER as i32, + ClearAgain = ll::SDLK_CLEARAGAIN as i32, + CrSel = ll::SDLK_CRSEL as i32, + ExSel = ll::SDLK_EXSEL as i32, + Kp00 = ll::SDLK_KP00 as i32, + Kp000 = ll::SDLK_KP000 as i32, + ThousandsSeparator = ll::SDLK_THOUSANDSSEPARATOR as i32, + DecimalSeparator = ll::SDLK_DECIMALSEPARATOR as i32, + CurrencyUnit = ll::SDLK_CURRENCYUNIT as i32, + CurrencySubUnit = ll::SDLK_CURRENCYSUBUNIT as i32, + KpLeftParen = ll::SDLK_KPLEFTPAREN as i32, + KpRightParen = ll::SDLK_KPRIGHTPAREN as i32, + KpLeftBrace = ll::SDLK_KPLEFTBRACE as i32, + KpRightBrace = ll::SDLK_KPRIGHTBRACE as i32, + KpTab = ll::SDLK_KPTAB as i32, + KpBackspace = ll::SDLK_KPBACKSPACE as i32, + KpA = ll::SDLK_KPA as i32, + KpB = ll::SDLK_KPB as i32, + KpC = ll::SDLK_KPC as i32, + KpD = ll::SDLK_KPD as i32, + KpE = ll::SDLK_KPE as i32, + KpF = ll::SDLK_KPF as i32, + KpXor = ll::SDLK_KPXOR as i32, + KpPower = ll::SDLK_KPPOWER as i32, + KpPercent = ll::SDLK_KPPERCENT as i32, + KpLess = ll::SDLK_KPLESS as i32, + KpGreater = ll::SDLK_KPGREATER as i32, + KpAmpersand = ll::SDLK_KPAMPERSAND as i32, + KpDblAmpersand = ll::SDLK_KPDBLAMPERSAND as i32, + KpVerticalBar = ll::SDLK_KPVERTICALBAR as i32, + KpDblVerticalBar = ll::SDLK_KPDBLVERTICALBAR as i32, + KpColon = ll::SDLK_KPCOLON as i32, + KpHash = ll::SDLK_KPHASH as i32, + KpSpace = ll::SDLK_KPSPACE as i32, + KpAt = ll::SDLK_KPAT as i32, + KpExclam = ll::SDLK_KPEXCLAM as i32, + KpMemStore = ll::SDLK_KPMEMSTORE as i32, + KpMemRecall = ll::SDLK_KPMEMRECALL as i32, + KpMemClear = ll::SDLK_KPMEMCLEAR as i32, + KpMemAdd = ll::SDLK_KPMEMADD as i32, + KpMemSubtract = ll::SDLK_KPMEMSUBTRACT as i32, + KpMemMultiply = ll::SDLK_KPMEMMULTIPLY as i32, + KpMemDivide = ll::SDLK_KPMEMDIVIDE as i32, + KpPlusMinus = ll::SDLK_KPPLUSMINUS as i32, + KpClear = ll::SDLK_KPCLEAR as i32, + KpClearEntry = ll::SDLK_KPCLEARENTRY as i32, + KpBinary = ll::SDLK_KPBINARY as i32, + KpOctal = ll::SDLK_KPOCTAL as i32, + KpDecimal = ll::SDLK_KPDECIMAL as i32, + KpHexadecimal = ll::SDLK_KPHEXADECIMAL as i32, + LCtrl = ll::SDLK_LCTRL as i32, + LShift = ll::SDLK_LSHIFT as i32, + LAlt = ll::SDLK_LALT as i32, + LGui = ll::SDLK_LGUI as i32, + RCtrl = ll::SDLK_RCTRL as i32, + RShift = ll::SDLK_RSHIFT as i32, + RAlt = ll::SDLK_RALT as i32, + RGui = ll::SDLK_RGUI as i32, + Mode = ll::SDLK_MODE as i32, + AudioNext = ll::SDLK_AUDIONEXT as i32, + AudioPrev = ll::SDLK_AUDIOPREV as i32, + AudioStop = ll::SDLK_AUDIOSTOP as i32, + AudioPlay = ll::SDLK_AUDIOPLAY as i32, + AudioMute = ll::SDLK_AUDIOMUTE as i32, + MediaSelect = ll::SDLK_MEDIASELECT as i32, + Www = ll::SDLK_WWW as i32, + Mail = ll::SDLK_MAIL as i32, + Calculator = ll::SDLK_CALCULATOR as i32, + Computer = ll::SDLK_COMPUTER as i32, + AcSearch = ll::SDLK_ACSEARCH as i32, + AcHome = ll::SDLK_ACHOME as i32, + AcBack = ll::SDLK_ACBACK as i32, + AcForward = ll::SDLK_ACFORWARD as i32, + AcStop = ll::SDLK_ACSTOP as i32, + AcRefresh = ll::SDLK_ACREFRESH as i32, + AcBookmarks = ll::SDLK_ACBOOKMARKS as i32, + BrightnessDown = ll::SDLK_BRIGHTNESSDOWN as i32, + BrightnessUp = ll::SDLK_BRIGHTNESSUP as i32, + DisplaySwitch = ll::SDLK_DISPLAYSWITCH as i32, + KbdIllumToggle = ll::SDLK_KBDILLUMTOGGLE as i32, + KbdIllumDown = ll::SDLK_KBDILLUMDOWN as i32, + KbdIllumUp = ll::SDLK_KBDILLUMUP as i32, + Eject = ll::SDLK_EJECT as i32, + Sleep = ll::SDLK_SLEEP as i32, } -impl ToPrimitive for Keycode { - #[inline] - fn to_i64(&self) -> Option { - Some(*self as i64) - } - - #[inline] - fn to_u64(&self) -> Option { - Some(*self as u64) - } - - #[inline] - fn to_isize(&self) -> Option { - Some(*self as isize) - } -} - -impl FromPrimitive for Keycode { - fn from_i64(n: i64) -> Option { +impl Keycode { + pub fn from_i32(n: i32) -> Option { use self::Keycode::*; Some( match n as ll::SDL_Keycode { @@ -504,10 +487,6 @@ impl FromPrimitive for Keycode { _ => return None, }) } - - fn from_u64(n: u64) -> Option { - FromPrimitive::from_i64(n as i64) - } } use std::fmt; @@ -526,7 +505,7 @@ impl Keycode { unsafe { match ::sys::keyboard::SDL_GetKeyFromScancode(scancode as u32) { ll::SDLK_UNKNOWN => None, - keycode_id => FromPrimitive::from_isize(keycode_id as isize) + keycode_id => Keycode::from_i32(keycode_id as i32) } } } @@ -536,7 +515,7 @@ impl Keycode { match CString::new(name) { Ok(name) => match ::sys::keyboard::SDL_GetKeyFromName(name.as_ptr() as *const c_char) { ll::SDLK_UNKNOWN => None, - keycode_id => Some(FromPrimitive::from_isize(keycode_id as isize).unwrap()) + keycode_id => Some(Keycode::from_i32(keycode_id as i32).unwrap()) }, // string contains a nul byte - it won't match anything. Err(_) => None diff --git a/src/sdl2/keyboard/mod.rs b/src/sdl2/keyboard/mod.rs index c1bc8db4ae8..8cf66b88fcc 100644 --- a/src/sdl2/keyboard/mod.rs +++ b/src/sdl2/keyboard/mod.rs @@ -1,4 +1,3 @@ -use num::{ToPrimitive, FromPrimitive}; use std::ptr; use EventPump; @@ -59,7 +58,7 @@ impl<'a> KeyboardState<'a> { /// } /// ``` pub fn is_scancode_pressed(&self, scancode: Scancode) -> bool { - self.keyboard_state[ToPrimitive::to_isize(&scancode).unwrap() as usize] != 0 + self.keyboard_state[scancode as i32 as usize] != 0 } /// Returns an iterator all scancodes with a boolean indicating if the scancode is pressed. @@ -101,7 +100,7 @@ impl<'a> KeyboardState<'a> { } pub struct ScancodeIterator<'a> { - index: usize, + index: i32, keyboard_state: &'a [u8] } @@ -109,12 +108,12 @@ impl<'a> Iterator for ScancodeIterator<'a> { type Item = (Scancode, bool); fn next(&mut self) -> Option<(Scancode, bool)> { - if self.index < self.keyboard_state.len() { + if self.index < self.keyboard_state.len() as i32 { let index = self.index; self.index += 1; - if let Some(scancode) = FromPrimitive::from_usize(index) { - let pressed = self.keyboard_state[index] != 0; + if let Some(scancode) = Scancode::from_i32(index) { + let pressed = self.keyboard_state[index as usize] != 0; Some((scancode, pressed)) } else { diff --git a/src/sdl2/keyboard/scancode.rs b/src/sdl2/keyboard/scancode.rs index ee5813e52c0..df34608160b 100644 --- a/src/sdl2/keyboard/scancode.rs +++ b/src/sdl2/keyboard/scancode.rs @@ -1,273 +1,256 @@ -use num::{ToPrimitive, FromPrimitive}; use std::ffi::{CString, CStr}; use libc::c_char; use sys::scancode as ll; +#[repr(i32)] #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub enum Scancode { - A = ll::SDL_SCANCODE_A as isize, - B = ll::SDL_SCANCODE_B as isize, - C = ll::SDL_SCANCODE_C as isize, - D = ll::SDL_SCANCODE_D as isize, - E = ll::SDL_SCANCODE_E as isize, - F = ll::SDL_SCANCODE_F as isize, - G = ll::SDL_SCANCODE_G as isize, - H = ll::SDL_SCANCODE_H as isize, - I = ll::SDL_SCANCODE_I as isize, - J = ll::SDL_SCANCODE_J as isize, - K = ll::SDL_SCANCODE_K as isize, - L = ll::SDL_SCANCODE_L as isize, - M = ll::SDL_SCANCODE_M as isize, - N = ll::SDL_SCANCODE_N as isize, - O = ll::SDL_SCANCODE_O as isize, - P = ll::SDL_SCANCODE_P as isize, - Q = ll::SDL_SCANCODE_Q as isize, - R = ll::SDL_SCANCODE_R as isize, - S = ll::SDL_SCANCODE_S as isize, - T = ll::SDL_SCANCODE_T as isize, - U = ll::SDL_SCANCODE_U as isize, - V = ll::SDL_SCANCODE_V as isize, - W = ll::SDL_SCANCODE_W as isize, - X = ll::SDL_SCANCODE_X as isize, - Y = ll::SDL_SCANCODE_Y as isize, - Z = ll::SDL_SCANCODE_Z as isize, - Num1 = ll::SDL_SCANCODE_1 as isize, - Num2 = ll::SDL_SCANCODE_2 as isize, - Num3 = ll::SDL_SCANCODE_3 as isize, - Num4 = ll::SDL_SCANCODE_4 as isize, - Num5 = ll::SDL_SCANCODE_5 as isize, - Num6 = ll::SDL_SCANCODE_6 as isize, - Num7 = ll::SDL_SCANCODE_7 as isize, - Num8 = ll::SDL_SCANCODE_8 as isize, - Num9 = ll::SDL_SCANCODE_9 as isize, - Num0 = ll::SDL_SCANCODE_0 as isize, - Return = ll::SDL_SCANCODE_RETURN as isize, - Escape = ll::SDL_SCANCODE_ESCAPE as isize, - Backspace = ll::SDL_SCANCODE_BACKSPACE as isize, - Tab = ll::SDL_SCANCODE_TAB as isize, - Space = ll::SDL_SCANCODE_SPACE as isize, - Minus = ll::SDL_SCANCODE_MINUS as isize, - Equals = ll::SDL_SCANCODE_EQUALS as isize, - LeftBracket = ll::SDL_SCANCODE_LEFTBRACKET as isize, - RightBracket = ll::SDL_SCANCODE_RIGHTBRACKET as isize, - Backslash = ll::SDL_SCANCODE_BACKSLASH as isize, - NonUsHash = ll::SDL_SCANCODE_NONUSHASH as isize, - Semicolon = ll::SDL_SCANCODE_SEMICOLON as isize, - Apostrophe = ll::SDL_SCANCODE_APOSTROPHE as isize, - Grave = ll::SDL_SCANCODE_GRAVE as isize, - Comma = ll::SDL_SCANCODE_COMMA as isize, - Period = ll::SDL_SCANCODE_PERIOD as isize, - Slash = ll::SDL_SCANCODE_SLASH as isize, - CapsLock = ll::SDL_SCANCODE_CAPSLOCK as isize, - F1 = ll::SDL_SCANCODE_F1 as isize, - F2 = ll::SDL_SCANCODE_F2 as isize, - F3 = ll::SDL_SCANCODE_F3 as isize, - F4 = ll::SDL_SCANCODE_F4 as isize, - F5 = ll::SDL_SCANCODE_F5 as isize, - F6 = ll::SDL_SCANCODE_F6 as isize, - F7 = ll::SDL_SCANCODE_F7 as isize, - F8 = ll::SDL_SCANCODE_F8 as isize, - F9 = ll::SDL_SCANCODE_F9 as isize, - F10 = ll::SDL_SCANCODE_F10 as isize, - F11 = ll::SDL_SCANCODE_F11 as isize, - F12 = ll::SDL_SCANCODE_F12 as isize, - PrintScreen = ll::SDL_SCANCODE_PRINTSCREEN as isize, - ScrollLock = ll::SDL_SCANCODE_SCROLLLOCK as isize, - Pause = ll::SDL_SCANCODE_PAUSE as isize, - Insert = ll::SDL_SCANCODE_INSERT as isize, - Home = ll::SDL_SCANCODE_HOME as isize, - PageUp = ll::SDL_SCANCODE_PAGEUP as isize, - Delete = ll::SDL_SCANCODE_DELETE as isize, - End = ll::SDL_SCANCODE_END as isize, - PageDown = ll::SDL_SCANCODE_PAGEDOWN as isize, - Right = ll::SDL_SCANCODE_RIGHT as isize, - Left = ll::SDL_SCANCODE_LEFT as isize, - Down = ll::SDL_SCANCODE_DOWN as isize, - Up = ll::SDL_SCANCODE_UP as isize, - NumLockClear = ll::SDL_SCANCODE_NUMLOCKCLEAR as isize, - KpDivide = ll::SDL_SCANCODE_KP_DIVIDE as isize, - KpMultiply = ll::SDL_SCANCODE_KP_MULTIPLY as isize, - KpMinus = ll::SDL_SCANCODE_KP_MINUS as isize, - KpPlus = ll::SDL_SCANCODE_KP_PLUS as isize, - KpEnter = ll::SDL_SCANCODE_KP_ENTER as isize, - Kp1 = ll::SDL_SCANCODE_KP_1 as isize, - Kp2 = ll::SDL_SCANCODE_KP_2 as isize, - Kp3 = ll::SDL_SCANCODE_KP_3 as isize, - Kp4 = ll::SDL_SCANCODE_KP_4 as isize, - Kp5 = ll::SDL_SCANCODE_KP_5 as isize, - Kp6 = ll::SDL_SCANCODE_KP_6 as isize, - Kp7 = ll::SDL_SCANCODE_KP_7 as isize, - Kp8 = ll::SDL_SCANCODE_KP_8 as isize, - Kp9 = ll::SDL_SCANCODE_KP_9 as isize, - Kp0 = ll::SDL_SCANCODE_KP_0 as isize, - KpPeriod = ll::SDL_SCANCODE_KP_PERIOD as isize, - NonUsBackslash = ll::SDL_SCANCODE_NONUSBACKSLASH as isize, - Application = ll::SDL_SCANCODE_APPLICATION as isize, - Power = ll::SDL_SCANCODE_POWER as isize, - KpEquals = ll::SDL_SCANCODE_KP_EQUALS as isize, - F13 = ll::SDL_SCANCODE_F13 as isize, - F14 = ll::SDL_SCANCODE_F14 as isize, - F15 = ll::SDL_SCANCODE_F15 as isize, - F16 = ll::SDL_SCANCODE_F16 as isize, - F17 = ll::SDL_SCANCODE_F17 as isize, - F18 = ll::SDL_SCANCODE_F18 as isize, - F19 = ll::SDL_SCANCODE_F19 as isize, - F20 = ll::SDL_SCANCODE_F20 as isize, - F21 = ll::SDL_SCANCODE_F21 as isize, - F22 = ll::SDL_SCANCODE_F22 as isize, - F23 = ll::SDL_SCANCODE_F23 as isize, - F24 = ll::SDL_SCANCODE_F24 as isize, - Execute = ll::SDL_SCANCODE_EXECUTE as isize, - Help = ll::SDL_SCANCODE_HELP as isize, - Menu = ll::SDL_SCANCODE_MENU as isize, - Select = ll::SDL_SCANCODE_SELECT as isize, - Stop = ll::SDL_SCANCODE_STOP as isize, - Again = ll::SDL_SCANCODE_AGAIN as isize, - Undo = ll::SDL_SCANCODE_UNDO as isize, - Cut = ll::SDL_SCANCODE_CUT as isize, - Copy = ll::SDL_SCANCODE_COPY as isize, - Paste = ll::SDL_SCANCODE_PASTE as isize, - Find = ll::SDL_SCANCODE_FIND as isize, - Mute = ll::SDL_SCANCODE_MUTE as isize, - VolumeUp = ll::SDL_SCANCODE_VOLUMEUP as isize, - VolumeDown = ll::SDL_SCANCODE_VOLUMEDOWN as isize, - KpComma = ll::SDL_SCANCODE_KP_COMMA as isize, - KpEqualsAS400 = ll::SDL_SCANCODE_KP_EQUALSAS400 as isize, - International1 = ll::SDL_SCANCODE_INTERNATIONAL1 as isize, - International2 = ll::SDL_SCANCODE_INTERNATIONAL2 as isize, - International3 = ll::SDL_SCANCODE_INTERNATIONAL3 as isize, - International4 = ll::SDL_SCANCODE_INTERNATIONAL4 as isize, - International5 = ll::SDL_SCANCODE_INTERNATIONAL5 as isize, - International6 = ll::SDL_SCANCODE_INTERNATIONAL6 as isize, - International7 = ll::SDL_SCANCODE_INTERNATIONAL7 as isize, - International8 = ll::SDL_SCANCODE_INTERNATIONAL8 as isize, - International9 = ll::SDL_SCANCODE_INTERNATIONAL9 as isize, - Lang1 = ll::SDL_SCANCODE_LANG1 as isize, - Lang2 = ll::SDL_SCANCODE_LANG2 as isize, - Lang3 = ll::SDL_SCANCODE_LANG3 as isize, - Lang4 = ll::SDL_SCANCODE_LANG4 as isize, - Lang5 = ll::SDL_SCANCODE_LANG5 as isize, - Lang6 = ll::SDL_SCANCODE_LANG6 as isize, - Lang7 = ll::SDL_SCANCODE_LANG7 as isize, - Lang8 = ll::SDL_SCANCODE_LANG8 as isize, - Lang9 = ll::SDL_SCANCODE_LANG9 as isize, - AltErase = ll::SDL_SCANCODE_ALTERASE as isize, - SysReq = ll::SDL_SCANCODE_SYSREQ as isize, - Cancel = ll::SDL_SCANCODE_CANCEL as isize, - Clear = ll::SDL_SCANCODE_CLEAR as isize, - Prior = ll::SDL_SCANCODE_PRIOR as isize, - Return2 = ll::SDL_SCANCODE_RETURN2 as isize, - Separator = ll::SDL_SCANCODE_SEPARATOR as isize, - Out = ll::SDL_SCANCODE_OUT as isize, - Oper = ll::SDL_SCANCODE_OPER as isize, - ClearAgain = ll::SDL_SCANCODE_CLEARAGAIN as isize, - CrSel = ll::SDL_SCANCODE_CRSEL as isize, - ExSel = ll::SDL_SCANCODE_EXSEL as isize, - Kp00 = ll::SDL_SCANCODE_KP_00 as isize, - Kp000 = ll::SDL_SCANCODE_KP_000 as isize, - ThousandsSeparator = ll::SDL_SCANCODE_THOUSANDSSEPARATOR as isize, - DecimalSeparator = ll::SDL_SCANCODE_DECIMALSEPARATOR as isize, - CurrencyUnit = ll::SDL_SCANCODE_CURRENCYUNIT as isize, - CurrencySubUnit = ll::SDL_SCANCODE_CURRENCYSUBUNIT as isize, - KpLeftParen = ll::SDL_SCANCODE_KP_LEFTPAREN as isize, - KpRightParen = ll::SDL_SCANCODE_KP_RIGHTPAREN as isize, - KpLeftBrace = ll::SDL_SCANCODE_KP_LEFTBRACE as isize, - KpRightBrace = ll::SDL_SCANCODE_KP_RIGHTBRACE as isize, - KpTab = ll::SDL_SCANCODE_KP_TAB as isize, - KpBackspace = ll::SDL_SCANCODE_KP_BACKSPACE as isize, - KpA = ll::SDL_SCANCODE_KP_A as isize, - KpB = ll::SDL_SCANCODE_KP_B as isize, - KpC = ll::SDL_SCANCODE_KP_C as isize, - KpD = ll::SDL_SCANCODE_KP_D as isize, - KpE = ll::SDL_SCANCODE_KP_E as isize, - KpF = ll::SDL_SCANCODE_KP_F as isize, - KpXor = ll::SDL_SCANCODE_KP_XOR as isize, - KpPower = ll::SDL_SCANCODE_KP_POWER as isize, - KpPercent = ll::SDL_SCANCODE_KP_PERCENT as isize, - KpLess = ll::SDL_SCANCODE_KP_LESS as isize, - KpGreater = ll::SDL_SCANCODE_KP_GREATER as isize, - KpAmpersand = ll::SDL_SCANCODE_KP_AMPERSAND as isize, - KpDblAmpersand = ll::SDL_SCANCODE_KP_DBLAMPERSAND as isize, - KpVerticalBar = ll::SDL_SCANCODE_KP_VERTICALBAR as isize, - KpDblVerticalBar = ll::SDL_SCANCODE_KP_DBLVERTICALBAR as isize, - KpColon = ll::SDL_SCANCODE_KP_COLON as isize, - KpHash = ll::SDL_SCANCODE_KP_HASH as isize, - KpSpace = ll::SDL_SCANCODE_KP_SPACE as isize, - KpAt = ll::SDL_SCANCODE_KP_AT as isize, - KpExclam = ll::SDL_SCANCODE_KP_EXCLAM as isize, - KpMemStore = ll::SDL_SCANCODE_KP_MEMSTORE as isize, - KpMemRecall = ll::SDL_SCANCODE_KP_MEMRECALL as isize, - KpMemClear = ll::SDL_SCANCODE_KP_MEMCLEAR as isize, - KpMemAdd = ll::SDL_SCANCODE_KP_MEMADD as isize, - KpMemSubtract = ll::SDL_SCANCODE_KP_MEMSUBTRACT as isize, - KpMemMultiply = ll::SDL_SCANCODE_KP_MEMMULTIPLY as isize, - KpMemDivide = ll::SDL_SCANCODE_KP_MEMDIVIDE as isize, - KpPlusMinus = ll::SDL_SCANCODE_KP_PLUSMINUS as isize, - KpClear = ll::SDL_SCANCODE_KP_CLEAR as isize, - KpClearEntry = ll::SDL_SCANCODE_KP_CLEARENTRY as isize, - KpBinary = ll::SDL_SCANCODE_KP_BINARY as isize, - KpOctal = ll::SDL_SCANCODE_KP_OCTAL as isize, - KpDecimal = ll::SDL_SCANCODE_KP_DECIMAL as isize, - KpHexadecimal = ll::SDL_SCANCODE_KP_HEXADECIMAL as isize, - LCtrl = ll::SDL_SCANCODE_LCTRL as isize, - LShift = ll::SDL_SCANCODE_LSHIFT as isize, - LAlt = ll::SDL_SCANCODE_LALT as isize, - LGui = ll::SDL_SCANCODE_LGUI as isize, - RCtrl = ll::SDL_SCANCODE_RCTRL as isize, - RShift = ll::SDL_SCANCODE_RSHIFT as isize, - RAlt = ll::SDL_SCANCODE_RALT as isize, - RGui = ll::SDL_SCANCODE_RGUI as isize, - Mode = ll::SDL_SCANCODE_MODE as isize, - AudioNext = ll::SDL_SCANCODE_AUDIONEXT as isize, - AudioPrev = ll::SDL_SCANCODE_AUDIOPREV as isize, - AudioStop = ll::SDL_SCANCODE_AUDIOSTOP as isize, - AudioPlay = ll::SDL_SCANCODE_AUDIOPLAY as isize, - AudioMute = ll::SDL_SCANCODE_AUDIOMUTE as isize, - MediaSelect = ll::SDL_SCANCODE_MEDIASELECT as isize, - Www = ll::SDL_SCANCODE_WWW as isize, - Mail = ll::SDL_SCANCODE_MAIL as isize, - Calculator = ll::SDL_SCANCODE_CALCULATOR as isize, - Computer = ll::SDL_SCANCODE_COMPUTER as isize, - AcSearch = ll::SDL_SCANCODE_AC_SEARCH as isize, - AcHome = ll::SDL_SCANCODE_AC_HOME as isize, - AcBack = ll::SDL_SCANCODE_AC_BACK as isize, - AcForward = ll::SDL_SCANCODE_AC_FORWARD as isize, - AcStop = ll::SDL_SCANCODE_AC_STOP as isize, - AcRefresh = ll::SDL_SCANCODE_AC_REFRESH as isize, - AcBookmarks = ll::SDL_SCANCODE_AC_BOOKMARKS as isize, - BrightnessDown = ll::SDL_SCANCODE_BRIGHTNESSDOWN as isize, - BrightnessUp = ll::SDL_SCANCODE_BRIGHTNESSUP as isize, - DisplaySwitch = ll::SDL_SCANCODE_DISPLAYSWITCH as isize, - KbdIllumToggle = ll::SDL_SCANCODE_KBDILLUMTOGGLE as isize, - KbdIllumDown = ll::SDL_SCANCODE_KBDILLUMDOWN as isize, - KbdIllumUp = ll::SDL_SCANCODE_KBDILLUMUP as isize, - Eject = ll::SDL_SCANCODE_EJECT as isize, - Sleep = ll::SDL_SCANCODE_SLEEP as isize, - App1 = ll::SDL_SCANCODE_APP1 as isize, - App2 = ll::SDL_SCANCODE_APP2 as isize, - Num = ll::SDL_NUM_SCANCODES as isize, + A = ll::SDL_SCANCODE_A as i32, + B = ll::SDL_SCANCODE_B as i32, + C = ll::SDL_SCANCODE_C as i32, + D = ll::SDL_SCANCODE_D as i32, + E = ll::SDL_SCANCODE_E as i32, + F = ll::SDL_SCANCODE_F as i32, + G = ll::SDL_SCANCODE_G as i32, + H = ll::SDL_SCANCODE_H as i32, + I = ll::SDL_SCANCODE_I as i32, + J = ll::SDL_SCANCODE_J as i32, + K = ll::SDL_SCANCODE_K as i32, + L = ll::SDL_SCANCODE_L as i32, + M = ll::SDL_SCANCODE_M as i32, + N = ll::SDL_SCANCODE_N as i32, + O = ll::SDL_SCANCODE_O as i32, + P = ll::SDL_SCANCODE_P as i32, + Q = ll::SDL_SCANCODE_Q as i32, + R = ll::SDL_SCANCODE_R as i32, + S = ll::SDL_SCANCODE_S as i32, + T = ll::SDL_SCANCODE_T as i32, + U = ll::SDL_SCANCODE_U as i32, + V = ll::SDL_SCANCODE_V as i32, + W = ll::SDL_SCANCODE_W as i32, + X = ll::SDL_SCANCODE_X as i32, + Y = ll::SDL_SCANCODE_Y as i32, + Z = ll::SDL_SCANCODE_Z as i32, + Num1 = ll::SDL_SCANCODE_1 as i32, + Num2 = ll::SDL_SCANCODE_2 as i32, + Num3 = ll::SDL_SCANCODE_3 as i32, + Num4 = ll::SDL_SCANCODE_4 as i32, + Num5 = ll::SDL_SCANCODE_5 as i32, + Num6 = ll::SDL_SCANCODE_6 as i32, + Num7 = ll::SDL_SCANCODE_7 as i32, + Num8 = ll::SDL_SCANCODE_8 as i32, + Num9 = ll::SDL_SCANCODE_9 as i32, + Num0 = ll::SDL_SCANCODE_0 as i32, + Return = ll::SDL_SCANCODE_RETURN as i32, + Escape = ll::SDL_SCANCODE_ESCAPE as i32, + Backspace = ll::SDL_SCANCODE_BACKSPACE as i32, + Tab = ll::SDL_SCANCODE_TAB as i32, + Space = ll::SDL_SCANCODE_SPACE as i32, + Minus = ll::SDL_SCANCODE_MINUS as i32, + Equals = ll::SDL_SCANCODE_EQUALS as i32, + LeftBracket = ll::SDL_SCANCODE_LEFTBRACKET as i32, + RightBracket = ll::SDL_SCANCODE_RIGHTBRACKET as i32, + Backslash = ll::SDL_SCANCODE_BACKSLASH as i32, + NonUsHash = ll::SDL_SCANCODE_NONUSHASH as i32, + Semicolon = ll::SDL_SCANCODE_SEMICOLON as i32, + Apostrophe = ll::SDL_SCANCODE_APOSTROPHE as i32, + Grave = ll::SDL_SCANCODE_GRAVE as i32, + Comma = ll::SDL_SCANCODE_COMMA as i32, + Period = ll::SDL_SCANCODE_PERIOD as i32, + Slash = ll::SDL_SCANCODE_SLASH as i32, + CapsLock = ll::SDL_SCANCODE_CAPSLOCK as i32, + F1 = ll::SDL_SCANCODE_F1 as i32, + F2 = ll::SDL_SCANCODE_F2 as i32, + F3 = ll::SDL_SCANCODE_F3 as i32, + F4 = ll::SDL_SCANCODE_F4 as i32, + F5 = ll::SDL_SCANCODE_F5 as i32, + F6 = ll::SDL_SCANCODE_F6 as i32, + F7 = ll::SDL_SCANCODE_F7 as i32, + F8 = ll::SDL_SCANCODE_F8 as i32, + F9 = ll::SDL_SCANCODE_F9 as i32, + F10 = ll::SDL_SCANCODE_F10 as i32, + F11 = ll::SDL_SCANCODE_F11 as i32, + F12 = ll::SDL_SCANCODE_F12 as i32, + PrintScreen = ll::SDL_SCANCODE_PRINTSCREEN as i32, + ScrollLock = ll::SDL_SCANCODE_SCROLLLOCK as i32, + Pause = ll::SDL_SCANCODE_PAUSE as i32, + Insert = ll::SDL_SCANCODE_INSERT as i32, + Home = ll::SDL_SCANCODE_HOME as i32, + PageUp = ll::SDL_SCANCODE_PAGEUP as i32, + Delete = ll::SDL_SCANCODE_DELETE as i32, + End = ll::SDL_SCANCODE_END as i32, + PageDown = ll::SDL_SCANCODE_PAGEDOWN as i32, + Right = ll::SDL_SCANCODE_RIGHT as i32, + Left = ll::SDL_SCANCODE_LEFT as i32, + Down = ll::SDL_SCANCODE_DOWN as i32, + Up = ll::SDL_SCANCODE_UP as i32, + NumLockClear = ll::SDL_SCANCODE_NUMLOCKCLEAR as i32, + KpDivide = ll::SDL_SCANCODE_KP_DIVIDE as i32, + KpMultiply = ll::SDL_SCANCODE_KP_MULTIPLY as i32, + KpMinus = ll::SDL_SCANCODE_KP_MINUS as i32, + KpPlus = ll::SDL_SCANCODE_KP_PLUS as i32, + KpEnter = ll::SDL_SCANCODE_KP_ENTER as i32, + Kp1 = ll::SDL_SCANCODE_KP_1 as i32, + Kp2 = ll::SDL_SCANCODE_KP_2 as i32, + Kp3 = ll::SDL_SCANCODE_KP_3 as i32, + Kp4 = ll::SDL_SCANCODE_KP_4 as i32, + Kp5 = ll::SDL_SCANCODE_KP_5 as i32, + Kp6 = ll::SDL_SCANCODE_KP_6 as i32, + Kp7 = ll::SDL_SCANCODE_KP_7 as i32, + Kp8 = ll::SDL_SCANCODE_KP_8 as i32, + Kp9 = ll::SDL_SCANCODE_KP_9 as i32, + Kp0 = ll::SDL_SCANCODE_KP_0 as i32, + KpPeriod = ll::SDL_SCANCODE_KP_PERIOD as i32, + NonUsBackslash = ll::SDL_SCANCODE_NONUSBACKSLASH as i32, + Application = ll::SDL_SCANCODE_APPLICATION as i32, + Power = ll::SDL_SCANCODE_POWER as i32, + KpEquals = ll::SDL_SCANCODE_KP_EQUALS as i32, + F13 = ll::SDL_SCANCODE_F13 as i32, + F14 = ll::SDL_SCANCODE_F14 as i32, + F15 = ll::SDL_SCANCODE_F15 as i32, + F16 = ll::SDL_SCANCODE_F16 as i32, + F17 = ll::SDL_SCANCODE_F17 as i32, + F18 = ll::SDL_SCANCODE_F18 as i32, + F19 = ll::SDL_SCANCODE_F19 as i32, + F20 = ll::SDL_SCANCODE_F20 as i32, + F21 = ll::SDL_SCANCODE_F21 as i32, + F22 = ll::SDL_SCANCODE_F22 as i32, + F23 = ll::SDL_SCANCODE_F23 as i32, + F24 = ll::SDL_SCANCODE_F24 as i32, + Execute = ll::SDL_SCANCODE_EXECUTE as i32, + Help = ll::SDL_SCANCODE_HELP as i32, + Menu = ll::SDL_SCANCODE_MENU as i32, + Select = ll::SDL_SCANCODE_SELECT as i32, + Stop = ll::SDL_SCANCODE_STOP as i32, + Again = ll::SDL_SCANCODE_AGAIN as i32, + Undo = ll::SDL_SCANCODE_UNDO as i32, + Cut = ll::SDL_SCANCODE_CUT as i32, + Copy = ll::SDL_SCANCODE_COPY as i32, + Paste = ll::SDL_SCANCODE_PASTE as i32, + Find = ll::SDL_SCANCODE_FIND as i32, + Mute = ll::SDL_SCANCODE_MUTE as i32, + VolumeUp = ll::SDL_SCANCODE_VOLUMEUP as i32, + VolumeDown = ll::SDL_SCANCODE_VOLUMEDOWN as i32, + KpComma = ll::SDL_SCANCODE_KP_COMMA as i32, + KpEqualsAS400 = ll::SDL_SCANCODE_KP_EQUALSAS400 as i32, + International1 = ll::SDL_SCANCODE_INTERNATIONAL1 as i32, + International2 = ll::SDL_SCANCODE_INTERNATIONAL2 as i32, + International3 = ll::SDL_SCANCODE_INTERNATIONAL3 as i32, + International4 = ll::SDL_SCANCODE_INTERNATIONAL4 as i32, + International5 = ll::SDL_SCANCODE_INTERNATIONAL5 as i32, + International6 = ll::SDL_SCANCODE_INTERNATIONAL6 as i32, + International7 = ll::SDL_SCANCODE_INTERNATIONAL7 as i32, + International8 = ll::SDL_SCANCODE_INTERNATIONAL8 as i32, + International9 = ll::SDL_SCANCODE_INTERNATIONAL9 as i32, + Lang1 = ll::SDL_SCANCODE_LANG1 as i32, + Lang2 = ll::SDL_SCANCODE_LANG2 as i32, + Lang3 = ll::SDL_SCANCODE_LANG3 as i32, + Lang4 = ll::SDL_SCANCODE_LANG4 as i32, + Lang5 = ll::SDL_SCANCODE_LANG5 as i32, + Lang6 = ll::SDL_SCANCODE_LANG6 as i32, + Lang7 = ll::SDL_SCANCODE_LANG7 as i32, + Lang8 = ll::SDL_SCANCODE_LANG8 as i32, + Lang9 = ll::SDL_SCANCODE_LANG9 as i32, + AltErase = ll::SDL_SCANCODE_ALTERASE as i32, + SysReq = ll::SDL_SCANCODE_SYSREQ as i32, + Cancel = ll::SDL_SCANCODE_CANCEL as i32, + Clear = ll::SDL_SCANCODE_CLEAR as i32, + Prior = ll::SDL_SCANCODE_PRIOR as i32, + Return2 = ll::SDL_SCANCODE_RETURN2 as i32, + Separator = ll::SDL_SCANCODE_SEPARATOR as i32, + Out = ll::SDL_SCANCODE_OUT as i32, + Oper = ll::SDL_SCANCODE_OPER as i32, + ClearAgain = ll::SDL_SCANCODE_CLEARAGAIN as i32, + CrSel = ll::SDL_SCANCODE_CRSEL as i32, + ExSel = ll::SDL_SCANCODE_EXSEL as i32, + Kp00 = ll::SDL_SCANCODE_KP_00 as i32, + Kp000 = ll::SDL_SCANCODE_KP_000 as i32, + ThousandsSeparator = ll::SDL_SCANCODE_THOUSANDSSEPARATOR as i32, + DecimalSeparator = ll::SDL_SCANCODE_DECIMALSEPARATOR as i32, + CurrencyUnit = ll::SDL_SCANCODE_CURRENCYUNIT as i32, + CurrencySubUnit = ll::SDL_SCANCODE_CURRENCYSUBUNIT as i32, + KpLeftParen = ll::SDL_SCANCODE_KP_LEFTPAREN as i32, + KpRightParen = ll::SDL_SCANCODE_KP_RIGHTPAREN as i32, + KpLeftBrace = ll::SDL_SCANCODE_KP_LEFTBRACE as i32, + KpRightBrace = ll::SDL_SCANCODE_KP_RIGHTBRACE as i32, + KpTab = ll::SDL_SCANCODE_KP_TAB as i32, + KpBackspace = ll::SDL_SCANCODE_KP_BACKSPACE as i32, + KpA = ll::SDL_SCANCODE_KP_A as i32, + KpB = ll::SDL_SCANCODE_KP_B as i32, + KpC = ll::SDL_SCANCODE_KP_C as i32, + KpD = ll::SDL_SCANCODE_KP_D as i32, + KpE = ll::SDL_SCANCODE_KP_E as i32, + KpF = ll::SDL_SCANCODE_KP_F as i32, + KpXor = ll::SDL_SCANCODE_KP_XOR as i32, + KpPower = ll::SDL_SCANCODE_KP_POWER as i32, + KpPercent = ll::SDL_SCANCODE_KP_PERCENT as i32, + KpLess = ll::SDL_SCANCODE_KP_LESS as i32, + KpGreater = ll::SDL_SCANCODE_KP_GREATER as i32, + KpAmpersand = ll::SDL_SCANCODE_KP_AMPERSAND as i32, + KpDblAmpersand = ll::SDL_SCANCODE_KP_DBLAMPERSAND as i32, + KpVerticalBar = ll::SDL_SCANCODE_KP_VERTICALBAR as i32, + KpDblVerticalBar = ll::SDL_SCANCODE_KP_DBLVERTICALBAR as i32, + KpColon = ll::SDL_SCANCODE_KP_COLON as i32, + KpHash = ll::SDL_SCANCODE_KP_HASH as i32, + KpSpace = ll::SDL_SCANCODE_KP_SPACE as i32, + KpAt = ll::SDL_SCANCODE_KP_AT as i32, + KpExclam = ll::SDL_SCANCODE_KP_EXCLAM as i32, + KpMemStore = ll::SDL_SCANCODE_KP_MEMSTORE as i32, + KpMemRecall = ll::SDL_SCANCODE_KP_MEMRECALL as i32, + KpMemClear = ll::SDL_SCANCODE_KP_MEMCLEAR as i32, + KpMemAdd = ll::SDL_SCANCODE_KP_MEMADD as i32, + KpMemSubtract = ll::SDL_SCANCODE_KP_MEMSUBTRACT as i32, + KpMemMultiply = ll::SDL_SCANCODE_KP_MEMMULTIPLY as i32, + KpMemDivide = ll::SDL_SCANCODE_KP_MEMDIVIDE as i32, + KpPlusMinus = ll::SDL_SCANCODE_KP_PLUSMINUS as i32, + KpClear = ll::SDL_SCANCODE_KP_CLEAR as i32, + KpClearEntry = ll::SDL_SCANCODE_KP_CLEARENTRY as i32, + KpBinary = ll::SDL_SCANCODE_KP_BINARY as i32, + KpOctal = ll::SDL_SCANCODE_KP_OCTAL as i32, + KpDecimal = ll::SDL_SCANCODE_KP_DECIMAL as i32, + KpHexadecimal = ll::SDL_SCANCODE_KP_HEXADECIMAL as i32, + LCtrl = ll::SDL_SCANCODE_LCTRL as i32, + LShift = ll::SDL_SCANCODE_LSHIFT as i32, + LAlt = ll::SDL_SCANCODE_LALT as i32, + LGui = ll::SDL_SCANCODE_LGUI as i32, + RCtrl = ll::SDL_SCANCODE_RCTRL as i32, + RShift = ll::SDL_SCANCODE_RSHIFT as i32, + RAlt = ll::SDL_SCANCODE_RALT as i32, + RGui = ll::SDL_SCANCODE_RGUI as i32, + Mode = ll::SDL_SCANCODE_MODE as i32, + AudioNext = ll::SDL_SCANCODE_AUDIONEXT as i32, + AudioPrev = ll::SDL_SCANCODE_AUDIOPREV as i32, + AudioStop = ll::SDL_SCANCODE_AUDIOSTOP as i32, + AudioPlay = ll::SDL_SCANCODE_AUDIOPLAY as i32, + AudioMute = ll::SDL_SCANCODE_AUDIOMUTE as i32, + MediaSelect = ll::SDL_SCANCODE_MEDIASELECT as i32, + Www = ll::SDL_SCANCODE_WWW as i32, + Mail = ll::SDL_SCANCODE_MAIL as i32, + Calculator = ll::SDL_SCANCODE_CALCULATOR as i32, + Computer = ll::SDL_SCANCODE_COMPUTER as i32, + AcSearch = ll::SDL_SCANCODE_AC_SEARCH as i32, + AcHome = ll::SDL_SCANCODE_AC_HOME as i32, + AcBack = ll::SDL_SCANCODE_AC_BACK as i32, + AcForward = ll::SDL_SCANCODE_AC_FORWARD as i32, + AcStop = ll::SDL_SCANCODE_AC_STOP as i32, + AcRefresh = ll::SDL_SCANCODE_AC_REFRESH as i32, + AcBookmarks = ll::SDL_SCANCODE_AC_BOOKMARKS as i32, + BrightnessDown = ll::SDL_SCANCODE_BRIGHTNESSDOWN as i32, + BrightnessUp = ll::SDL_SCANCODE_BRIGHTNESSUP as i32, + DisplaySwitch = ll::SDL_SCANCODE_DISPLAYSWITCH as i32, + KbdIllumToggle = ll::SDL_SCANCODE_KBDILLUMTOGGLE as i32, + KbdIllumDown = ll::SDL_SCANCODE_KBDILLUMDOWN as i32, + KbdIllumUp = ll::SDL_SCANCODE_KBDILLUMUP as i32, + Eject = ll::SDL_SCANCODE_EJECT as i32, + Sleep = ll::SDL_SCANCODE_SLEEP as i32, + App1 = ll::SDL_SCANCODE_APP1 as i32, + App2 = ll::SDL_SCANCODE_APP2 as i32, + Num = ll::SDL_NUM_SCANCODES as i32, } -impl ToPrimitive for Scancode { - #[inline] - fn to_i64(&self) -> Option { - Some(*self as i64) - } - - #[inline] - fn to_u64(&self) -> Option { - Some(*self as u64) - } - - #[inline] - fn to_isize(&self) -> Option { - Some(*self as isize) - } -} - -impl FromPrimitive for Scancode { - fn from_i64(n: i64) -> Option { +impl Scancode { + pub fn from_i32(n: i32) -> Option { use self::Scancode::*; Some( match n as ll::SDL_Scancode { @@ -516,8 +499,6 @@ impl FromPrimitive for Scancode { _ => return None, }) } - - fn from_u64(n: u64) -> Option { FromPrimitive::from_i64(n as i64) } } use std::fmt; @@ -536,7 +517,7 @@ impl Scancode { unsafe { match ::sys::keyboard::SDL_GetScancodeFromKey(keycode as i32) { ll::SDL_SCANCODE_UNKNOWN => None, - scancode_id => FromPrimitive::from_isize(scancode_id as isize) + scancode_id => Scancode::from_i32(scancode_id as i32) } } } @@ -546,7 +527,7 @@ impl Scancode { match CString::new(name) { Ok(name) => match ::sys::keyboard::SDL_GetScancodeFromName(name.as_ptr() as *const c_char) { ll::SDL_SCANCODE_UNKNOWN => None, - scancode_id => Some(FromPrimitive::from_isize(scancode_id as isize).unwrap()) + scancode_id => Some(Scancode::from_i32(scancode_id as i32).unwrap()) }, // string contains a nul byte - it won't match anything. Err(_) => None diff --git a/src/sdl2/mixer/mod.rs b/src/sdl2/mixer/mod.rs index 576c13c6f4e..f4aaffa9eef 100644 --- a/src/sdl2/mixer/mod.rs +++ b/src/sdl2/mixer/mod.rs @@ -103,11 +103,11 @@ pub const AUDIO_F32SYS: AudioFormat = ll::AUDIO_F32SYS; /// The suggested default is signed 16bit samples in host byte order. pub const DEFAULT_FORMAT: AudioFormat = ll::AUDIO_S16SYS; /// Defualt channels: Stereo. -pub const DEFAULT_CHANNELS: isize = 2; +pub const DEFAULT_CHANNELS: i32 = 2; /// Good default sample rate in Hz (samples per second) for PC sound cards. -pub const DEFAULT_FREQUENCY: isize = 22050; +pub const DEFAULT_FREQUENCY: i32 = 22050; /// Maximum value for any volume setting. -pub const MAX_VOLUME: isize = 128; +pub const MAX_VOLUME: i32 = 128; /// Returns the version of the dynamically linked `SDL_mixer` library pub fn get_linked_version() -> Version { @@ -185,10 +185,10 @@ pub fn init(flags: InitFlag) -> Result { /// Open the mixer with a certain audio format. -pub fn open_audio(frequency: isize, +pub fn open_audio(frequency: i32, format: AudioFormat, - channels: isize, - chunksize: isize) + channels: i32, + chunksize: i32) -> Result<(), String> { let ret = unsafe { ffi::Mix_OpenAudio(frequency as c_int, @@ -209,7 +209,7 @@ pub fn close_audio() { } /// Get the actual audio format in use by the opened audio device. -pub fn query_spec() -> Result<(isize, AudioFormat, isize), String> { +pub fn query_spec() -> Result<(i32, AudioFormat, i32), String> { let mut frequency: c_int = 0; let mut format: uint16_t = 0; let mut channels: c_int = 0; @@ -217,19 +217,19 @@ pub fn query_spec() -> Result<(isize, AudioFormat, isize), String> { if ret == 0 { Err(get_error()) } else { - Ok((frequency as isize, format as AudioFormat, channels as isize)) + Ok((frequency as i32, format as AudioFormat, channels as i32)) } } // 4.2 Samples /// Get the number of sample chunk decoders available from the `Mix_GetChunkDecoder` function. -pub fn get_chunk_decoders_number() -> isize { - unsafe { ffi::Mix_GetNumChunkDecoders() as isize } +pub fn get_chunk_decoders_number() -> i32 { + unsafe { ffi::Mix_GetNumChunkDecoders() as i32 } } /// Get the name of the indexed sample chunk decoder. -pub fn get_chunk_decoder(index: isize) -> String { +pub fn get_chunk_decoder(index: i32) -> String { unsafe { let name = ffi::Mix_GetChunkDecoder(index as c_int); from_utf8(CStr::from_ptr(name).to_bytes()).unwrap().to_owned() @@ -266,13 +266,13 @@ impl Chunk { } /// Set chunk->volume to volume. - pub fn set_volume(&mut self, volume: isize) -> isize { - unsafe { ffi::Mix_VolumeChunk(self.raw, volume as c_int) as isize } + pub fn set_volume(&mut self, volume: i32) -> i32 { + unsafe { ffi::Mix_VolumeChunk(self.raw, volume as c_int) as i32 } } /// current volume for the chunk. - pub fn get_volume(&self) -> isize { - unsafe { ffi::Mix_VolumeChunk(self.raw, -1) as isize } + pub fn get_volume(&self) -> i32 { + unsafe { ffi::Mix_VolumeChunk(self.raw, -1) as i32 } } } @@ -317,26 +317,26 @@ impl<'a> LoaderRWops for RWops<'a> { // 4.3 Channels /// Fader effect type enumerations -#[repr(C)] +#[repr(i32)] #[derive(Debug, Copy, Clone, PartialEq, Hash)] pub enum Fading { - NoFading = ffi::MIX_NO_FADING as isize, - FadingOut = ffi::MIX_FADING_OUT as isize, - FadingIn = ffi::MIX_FADING_IN as isize, + NoFading = ffi::MIX_NO_FADING as i32, + FadingOut = ffi::MIX_FADING_OUT as i32, + FadingIn = ffi::MIX_FADING_IN as i32, } /// Sound effect channel. #[derive(Debug, Copy, Clone, PartialEq)] -pub struct Channel(isize); +pub struct Channel(i32); /// Return a channel object. -pub fn channel(chan: isize) -> Channel { +pub fn channel(chan: i32) -> Channel { Channel(chan) } /// Set the number of channels being mixed. -pub fn allocate_channels(numchans: isize) -> isize { - unsafe { ffi::Mix_AllocateChannels(numchans as c_int) as isize } +pub fn allocate_channels(numchans: i32) -> i32 { + unsafe { ffi::Mix_AllocateChannels(numchans as c_int) as i32 } } static mut channel_finished_callback: Option = None; @@ -345,7 +345,7 @@ extern "C" fn c_channel_finished_callback(ch: c_int) { unsafe { match channel_finished_callback { None => (), - Some(cb) => cb(Channel(ch as isize)), + Some(cb) => cb(Channel(ch as i32)), } } } @@ -379,23 +379,23 @@ impl Channel { } /// Set the volume for any allocated channel. - pub fn set_volume(self, volume: isize) -> isize { + pub fn set_volume(self, volume: i32) -> i32 { let Channel(ch) = self; - unsafe { ffi::Mix_Volume(ch as c_int, volume as c_int) as isize } + unsafe { ffi::Mix_Volume(ch as c_int, volume as c_int) as i32 } } /// Returns the channels volume on scale of 0 to 128. - pub fn get_volume(self) -> isize { + pub fn get_volume(self) -> i32 { let Channel(ch) = self; - unsafe { ffi::Mix_Volume(ch as c_int, -1) as isize } + unsafe { ffi::Mix_Volume(ch as c_int, -1) as i32 } } /// Play chunk on channel, or if channel is -1, pick the first free unreserved channel. - pub fn play(self, chunk: &Chunk, loops: isize) -> Result { + pub fn play(self, chunk: &Chunk, loops: i32) -> Result { self.play_timed(chunk, loops, -1) } - pub fn play_timed(self, chunk: &Chunk, loops: isize, ticks: isize) -> Result { + pub fn play_timed(self, chunk: &Chunk, loops: i32, ticks: i32) -> Result { let Channel(ch) = self; let ret = unsafe { ffi::Mix_PlayChannelTimed(ch as c_int, chunk.raw, loops as c_int, ticks as c_int) @@ -403,20 +403,20 @@ impl Channel { if ret == -1 { Err(get_error()) } else { - Ok(Channel(ret as isize)) + Ok(Channel(ret as i32)) } } /// Play chunk on channel, or if channel is -1, pick the first free unreserved channel. - pub fn fade_in(self, chunk: &Chunk, loops: isize, ms: isize) -> Result { + pub fn fade_in(self, chunk: &Chunk, loops: i32, ms: i32) -> Result { self.fade_in_timed(chunk, loops, ms, -1) } pub fn fade_in_timed(self, chunk: &Chunk, - loops: isize, - ms: isize, - ticks: isize) + loops: i32, + ms: i32, + ticks: i32) -> Result { let Channel(ch) = self; let ret = unsafe { @@ -429,7 +429,7 @@ impl Channel { if ret == -1 { Err(get_error()) } else { - Ok(Channel(ret as isize)) + Ok(Channel(ret as i32)) } } @@ -458,15 +458,15 @@ impl Channel { } /// Halt channel playback, after ticks milliseconds. - pub fn expire(self, ticks: isize) -> isize { + pub fn expire(self, ticks: i32) -> i32 { let Channel(ch) = self; - unsafe { ffi::Mix_ExpireChannel(ch as c_int, ticks as c_int) as isize } + unsafe { ffi::Mix_ExpireChannel(ch as c_int, ticks as c_int) as i32 } } /// Gradually fade out which channel over ms milliseconds starting from now. - pub fn fade_out(self, ms: isize) -> isize { + pub fn fade_out(self, ms: i32) -> i32 { let Channel(ch) = self; - unsafe { ffi::Mix_FadeOutChannel(ch as c_int, ms as c_int) as isize } + unsafe { ffi::Mix_FadeOutChannel(ch as c_int, ms as c_int) as i32 } } /// if channel is playing, or not. @@ -601,26 +601,26 @@ impl Channel { } /// Returns how many channels are currently playing. -pub fn get_playing_channels_number() -> isize { - unsafe { ffi::Mix_Playing(-1) as isize } +pub fn get_playing_channels_number() -> i32 { + unsafe { ffi::Mix_Playing(-1) as i32 } } /// Returns how many channels are currently paused. -pub fn get_paused_channels_number() -> isize { - unsafe { ffi::Mix_Paused(-1) as isize } +pub fn get_paused_channels_number() -> i32 { + unsafe { ffi::Mix_Paused(-1) as i32 } } // 4.4 Groups /// Reserve num channels from being used when playing samples when /// passing in -1 as a channel number to playback functions. -pub fn reserve_channels(num: isize) -> isize { - unsafe { ffi::Mix_ReserveChannels(num as c_int) as isize } +pub fn reserve_channels(num: i32) -> i32 { + unsafe { ffi::Mix_ReserveChannels(num as c_int) as i32 } } /// Sound effect channel grouping. #[derive(Copy, Clone)] -pub struct Group(isize); +pub struct Group(i32); impl default::Default for Group { fn default() -> Group { @@ -631,9 +631,9 @@ impl default::Default for Group { impl Group { /// Add channels starting at from up through to to group tag, /// or reset it's group to the default group tag (-1). - pub fn add_channels_range(self, from: isize, to: isize) -> isize { + pub fn add_channels_range(self, from: i32, to: i32) -> i32 { let Group(g) = self; - unsafe { ffi::Mix_GroupChannels(from as c_int, to as c_int, g as c_int) as isize } + unsafe { ffi::Mix_GroupChannels(from as c_int, to as c_int, g as c_int) as i32 } } /// Add which channel to group tag, or reset it's group to the default group tag @@ -643,15 +643,15 @@ impl Group { } /// Count the number of channels in group - pub fn count(self) -> isize { + pub fn count(self) -> i32 { let Group(g) = self; - unsafe { ffi::Mix_GroupCount(g as c_int) as isize } + unsafe { ffi::Mix_GroupCount(g as c_int) as i32 } } /// Find the first available (not playing) channel in group pub fn find_available(self) -> Option { let Group(g) = self; - let ret = unsafe { ffi::Mix_GroupAvailable(g as c_int) as isize }; + let ret = unsafe { ffi::Mix_GroupAvailable(g as c_int) as i32 }; if ret == -1 { None } else { @@ -662,7 +662,7 @@ impl Group { /// Find the oldest actively playing channel in group pub fn find_oldest(self) -> Option { let Group(g) = self; - let ret = unsafe { ffi::Mix_GroupOldest(g as c_int) as isize }; + let ret = unsafe { ffi::Mix_GroupOldest(g as c_int) as i32 }; if ret == -1 { None } else { @@ -673,7 +673,7 @@ impl Group { /// Find the newest, most recently started, actively playing channel in group. pub fn find_newest(self) -> Option { let Group(g) = self; - let ret = unsafe { ffi::Mix_GroupNewer(g as c_int) as isize }; + let ret = unsafe { ffi::Mix_GroupNewer(g as c_int) as i32 }; if ret == -1 { None } else { @@ -683,9 +683,9 @@ impl Group { /// Gradually fade out channels in group over some milliseconds starting from now. /// Returns the number of channels set to fade out. - pub fn fade_out(self, ms: isize) -> isize { + pub fn fade_out(self, ms: i32) -> i32 { let Group(g) = self; - unsafe { ffi::Mix_FadeOutGroup(g as c_int, ms as c_int) as isize } + unsafe { ffi::Mix_FadeOutGroup(g as c_int, ms as c_int) as i32 } } /// Halt playback on all channels in group. @@ -700,12 +700,12 @@ impl Group { // 4.5 Music /// Get the number of music decoders available. -pub fn get_music_decoders_number() -> isize { - unsafe { ffi::Mix_GetNumMusicDecoders() as isize } +pub fn get_music_decoders_number() -> i32 { + unsafe { ffi::Mix_GetNumMusicDecoders() as i32 } } /// Get the name of the indexed music decoder. -pub fn get_music_decoder(index: isize) -> String { +pub fn get_music_decoder(index: i32) -> String { unsafe { let name = ffi::Mix_GetMusicDecoder(index as c_int); from_utf8(CStr::from_ptr(name).to_bytes()).unwrap().to_owned() @@ -713,19 +713,19 @@ pub fn get_music_decoder(index: isize) -> String { } /// Music type enumerations -#[repr(C)] +#[repr(i32)] #[derive(Copy, Clone, PartialEq, Hash, Debug)] pub enum MusicType { - MusicNone = ffi::MUS_NONE as isize, - MusicCmd = ffi::MUS_CMD as isize, - MusicWav = ffi::MUS_WAV as isize, - MusicMod = ffi::MUS_MOD as isize, - MusicMid = ffi::MUS_MID as isize, - MusicOgg = ffi::MUS_OGG as isize, - MusicMp3 = ffi::MUS_MP3 as isize, - MusicMp3Mad = ffi::MUS_MP3_MAD as isize, - MusicFlac = ffi::MUS_FLAC as isize, - MusicModPlug = ffi::MUS_MODPLUG as isize, + MusicNone = ffi::MUS_NONE as i32, + MusicCmd = ffi::MUS_CMD as i32, + MusicWav = ffi::MUS_WAV as i32, + MusicMod = ffi::MUS_MOD as i32, + MusicMid = ffi::MUS_MID as i32, + MusicOgg = ffi::MUS_OGG as i32, + MusicMp3 = ffi::MUS_MP3 as i32, + MusicMp3Mad = ffi::MUS_MP3_MAD as i32, + MusicFlac = ffi::MUS_FLAC as i32, + MusicModPlug = ffi::MUS_MODPLUG as i32, } // hooks @@ -781,7 +781,7 @@ impl Music { /// The file format encoding of the music. pub fn get_type(&self) -> MusicType { - let ret = unsafe { ffi::Mix_GetMusicType(self.raw) as isize } as c_uint; + let ret = unsafe { ffi::Mix_GetMusicType(self.raw) as i32 } as c_uint; match ret { ffi::MUS_CMD => MusicType::MusicCmd, ffi::MUS_WAV => MusicType::MusicWav, @@ -797,7 +797,7 @@ impl Music { } /// Play the loaded music loop times through from start to finish. - pub fn play(&self, loops: isize) -> Result<(), String> { + pub fn play(&self, loops: i32) -> Result<(), String> { let ret = unsafe { ffi::Mix_PlayMusic(self.raw, loops as c_int) }; if ret == -1 { Err(get_error()) @@ -808,7 +808,7 @@ impl Music { /// Fade in over ms milliseconds of time, the loaded music, /// playing it loop times through from start to finish. - pub fn fade_in(&self, loops: isize, ms: isize) -> Result<(), String> { + pub fn fade_in(&self, loops: i32, ms: i32) -> Result<(), String> { let ret = unsafe { ffi::Mix_FadeInMusic(self.raw, loops as c_int, ms as c_int) }; if ret == -1 { Err(get_error()) @@ -818,7 +818,7 @@ impl Music { } /// Fade in over ms milliseconds of time, from position. - pub fn fade_in_from_pos(&self, loops: isize, ms: isize, position: f64) -> Result<(), String> { + pub fn fade_in_from_pos(&self, loops: i32, ms: i32, position: f64) -> Result<(), String> { let ret = unsafe { ffi::Mix_FadeInMusicPos(self.raw, loops as c_int, ms as c_int, position as c_double) }; @@ -831,15 +831,15 @@ impl Music { // FIXME: make these class method? /// Returns current volume - pub fn get_volume() -> isize { - unsafe { ffi::Mix_VolumeMusic(-1) as isize } + pub fn get_volume() -> i32 { + unsafe { ffi::Mix_VolumeMusic(-1) as i32 } } /// Set the volume on a scale of 0 to 128. /// Values greater than 128 will use 128. - pub fn set_volume(volume: isize) { + pub fn set_volume(volume: i32) { // This shouldn't return anything. Use get_volume instead - let _ = unsafe { ffi::Mix_VolumeMusic(volume as c_int) as isize }; + let _ = unsafe { ffi::Mix_VolumeMusic(volume as c_int) as i32 }; } /// Pause the music playback. @@ -894,7 +894,7 @@ impl Music { } /// Gradually fade out the music over ms milliseconds starting from now. - pub fn fade_out(ms: isize) -> Result<(), String> { + pub fn fade_out(ms: i32) -> Result<(), String> { let ret = unsafe { ffi::Mix_FadeOutMusic(ms as c_int) }; if ret == -1 { Err(get_error()) @@ -945,7 +945,7 @@ impl Music { /// If music is fading, or not. pub fn get_fading() -> Fading { - let ret = unsafe { ffi::Mix_FadingMusic() as isize } as c_uint; + let ret = unsafe { ffi::Mix_FadingMusic() as i32 } as c_uint; match ret { ffi::MIX_FADING_OUT => Fading::FadingOut, ffi::MIX_FADING_IN => Fading::FadingIn, diff --git a/src/sdl2/mouse/mod.rs b/src/sdl2/mouse/mod.rs index 588907bd3b4..aab9d565de7 100644 --- a/src/sdl2/mouse/mod.rs +++ b/src/sdl2/mouse/mod.rs @@ -1,4 +1,3 @@ -use num::{ToPrimitive, FromPrimitive}; use std::ptr; use get_error; @@ -14,18 +13,18 @@ pub use self::relative::RelativeMouseState; #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] #[repr(u32)] pub enum SystemCursor { - Arrow = ll::SDL_SYSTEM_CURSOR_ARROW, - IBeam = ll::SDL_SYSTEM_CURSOR_IBEAM, - Wait = ll::SDL_SYSTEM_CURSOR_WAIT, - Crosshair = ll::SDL_SYSTEM_CURSOR_CROSSHAIR, - WaitArrow = ll::SDL_SYSTEM_CURSOR_WAITARROW, - SizeNWSE = ll::SDL_SYSTEM_CURSOR_SIZENWSE, - SizeNESW = ll::SDL_SYSTEM_CURSOR_SIZENESW, - SizeWE = ll::SDL_SYSTEM_CURSOR_SIZEWE, - SizeNS = ll::SDL_SYSTEM_CURSOR_SIZENS, - SizeAll = ll::SDL_SYSTEM_CURSOR_SIZEALL, - No = ll::SDL_SYSTEM_CURSOR_NO, - Hand = ll::SDL_SYSTEM_CURSOR_HAND, + Arrow = ll::SDL_SYSTEM_CURSOR_ARROW as u32, + IBeam = ll::SDL_SYSTEM_CURSOR_IBEAM as u32, + Wait = ll::SDL_SYSTEM_CURSOR_WAIT as u32, + Crosshair = ll::SDL_SYSTEM_CURSOR_CROSSHAIR as u32, + WaitArrow = ll::SDL_SYSTEM_CURSOR_WAITARROW as u32, + SizeNWSE = ll::SDL_SYSTEM_CURSOR_SIZENWSE as u32, + SizeNESW = ll::SDL_SYSTEM_CURSOR_SIZENESW as u32, + SizeWE = ll::SDL_SYSTEM_CURSOR_SIZEWE as u32, + SizeNS = ll::SDL_SYSTEM_CURSOR_SIZENS as u32, + SizeAll = ll::SDL_SYSTEM_CURSOR_SIZEALL as u32, + No = ll::SDL_SYSTEM_CURSOR_NO as u32, + Hand = ll::SDL_SYSTEM_CURSOR_HAND as u32, } pub struct Cursor { @@ -128,56 +127,29 @@ impl MouseWheelDirection { } } +#[repr(u8)] #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub enum MouseButton { - Left = ll::SDL_BUTTON_LEFT as isize, - Middle = ll::SDL_BUTTON_MIDDLE as isize, - Right = ll::SDL_BUTTON_RIGHT as isize, - X1 = ll::SDL_BUTTON_X1 as isize, - X2 = ll::SDL_BUTTON_X2 as isize, -} - -impl ToPrimitive for MouseButton { - #[inline] - fn to_i64(&self) -> Option { - Some(*self as i64) - } - - #[inline] - fn to_u64(&self) -> Option { - Some(*self as u64) - } - - #[inline] - fn to_isize(&self) -> Option { - Some(*self as isize) - } -} - -impl FromPrimitive for MouseButton { - #[inline] - fn from_i64(n: i64) -> Option { MouseButton::from_ll(n as u8) } - #[inline] - fn from_u64(n: u64) -> Option { MouseButton::from_ll(n as u8) } + Unknown = 0, + Left = ll::SDL_BUTTON_LEFT as u8, + Middle = ll::SDL_BUTTON_MIDDLE as u8, + Right = ll::SDL_BUTTON_RIGHT as u8, + X1 = ll::SDL_BUTTON_X1 as u8, + X2 = ll::SDL_BUTTON_X2 as u8, } impl MouseButton { #[inline] - pub fn from_ll(button: u8) -> Option { - Some(match button { + pub fn from_ll(button: u8) -> MouseButton { + match button { ll::SDL_BUTTON_LEFT => MouseButton::Left, ll::SDL_BUTTON_MIDDLE => MouseButton::Middle, ll::SDL_BUTTON_RIGHT => MouseButton::Right, ll::SDL_BUTTON_X1 => MouseButton::X1, ll::SDL_BUTTON_X2 => MouseButton::X2, - _ => return None, - }) - } - #[inline] - pub fn to_ll(&self) -> Option { - Some(*self as u8) + _ => MouseButton::Unknown, + } } - } #[derive(Copy, Clone, Eq, PartialEq, Hash)] @@ -275,7 +247,7 @@ impl MouseState { /// ``` pub fn mouse_buttons(&self) -> MouseButtonIterator { MouseButtonIterator { - index: 0, + cur_button: 1, mouse_state: &self.mouse_state } } @@ -304,7 +276,7 @@ impl MouseState { } pub struct MouseButtonIterator<'a> { - index: usize, + cur_button: u8, mouse_state: &'a u32 } @@ -312,18 +284,12 @@ impl<'a> Iterator for MouseButtonIterator<'a> { type Item = (MouseButton, bool); fn next(&mut self) -> Option<(MouseButton, bool)> { - if self.index < MouseButton::X2 as usize +1 { - let index = self.index; - self.index += 1; - - if let Some(mouse_button) = FromPrimitive::from_usize(index) { - let mask = 1 << ((mouse_button as u32)-1); - let pressed = self.mouse_state & mask != 0; - - Some((mouse_button, pressed)) - } else { - self.next() - } + if self.cur_button < MouseButton::X2 as u8 + 1 { + let mouse_button = self.cur_button; + let mask = 1 << ((self.cur_button as u32)-1); + let pressed = self.mouse_state & mask != 0; + self.cur_button += 1; + Some((MouseButton::from_ll(mouse_button), pressed)) } else { None } diff --git a/src/sdl2/mouse/relative.rs b/src/sdl2/mouse/relative.rs index f73f1865eb6..c72e3157686 100644 --- a/src/sdl2/mouse/relative.rs +++ b/src/sdl2/mouse/relative.rs @@ -100,7 +100,7 @@ impl RelativeMouseState { /// ``` pub fn mouse_buttons(&self) -> MouseButtonIterator { MouseButtonIterator { - index: 0, + cur_button: 1, mouse_state: &self.mouse_state } } diff --git a/src/sdl2/pixels.rs b/src/sdl2/pixels.rs index b3bf3428ddb..a87969a4bd6 100644 --- a/src/sdl2/pixels.rs +++ b/src/sdl2/pixels.rs @@ -163,44 +163,45 @@ pub struct PixelFormat { impl_raw_accessors!((PixelFormat, *mut ll::SDL_PixelFormat)); impl_raw_constructor!((PixelFormat, PixelFormat (raw: *mut ll::SDL_PixelFormat))); +#[repr(i32)] #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub enum PixelFormatEnum { - Unknown = ll::SDL_PIXELFORMAT_UNKNOWN as isize, - Index1LSB = ll::SDL_PIXELFORMAT_INDEX1LSB as isize, - Index1MSB = ll::SDL_PIXELFORMAT_INDEX1MSB as isize, - Index4LSB = ll::SDL_PIXELFORMAT_INDEX4LSB as isize, - Index4MSB = ll::SDL_PIXELFORMAT_INDEX4MSB as isize, - Index8 = ll::SDL_PIXELFORMAT_INDEX8 as isize, - RGB332 = ll::SDL_PIXELFORMAT_RGB332 as isize, - RGB444 = ll::SDL_PIXELFORMAT_RGB444 as isize, - RGB555 = ll::SDL_PIXELFORMAT_RGB555 as isize, - BGR555 = ll::SDL_PIXELFORMAT_BGR555 as isize, - ARGB4444 = ll::SDL_PIXELFORMAT_ARGB4444 as isize, - RGBA4444 = ll::SDL_PIXELFORMAT_RGBA4444 as isize, - ABGR4444 = ll::SDL_PIXELFORMAT_ABGR4444 as isize, - BGRA4444 = ll::SDL_PIXELFORMAT_BGRA4444 as isize, - ARGB1555 = ll::SDL_PIXELFORMAT_ARGB1555 as isize, - RGBA5551 = ll::SDL_PIXELFORMAT_RGBA5551 as isize, - ABGR1555 = ll::SDL_PIXELFORMAT_ABGR1555 as isize, - BGRA5551 = ll::SDL_PIXELFORMAT_BGRA5551 as isize, - RGB565 = ll::SDL_PIXELFORMAT_RGB565 as isize, - BGR565 = ll::SDL_PIXELFORMAT_BGR565 as isize, - RGB24 = ll::SDL_PIXELFORMAT_RGB24 as isize, - BGR24 = ll::SDL_PIXELFORMAT_BGR24 as isize, - RGB888 = ll::SDL_PIXELFORMAT_RGB888 as isize, - RGBX8888 = ll::SDL_PIXELFORMAT_RGBX8888 as isize, - BGR888 = ll::SDL_PIXELFORMAT_BGR888 as isize, - BGRX8888 = ll::SDL_PIXELFORMAT_BGRX8888 as isize, - ARGB8888 = ll::SDL_PIXELFORMAT_ARGB8888 as isize, - RGBA8888 = ll::SDL_PIXELFORMAT_RGBA8888 as isize, - ABGR8888 = ll::SDL_PIXELFORMAT_ABGR8888 as isize, - BGRA8888 = ll::SDL_PIXELFORMAT_BGRA8888 as isize, - ARGB2101010 = ll::SDL_PIXELFORMAT_ARGB2101010 as isize, - YV12 = ll::SDL_PIXELFORMAT_YV12 as isize, - IYUV = ll::SDL_PIXELFORMAT_IYUV as isize, - YUY2 = ll::SDL_PIXELFORMAT_YUY2 as isize, - UYVY = ll::SDL_PIXELFORMAT_UYVY as isize, - YVYU = ll::SDL_PIXELFORMAT_YVYU as isize + Unknown = ll::SDL_PIXELFORMAT_UNKNOWN as i32, + Index1LSB = ll::SDL_PIXELFORMAT_INDEX1LSB as i32, + Index1MSB = ll::SDL_PIXELFORMAT_INDEX1MSB as i32, + Index4LSB = ll::SDL_PIXELFORMAT_INDEX4LSB as i32, + Index4MSB = ll::SDL_PIXELFORMAT_INDEX4MSB as i32, + Index8 = ll::SDL_PIXELFORMAT_INDEX8 as i32, + RGB332 = ll::SDL_PIXELFORMAT_RGB332 as i32, + RGB444 = ll::SDL_PIXELFORMAT_RGB444 as i32, + RGB555 = ll::SDL_PIXELFORMAT_RGB555 as i32, + BGR555 = ll::SDL_PIXELFORMAT_BGR555 as i32, + ARGB4444 = ll::SDL_PIXELFORMAT_ARGB4444 as i32, + RGBA4444 = ll::SDL_PIXELFORMAT_RGBA4444 as i32, + ABGR4444 = ll::SDL_PIXELFORMAT_ABGR4444 as i32, + BGRA4444 = ll::SDL_PIXELFORMAT_BGRA4444 as i32, + ARGB1555 = ll::SDL_PIXELFORMAT_ARGB1555 as i32, + RGBA5551 = ll::SDL_PIXELFORMAT_RGBA5551 as i32, + ABGR1555 = ll::SDL_PIXELFORMAT_ABGR1555 as i32, + BGRA5551 = ll::SDL_PIXELFORMAT_BGRA5551 as i32, + RGB565 = ll::SDL_PIXELFORMAT_RGB565 as i32, + BGR565 = ll::SDL_PIXELFORMAT_BGR565 as i32, + RGB24 = ll::SDL_PIXELFORMAT_RGB24 as i32, + BGR24 = ll::SDL_PIXELFORMAT_BGR24 as i32, + RGB888 = ll::SDL_PIXELFORMAT_RGB888 as i32, + RGBX8888 = ll::SDL_PIXELFORMAT_RGBX8888 as i32, + BGR888 = ll::SDL_PIXELFORMAT_BGR888 as i32, + BGRX8888 = ll::SDL_PIXELFORMAT_BGRX8888 as i32, + ARGB8888 = ll::SDL_PIXELFORMAT_ARGB8888 as i32, + RGBA8888 = ll::SDL_PIXELFORMAT_RGBA8888 as i32, + ABGR8888 = ll::SDL_PIXELFORMAT_ABGR8888 as i32, + BGRA8888 = ll::SDL_PIXELFORMAT_BGRA8888 as i32, + ARGB2101010 = ll::SDL_PIXELFORMAT_ARGB2101010 as i32, + YV12 = ll::SDL_PIXELFORMAT_YV12 as i32, + IYUV = ll::SDL_PIXELFORMAT_IYUV as i32, + YUY2 = ll::SDL_PIXELFORMAT_YUY2 as i32, + UYVY = ll::SDL_PIXELFORMAT_UYVY as i32, + YVYU = ll::SDL_PIXELFORMAT_YVYU as i32 } impl PixelFormatEnum { diff --git a/src/sdl2/render.rs b/src/sdl2/render.rs index fb439185c8c..6403a52bbeb 100644 --- a/src/sdl2/render.rs +++ b/src/sdl2/render.rs @@ -51,10 +51,11 @@ use common::{validate_int, IntegerOrSdlError}; use sys::render as ll; #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] +#[repr(i32)] pub enum TextureAccess { - Static = ll::SDL_TEXTUREACCESS_STATIC as isize, - Streaming = ll::SDL_TEXTUREACCESS_STREAMING as isize, - Target = ll::SDL_TEXTUREACCESS_TARGET as isize + Static = ll::SDL_TEXTUREACCESS_STATIC as i32, + Streaming = ll::SDL_TEXTUREACCESS_STREAMING as i32, + Target = ll::SDL_TEXTUREACCESS_TARGET as i32 } impl FromPrimitive for TextureAccess { @@ -83,12 +84,13 @@ pub struct RendererInfo { pub max_texture_height: u32 } +#[repr(i32)] #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub enum BlendMode { - None = ll::SDL_BLENDMODE_NONE as isize, - Blend = ll::SDL_BLENDMODE_BLEND as isize, - Add = ll::SDL_BLENDMODE_ADD as isize, - Mod = ll::SDL_BLENDMODE_MOD as isize + None = ll::SDL_BLENDMODE_NONE as i32, + Blend = ll::SDL_BLENDMODE_BLEND as i32, + Add = ll::SDL_BLENDMODE_ADD as i32, + Mod = ll::SDL_BLENDMODE_MOD as i32 } impl FromPrimitive for BlendMode { diff --git a/src/sdl2/sdl.rs b/src/sdl2/sdl.rs index d8ef7d57199..96937eb5765 100644 --- a/src/sdl2/sdl.rs +++ b/src/sdl2/sdl.rs @@ -4,13 +4,14 @@ use libc::c_char; use sys::sdl as ll; +#[repr(i32)] #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub enum Error { - NoMemError = ll::SDL_ENOMEM as isize, - ReadError = ll::SDL_EFREAD as isize, - WriteError = ll::SDL_EFWRITE as isize, - SeekError = ll::SDL_EFSEEK as isize, - UnsupportedError = ll::SDL_UNSUPPORTED as isize + NoMemError = ll::SDL_ENOMEM as i32, + ReadError = ll::SDL_EFREAD as i32, + WriteError = ll::SDL_EFWRITE as i32, + SeekError = ll::SDL_EFSEEK as i32, + UnsupportedError = ll::SDL_UNSUPPORTED as i32 } use std::sync::atomic::{AtomicBool, ATOMIC_BOOL_INIT}; diff --git a/src/sdl2/ttf/font.rs b/src/sdl2/ttf/font.rs index 0afc619a60c..421d37ffe0b 100644 --- a/src/sdl2/ttf/font.rs +++ b/src/sdl2/ttf/font.rs @@ -26,23 +26,24 @@ fn color_to_c_color(color: Color) -> SDL_Color { // Absolute paths are a workaround for https://github.com/rust-lang-nursery/bitflags/issues/39 . bitflags! { /// The styling of a font. - pub flags FontStyle: ::std::os::raw::c_int { - const STYLE_NORMAL = ffi::TTF_STYLE_NORMAL, - const STYLE_BOLD = ffi::TTF_STYLE_BOLD, - const STYLE_ITALIC = ffi::TTF_STYLE_ITALIC, - const STYLE_UNDERLINE = ffi::TTF_STYLE_UNDERLINE, - const STYLE_STRIKETHROUGH = ffi::TTF_STYLE_STRIKETHROUGH, + pub flags FontStyle: i32 { + const STYLE_NORMAL = ffi::TTF_STYLE_NORMAL as i32, + const STYLE_BOLD = ffi::TTF_STYLE_BOLD as i32, + const STYLE_ITALIC = ffi::TTF_STYLE_ITALIC as i32, + const STYLE_UNDERLINE = ffi::TTF_STYLE_UNDERLINE as i32, + const STYLE_STRIKETHROUGH = ffi::TTF_STYLE_STRIKETHROUGH as i32, } } /// Information about the hinting of a font. /// See [wikipedia](https://en.wikipedia.org/wiki/Font_hinting) +#[repr(i32)] #[derive(Debug, PartialEq, Clone)] pub enum Hinting { - Normal = ffi::TTF_HINTING_NORMAL as isize, - Light = ffi::TTF_HINTING_LIGHT as isize, - Mono = ffi::TTF_HINTING_MONO as isize, - None = ffi::TTF_HINTING_NONE as isize + Normal = ffi::TTF_HINTING_NORMAL as i32, + Light = ffi::TTF_HINTING_LIGHT as i32, + Mono = ffi::TTF_HINTING_MONO as i32, + None = ffi::TTF_HINTING_NONE as i32, } /// Information about a specific glyph (character) in a font face. @@ -385,14 +386,14 @@ impl<'a> Font<'a> { pub fn get_style(&self) -> FontStyle { unsafe { let raw = ffi::TTF_GetFontStyle(self.raw); - FontStyle::from_bits_truncate(raw) + FontStyle::from_bits_truncate(raw as i32) } } /// Sets the font's style flags. pub fn set_style(&mut self, styles: FontStyle) { unsafe { - ffi::TTF_SetFontStyle(self.raw, styles.bits()) + ffi::TTF_SetFontStyle(self.raw, styles.bits() as c_int) } }