From c25b1ed0559cdf86335ee922453b214c09e83773 Mon Sep 17 00:00:00 2001 From: "Igor S. Gerasimov" Date: Thu, 25 Sep 2025 18:32:36 +0200 Subject: [PATCH 1/2] Use sdl2_c_types instead of iso_c_binding --- src/c_util.F90 | 56 ---- src/glu.f90 | 2 +- src/sdl2.f90 | 6 +- src/sdl2/sdl2_audio.f90 | 3 +- src/sdl2/sdl2_blendmode.f90 | 13 +- src/sdl2/sdl2_c_types.F90 | 71 +++++ src/sdl2/sdl2_cpuinfo.f90 | 3 +- src/sdl2/sdl2_error.f90 | 3 +- src/sdl2/sdl2_events.f90 | 156 +++++----- src/sdl2/sdl2_filesystem.f90 | 3 +- src/sdl2/sdl2_gamecontroller.f90 | 4 +- src/sdl2/sdl2_hints.f90 | 3 +- src/sdl2/sdl2_joystick.f90 | 2 +- src/sdl2/sdl2_keyboard.f90 | 3 +- src/sdl2/sdl2_keycode.f90 | 485 +++++++++++++++--------------- src/sdl2/sdl2_log.f90 | 3 +- src/sdl2/sdl2_messagebox.f90 | 4 +- src/sdl2/sdl2_mouse.f90 | 4 +- src/sdl2/sdl2_opengl.f90 | 4 +- src/sdl2/sdl2_pixels.f90 | 86 +++--- src/sdl2/sdl2_platform.f90 | 3 +- src/sdl2/sdl2_rect.f90 | 2 +- src/sdl2/sdl2_render.f90 | 22 +- src/sdl2/sdl2_rwops.f90 | 2 +- src/sdl2/sdl2_scancode.f90 | 491 ++++++++++++++++--------------- src/sdl2/sdl2_stdinc.f90 | 20 +- src/sdl2/sdl2_surface.f90 | 6 +- src/sdl2/sdl2_thread.f90 | 2 +- src/sdl2/sdl2_timer.f90 | 5 +- src/sdl2/sdl2_version.f90 | 6 +- src/sdl2/sdl2_video.f90 | 4 +- src/sdl2_image.f90 | 3 +- src/sdl2_mixer.f90 | 78 ++--- src/sdl2_ttf.f90 | 2 +- 34 files changed, 800 insertions(+), 760 deletions(-) delete mode 100644 src/c_util.F90 create mode 100644 src/sdl2/sdl2_c_types.F90 diff --git a/src/c_util.F90 b/src/c_util.F90 deleted file mode 100644 index 28445e3..0000000 --- a/src/c_util.F90 +++ /dev/null @@ -1,56 +0,0 @@ -! c_util.F90 -! -! Types aliases and interfaces to libc for C interoperability. -! -! Author: Philipp Engel -! GitHub: https://github.com/interkosmos/fortran-sdl2/ -! Licence: ISC -module c_util - -#if defined (__flang__) || (defined (__GFORTRAN__) && __GNUC__ > 15) || (defined (__GFORTRAN__) && __GNUC__ == 15 && __GNUC_MINOR__ >= 2) - - use, intrinsic :: iso_c_binding, only: c_uint8_t, c_uint16_t, c_uint32_t, c_uint64_t, c_unsigned, c_unsigned_char, & - c_unsigned_long, c_unsigned_long_long, c_unsigned_short - implicit none - private - - public :: c_uint8_t - public :: c_uint16_t - public :: c_uint32_t - public :: c_uint64_t - public :: c_unsigned - public :: c_unsigned_char - public :: c_unsigned_long - public :: c_unsigned_long_long - public :: c_unsigned_short - -#else - - use, intrinsic :: iso_c_binding, only: c_int8_t, c_int16_t, c_int32_t, c_int64_t, c_int, c_signed_char, & - c_long, c_long_long, c_short - implicit none - private - - integer, parameter, public :: c_uint8_t = c_int8_t - integer, parameter, public :: c_uint16_t = c_int16_t - integer, parameter, public :: c_uint32_t = c_int32_t - integer, parameter, public :: c_uint64_t = c_int64_t - integer, parameter, public :: c_unsigned = c_int - integer, parameter, public :: c_unsigned_char = c_signed_char - integer, parameter, public :: c_unsigned_long = c_long - integer, parameter, public :: c_unsigned_long_long = c_long_long - integer, parameter, public :: c_unsigned_short = c_short - -#endif - - public :: c_strlen - - ! Foreign function interfaces to libc. - interface - function c_strlen(str) bind(c, name='strlen') - use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t - type(c_ptr), intent(in), value :: str - integer(kind=c_size_t) :: c_strlen - end function c_strlen - end interface -end module c_util diff --git a/src/glu.f90 b/src/glu.f90 index 50208ea..12991f9 100644 --- a/src/glu.f90 +++ b/src/glu.f90 @@ -6,7 +6,7 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module glu - use, intrinsic :: iso_c_binding + use sdl2_c_types, only: c_ptr, c_int use :: sdl2_opengl implicit none private diff --git a/src/sdl2.f90 b/src/sdl2.f90 index aab6374..860ad97 100644 --- a/src/sdl2.f90 +++ b/src/sdl2.f90 @@ -6,9 +6,9 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2 - use, intrinsic :: iso_c_binding use, intrinsic :: iso_fortran_env, only: i2 => int16, i4 => int32, i8 => int64 - use :: c_util + use, intrinsic :: iso_c_binding, only: c_associated, c_f_pointer + use :: sdl2_c_types, only: c_int, c_int8_t, c_int32_t, c_uint8_t, c_uint32_t, c_size_t, c_null_char, c_null_ptr use :: sdl2_audio use :: sdl2_blendmode use :: sdl2_cpuinfo @@ -30,7 +30,7 @@ module sdl2 use :: sdl2_render use :: sdl2_rwops use :: sdl2_scancode - use :: sdl2_stdinc + use :: sdl2_stdinc, only: c_strlen use :: sdl2_surface use :: sdl2_thread use :: sdl2_timer diff --git a/src/sdl2/sdl2_audio.f90 b/src/sdl2/sdl2_audio.f90 index 4877333..2bd29f2 100644 --- a/src/sdl2/sdl2_audio.f90 +++ b/src/sdl2/sdl2_audio.f90 @@ -6,8 +6,9 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_audio - use, intrinsic :: iso_c_binding, only: c_int, c_ptr + use sdl2_c_types, only: c_ptr, c_int implicit none + private public :: sdl_get_audio_driver_ public :: sdl_get_current_audio_driver_ diff --git a/src/sdl2/sdl2_blendmode.f90 b/src/sdl2/sdl2_blendmode.f90 index 0e82766..9bfe5c0 100644 --- a/src/sdl2/sdl2_blendmode.f90 +++ b/src/sdl2/sdl2_blendmode.f90 @@ -6,13 +6,14 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_blendmode - use, intrinsic :: iso_c_binding, only: c_int + use sdl2_c_types, only: c_int implicit none + private ! SDL_BlendMode - integer(kind=c_int), parameter :: SDL_BLENDMODE_NONE = int(z'00000000') - integer(kind=c_int), parameter :: SDL_BLENDMODE_BLEND = int(z'00000001') - integer(kind=c_int), parameter :: SDL_BLENDMODE_ADD = int(z'00000002') - integer(kind=c_int), parameter :: SDL_BLENDMODE_MOD = int(z'00000004') - integer(kind=c_int), parameter :: SDL_BLENDMODE_INVALID = int(z'7FFFFFFF') + integer(kind=c_int), parameter, public :: SDL_BLENDMODE_NONE = int(z'00000000') + integer(kind=c_int), parameter, public :: SDL_BLENDMODE_BLEND = int(z'00000001') + integer(kind=c_int), parameter, public :: SDL_BLENDMODE_ADD = int(z'00000002') + integer(kind=c_int), parameter, public :: SDL_BLENDMODE_MOD = int(z'00000004') + integer(kind=c_int), parameter, public :: SDL_BLENDMODE_INVALID = int(z'7FFFFFFF') end module sdl2_blendmode diff --git a/src/sdl2/sdl2_c_types.F90 b/src/sdl2/sdl2_c_types.F90 new file mode 100644 index 0000000..627256d --- /dev/null +++ b/src/sdl2/sdl2_c_types.F90 @@ -0,0 +1,71 @@ +! sdl2_c_types.F90 +! +! Types aliases for C interoperability. +! +! Author: Philipp Engel, Igor S. Gerasimov +! GitHub: https://github.com/interkosmos/fortran-sdl2/ +! Licence: ISC +module sdl2_c_types + + use, intrinsic :: iso_c_binding, only: c_int8_t, c_int16_t, c_int32_t, c_int64_t, & + c_char, c_signed_char, c_short, c_int, & + c_long, c_long_long, & + c_ptr, c_funptr, c_null_ptr, c_null_char, & + c_size_t, & + c_float, c_double + +#if HAS_UNSIGNED + + use, intrinsic :: iso_c_binding, only: c_uint8_t, c_uint16_t, c_uint32_t, c_uint64_t, & + c_unsigned_char, c_unsigned, c_unsigned_short, & + c_unsigned_long, c_unsigned_long_long + +#endif + + implicit none + private + +#if !HAS_UNSIGNED + + integer, parameter :: c_uint8_t = c_int8_t + integer, parameter :: c_uint16_t = c_int16_t + integer, parameter :: c_uint32_t = c_int32_t + integer, parameter :: c_uint64_t = c_int64_t + integer, parameter :: c_unsigned = c_int + integer, parameter :: c_unsigned_char = c_signed_char + integer, parameter :: c_unsigned_long = c_long + integer, parameter :: c_unsigned_long_long = c_long_long + integer, parameter :: c_unsigned_short = c_short + +#endif + + public :: c_ptr + public :: c_funptr + public :: c_size_t + public :: c_float + public :: c_double + public :: c_null_ptr + public :: c_null_char + + public :: c_int8_t + public :: c_int16_t + public :: c_int32_t + public :: c_int64_t + public :: c_char + public :: c_signed_char + public :: c_short + public :: c_int + public :: c_long + public :: c_long_long + + public :: c_uint8_t + public :: c_uint16_t + public :: c_uint32_t + public :: c_uint64_t + public :: c_unsigned_char + public :: c_unsigned_short + public :: c_unsigned + public :: c_unsigned_long + public :: c_unsigned_long_long + +end module sdl2_c_types diff --git a/src/sdl2/sdl2_cpuinfo.f90 b/src/sdl2/sdl2_cpuinfo.f90 index 8130147..09a9ec9 100644 --- a/src/sdl2/sdl2_cpuinfo.f90 +++ b/src/sdl2/sdl2_cpuinfo.f90 @@ -6,9 +6,10 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_cpuinfo - use, intrinsic :: iso_c_binding + use sdl2_c_types, only: c_int use :: sdl2_stdinc, only: sdl_bool implicit none + private public :: sdl_get_cpu_cache_line_size public :: sdl_get_cpu_count diff --git a/src/sdl2/sdl2_error.f90 b/src/sdl2/sdl2_error.f90 index 571fb3e..42afd74 100644 --- a/src/sdl2/sdl2_error.f90 +++ b/src/sdl2/sdl2_error.f90 @@ -6,8 +6,9 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_error - use, intrinsic :: iso_c_binding, only: c_int, c_ptr + use sdl2_c_types, only: c_ptr implicit none + private public :: sdl_get_error_ diff --git a/src/sdl2/sdl2_events.f90 b/src/sdl2/sdl2_events.f90 index 1053179..58e6883 100644 --- a/src/sdl2/sdl2_events.f90 +++ b/src/sdl2/sdl2_events.f90 @@ -6,69 +6,69 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_events - use, intrinsic :: iso_c_binding - use :: c_util + use sdl2_c_types, only: c_ptr, c_char, c_int, c_uint8_t, c_uint16_t, c_uint32_t, c_int16_t, c_int32_t, c_int64_t, c_float implicit none + private ! SDL_EventType - integer(kind=c_int), parameter :: SDL_FIRSTEVENT = 0 - integer(kind=c_int), parameter :: SDL_QUITEVENT = int(z'100') - integer(kind=c_int), parameter :: SDL_APP_TERMINATING = int(z'101') - integer(kind=c_int), parameter :: SDL_APP_LOWMEMORY = int(z'102') - integer(kind=c_int), parameter :: SDL_APP_WILLENTERBACKGROUND = int(z'103') - integer(kind=c_int), parameter :: SDL_APP_DIDENTERBACKGROUND = int(z'104') - integer(kind=c_int), parameter :: SDL_APP_WILLENTERFOREGROUND = int(z'105') - integer(kind=c_int), parameter :: SDL_APP_DIDENTERFOREGROUND = int(z'106') - integer(kind=c_int), parameter :: SDL_WINDOWEVENT = int(z'200') - integer(kind=c_int), parameter :: SDL_SYSWMEVENT = int(z'201') - integer(kind=c_int), parameter :: SDL_KEYDOWN = int(z'300') - integer(kind=c_int), parameter :: SDL_KEYUP = int(z'301') - integer(kind=c_int), parameter :: SDL_TEXTEDITING = int(z'302') - integer(kind=c_int), parameter :: SDL_TEXTINPUT = int(z'303') - integer(kind=c_int), parameter :: SDL_KEYMAPCHANGED = int(z'304') - integer(kind=c_int), parameter :: SDL_MOUSEMOTION = int(z'400') - integer(kind=c_int), parameter :: SDL_MOUSEBUTTONDOWN = int(z'401') - integer(kind=c_int), parameter :: SDL_MOUSEBUTTONUP = int(z'402') - integer(kind=c_int), parameter :: SDL_MOUSEWHEEL = int(z'403') - integer(kind=c_int), parameter :: SDL_JOYAXISMOTION = int(z'600') - integer(kind=c_int), parameter :: SDL_JOYBALLMOTION = int(z'601') - integer(kind=c_int), parameter :: SDL_JOYHATMOTION = int(z'602') - integer(kind=c_int), parameter :: SDL_JOYBUTTONDOWN = int(z'603') - integer(kind=c_int), parameter :: SDL_JOYBUTTONUP = int(z'604') - integer(kind=c_int), parameter :: SDL_JOYDEVICEADDED = int(z'605') - integer(kind=c_int), parameter :: SDL_JOYDEVICEREMOVED = int(z'606') - integer(kind=c_int), parameter :: SDL_CONTROLLERAXISMOTION = int(z'650') - integer(kind=c_int), parameter :: SDL_CONTROLLERBUTTONDOWN = int(z'651') - integer(kind=c_int), parameter :: SDL_CONTROLLERBUTTONUP = int(z'652') - integer(kind=c_int), parameter :: SDL_CONTROLLERDEVICEADDED = int(z'653') - integer(kind=c_int), parameter :: SDL_CONTROLLERDEVICEREMOVED = int(z'654') - integer(kind=c_int), parameter :: SDL_CONTROLLERDEVICEREMAPPED = int(z'655') - integer(kind=c_int), parameter :: SDL_FINGERDOWN = int(z'700') - integer(kind=c_int), parameter :: SDL_FINGERUP = int(z'701') - integer(kind=c_int), parameter :: SDL_FINGERMOTION = int(z'702') - integer(kind=c_int), parameter :: SDL_DOLLARGESTURE = int(z'800') - integer(kind=c_int), parameter :: SDL_DOLLARRECORD = int(z'801') - integer(kind=c_int), parameter :: SDL_MULTIGESTURE = int(z'802') - integer(kind=c_int), parameter :: SDL_CLIPBOARDUPDATE = int(z'900') - integer(kind=c_int), parameter :: SDL_DROPFILE = int(z'1000') - integer(kind=c_int), parameter :: SDL_DROPTEXT = int(z'1001') - integer(kind=c_int), parameter :: SDL_DROPBEGIN = int(z'1002') - integer(kind=c_int), parameter :: SDL_DROPCOMPLETE = int(z'1003') - integer(kind=c_int), parameter :: SDL_AUDIODEVICEADDED = int(z'1100') - integer(kind=c_int), parameter :: SDL_AUDIODEVICEREMOVED = int(z'1101') - integer(kind=c_int), parameter :: SDL_RENDERTARGETSRESET = int(z'2000') - integer(kind=c_int), parameter :: SDL_RENDERDEVICERESET = int(z'2001') - integer(kind=c_int), parameter :: SDL_USEREVENT = int(z'8000') - integer(kind=c_int), parameter :: SDL_LASTEVEMT = int(z'FFFF') + integer(kind=c_int), parameter, public :: SDL_FIRSTEVENT = 0 + integer(kind=c_int), parameter, public :: SDL_QUITEVENT = int(z'100') + integer(kind=c_int), parameter, public :: SDL_APP_TERMINATING = int(z'101') + integer(kind=c_int), parameter, public :: SDL_APP_LOWMEMORY = int(z'102') + integer(kind=c_int), parameter, public :: SDL_APP_WILLENTERBACKGROUND = int(z'103') + integer(kind=c_int), parameter, public :: SDL_APP_DIDENTERBACKGROUND = int(z'104') + integer(kind=c_int), parameter, public :: SDL_APP_WILLENTERFOREGROUND = int(z'105') + integer(kind=c_int), parameter, public :: SDL_APP_DIDENTERFOREGROUND = int(z'106') + integer(kind=c_int), parameter, public :: SDL_WINDOWEVENT = int(z'200') + integer(kind=c_int), parameter, public :: SDL_SYSWMEVENT = int(z'201') + integer(kind=c_int), parameter, public :: SDL_KEYDOWN = int(z'300') + integer(kind=c_int), parameter, public :: SDL_KEYUP = int(z'301') + integer(kind=c_int), parameter, public :: SDL_TEXTEDITING = int(z'302') + integer(kind=c_int), parameter, public :: SDL_TEXTINPUT = int(z'303') + integer(kind=c_int), parameter, public :: SDL_KEYMAPCHANGED = int(z'304') + integer(kind=c_int), parameter, public :: SDL_MOUSEMOTION = int(z'400') + integer(kind=c_int), parameter, public :: SDL_MOUSEBUTTONDOWN = int(z'401') + integer(kind=c_int), parameter, public :: SDL_MOUSEBUTTONUP = int(z'402') + integer(kind=c_int), parameter, public :: SDL_MOUSEWHEEL = int(z'403') + integer(kind=c_int), parameter, public :: SDL_JOYAXISMOTION = int(z'600') + integer(kind=c_int), parameter, public :: SDL_JOYBALLMOTION = int(z'601') + integer(kind=c_int), parameter, public :: SDL_JOYHATMOTION = int(z'602') + integer(kind=c_int), parameter, public :: SDL_JOYBUTTONDOWN = int(z'603') + integer(kind=c_int), parameter, public :: SDL_JOYBUTTONUP = int(z'604') + integer(kind=c_int), parameter, public :: SDL_JOYDEVICEADDED = int(z'605') + integer(kind=c_int), parameter, public :: SDL_JOYDEVICEREMOVED = int(z'606') + integer(kind=c_int), parameter, public :: SDL_CONTROLLERAXISMOTION = int(z'650') + integer(kind=c_int), parameter, public :: SDL_CONTROLLERBUTTONDOWN = int(z'651') + integer(kind=c_int), parameter, public :: SDL_CONTROLLERBUTTONUP = int(z'652') + integer(kind=c_int), parameter, public :: SDL_CONTROLLERDEVICEADDED = int(z'653') + integer(kind=c_int), parameter, public :: SDL_CONTROLLERDEVICEREMOVED = int(z'654') + integer(kind=c_int), parameter, public :: SDL_CONTROLLERDEVICEREMAPPED = int(z'655') + integer(kind=c_int), parameter, public :: SDL_FINGERDOWN = int(z'700') + integer(kind=c_int), parameter, public :: SDL_FINGERUP = int(z'701') + integer(kind=c_int), parameter, public :: SDL_FINGERMOTION = int(z'702') + integer(kind=c_int), parameter, public :: SDL_DOLLARGESTURE = int(z'800') + integer(kind=c_int), parameter, public :: SDL_DOLLARRECORD = int(z'801') + integer(kind=c_int), parameter, public :: SDL_MULTIGESTURE = int(z'802') + integer(kind=c_int), parameter, public :: SDL_CLIPBOARDUPDATE = int(z'900') + integer(kind=c_int), parameter, public :: SDL_DROPFILE = int(z'1000') + integer(kind=c_int), parameter, public :: SDL_DROPTEXT = int(z'1001') + integer(kind=c_int), parameter, public :: SDL_DROPBEGIN = int(z'1002') + integer(kind=c_int), parameter, public :: SDL_DROPCOMPLETE = int(z'1003') + integer(kind=c_int), parameter, public :: SDL_AUDIODEVICEADDED = int(z'1100') + integer(kind=c_int), parameter, public :: SDL_AUDIODEVICEREMOVED = int(z'1101') + integer(kind=c_int), parameter, public :: SDL_RENDERTARGETSRESET = int(z'2000') + integer(kind=c_int), parameter, public :: SDL_RENDERDEVICERESET = int(z'2001') + integer(kind=c_int), parameter, public :: SDL_USEREVENT = int(z'8000') + integer(kind=c_int), parameter, public :: SDL_LASTEVEMT = int(z'FFFF') ! SDL_CommonEvent - type, bind(c) :: sdl_common_event + type, public, bind(c) :: sdl_common_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp end type sdl_common_event ! SDL_WindowEvent - type, bind(c) :: sdl_window_event + type, public, bind(c) :: sdl_window_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_uint32_t) :: window_id @@ -81,7 +81,7 @@ module sdl2_events end type sdl_window_event ! SDL_Keysym - type, bind(c) :: sdl_key_sym + type, public, bind(c) :: sdl_key_sym integer(kind=c_int) :: scan_code integer(kind=c_int32_t) :: sym integer(kind=c_uint16_t) :: mod @@ -89,7 +89,7 @@ module sdl2_events end type sdl_key_sym ! SDL_KeyboardEvent - type, bind(c) :: sdl_keyboard_event + type, public, bind(c) :: sdl_keyboard_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_uint32_t) :: window_id @@ -101,7 +101,7 @@ module sdl2_events end type sdl_keyboard_event ! SDL_TextEditingEvent - type, bind(c) :: sdl_text_editing_event + type, public, bind(c) :: sdl_text_editing_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_uint32_t) :: window_id @@ -111,7 +111,7 @@ module sdl2_events end type sdl_text_editing_event ! SDL_TextInputEvent - type, bind(c) :: sdl_text_input_event + type, public, bind(c) :: sdl_text_input_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_uint32_t) :: window_id @@ -119,7 +119,7 @@ module sdl2_events end type sdl_text_input_event ! SDL_MouseMotionEvent - type, bind(c) :: sdl_mouse_motion_event + type, public, bind(c) :: sdl_mouse_motion_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_uint32_t) :: window_id @@ -132,7 +132,7 @@ module sdl2_events end type sdl_mouse_motion_event ! SDL_MouseButtonEvent - type, bind(c) :: sdl_mouse_button_event + type, public, bind(c) :: sdl_mouse_button_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_uint32_t) :: window_id @@ -146,7 +146,7 @@ module sdl2_events end type sdl_mouse_button_event ! SDL_MouseWheelEvent - type, bind(c) :: sdl_mouse_wheel_event + type, public, bind(c) :: sdl_mouse_wheel_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_uint32_t) :: window_id @@ -157,7 +157,7 @@ module sdl2_events end type sdl_mouse_wheel_event ! SDL_JoyAxisEvent - type, bind(c) :: sdl_joy_axis_event + type, public, bind(c) :: sdl_joy_axis_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int32_t) :: which @@ -170,7 +170,7 @@ module sdl2_events end type sdl_joy_axis_event ! SDL_JoyBallEvent - type, bind(c) :: sdl_joy_ball_event + type, public, bind(c) :: sdl_joy_ball_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int32_t) :: which @@ -183,7 +183,7 @@ module sdl2_events end type sdl_joy_ball_event ! SDL_JoyHatEvent - type, bind(c) :: sdl_joy_hat_event + type, public, bind(c) :: sdl_joy_hat_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int32_t) :: which @@ -194,7 +194,7 @@ module sdl2_events end type sdl_joy_hat_event ! SDL_JoyButtonEvent - type, bind(c) :: sdl_joy_button_event + type, public, bind(c) :: sdl_joy_button_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int32_t) :: which @@ -205,14 +205,14 @@ module sdl2_events end type sdl_joy_button_event ! SDL_JoyDeviceEvent - type, bind(c) :: sdl_joy_device_event + type, public, bind(c) :: sdl_joy_device_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int32_t) :: which end type sdl_joy_device_event ! SDL_ControllerAxisEvent - type, bind(c) :: sdl_controller_axis_event + type, public, bind(c) :: sdl_controller_axis_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int32_t) :: which @@ -225,7 +225,7 @@ module sdl2_events end type sdl_controller_axis_event ! SDL_ControllerButtonEvent - type, bind(c) :: sdl_controller_button_event + type, public, bind(c) :: sdl_controller_button_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int32_t) :: which @@ -236,14 +236,14 @@ module sdl2_events end type sdl_controller_button_event ! SDL_ControllerDeviceEvent - type, bind(c) :: sdl_controller_device_event + type, public, bind(c) :: sdl_controller_device_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int32_t) :: which end type sdl_controller_device_event ! SDL_AudioDeviceEvent - type, bind(c) :: sdl_audio_device_event + type, public, bind(c) :: sdl_audio_device_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int32_t) :: which @@ -254,7 +254,7 @@ module sdl2_events end type sdl_audio_device_event ! SDL_TouchFingerEvent - type, bind(c) :: sdl_touch_finger_event + type, public, bind(c) :: sdl_touch_finger_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int64_t) :: touch_id @@ -267,7 +267,7 @@ module sdl2_events end type sdl_touch_finger_event ! SDL_MultiGestureEvent - type, bind(c) :: sdl_multi_gesture_event + type, public, bind(c) :: sdl_multi_gesture_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int64_t) :: touch_id @@ -280,7 +280,7 @@ module sdl2_events end type sdl_multi_gesture_event ! SDL_DollarGestureEvent - type, bind(c) :: sdl_dollar_gesture_event + type, public, bind(c) :: sdl_dollar_gesture_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_int64_t) :: touch_id @@ -292,7 +292,7 @@ module sdl2_events end type sdl_dollar_gesture_event ! SDL_DropEvent - type, bind(c) :: sdl_drop_event + type, public, bind(c) :: sdl_drop_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp type(c_ptr) :: file @@ -300,19 +300,19 @@ module sdl2_events end type sdl_drop_event ! SDL_QuitEvent - type, bind(c) :: sdl_quit_event + type, public, bind(c) :: sdl_quit_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp end type sdl_quit_event ! SDL_OSEvent - type, bind(c) :: sdl_os_event + type, public, bind(c) :: sdl_os_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp end type sdl_os_event ! SDL_UserEvent - type, bind(c) :: sdl_user_event + type, public, bind(c) :: sdl_user_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp integer(kind=c_uint32_t) :: window_id @@ -322,14 +322,14 @@ module sdl2_events end type sdl_user_event ! SDL_SysWMEvent - type, bind(c) :: sdl_sys_wm_event + type, public, bind(c) :: sdl_sys_wm_event integer(kind=c_uint32_t) :: type integer(kind=c_uint32_t) :: timestamp type(c_ptr) :: msg end type sdl_sys_wm_event ! SDL_Event - type, bind(c) :: sdl_event + type, public, bind(c) :: sdl_event integer(kind=c_uint32_t) :: type type(sdl_common_event) :: common type(sdl_window_event) :: window diff --git a/src/sdl2/sdl2_filesystem.f90 b/src/sdl2/sdl2_filesystem.f90 index 73d2d9f..e1da6b7 100644 --- a/src/sdl2/sdl2_filesystem.f90 +++ b/src/sdl2/sdl2_filesystem.f90 @@ -6,8 +6,9 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_filesystem - use, intrinsic :: iso_c_binding, only: c_ptr + use sdl2_c_types, only: c_ptr implicit none + private public :: sdl_get_base_path_ diff --git a/src/sdl2/sdl2_gamecontroller.f90 b/src/sdl2/sdl2_gamecontroller.f90 index ddecda4..0889c4e 100644 --- a/src/sdl2/sdl2_gamecontroller.f90 +++ b/src/sdl2/sdl2_gamecontroller.f90 @@ -6,8 +6,8 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_gamecontroller - use, intrinsic :: iso_c_binding, only: c_int, c_ptr - use :: sdl2_stdinc + use sdl2_c_types, only: c_ptr, c_int + use :: sdl2_stdinc, only: sdl_bool implicit none private diff --git a/src/sdl2/sdl2_hints.f90 b/src/sdl2/sdl2_hints.f90 index 86fdf9b..214cba5 100644 --- a/src/sdl2/sdl2_hints.f90 +++ b/src/sdl2/sdl2_hints.f90 @@ -6,9 +6,10 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_hints - use, intrinsic :: iso_c_binding, only: c_char, c_ptr + use sdl2_c_types, only: c_char, c_ptr use :: sdl2_stdinc, only: sdl_bool implicit none + private character(kind=c_char, len=*), parameter :: SDL_HINT_FRAMEBUFFER_ACCELERATION = 'SDL_FRAMEBUFFER_ACCELERATION' character(kind=c_char, len=*), parameter :: SDL_HINT_RENDER_DRIVER = 'SDL_RENDER_DRIVER' diff --git a/src/sdl2/sdl2_joystick.f90 b/src/sdl2/sdl2_joystick.f90 index a576b1e..a91b955 100644 --- a/src/sdl2/sdl2_joystick.f90 +++ b/src/sdl2/sdl2_joystick.f90 @@ -6,7 +6,7 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_joystick - use, intrinsic :: iso_c_binding, only: c_int + use sdl2_c_types, only: c_int implicit none private diff --git a/src/sdl2/sdl2_keyboard.f90 b/src/sdl2/sdl2_keyboard.f90 index 0ecdc27..62f78a0 100644 --- a/src/sdl2/sdl2_keyboard.f90 +++ b/src/sdl2/sdl2_keyboard.f90 @@ -6,8 +6,9 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_keyboard - use, intrinsic :: iso_c_binding, only: c_ptr + use sdl2_c_types, only: c_ptr implicit none + private public :: sdl_get_keyboard_state_ diff --git a/src/sdl2/sdl2_keycode.f90 b/src/sdl2/sdl2_keycode.f90 index db70361..91812bc 100644 --- a/src/sdl2/sdl2_keycode.f90 +++ b/src/sdl2/sdl2_keycode.f90 @@ -6,265 +6,266 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_keycode - use, intrinsic :: iso_c_binding, only: c_int + use sdl2_c_types, only: c_int use :: sdl2_scancode implicit none + private ! SDL_keycode - integer(kind=c_int), parameter :: SDLK_SCANCODE_MASK = ishft(1, 30) - integer(kind=c_int), parameter :: SDLK_UNKNOWN = 0 + integer(kind=c_int), parameter, public :: SDLK_SCANCODE_MASK = ishft(1, 30) + integer(kind=c_int), parameter, public :: SDLK_UNKNOWN = 0 - integer(kind=c_int), parameter :: SDLK_RETURN = 13 - integer(kind=c_int), parameter :: SDLK_ESCAPE = 27 - integer(kind=c_int), parameter :: SDLK_BACKSPACE = 8 - integer(kind=c_int), parameter :: SDLK_TAB = 9 - integer(kind=c_int), parameter :: SDLK_SPACE = iachar(' ') - integer(kind=c_int), parameter :: SDLK_EXCLAIM = iachar('!') - integer(kind=c_int), parameter :: SDLK_QUOTEDBL = iachar('"') - integer(kind=c_int), parameter :: SDLK_HASH = iachar('#') - integer(kind=c_int), parameter :: SDLK_PERCENT = iachar('%') - integer(kind=c_int), parameter :: SDLK_DOLLAR = iachar('$') - integer(kind=c_int), parameter :: SDLK_AMPERSAND = iachar('&') - integer(kind=c_int), parameter :: SDLK_QUOTE = iachar("'") - integer(kind=c_int), parameter :: SDLK_LEFTPAREN = iachar('(') - integer(kind=c_int), parameter :: SDLK_RIGHTPAREN = iachar(')') - integer(kind=c_int), parameter :: SDLK_ASTERISK = iachar('*') - integer(kind=c_int), parameter :: SDLK_PLUS = iachar('+') - integer(kind=c_int), parameter :: SDLK_COMMA = iachar(',') - integer(kind=c_int), parameter :: SDLK_MINUS = iachar('-') - integer(kind=c_int), parameter :: SDLK_PERIOD = iachar('.') - integer(kind=c_int), parameter :: SDLK_SLASH = iachar('/') - integer(kind=c_int), parameter :: SDLK_0 = iachar('0') - integer(kind=c_int), parameter :: SDLK_1 = iachar('1') - integer(kind=c_int), parameter :: SDLK_2 = iachar('2') - integer(kind=c_int), parameter :: SDLK_3 = iachar('3') - integer(kind=c_int), parameter :: SDLK_4 = iachar('4') - integer(kind=c_int), parameter :: SDLK_5 = iachar('5') - integer(kind=c_int), parameter :: SDLK_6 = iachar('6') - integer(kind=c_int), parameter :: SDLK_7 = iachar('7') - integer(kind=c_int), parameter :: SDLK_8 = iachar('8') - integer(kind=c_int), parameter :: SDLK_9 = iachar('9') - integer(kind=c_int), parameter :: SDLK_COLON = iachar(':') - integer(kind=c_int), parameter :: SDLK_SEMICOLON = iachar(';') - integer(kind=c_int), parameter :: SDLK_LESS = iachar('<') - integer(kind=c_int), parameter :: SDLK_EQUALS = iachar('=') - integer(kind=c_int), parameter :: SDLK_GREATER = iachar('>') - integer(kind=c_int), parameter :: SDLK_QUESTION = iachar('?') - integer(kind=c_int), parameter :: SDLK_AT = iachar('@') + integer(kind=c_int), parameter, public :: SDLK_RETURN = 13 + integer(kind=c_int), parameter, public :: SDLK_ESCAPE = 27 + integer(kind=c_int), parameter, public :: SDLK_BACKSPACE = 8 + integer(kind=c_int), parameter, public :: SDLK_TAB = 9 + integer(kind=c_int), parameter, public :: SDLK_SPACE = iachar(' ') + integer(kind=c_int), parameter, public :: SDLK_EXCLAIM = iachar('!') + integer(kind=c_int), parameter, public :: SDLK_QUOTEDBL = iachar('"') + integer(kind=c_int), parameter, public :: SDLK_HASH = iachar('#') + integer(kind=c_int), parameter, public :: SDLK_PERCENT = iachar('%') + integer(kind=c_int), parameter, public :: SDLK_DOLLAR = iachar('$') + integer(kind=c_int), parameter, public :: SDLK_AMPERSAND = iachar('&') + integer(kind=c_int), parameter, public :: SDLK_QUOTE = iachar("'") + integer(kind=c_int), parameter, public :: SDLK_LEFTPAREN = iachar('(') + integer(kind=c_int), parameter, public :: SDLK_RIGHTPAREN = iachar(')') + integer(kind=c_int), parameter, public :: SDLK_ASTERISK = iachar('*') + integer(kind=c_int), parameter, public :: SDLK_PLUS = iachar('+') + integer(kind=c_int), parameter, public :: SDLK_COMMA = iachar(',') + integer(kind=c_int), parameter, public :: SDLK_MINUS = iachar('-') + integer(kind=c_int), parameter, public :: SDLK_PERIOD = iachar('.') + integer(kind=c_int), parameter, public :: SDLK_SLASH = iachar('/') + integer(kind=c_int), parameter, public :: SDLK_0 = iachar('0') + integer(kind=c_int), parameter, public :: SDLK_1 = iachar('1') + integer(kind=c_int), parameter, public :: SDLK_2 = iachar('2') + integer(kind=c_int), parameter, public :: SDLK_3 = iachar('3') + integer(kind=c_int), parameter, public :: SDLK_4 = iachar('4') + integer(kind=c_int), parameter, public :: SDLK_5 = iachar('5') + integer(kind=c_int), parameter, public :: SDLK_6 = iachar('6') + integer(kind=c_int), parameter, public :: SDLK_7 = iachar('7') + integer(kind=c_int), parameter, public :: SDLK_8 = iachar('8') + integer(kind=c_int), parameter, public :: SDLK_9 = iachar('9') + integer(kind=c_int), parameter, public :: SDLK_COLON = iachar(':') + integer(kind=c_int), parameter, public :: SDLK_SEMICOLON = iachar(';') + integer(kind=c_int), parameter, public :: SDLK_LESS = iachar('<') + integer(kind=c_int), parameter, public :: SDLK_EQUALS = iachar('=') + integer(kind=c_int), parameter, public :: SDLK_GREATER = iachar('>') + integer(kind=c_int), parameter, public :: SDLK_QUESTION = iachar('?') + integer(kind=c_int), parameter, public :: SDLK_AT = iachar('@') - integer(kind=c_int), parameter :: SDLK_LEFTBRACKET = iachar('[') - integer(kind=c_int), parameter :: SDLK_BACKSLASH = iachar('\') - integer(kind=c_int), parameter :: SDLK_RIGHTBRACKET = iachar(']') - integer(kind=c_int), parameter :: SDLK_CARET = iachar('^') - integer(kind=c_int), parameter :: SDLK_UNDERSCORE = iachar('_') - integer(kind=c_int), parameter :: SDLK_BACKQUOTE = iachar('`') + integer(kind=c_int), parameter, public :: SDLK_LEFTBRACKET = iachar('[') + integer(kind=c_int), parameter, public :: SDLK_BACKSLASH = iachar('\') + integer(kind=c_int), parameter, public :: SDLK_RIGHTBRACKET = iachar(']') + integer(kind=c_int), parameter, public :: SDLK_CARET = iachar('^') + integer(kind=c_int), parameter, public :: SDLK_UNDERSCORE = iachar('_') + integer(kind=c_int), parameter, public :: SDLK_BACKQUOTE = iachar('`') - integer(kind=c_int), parameter :: SDLK_a = iachar('a') - integer(kind=c_int), parameter :: SDLK_b = iachar('b') - integer(kind=c_int), parameter :: SDLK_c = iachar('c') - integer(kind=c_int), parameter :: SDLK_d = iachar('d') - integer(kind=c_int), parameter :: SDLK_e = iachar('e') - integer(kind=c_int), parameter :: SDLK_f = iachar('f') - integer(kind=c_int), parameter :: SDLK_g = iachar('g') - integer(kind=c_int), parameter :: SDLK_h = iachar('h') - integer(kind=c_int), parameter :: SDLK_i = iachar('i') - integer(kind=c_int), parameter :: SDLK_j = iachar('j') - integer(kind=c_int), parameter :: SDLK_k = iachar('k') - integer(kind=c_int), parameter :: SDLK_l = iachar('l') - integer(kind=c_int), parameter :: SDLK_m = iachar('m') - integer(kind=c_int), parameter :: SDLK_n = iachar('n') - integer(kind=c_int), parameter :: SDLK_o = iachar('o') - integer(kind=c_int), parameter :: SDLK_p = iachar('p') - integer(kind=c_int), parameter :: SDLK_q = iachar('q') - integer(kind=c_int), parameter :: SDLK_r = iachar('r') - integer(kind=c_int), parameter :: SDLK_s = iachar('s') - integer(kind=c_int), parameter :: SDLK_t = iachar('t') - integer(kind=c_int), parameter :: SDLK_u = iachar('u') - integer(kind=c_int), parameter :: SDLK_v = iachar('v') - integer(kind=c_int), parameter :: SDLK_w = iachar('w') - integer(kind=c_int), parameter :: SDLK_x = iachar('x') - integer(kind=c_int), parameter :: SDLK_y = iachar('y') - integer(kind=c_int), parameter :: SDLK_z = iachar('z') + integer(kind=c_int), parameter, public :: SDLK_a = iachar('a') + integer(kind=c_int), parameter, public :: SDLK_b = iachar('b') + integer(kind=c_int), parameter, public :: SDLK_c = iachar('c') + integer(kind=c_int), parameter, public :: SDLK_d = iachar('d') + integer(kind=c_int), parameter, public :: SDLK_e = iachar('e') + integer(kind=c_int), parameter, public :: SDLK_f = iachar('f') + integer(kind=c_int), parameter, public :: SDLK_g = iachar('g') + integer(kind=c_int), parameter, public :: SDLK_h = iachar('h') + integer(kind=c_int), parameter, public :: SDLK_i = iachar('i') + integer(kind=c_int), parameter, public :: SDLK_j = iachar('j') + integer(kind=c_int), parameter, public :: SDLK_k = iachar('k') + integer(kind=c_int), parameter, public :: SDLK_l = iachar('l') + integer(kind=c_int), parameter, public :: SDLK_m = iachar('m') + integer(kind=c_int), parameter, public :: SDLK_n = iachar('n') + integer(kind=c_int), parameter, public :: SDLK_o = iachar('o') + integer(kind=c_int), parameter, public :: SDLK_p = iachar('p') + integer(kind=c_int), parameter, public :: SDLK_q = iachar('q') + integer(kind=c_int), parameter, public :: SDLK_r = iachar('r') + integer(kind=c_int), parameter, public :: SDLK_s = iachar('s') + integer(kind=c_int), parameter, public :: SDLK_t = iachar('t') + integer(kind=c_int), parameter, public :: SDLK_u = iachar('u') + integer(kind=c_int), parameter, public :: SDLK_v = iachar('v') + integer(kind=c_int), parameter, public :: SDLK_w = iachar('w') + integer(kind=c_int), parameter, public :: SDLK_x = iachar('x') + integer(kind=c_int), parameter, public :: SDLK_y = iachar('y') + integer(kind=c_int), parameter, public :: SDLK_z = iachar('z') - integer(kind=c_int), parameter :: SDLK_CAPSLOCK = ior(SDL_SCANCODE_CAPSLOCK, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_CAPSLOCK = ior(SDL_SCANCODE_CAPSLOCK, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F1 = ior(SDL_SCANCODE_F1, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F2 = ior(SDL_SCANCODE_F2, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F3 = ior(SDL_SCANCODE_F3, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F4 = ior(SDL_SCANCODE_F4, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F5 = ior(SDL_SCANCODE_F5, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F6 = ior(SDL_SCANCODE_F6, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F7 = ior(SDL_SCANCODE_F7, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F8 = ior(SDL_SCANCODE_F8, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F9 = ior(SDL_SCANCODE_F9, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F10 = ior(SDL_SCANCODE_F10, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F11 = ior(SDL_SCANCODE_F11, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F12 = ior(SDL_SCANCODE_F12, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F1 = ior(SDL_SCANCODE_F1, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F2 = ior(SDL_SCANCODE_F2, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F3 = ior(SDL_SCANCODE_F3, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F4 = ior(SDL_SCANCODE_F4, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F5 = ior(SDL_SCANCODE_F5, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F6 = ior(SDL_SCANCODE_F6, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F7 = ior(SDL_SCANCODE_F7, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F8 = ior(SDL_SCANCODE_F8, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F9 = ior(SDL_SCANCODE_F9, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F10 = ior(SDL_SCANCODE_F10, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F11 = ior(SDL_SCANCODE_F11, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F12 = ior(SDL_SCANCODE_F12, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_PRINTSCREEN = ior(SDL_SCANCODE_PRINTSCREEN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_SCROLLLOCK = ior(SDL_SCANCODE_SCROLLLOCK, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_PAUSE = ior(SDL_SCANCODE_PAUSE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_INSERT = ior(SDL_SCANCODE_INSERT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_HOME = ior(SDL_SCANCODE_HOME, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_PAGEUP = ior(SDL_SCANCODE_PAGEUP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_DELETE = 127 - integer(kind=c_int), parameter :: SDLK_END = ior(SDL_SCANCODE_END, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_PAGEDOWN = ior(SDL_SCANCODE_PAGEDOWN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_RIGHT = ior(SDL_SCANCODE_RIGHT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_LEFT = ior(SDL_SCANCODE_LEFT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_DOWN = ior(SDL_SCANCODE_DOWN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_UP = ior(SDL_SCANCODE_UP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_PRINTSCREEN = ior(SDL_SCANCODE_PRINTSCREEN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_SCROLLLOCK = ior(SDL_SCANCODE_SCROLLLOCK, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_PAUSE = ior(SDL_SCANCODE_PAUSE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_INSERT = ior(SDL_SCANCODE_INSERT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_HOME = ior(SDL_SCANCODE_HOME, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_PAGEUP = ior(SDL_SCANCODE_PAGEUP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_DELETE = 127 + integer(kind=c_int), parameter, public :: SDLK_END = ior(SDL_SCANCODE_END, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_PAGEDOWN = ior(SDL_SCANCODE_PAGEDOWN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_RIGHT = ior(SDL_SCANCODE_RIGHT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_LEFT = ior(SDL_SCANCODE_LEFT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_DOWN = ior(SDL_SCANCODE_DOWN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_UP = ior(SDL_SCANCODE_UP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_NUMLOCKCLEAR = ior(SDL_SCANCODE_NUMLOCKCLEAR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_DIVIDE = ior(SDL_SCANCODE_KP_DIVIDE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_MULTIPLY = ior(SDL_SCANCODE_KP_MULTIPLY, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_MINUS = ior(SDL_SCANCODE_KP_MINUS, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_PLUS = ior(SDL_SCANCODE_KP_PLUS, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_ENTER = ior(SDL_SCANCODE_KP_ENTER, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_1 = ior(SDL_SCANCODE_KP_1, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_2 = ior(SDL_SCANCODE_KP_2, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_3 = ior(SDL_SCANCODE_KP_3, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_4 = ior(SDL_SCANCODE_KP_4, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_5 = ior(SDL_SCANCODE_KP_5, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_6 = ior(SDL_SCANCODE_KP_6, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_7 = ior(SDL_SCANCODE_KP_7, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_8 = ior(SDL_SCANCODE_KP_8, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_9 = ior(SDL_SCANCODE_KP_9, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_0 = ior(SDL_SCANCODE_KP_0, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_PERIOD = ior(SDL_SCANCODE_KP_PERIOD, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_NUMLOCKCLEAR = ior(SDL_SCANCODE_NUMLOCKCLEAR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_DIVIDE = ior(SDL_SCANCODE_KP_DIVIDE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_MULTIPLY = ior(SDL_SCANCODE_KP_MULTIPLY, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_MINUS = ior(SDL_SCANCODE_KP_MINUS, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_PLUS = ior(SDL_SCANCODE_KP_PLUS, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_ENTER = ior(SDL_SCANCODE_KP_ENTER, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_1 = ior(SDL_SCANCODE_KP_1, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_2 = ior(SDL_SCANCODE_KP_2, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_3 = ior(SDL_SCANCODE_KP_3, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_4 = ior(SDL_SCANCODE_KP_4, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_5 = ior(SDL_SCANCODE_KP_5, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_6 = ior(SDL_SCANCODE_KP_6, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_7 = ior(SDL_SCANCODE_KP_7, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_8 = ior(SDL_SCANCODE_KP_8, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_9 = ior(SDL_SCANCODE_KP_9, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_0 = ior(SDL_SCANCODE_KP_0, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_PERIOD = ior(SDL_SCANCODE_KP_PERIOD, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_APPLICATION = ior(SDL_SCANCODE_APPLICATION, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_POWER = ior(SDL_SCANCODE_POWER, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_EQUALS = ior(SDL_SCANCODE_KP_EQUALS, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F13 = ior(SDL_SCANCODE_F13, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F14 = ior(SDL_SCANCODE_F14, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F15 = ior(SDL_SCANCODE_F15, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F16 = ior(SDL_SCANCODE_F16, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F17 = ior(SDL_SCANCODE_F17, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F18 = ior(SDL_SCANCODE_F18, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F19 = ior(SDL_SCANCODE_F19, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F20 = ior(SDL_SCANCODE_F20, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F21 = ior(SDL_SCANCODE_F21, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F22 = ior(SDL_SCANCODE_F22, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F23 = ior(SDL_SCANCODE_F23, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_F24 = ior(SDL_SCANCODE_F24, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_EXECUTE = ior(SDL_SCANCODE_EXECUTE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_HELP = ior(SDL_SCANCODE_HELP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_MENU = ior(SDL_SCANCODE_MENU, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_SELECT = ior(SDL_SCANCODE_SELECT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_STOP = ior(SDL_SCANCODE_STOP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AGAIN = ior(SDL_SCANCODE_AGAIN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_UNDO = ior(SDL_SCANCODE_UNDO, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_CUT = ior(SDL_SCANCODE_CUT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_COPY = ior(SDL_SCANCODE_COPY, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_PASTE = ior(SDL_SCANCODE_PASTE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_FIND = ior(SDL_SCANCODE_FIND, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_MUTE = ior(SDL_SCANCODE_MUTE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_VOLUMEUP = ior(SDL_SCANCODE_VOLUMEUP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_VOLUMEDOWN = ior(SDL_SCANCODE_VOLUMEDOWN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_COMMA = ior(SDL_SCANCODE_KP_COMMA, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_EQUALSAS400 = ior(SDL_SCANCODE_KP_EQUALSAS400, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_APPLICATION = ior(SDL_SCANCODE_APPLICATION, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_POWER = ior(SDL_SCANCODE_POWER, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_EQUALS = ior(SDL_SCANCODE_KP_EQUALS, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F13 = ior(SDL_SCANCODE_F13, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F14 = ior(SDL_SCANCODE_F14, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F15 = ior(SDL_SCANCODE_F15, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F16 = ior(SDL_SCANCODE_F16, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F17 = ior(SDL_SCANCODE_F17, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F18 = ior(SDL_SCANCODE_F18, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F19 = ior(SDL_SCANCODE_F19, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F20 = ior(SDL_SCANCODE_F20, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F21 = ior(SDL_SCANCODE_F21, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F22 = ior(SDL_SCANCODE_F22, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F23 = ior(SDL_SCANCODE_F23, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_F24 = ior(SDL_SCANCODE_F24, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_EXECUTE = ior(SDL_SCANCODE_EXECUTE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_HELP = ior(SDL_SCANCODE_HELP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_MENU = ior(SDL_SCANCODE_MENU, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_SELECT = ior(SDL_SCANCODE_SELECT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_STOP = ior(SDL_SCANCODE_STOP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AGAIN = ior(SDL_SCANCODE_AGAIN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_UNDO = ior(SDL_SCANCODE_UNDO, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_CUT = ior(SDL_SCANCODE_CUT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_COPY = ior(SDL_SCANCODE_COPY, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_PASTE = ior(SDL_SCANCODE_PASTE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_FIND = ior(SDL_SCANCODE_FIND, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_MUTE = ior(SDL_SCANCODE_MUTE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_VOLUMEUP = ior(SDL_SCANCODE_VOLUMEUP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_VOLUMEDOWN = ior(SDL_SCANCODE_VOLUMEDOWN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_COMMA = ior(SDL_SCANCODE_KP_COMMA, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_EQUALSAS400 = ior(SDL_SCANCODE_KP_EQUALSAS400, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_ALTERASE = ior(SDL_SCANCODE_ALTERASE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_SYSREQ = ior(SDL_SCANCODE_SYSREQ, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_CANCEL = ior(SDL_SCANCODE_CANCEL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_CLEAR = ior(SDL_SCANCODE_CLEAR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_PRIOR = ior(SDL_SCANCODE_PRIOR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_RETURN2 = ior(SDL_SCANCODE_RETURN2, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_SEPARATOR = ior(SDL_SCANCODE_SEPARATOR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_OUT = ior(SDL_SCANCODE_OUT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_OPER = ior(SDL_SCANCODE_OPER, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_CLEARAGAIN = ior(SDL_SCANCODE_CLEARAGAIN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_CRSEL = ior(SDL_SCANCODE_CRSEL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_EXSEL = ior(SDL_SCANCODE_EXSEL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_ALTERASE = ior(SDL_SCANCODE_ALTERASE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_SYSREQ = ior(SDL_SCANCODE_SYSREQ, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_CANCEL = ior(SDL_SCANCODE_CANCEL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_CLEAR = ior(SDL_SCANCODE_CLEAR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_PRIOR = ior(SDL_SCANCODE_PRIOR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_RETURN2 = ior(SDL_SCANCODE_RETURN2, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_SEPARATOR = ior(SDL_SCANCODE_SEPARATOR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_OUT = ior(SDL_SCANCODE_OUT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_OPER = ior(SDL_SCANCODE_OPER, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_CLEARAGAIN = ior(SDL_SCANCODE_CLEARAGAIN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_CRSEL = ior(SDL_SCANCODE_CRSEL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_EXSEL = ior(SDL_SCANCODE_EXSEL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_00 = ior(SDL_SCANCODE_KP_00, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_000 = ior(SDL_SCANCODE_KP_000, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_THOUSANDSSEPARATOR = ior(SDL_SCANCODE_THOUSANDSSEPARATOR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_DECIMALSEPARATOR = ior(SDL_SCANCODE_DECIMALSEPARATOR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_CURRENCYUNIT = ior(SDL_SCANCODE_CURRENCYUNIT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_CURRENCYSUBUNIT = ior(SDL_SCANCODE_CURRENCYSUBUNIT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_LEFTPAREN = ior(SDL_SCANCODE_KP_LEFTPAREN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_RIGHTPAREN = ior(SDL_SCANCODE_KP_RIGHTPAREN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_LEFTBRACE = ior(SDL_SCANCODE_KP_LEFTBRACE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_RIGHTBRACE = ior(SDL_SCANCODE_KP_RIGHTBRACE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_TAB = ior(SDL_SCANCODE_KP_TAB, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_BACKSPACE = ior(SDL_SCANCODE_KP_BACKSPACE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_A = ior(SDL_SCANCODE_KP_A, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_B = ior(SDL_SCANCODE_KP_B, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_C = ior(SDL_SCANCODE_KP_C, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_D = ior(SDL_SCANCODE_KP_D, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_E = ior(SDL_SCANCODE_KP_E, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_F = ior(SDL_SCANCODE_KP_F, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_XOR = ior(SDL_SCANCODE_KP_XOR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_POWER = ior(SDL_SCANCODE_KP_POWER, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_PERCENT = ior(SDL_SCANCODE_KP_PERCENT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_LESS = ior(SDL_SCANCODE_KP_LESS, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_GREATER = ior(SDL_SCANCODE_KP_GREATER, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_AMPERSAND = ior(SDL_SCANCODE_KP_AMPERSAND, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_DBLAMPERSAND = ior(SDL_SCANCODE_KP_DBLAMPERSAND, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_VERTICALBAR = ior(SDL_SCANCODE_KP_VERTICALBAR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_DBLVERTICALBAR = ior(SDL_SCANCODE_KP_DBLVERTICALBAR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_COLON = ior(SDL_SCANCODE_KP_COLON, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_HASH = ior(SDL_SCANCODE_KP_HASH, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_SPACE = ior(SDL_SCANCODE_KP_SPACE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_AT = ior(SDL_SCANCODE_KP_AT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_EXCLAM = ior(SDL_SCANCODE_KP_EXCLAM, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_MEMSTORE = ior(SDL_SCANCODE_KP_MEMSTORE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_MEMRECALL = ior(SDL_SCANCODE_KP_MEMRECALL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_MEMCLEAR = ior(SDL_SCANCODE_KP_MEMCLEAR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_MEMADD = ior(SDL_SCANCODE_KP_MEMADD, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_MEMSUBTRACT = ior(SDL_SCANCODE_KP_MEMSUBTRACT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_MEMMULTIPLY = ior(SDL_SCANCODE_KP_MEMMULTIPLY, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_MEMDIVIDE = ior(SDL_SCANCODE_KP_MEMDIVIDE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_PLUSMINUS = ior(SDL_SCANCODE_KP_PLUSMINUS, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_CLEAR = ior(SDL_SCANCODE_KP_CLEAR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_CLEARENTRY = ior(SDL_SCANCODE_KP_CLEARENTRY, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_BINARY = ior(SDL_SCANCODE_KP_BINARY, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_OCTAL = ior(SDL_SCANCODE_KP_OCTAL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_DECIMAL = ior(SDL_SCANCODE_KP_DECIMAL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KP_HEXADECIMAL = ior(SDL_SCANCODE_KP_HEXADECIMAL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_00 = ior(SDL_SCANCODE_KP_00, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_000 = ior(SDL_SCANCODE_KP_000, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_THOUSANDSSEPARATOR = ior(SDL_SCANCODE_THOUSANDSSEPARATOR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_DECIMALSEPARATOR = ior(SDL_SCANCODE_DECIMALSEPARATOR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_CURRENCYUNIT = ior(SDL_SCANCODE_CURRENCYUNIT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_CURRENCYSUBUNIT = ior(SDL_SCANCODE_CURRENCYSUBUNIT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_LEFTPAREN = ior(SDL_SCANCODE_KP_LEFTPAREN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_RIGHTPAREN = ior(SDL_SCANCODE_KP_RIGHTPAREN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_LEFTBRACE = ior(SDL_SCANCODE_KP_LEFTBRACE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_RIGHTBRACE = ior(SDL_SCANCODE_KP_RIGHTBRACE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_TAB = ior(SDL_SCANCODE_KP_TAB, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_BACKSPACE = ior(SDL_SCANCODE_KP_BACKSPACE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_A = ior(SDL_SCANCODE_KP_A, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_B = ior(SDL_SCANCODE_KP_B, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_C = ior(SDL_SCANCODE_KP_C, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_D = ior(SDL_SCANCODE_KP_D, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_E = ior(SDL_SCANCODE_KP_E, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_F = ior(SDL_SCANCODE_KP_F, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_XOR = ior(SDL_SCANCODE_KP_XOR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_POWER = ior(SDL_SCANCODE_KP_POWER, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_PERCENT = ior(SDL_SCANCODE_KP_PERCENT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_LESS = ior(SDL_SCANCODE_KP_LESS, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_GREATER = ior(SDL_SCANCODE_KP_GREATER, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_AMPERSAND = ior(SDL_SCANCODE_KP_AMPERSAND, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_DBLAMPERSAND = ior(SDL_SCANCODE_KP_DBLAMPERSAND, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_VERTICALBAR = ior(SDL_SCANCODE_KP_VERTICALBAR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_DBLVERTICALBAR = ior(SDL_SCANCODE_KP_DBLVERTICALBAR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_COLON = ior(SDL_SCANCODE_KP_COLON, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_HASH = ior(SDL_SCANCODE_KP_HASH, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_SPACE = ior(SDL_SCANCODE_KP_SPACE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_AT = ior(SDL_SCANCODE_KP_AT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_EXCLAM = ior(SDL_SCANCODE_KP_EXCLAM, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_MEMSTORE = ior(SDL_SCANCODE_KP_MEMSTORE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_MEMRECALL = ior(SDL_SCANCODE_KP_MEMRECALL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_MEMCLEAR = ior(SDL_SCANCODE_KP_MEMCLEAR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_MEMADD = ior(SDL_SCANCODE_KP_MEMADD, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_MEMSUBTRACT = ior(SDL_SCANCODE_KP_MEMSUBTRACT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_MEMMULTIPLY = ior(SDL_SCANCODE_KP_MEMMULTIPLY, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_MEMDIVIDE = ior(SDL_SCANCODE_KP_MEMDIVIDE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_PLUSMINUS = ior(SDL_SCANCODE_KP_PLUSMINUS, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_CLEAR = ior(SDL_SCANCODE_KP_CLEAR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_CLEARENTRY = ior(SDL_SCANCODE_KP_CLEARENTRY, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_BINARY = ior(SDL_SCANCODE_KP_BINARY, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_OCTAL = ior(SDL_SCANCODE_KP_OCTAL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_DECIMAL = ior(SDL_SCANCODE_KP_DECIMAL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KP_HEXADECIMAL = ior(SDL_SCANCODE_KP_HEXADECIMAL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_LCTRL = ior(SDL_SCANCODE_LCTRL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_LSHIFT = ior(SDL_SCANCODE_LSHIFT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_LALT = ior(SDL_SCANCODE_LALT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_LGUI = ior(SDL_SCANCODE_LGUI, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_RCTRL = ior(SDL_SCANCODE_RCTRL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_RSHIFT = ior(SDL_SCANCODE_RSHIFT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_RALT = ior(SDL_SCANCODE_RALT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_RGUI = ior(SDL_SCANCODE_RGUI, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_LCTRL = ior(SDL_SCANCODE_LCTRL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_LSHIFT = ior(SDL_SCANCODE_LSHIFT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_LALT = ior(SDL_SCANCODE_LALT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_LGUI = ior(SDL_SCANCODE_LGUI, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_RCTRL = ior(SDL_SCANCODE_RCTRL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_RSHIFT = ior(SDL_SCANCODE_RSHIFT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_RALT = ior(SDL_SCANCODE_RALT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_RGUI = ior(SDL_SCANCODE_RGUI, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_MODE = ior(SDL_SCANCODE_MODE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_MODE = ior(SDL_SCANCODE_MODE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AUDIONEXT = ior(SDL_SCANCODE_AUDIONEXT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AUDIOPREV = ior(SDL_SCANCODE_AUDIOPREV, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AUDIOSTOP = ior(SDL_SCANCODE_AUDIOSTOP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AUDIOPLAY = ior(SDL_SCANCODE_AUDIOPLAY, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AUDIOMUTE = ior(SDL_SCANCODE_AUDIOMUTE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_MEDIASELECT = ior(SDL_SCANCODE_MEDIASELECT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_WWW = ior(SDL_SCANCODE_WWW, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_MAIL = ior(SDL_SCANCODE_MAIL, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_CALCULATOR = ior(SDL_SCANCODE_CALCULATOR, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_COMPUTER = ior(SDL_SCANCODE_COMPUTER, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AC_SEARCH = ior(SDL_SCANCODE_AC_SEARCH, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AC_HOME = ior(SDL_SCANCODE_AC_HOME, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AC_BACK = ior(SDL_SCANCODE_AC_BACK, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AC_FORWARD = ior(SDL_SCANCODE_AC_FORWARD, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AC_STOP = ior(SDL_SCANCODE_AC_STOP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AC_REFRESH = ior(SDL_SCANCODE_AC_REFRESH, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AC_BOOKMARKS = ior(SDL_SCANCODE_AC_BOOKMARKS, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AUDIONEXT = ior(SDL_SCANCODE_AUDIONEXT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AUDIOPREV = ior(SDL_SCANCODE_AUDIOPREV, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AUDIOSTOP = ior(SDL_SCANCODE_AUDIOSTOP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AUDIOPLAY = ior(SDL_SCANCODE_AUDIOPLAY, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AUDIOMUTE = ior(SDL_SCANCODE_AUDIOMUTE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_MEDIASELECT = ior(SDL_SCANCODE_MEDIASELECT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_WWW = ior(SDL_SCANCODE_WWW, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_MAIL = ior(SDL_SCANCODE_MAIL, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_CALCULATOR = ior(SDL_SCANCODE_CALCULATOR, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_COMPUTER = ior(SDL_SCANCODE_COMPUTER, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AC_SEARCH = ior(SDL_SCANCODE_AC_SEARCH, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AC_HOME = ior(SDL_SCANCODE_AC_HOME, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AC_BACK = ior(SDL_SCANCODE_AC_BACK, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AC_FORWARD = ior(SDL_SCANCODE_AC_FORWARD, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AC_STOP = ior(SDL_SCANCODE_AC_STOP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AC_REFRESH = ior(SDL_SCANCODE_AC_REFRESH, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AC_BOOKMARKS = ior(SDL_SCANCODE_AC_BOOKMARKS, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_BRIGHTNESSDOWN = ior(SDL_SCANCODE_BRIGHTNESSDOWN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_BRIGHTNESSUP = ior(SDL_SCANCODE_BRIGHTNESSUP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_DISPLAYSWITCH = ior(SDL_SCANCODE_DISPLAYSWITCH, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KBDILLUMTOGGLE = ior(SDL_SCANCODE_KBDILLUMTOGGLE, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KBDILLUMDOWN = ior(SDL_SCANCODE_KBDILLUMDOWN, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_KBDILLUMUP = ior(SDL_SCANCODE_KBDILLUMUP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_EJECT = ior(SDL_SCANCODE_EJECT, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_SLEEP = ior(SDL_SCANCODE_SLEEP, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_APP1 = ior(SDL_SCANCODE_APP1, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_APP2 = ior(SDL_SCANCODE_APP2, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_BRIGHTNESSDOWN = ior(SDL_SCANCODE_BRIGHTNESSDOWN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_BRIGHTNESSUP = ior(SDL_SCANCODE_BRIGHTNESSUP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_DISPLAYSWITCH = ior(SDL_SCANCODE_DISPLAYSWITCH, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KBDILLUMTOGGLE = ior(SDL_SCANCODE_KBDILLUMTOGGLE, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KBDILLUMDOWN = ior(SDL_SCANCODE_KBDILLUMDOWN, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_KBDILLUMUP = ior(SDL_SCANCODE_KBDILLUMUP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_EJECT = ior(SDL_SCANCODE_EJECT, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_SLEEP = ior(SDL_SCANCODE_SLEEP, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_APP1 = ior(SDL_SCANCODE_APP1, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_APP2 = ior(SDL_SCANCODE_APP2, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AUDIOREWIND = ior(SDL_SCANCODE_AUDIOREWIND, SDLK_SCANCODE_MASK) - integer(kind=c_int), parameter :: SDLK_AUDIOFASTFORWARD = ior(SDL_SCANCODE_AUDIOFASTFORWARD, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AUDIOREWIND = ior(SDL_SCANCODE_AUDIOREWIND, SDLK_SCANCODE_MASK) + integer(kind=c_int), parameter, public :: SDLK_AUDIOFASTFORWARD = ior(SDL_SCANCODE_AUDIOFASTFORWARD, SDLK_SCANCODE_MASK) end module sdl2_keycode diff --git a/src/sdl2/sdl2_log.f90 b/src/sdl2/sdl2_log.f90 index dcdfe38..9e01b08 100644 --- a/src/sdl2/sdl2_log.f90 +++ b/src/sdl2/sdl2_log.f90 @@ -6,8 +6,7 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_log - use, intrinsic :: iso_c_binding - use :: c_util + use sdl2_c_types, only: c_char, c_int, c_ptr, c_funptr implicit none private diff --git a/src/sdl2/sdl2_messagebox.f90 b/src/sdl2/sdl2_messagebox.f90 index 85db557..9ddb892 100644 --- a/src/sdl2/sdl2_messagebox.f90 +++ b/src/sdl2/sdl2_messagebox.f90 @@ -6,9 +6,9 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_messagebox - use, intrinsic :: iso_c_binding, only: c_char, c_int, c_ptr - use :: c_util, only: c_uint32_t + use sdl2_c_types, only: c_ptr, c_char, c_int, c_uint32_t implicit none + private ! SDL_MessageBoxFlags integer(kind=c_int), parameter :: SDL_MESSAGEBOX_ERROR = int(z'00000010') diff --git a/src/sdl2/sdl2_mouse.f90 b/src/sdl2/sdl2_mouse.f90 index aa7d19f..9306af6 100644 --- a/src/sdl2/sdl2_mouse.f90 +++ b/src/sdl2/sdl2_mouse.f90 @@ -6,10 +6,10 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_mouse - use, intrinsic :: iso_c_binding, only: c_int, c_ptr - use :: c_util, only: c_uint32_t + use sdl2_c_types, only: c_ptr, c_int, c_uint32_t use :: sdl2_stdinc, only: sdl_bool implicit none + private integer(kind=c_int), parameter :: SDL_BUTTON_LEFT = 1 integer(kind=c_int), parameter :: SDL_BUTTON_MIDDLE = 2 diff --git a/src/sdl2/sdl2_opengl.f90 b/src/sdl2/sdl2_opengl.f90 index 9da66bd..1798b0b 100644 --- a/src/sdl2/sdl2_opengl.f90 +++ b/src/sdl2/sdl2_opengl.f90 @@ -6,8 +6,10 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_opengl - use, intrinsic :: iso_c_binding + use sdl2_c_types, only: c_ptr, c_short, c_int, c_long, c_signed_char, c_float, c_double implicit none + private + integer, parameter, public :: GLenum = c_int integer, parameter, public :: GLboolean = c_signed_char integer, parameter, public :: GLbitfield = c_int diff --git a/src/sdl2/sdl2_pixels.f90 b/src/sdl2/sdl2_pixels.f90 index 5162083..b779c6a 100644 --- a/src/sdl2/sdl2_pixels.f90 +++ b/src/sdl2/sdl2_pixels.f90 @@ -6,53 +6,53 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_pixels - use, intrinsic :: iso_c_binding - use :: c_util + use sdl2_c_types, only: c_ptr, c_int, c_uint8_t, c_uint32_t implicit none + private ! SDL_PixelFormatEnum - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_UNKNOWN = int(z'0') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_INDEX1LSB = int(z'11100100') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_INDEX1MSB = int(z'11200100') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_INDEX4LSB = int(z'12100400') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_INDEX4MSB = int(z'12200400') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_INDEX8 = int(z'13000801') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGB332 = int(z'14110801') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGB444 = int(z'15120c02') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGB555 = int(z'15130f02') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_BGR555 = int(z'15530f02') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_ARGB4444 = int(z'15321002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGBA4444 = int(z'15421002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_ABGR4444 = int(z'15721002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_BGRA4444 = int(z'15821002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_ARGB1555 = int(z'15331002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGBA5551 = int(z'15441002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_ABGR1555 = int(z'15731002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_BGRA5551 = int(z'15841002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGB565 = int(z'15151002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_BGR565 = int(z'15551002') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGB24 = int(z'17101803') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_BGR24 = int(z'17401803') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGB888 = int(z'16161804') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGBX8888 = int(z'16261804') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_BGR888 = int(z'16561804') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_BGRX8888 = int(z'16661804') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_ARGB8888 = int(z'16362004') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_RGBA8888 = int(z'16462004') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_ABGR8888 = int(z'16762004') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_BGRA8888 = int(z'16862004') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_ARGB2101010 = int(z'16372004') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_YV12 = int(z'32315659') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_IYUV = int(z'56555949') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_YUY2 = int(z'32595559') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_UYVY = int(z'59565955') - integer(kind=c_int), parameter :: SDL_PIXELFORMAT_YVYU = int(z'55595659') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_UNKNOWN = int(z'0') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_INDEX1LSB = int(z'11100100') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_INDEX1MSB = int(z'11200100') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_INDEX4LSB = int(z'12100400') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_INDEX4MSB = int(z'12200400') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_INDEX8 = int(z'13000801') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGB332 = int(z'14110801') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGB444 = int(z'15120c02') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGB555 = int(z'15130f02') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_BGR555 = int(z'15530f02') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_ARGB4444 = int(z'15321002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGBA4444 = int(z'15421002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_ABGR4444 = int(z'15721002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_BGRA4444 = int(z'15821002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_ARGB1555 = int(z'15331002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGBA5551 = int(z'15441002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_ABGR1555 = int(z'15731002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_BGRA5551 = int(z'15841002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGB565 = int(z'15151002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_BGR565 = int(z'15551002') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGB24 = int(z'17101803') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_BGR24 = int(z'17401803') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGB888 = int(z'16161804') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGBX8888 = int(z'16261804') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_BGR888 = int(z'16561804') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_BGRX8888 = int(z'16661804') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_ARGB8888 = int(z'16362004') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_RGBA8888 = int(z'16462004') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_ABGR8888 = int(z'16762004') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_BGRA8888 = int(z'16862004') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_ARGB2101010 = int(z'16372004') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_YV12 = int(z'32315659') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_IYUV = int(z'56555949') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_YUY2 = int(z'32595559') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_UYVY = int(z'59565955') + integer(kind=c_int), parameter, public :: SDL_PIXELFORMAT_YVYU = int(z'55595659') - integer(kind=c_int), parameter :: SDL_ALPHA_OPAQUE = 255 - integer(kind=c_int), parameter :: SDL_ALPHA_TRANSPARENT = 0 + integer(kind=c_int), parameter, public :: SDL_ALPHA_OPAQUE = 255 + integer(kind=c_int), parameter, public :: SDL_ALPHA_TRANSPARENT = 0 ! SDL_Color - type, bind(c) :: sdl_color + type, public, bind(c) :: sdl_color integer(kind=c_uint8_t) :: r integer(kind=c_uint8_t) :: g integer(kind=c_uint8_t) :: b @@ -60,7 +60,7 @@ module sdl2_pixels end type sdl_color ! SDL_Palette - type, bind(c) :: sdl_palette + type, public, bind(c) :: sdl_palette integer(kind=c_int) :: ncolors type(c_ptr) :: colors integer(kind=c_uint32_t) :: version @@ -68,7 +68,7 @@ module sdl2_pixels end type sdl_palette ! SDL_PixelFormat - type, bind(c) :: sdl_pixel_format + type, public, bind(c) :: sdl_pixel_format integer(kind=c_uint32_t) :: format type(c_ptr) :: palette integer(kind=c_uint8_t) :: bits_per_pixel diff --git a/src/sdl2/sdl2_platform.f90 b/src/sdl2/sdl2_platform.f90 index 405f119..c5a7a86 100644 --- a/src/sdl2/sdl2_platform.f90 +++ b/src/sdl2/sdl2_platform.f90 @@ -6,8 +6,9 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_platform - use, intrinsic :: iso_c_binding, only: c_ptr + use sdl2_c_types, only: c_ptr implicit none + private public :: sdl_get_platform_ diff --git a/src/sdl2/sdl2_rect.f90 b/src/sdl2/sdl2_rect.f90 index c63bc44..79aee94 100644 --- a/src/sdl2/sdl2_rect.f90 +++ b/src/sdl2/sdl2_rect.f90 @@ -6,7 +6,7 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_rect - use, intrinsic :: iso_c_binding, only: c_float, c_int + use sdl2_c_types, only: c_int, c_float implicit none private diff --git a/src/sdl2/sdl2_render.f90 b/src/sdl2/sdl2_render.f90 index 9dca729..d712f31 100644 --- a/src/sdl2/sdl2_render.f90 +++ b/src/sdl2/sdl2_render.f90 @@ -6,23 +6,23 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_render - use, intrinsic :: iso_c_binding - use :: c_util + use sdl2_c_types, only: c_ptr, c_int, c_int32_t, c_uint8_t, c_uint32_t, c_float, c_double use :: sdl2_rect use :: sdl2_pixels use :: sdl2_surface implicit none + private ! SDL_RendererFlags - integer(kind=c_int), parameter :: SDL_RENDERER_SOFTWARE = int(z'00000001') - integer(kind=c_int), parameter :: SDL_RENDERER_ACCELERATED = int(z'00000002') - integer(kind=c_int), parameter :: SDL_RENDERER_PRESENTVSYNC = int(z'00000004') - integer(kind=c_int), parameter :: SDL_RENDERER_TARGETTEXTURE = int(z'00000008') + integer(kind=c_int), parameter, public :: SDL_RENDERER_SOFTWARE = int(z'00000001') + integer(kind=c_int), parameter, public :: SDL_RENDERER_ACCELERATED = int(z'00000002') + integer(kind=c_int), parameter, public :: SDL_RENDERER_PRESENTVSYNC = int(z'00000004') + integer(kind=c_int), parameter, public :: SDL_RENDERER_TARGETTEXTURE = int(z'00000008') ! SDL_RendererFlip - integer(kind=c_int), parameter :: SDL_FLIP_NONE = int(z'00000000') - integer(kind=c_int), parameter :: SDL_FLIP_HORIZONTAL = int(z'00000001') - integer(kind=c_int), parameter :: SDL_FLIP_VERTICAL = int(z'00000002') + integer(kind=c_int), parameter, public :: SDL_FLIP_NONE = int(z'00000000') + integer(kind=c_int), parameter, public :: SDL_FLIP_HORIZONTAL = int(z'00000001') + integer(kind=c_int), parameter, public :: SDL_FLIP_VERTICAL = int(z'00000002') ! SDL_TextureAccess enum, bind(c) @@ -32,7 +32,7 @@ module sdl2_render end enum ! SDL_RendererInfo - type, bind(c), public :: sdl_renderer_info + type, public, bind(c) :: sdl_renderer_info type(c_ptr) :: name integer(kind=c_int32_t) :: flags integer(kind=c_int32_t) :: num_texture_formats @@ -42,7 +42,7 @@ module sdl2_render end type sdl_renderer_info ! SDL_Vertex - type, bind(c), public :: sdl_vertex + type, public, bind(c) :: sdl_vertex type(sdl_fpoint) :: position type(sdl_color) :: color type(sdl_fpoint) :: tex_coord diff --git a/src/sdl2/sdl2_rwops.f90 b/src/sdl2/sdl2_rwops.f90 index 1430d8c..992f5d4 100644 --- a/src/sdl2/sdl2_rwops.f90 +++ b/src/sdl2/sdl2_rwops.f90 @@ -6,7 +6,7 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_rwops - use, intrinsic :: iso_c_binding, only: c_char, c_int, c_ptr + use sdl2_c_types, only: c_ptr, c_char, c_int implicit none private diff --git a/src/sdl2/sdl2_scancode.f90 b/src/sdl2/sdl2_scancode.f90 index 9d6a2a6..2c97ee2 100644 --- a/src/sdl2/sdl2_scancode.f90 +++ b/src/sdl2/sdl2_scancode.f90 @@ -6,252 +6,253 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_scancode - use, intrinsic :: iso_c_binding, only: c_int + use sdl2_c_types, only: c_int implicit none + private ! SDL_Scancode - integer(kind=c_int), parameter :: SDL_SCANCODE_UNKNOWN = 0 - integer(kind=c_int), parameter :: SDL_SCANCODE_A = 4 - integer(kind=c_int), parameter :: SDL_SCANCODE_B = 5 - integer(kind=c_int), parameter :: SDL_SCANCODE_C = 6 - integer(kind=c_int), parameter :: SDL_SCANCODE_D = 7 - integer(kind=c_int), parameter :: SDL_SCANCODE_E = 8 - integer(kind=c_int), parameter :: SDL_SCANCODE_F = 9 - integer(kind=c_int), parameter :: SDL_SCANCODE_G = 10 - integer(kind=c_int), parameter :: SDL_SCANCODE_H = 11 - integer(kind=c_int), parameter :: SDL_SCANCODE_I = 12 - integer(kind=c_int), parameter :: SDL_SCANCODE_J = 13 - integer(kind=c_int), parameter :: SDL_SCANCODE_K = 14 - integer(kind=c_int), parameter :: SDL_SCANCODE_L = 15 - integer(kind=c_int), parameter :: SDL_SCANCODE_M = 16 - integer(kind=c_int), parameter :: SDL_SCANCODE_N = 17 - integer(kind=c_int), parameter :: SDL_SCANCODE_O = 18 - integer(kind=c_int), parameter :: SDL_SCANCODE_P = 19 - integer(kind=c_int), parameter :: SDL_SCANCODE_Q = 20 - integer(kind=c_int), parameter :: SDL_SCANCODE_R = 21 - integer(kind=c_int), parameter :: SDL_SCANCODE_S = 22 - integer(kind=c_int), parameter :: SDL_SCANCODE_T = 23 - integer(kind=c_int), parameter :: SDL_SCANCODE_U = 24 - integer(kind=c_int), parameter :: SDL_SCANCODE_V = 25 - integer(kind=c_int), parameter :: SDL_SCANCODE_W = 26 - integer(kind=c_int), parameter :: SDL_SCANCODE_X = 27 - integer(kind=c_int), parameter :: SDL_SCANCODE_Y = 28 - integer(kind=c_int), parameter :: SDL_SCANCODE_Z = 29 - integer(kind=c_int), parameter :: SDL_SCANCODE_1 = 30 - integer(kind=c_int), parameter :: SDL_SCANCODE_2 = 31 - integer(kind=c_int), parameter :: SDL_SCANCODE_3 = 32 - integer(kind=c_int), parameter :: SDL_SCANCODE_4 = 33 - integer(kind=c_int), parameter :: SDL_SCANCODE_5 = 34 - integer(kind=c_int), parameter :: SDL_SCANCODE_6 = 35 - integer(kind=c_int), parameter :: SDL_SCANCODE_7 = 36 - integer(kind=c_int), parameter :: SDL_SCANCODE_8 = 37 - integer(kind=c_int), parameter :: SDL_SCANCODE_9 = 38 - integer(kind=c_int), parameter :: SDL_SCANCODE_0 = 39 - integer(kind=c_int), parameter :: SDL_SCANCODE_RETURN = 40 - integer(kind=c_int), parameter :: SDL_SCANCODE_ESCAPE = 41 - integer(kind=c_int), parameter :: SDL_SCANCODE_BACKSPACE = 42 - integer(kind=c_int), parameter :: SDL_SCANCODE_TAB = 43 - integer(kind=c_int), parameter :: SDL_SCANCODE_SPACE = 44 - integer(kind=c_int), parameter :: SDL_SCANCODE_MINUS = 45 - integer(kind=c_int), parameter :: SDL_SCANCODE_EQUALS = 46 - integer(kind=c_int), parameter :: SDL_SCANCODE_LEFTBRACKET = 47 - integer(kind=c_int), parameter :: SDL_SCANCODE_RIGHTBRACKET = 48 - integer(kind=c_int), parameter :: SDL_SCANCODE_BACKSLASH = 49 - integer(kind=c_int), parameter :: SDL_SCANCODE_NONUSHASH = 50 - integer(kind=c_int), parameter :: SDL_SCANCODE_SEMICOLON = 51 - integer(kind=c_int), parameter :: SDL_SCANCODE_APOSTROPHE = 52 - integer(kind=c_int), parameter :: SDL_SCANCODE_GRAVE = 53 - integer(kind=c_int), parameter :: SDL_SCANCODE_COMMA = 54 - integer(kind=c_int), parameter :: SDL_SCANCODE_PERIOD = 55 - integer(kind=c_int), parameter :: SDL_SCANCODE_SLASH = 56 - integer(kind=c_int), parameter :: SDL_SCANCODE_CAPSLOCK = 57 - integer(kind=c_int), parameter :: SDL_SCANCODE_F1 = 58 - integer(kind=c_int), parameter :: SDL_SCANCODE_F2 = 59 - integer(kind=c_int), parameter :: SDL_SCANCODE_F3 = 60 - integer(kind=c_int), parameter :: SDL_SCANCODE_F4 = 61 - integer(kind=c_int), parameter :: SDL_SCANCODE_F5 = 62 - integer(kind=c_int), parameter :: SDL_SCANCODE_F6 = 63 - integer(kind=c_int), parameter :: SDL_SCANCODE_F7 = 64 - integer(kind=c_int), parameter :: SDL_SCANCODE_F8 = 65 - integer(kind=c_int), parameter :: SDL_SCANCODE_F9 = 66 - integer(kind=c_int), parameter :: SDL_SCANCODE_F10 = 67 - integer(kind=c_int), parameter :: SDL_SCANCODE_F11 = 68 - integer(kind=c_int), parameter :: SDL_SCANCODE_F12 = 69 - integer(kind=c_int), parameter :: SDL_SCANCODE_PRINTSCREEN = 70 - integer(kind=c_int), parameter :: SDL_SCANCODE_SCROLLLOCK = 71 - integer(kind=c_int), parameter :: SDL_SCANCODE_PAUSE = 72 - integer(kind=c_int), parameter :: SDL_SCANCODE_INSERT = 73 - integer(kind=c_int), parameter :: SDL_SCANCODE_HOME = 74 - integer(kind=c_int), parameter :: SDL_SCANCODE_PAGEUP = 75 - integer(kind=c_int), parameter :: SDL_SCANCODE_DELETE = 76 - integer(kind=c_int), parameter :: SDL_SCANCODE_END = 77 - integer(kind=c_int), parameter :: SDL_SCANCODE_PAGEDOWN = 78 - integer(kind=c_int), parameter :: SDL_SCANCODE_RIGHT = 79 - integer(kind=c_int), parameter :: SDL_SCANCODE_LEFT = 80 - integer(kind=c_int), parameter :: SDL_SCANCODE_DOWN = 81 - integer(kind=c_int), parameter :: SDL_SCANCODE_UP = 82 - integer(kind=c_int), parameter :: SDL_SCANCODE_NUMLOCKCLEAR = 83 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_DIVIDE = 84 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_MULTIPLY = 85 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_MINUS = 86 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_PLUS = 87 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_ENTER = 88 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_1 = 89 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_2 = 90 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_3 = 91 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_4 = 92 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_5 = 93 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_6 = 94 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_7 = 95 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_8 = 96 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_9 = 97 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_0 = 98 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_PERIOD = 99 - integer(kind=c_int), parameter :: SDL_SCANCODE_NONUSBACKSLASH = 100 - integer(kind=c_int), parameter :: SDL_SCANCODE_APPLICATION = 101 - integer(kind=c_int), parameter :: SDL_SCANCODE_POWER = 102 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_EQUALS = 103 - integer(kind=c_int), parameter :: SDL_SCANCODE_F13 = 104 - integer(kind=c_int), parameter :: SDL_SCANCODE_F14 = 105 - integer(kind=c_int), parameter :: SDL_SCANCODE_F15 = 106 - integer(kind=c_int), parameter :: SDL_SCANCODE_F16 = 107 - integer(kind=c_int), parameter :: SDL_SCANCODE_F17 = 108 - integer(kind=c_int), parameter :: SDL_SCANCODE_F18 = 109 - integer(kind=c_int), parameter :: SDL_SCANCODE_F19 = 110 - integer(kind=c_int), parameter :: SDL_SCANCODE_F20 = 111 - integer(kind=c_int), parameter :: SDL_SCANCODE_F21 = 112 - integer(kind=c_int), parameter :: SDL_SCANCODE_F22 = 113 - integer(kind=c_int), parameter :: SDL_SCANCODE_F23 = 114 - integer(kind=c_int), parameter :: SDL_SCANCODE_F24 = 115 - integer(kind=c_int), parameter :: SDL_SCANCODE_EXECUTE = 116 - integer(kind=c_int), parameter :: SDL_SCANCODE_HELP = 117 - integer(kind=c_int), parameter :: SDL_SCANCODE_MENU = 118 - integer(kind=c_int), parameter :: SDL_SCANCODE_SELECT = 119 - integer(kind=c_int), parameter :: SDL_SCANCODE_STOP = 120 - integer(kind=c_int), parameter :: SDL_SCANCODE_AGAIN = 121 - integer(kind=c_int), parameter :: SDL_SCANCODE_UNDO = 122 - integer(kind=c_int), parameter :: SDL_SCANCODE_CUT = 123 - integer(kind=c_int), parameter :: SDL_SCANCODE_COPY = 124 - integer(kind=c_int), parameter :: SDL_SCANCODE_PASTE = 125 - integer(kind=c_int), parameter :: SDL_SCANCODE_FIND = 126 - integer(kind=c_int), parameter :: SDL_SCANCODE_MUTE = 127 - integer(kind=c_int), parameter :: SDL_SCANCODE_VOLUMEUP = 128 - integer(kind=c_int), parameter :: SDL_SCANCODE_VOLUMEDOWN = 129 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_COMMA = 133 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_EQUALSAS400 = 134 - integer(kind=c_int), parameter :: SDL_SCANCODE_INTERNATIONAL1 = 135 - integer(kind=c_int), parameter :: SDL_SCANCODE_INTERNATIONAL2 = 136 - integer(kind=c_int), parameter :: SDL_SCANCODE_INTERNATIONAL3 = 137 - integer(kind=c_int), parameter :: SDL_SCANCODE_INTERNATIONAL4 = 138 - integer(kind=c_int), parameter :: SDL_SCANCODE_INTERNATIONAL5 = 139 - integer(kind=c_int), parameter :: SDL_SCANCODE_INTERNATIONAL6 = 140 - integer(kind=c_int), parameter :: SDL_SCANCODE_INTERNATIONAL7 = 141 - integer(kind=c_int), parameter :: SDL_SCANCODE_INTERNATIONAL8 = 142 - integer(kind=c_int), parameter :: SDL_SCANCODE_INTERNATIONAL9 = 143 - integer(kind=c_int), parameter :: SDL_SCANCODE_LANG1 = 144 - integer(kind=c_int), parameter :: SDL_SCANCODE_LANG2 = 145 - integer(kind=c_int), parameter :: SDL_SCANCODE_LANG3 = 146 - integer(kind=c_int), parameter :: SDL_SCANCODE_LANG4 = 147 - integer(kind=c_int), parameter :: SDL_SCANCODE_LANG5 = 148 - integer(kind=c_int), parameter :: SDL_SCANCODE_LANG6 = 149 - integer(kind=c_int), parameter :: SDL_SCANCODE_LANG7 = 150 - integer(kind=c_int), parameter :: SDL_SCANCODE_LANG8 = 151 - integer(kind=c_int), parameter :: SDL_SCANCODE_LANG9 = 152 - integer(kind=c_int), parameter :: SDL_SCANCODE_ALTERASE = 153 - integer(kind=c_int), parameter :: SDL_SCANCODE_SYSREQ = 154 - integer(kind=c_int), parameter :: SDL_SCANCODE_CANCEL = 155 - integer(kind=c_int), parameter :: SDL_SCANCODE_CLEAR = 156 - integer(kind=c_int), parameter :: SDL_SCANCODE_PRIOR = 157 - integer(kind=c_int), parameter :: SDL_SCANCODE_RETURN2 = 158 - integer(kind=c_int), parameter :: SDL_SCANCODE_SEPARATOR = 159 - integer(kind=c_int), parameter :: SDL_SCANCODE_OUT = 160 - integer(kind=c_int), parameter :: SDL_SCANCODE_OPER = 161 - integer(kind=c_int), parameter :: SDL_SCANCODE_CLEARAGAIN = 162 - integer(kind=c_int), parameter :: SDL_SCANCODE_CRSEL = 163 - integer(kind=c_int), parameter :: SDL_SCANCODE_EXSEL = 164 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_00 = 176 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_000 = 177 - integer(kind=c_int), parameter :: SDL_SCANCODE_THOUSANDSSEPARATOR = 178 - integer(kind=c_int), parameter :: SDL_SCANCODE_DECIMALSEPARATOR = 179 - integer(kind=c_int), parameter :: SDL_SCANCODE_CURRENCYUNIT = 180 - integer(kind=c_int), parameter :: SDL_SCANCODE_CURRENCYSUBUNIT = 181 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_LEFTPAREN = 182 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_RIGHTPAREN = 183 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_LEFTBRACE = 184 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_RIGHTBRACE = 185 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_TAB = 186 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_BACKSPACE = 187 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_A = 188 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_B = 189 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_C = 190 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_D = 191 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_E = 192 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_F = 193 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_XOR = 194 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_POWER = 195 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_PERCENT = 196 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_LESS = 197 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_GREATER = 198 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_AMPERSAND = 199 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_DBLAMPERSAND = 200 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_VERTICALBAR = 201 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_DBLVERTICALBAR = 202 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_COLON = 203 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_HASH = 204 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_SPACE = 205 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_AT = 206 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_EXCLAM = 207 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_MEMSTORE = 208 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_MEMRECALL = 209 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_MEMCLEAR = 210 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_MEMADD = 211 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_MEMSUBTRACT = 212 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_MEMMULTIPLY = 213 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_MEMDIVIDE = 214 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_PLUSMINUS = 215 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_CLEAR = 216 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_CLEARENTRY = 217 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_BINARY = 218 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_OCTAL = 219 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_DECIMAL = 220 - integer(kind=c_int), parameter :: SDL_SCANCODE_KP_HEXADECIMAL = 221 - integer(kind=c_int), parameter :: SDL_SCANCODE_LCTRL = 224 - integer(kind=c_int), parameter :: SDL_SCANCODE_LSHIFT = 225 - integer(kind=c_int), parameter :: SDL_SCANCODE_LALT = 226 - integer(kind=c_int), parameter :: SDL_SCANCODE_LGUI = 227 - integer(kind=c_int), parameter :: SDL_SCANCODE_RCTRL = 228 - integer(kind=c_int), parameter :: SDL_SCANCODE_RSHIFT = 229 - integer(kind=c_int), parameter :: SDL_SCANCODE_RALT = 230 - integer(kind=c_int), parameter :: SDL_SCANCODE_RGUI = 231 - integer(kind=c_int), parameter :: SDL_SCANCODE_MODE = 257 - integer(kind=c_int), parameter :: SDL_SCANCODE_AUDIONEXT = 258 - integer(kind=c_int), parameter :: SDL_SCANCODE_AUDIOPREV = 259 - integer(kind=c_int), parameter :: SDL_SCANCODE_AUDIOSTOP = 260 - integer(kind=c_int), parameter :: SDL_SCANCODE_AUDIOPLAY = 261 - integer(kind=c_int), parameter :: SDL_SCANCODE_AUDIOMUTE = 262 - integer(kind=c_int), parameter :: SDL_SCANCODE_MEDIASELECT = 263 - integer(kind=c_int), parameter :: SDL_SCANCODE_WWW = 264 - integer(kind=c_int), parameter :: SDL_SCANCODE_MAIL = 265 - integer(kind=c_int), parameter :: SDL_SCANCODE_CALCULATOR = 266 - integer(kind=c_int), parameter :: SDL_SCANCODE_COMPUTER = 267 - integer(kind=c_int), parameter :: SDL_SCANCODE_AC_SEARCH = 268 - integer(kind=c_int), parameter :: SDL_SCANCODE_AC_HOME = 269 - integer(kind=c_int), parameter :: SDL_SCANCODE_AC_BACK = 270 - integer(kind=c_int), parameter :: SDL_SCANCODE_AC_FORWARD = 271 - integer(kind=c_int), parameter :: SDL_SCANCODE_AC_STOP = 272 - integer(kind=c_int), parameter :: SDL_SCANCODE_AC_REFRESH = 273 - integer(kind=c_int), parameter :: SDL_SCANCODE_AC_BOOKMARKS = 274 - integer(kind=c_int), parameter :: SDL_SCANCODE_BRIGHTNESSDOWN = 275 - integer(kind=c_int), parameter :: SDL_SCANCODE_BRIGHTNESSUP = 276 - integer(kind=c_int), parameter :: SDL_SCANCODE_DISPLAYSWITCH = 277 - integer(kind=c_int), parameter :: SDL_SCANCODE_KBDILLUMTOGGLE = 278 - integer(kind=c_int), parameter :: SDL_SCANCODE_KBDILLUMDOWN = 279 - integer(kind=c_int), parameter :: SDL_SCANCODE_KBDILLUMUP = 280 - integer(kind=c_int), parameter :: SDL_SCANCODE_EJECT = 281 - integer(kind=c_int), parameter :: SDL_SCANCODE_SLEEP = 282 - integer(kind=c_int), parameter :: SDL_SCANCODE_APP1 = 283 - integer(kind=c_int), parameter :: SDL_SCANCODE_APP2 = 284 - integer(kind=c_int), parameter :: SDL_SCANCODE_AUDIOREWIND = 285 - integer(kind=c_int), parameter :: SDL_SCANCODE_AUDIOFASTFORWARD = 286 - integer(kind=c_int), parameter :: SDL_NUM_SCANCODES = 512 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_UNKNOWN = 0 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_A = 4 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_B = 5 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_C = 6 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_D = 7 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_E = 8 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F = 9 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_G = 10 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_H = 11 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_I = 12 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_J = 13 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_K = 14 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_L = 15 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_M = 16 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_N = 17 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_O = 18 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_P = 19 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_Q = 20 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_R = 21 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_S = 22 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_T = 23 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_U = 24 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_V = 25 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_W = 26 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_X = 27 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_Y = 28 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_Z = 29 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_1 = 30 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_2 = 31 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_3 = 32 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_4 = 33 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_5 = 34 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_6 = 35 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_7 = 36 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_8 = 37 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_9 = 38 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_0 = 39 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_RETURN = 40 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_ESCAPE = 41 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_BACKSPACE = 42 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_TAB = 43 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_SPACE = 44 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_MINUS = 45 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_EQUALS = 46 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LEFTBRACKET = 47 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_RIGHTBRACKET = 48 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_BACKSLASH = 49 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_NONUSHASH = 50 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_SEMICOLON = 51 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_APOSTROPHE = 52 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_GRAVE = 53 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_COMMA = 54 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_PERIOD = 55 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_SLASH = 56 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_CAPSLOCK = 57 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F1 = 58 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F2 = 59 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F3 = 60 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F4 = 61 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F5 = 62 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F6 = 63 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F7 = 64 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F8 = 65 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F9 = 66 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F10 = 67 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F11 = 68 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F12 = 69 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_PRINTSCREEN = 70 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_SCROLLLOCK = 71 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_PAUSE = 72 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INSERT = 73 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_HOME = 74 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_PAGEUP = 75 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_DELETE = 76 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_END = 77 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_PAGEDOWN = 78 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_RIGHT = 79 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LEFT = 80 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_DOWN = 81 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_UP = 82 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_NUMLOCKCLEAR = 83 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_DIVIDE = 84 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_MULTIPLY = 85 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_MINUS = 86 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_PLUS = 87 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_ENTER = 88 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_1 = 89 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_2 = 90 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_3 = 91 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_4 = 92 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_5 = 93 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_6 = 94 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_7 = 95 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_8 = 96 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_9 = 97 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_0 = 98 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_PERIOD = 99 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_NONUSBACKSLASH = 100 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_APPLICATION = 101 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_POWER = 102 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_EQUALS = 103 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F13 = 104 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F14 = 105 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F15 = 106 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F16 = 107 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F17 = 108 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F18 = 109 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F19 = 110 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F20 = 111 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F21 = 112 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F22 = 113 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F23 = 114 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_F24 = 115 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_EXECUTE = 116 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_HELP = 117 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_MENU = 118 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_SELECT = 119 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_STOP = 120 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AGAIN = 121 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_UNDO = 122 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_CUT = 123 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_COPY = 124 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_PASTE = 125 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_FIND = 126 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_MUTE = 127 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_VOLUMEUP = 128 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_VOLUMEDOWN = 129 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_COMMA = 133 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_EQUALSAS400 = 134 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INTERNATIONAL1 = 135 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INTERNATIONAL2 = 136 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INTERNATIONAL3 = 137 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INTERNATIONAL4 = 138 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INTERNATIONAL5 = 139 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INTERNATIONAL6 = 140 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INTERNATIONAL7 = 141 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INTERNATIONAL8 = 142 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_INTERNATIONAL9 = 143 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LANG1 = 144 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LANG2 = 145 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LANG3 = 146 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LANG4 = 147 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LANG5 = 148 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LANG6 = 149 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LANG7 = 150 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LANG8 = 151 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LANG9 = 152 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_ALTERASE = 153 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_SYSREQ = 154 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_CANCEL = 155 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_CLEAR = 156 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_PRIOR = 157 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_RETURN2 = 158 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_SEPARATOR = 159 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_OUT = 160 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_OPER = 161 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_CLEARAGAIN = 162 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_CRSEL = 163 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_EXSEL = 164 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_00 = 176 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_000 = 177 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_THOUSANDSSEPARATOR = 178 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_DECIMALSEPARATOR = 179 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_CURRENCYUNIT = 180 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_CURRENCYSUBUNIT = 181 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_LEFTPAREN = 182 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_RIGHTPAREN = 183 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_LEFTBRACE = 184 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_RIGHTBRACE = 185 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_TAB = 186 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_BACKSPACE = 187 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_A = 188 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_B = 189 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_C = 190 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_D = 191 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_E = 192 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_F = 193 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_XOR = 194 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_POWER = 195 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_PERCENT = 196 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_LESS = 197 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_GREATER = 198 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_AMPERSAND = 199 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_DBLAMPERSAND = 200 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_VERTICALBAR = 201 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_DBLVERTICALBAR = 202 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_COLON = 203 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_HASH = 204 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_SPACE = 205 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_AT = 206 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_EXCLAM = 207 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_MEMSTORE = 208 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_MEMRECALL = 209 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_MEMCLEAR = 210 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_MEMADD = 211 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_MEMSUBTRACT = 212 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_MEMMULTIPLY = 213 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_MEMDIVIDE = 214 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_PLUSMINUS = 215 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_CLEAR = 216 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_CLEARENTRY = 217 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_BINARY = 218 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_OCTAL = 219 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_DECIMAL = 220 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KP_HEXADECIMAL = 221 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LCTRL = 224 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LSHIFT = 225 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LALT = 226 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_LGUI = 227 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_RCTRL = 228 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_RSHIFT = 229 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_RALT = 230 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_RGUI = 231 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_MODE = 257 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AUDIONEXT = 258 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AUDIOPREV = 259 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AUDIOSTOP = 260 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AUDIOPLAY = 261 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AUDIOMUTE = 262 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_MEDIASELECT = 263 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_WWW = 264 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_MAIL = 265 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_CALCULATOR = 266 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_COMPUTER = 267 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AC_SEARCH = 268 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AC_HOME = 269 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AC_BACK = 270 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AC_FORWARD = 271 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AC_STOP = 272 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AC_REFRESH = 273 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AC_BOOKMARKS = 274 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_BRIGHTNESSDOWN = 275 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_BRIGHTNESSUP = 276 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_DISPLAYSWITCH = 277 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KBDILLUMTOGGLE = 278 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KBDILLUMDOWN = 279 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_KBDILLUMUP = 280 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_EJECT = 281 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_SLEEP = 282 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_APP1 = 283 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_APP2 = 284 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AUDIOREWIND = 285 + integer(kind=c_int), parameter, public :: SDL_SCANCODE_AUDIOFASTFORWARD = 286 + integer(kind=c_int), parameter, public :: SDL_NUM_SCANCODES = 512 end module sdl2_scancode diff --git a/src/sdl2/sdl2_stdinc.f90 b/src/sdl2/sdl2_stdinc.f90 index 32198db..16fc562 100644 --- a/src/sdl2/sdl2_stdinc.f90 +++ b/src/sdl2/sdl2_stdinc.f90 @@ -6,17 +6,20 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_stdinc - use, intrinsic :: iso_c_binding, only: c_bool, c_int, c_ptr + use sdl2_c_types, only: c_ptr, c_int, c_size_t implicit none + private ! Type alias for SDL_bool. - integer, parameter :: sdl_bool = c_int + integer, parameter, public :: sdl_bool = c_int - integer(kind=c_int), parameter :: SDL_FALSE = 0 - integer(kind=c_int), parameter :: SDL_TRUE = 1 + integer(kind=c_int), parameter, public :: SDL_FALSE = 0 + integer(kind=c_int), parameter, public :: SDL_TRUE = 1 public :: sdl_free + public :: c_strlen + ! Foreign function interfaces to libc. interface ! void free(void *ptr); subroutine sdl_free(ptr) bind(c, name='free') @@ -24,4 +27,13 @@ subroutine sdl_free(ptr) bind(c, name='free') type(c_ptr), value, intent(in) :: ptr end subroutine sdl_free end interface + + interface + function c_strlen(str) bind(c, name='strlen') + import :: c_ptr, c_size_t + type(c_ptr), intent(in), value :: str + integer(kind=c_size_t) :: c_strlen + end function c_strlen + end interface + end module sdl2_stdinc diff --git a/src/sdl2/sdl2_surface.f90 b/src/sdl2/sdl2_surface.f90 index f116deb..364eb86 100644 --- a/src/sdl2/sdl2_surface.f90 +++ b/src/sdl2/sdl2_surface.f90 @@ -6,15 +6,15 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_surface - use, intrinsic :: iso_c_binding - use :: c_util + use sdl2_c_types, only: c_ptr, c_null_ptr, c_int, c_uint32_t use :: sdl2_pixels use :: sdl2_rect use :: sdl2_stdinc implicit none + private ! SDL_Surface - type, bind(c) :: sdl_surface + type, public, bind(c) :: sdl_surface integer(kind=c_uint32_t) :: flags = 0 type(c_ptr) :: format = c_null_ptr integer(kind=c_int) :: w = 0 diff --git a/src/sdl2/sdl2_thread.f90 b/src/sdl2/sdl2_thread.f90 index 5330f4f..bec86f8 100644 --- a/src/sdl2/sdl2_thread.f90 +++ b/src/sdl2/sdl2_thread.f90 @@ -6,7 +6,7 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_thread - use, intrinsic :: iso_c_binding, only: c_char, c_funptr, c_int, c_ptr + use sdl2_c_types, only: c_char, c_int, c_ptr, c_funptr implicit none public :: sdl_create_thread diff --git a/src/sdl2/sdl2_timer.f90 b/src/sdl2/sdl2_timer.f90 index 2dbb213..c49a882 100644 --- a/src/sdl2/sdl2_timer.f90 +++ b/src/sdl2/sdl2_timer.f90 @@ -6,11 +6,12 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_timer - use, intrinsic :: iso_c_binding - use :: c_util, only: c_uint32_t, c_uint64_t + use sdl2_c_types, only: c_uint32_t, c_uint64_t implicit none + private public :: sdl_delay + public :: sdl_get_ticks public :: sdl_get_performance_counter public :: sdl_get_performance_frequency diff --git a/src/sdl2/sdl2_version.f90 b/src/sdl2/sdl2_version.f90 index d078882..0468c65 100644 --- a/src/sdl2/sdl2_version.f90 +++ b/src/sdl2/sdl2_version.f90 @@ -6,12 +6,12 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_version - use, intrinsic :: iso_c_binding - use :: c_util, only: c_uint8_t + use sdl2_c_types, only: c_uint8_t implicit none + private ! SDL_version - type, bind(c) :: sdl_version + type, public, bind(c) :: sdl_version integer(kind=c_uint8_t) :: major integer(kind=c_uint8_t) :: minor integer(kind=c_uint8_t) :: patch diff --git a/src/sdl2/sdl2_video.f90 b/src/sdl2/sdl2_video.f90 index 1dde00c..f44ff8b 100644 --- a/src/sdl2/sdl2_video.f90 +++ b/src/sdl2/sdl2_video.f90 @@ -6,11 +6,11 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_video - use, intrinsic :: iso_c_binding - use :: c_util, only: c_uint32_t use :: sdl2_surface, only: sdl_surface use :: sdl2_stdinc, only: sdl_bool + use sdl2_c_types, only: c_ptr, c_char, c_int, c_uint32_t implicit none + private integer(kind=c_int), parameter :: SDL_WINDOWPOS_UNDEFINED_MASK = int(z'1FFF0000') integer(kind=c_int), parameter :: SDL_WINDOWPOS_UNDEFINED = ior(SDL_WINDOWPOS_UNDEFINED_MASK, 0) diff --git a/src/sdl2_image.f90 b/src/sdl2_image.f90 index 033429f..3247cb8 100644 --- a/src/sdl2_image.f90 +++ b/src/sdl2_image.f90 @@ -6,7 +6,8 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_image - use, intrinsic :: iso_c_binding, only: c_associated, c_char, c_int, c_ptr + use sdl2_c_types, only: c_ptr, c_char, c_int + use, intrinsic :: iso_c_binding, only: c_f_pointer, c_associated use :: sdl2_surface implicit none private diff --git a/src/sdl2_mixer.f90 b/src/sdl2_mixer.f90 index 38d25cc..cd864e8 100644 --- a/src/sdl2_mixer.f90 +++ b/src/sdl2_mixer.f90 @@ -6,47 +6,47 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_mixer - use, intrinsic :: iso_c_binding - use :: c_util + use sdl2_c_types, only: c_ptr, c_char, c_int, c_int16_t, c_int64_t, c_uint32_t, c_null_char + use sdl2_rwops, only: sdl_rw_from_file implicit none - integer(kind=c_int), parameter :: AUDIO_U8 = int(z'0008') - integer(kind=c_int), parameter :: AUDIO_S8 = int(z'8008') - integer(kind=c_int), parameter :: AUDIO_U16LSB = int(z'0010') - integer(kind=c_int), parameter :: AUDIO_S16LSB = int(z'8010') - integer(kind=c_int), parameter :: AUDIO_U16MSB = int(z'1010') - integer(kind=c_int), parameter :: AUDIO_S16MSB = int(z'9010') - integer(kind=c_int), parameter :: AUDIO_U16 = AUDIO_U16LSB - integer(kind=c_int), parameter :: AUDIO_S16 = AUDIO_S16LSB - - integer(kind=c_int), parameter :: AUDIO_S32LSB = int(z'8020') - integer(kind=c_int), parameter :: AUDIO_S32MSB = int(z'9020') - integer(kind=c_int), parameter :: AUDIO_S32 = AUDIO_S32LSB - - integer(kind=c_int), parameter :: AUDIO_F32LSB = int(z'8120') - integer(kind=c_int), parameter :: AUDIO_F32MSB = int(z'9120') - integer(kind=c_int), parameter :: AUDIO_F32 = AUDIO_F32LSB - - integer(kind=c_int), parameter :: SDL_AUDIO_ALLOW_FREQUENCY_CHANGE = int(z'00000001') - integer(kind=c_int), parameter :: SDL_AUDIO_ALLOW_FORMAT_CHANGE = int(z'00000002') - integer(kind=c_int), parameter :: SDL_AUDIO_ALLOW_CHANNELS_CHANGE = int(z'00000002') - integer(kind=c_int), parameter :: SDL_AUDIO_ALLOW_ANY_CHANGE = ior(SDL_AUDIO_ALLOW_FREQUENCY_CHANGE, & - ior(SDL_AUDIO_ALLOW_FORMAT_CHANGE, & - SDL_AUDIO_ALLOW_CHANNELS_CHANGE)) - - integer(kind=c_int), parameter :: MIX_INIT_FLAC = int(z'00000001') - integer(kind=c_int), parameter :: MIX_INIT_MOD = int(z'00000002') - integer(kind=c_int), parameter :: MIX_INIT_MP3 = int(z'00000008') - integer(kind=c_int), parameter :: MIX_INIT_OGG = int(z'00000010') - integer(kind=c_int), parameter :: MIX_INIT_MID = int(z'00000020') - integer(kind=c_int), parameter :: MIX_INIT_OPUS = int(z'00000040') - - integer(kind=c_int), parameter :: MIX_CHANNELS = 8 - integer(kind=c_int), parameter :: MIX_DEFAULT_FREQUENCY = 22050 - integer(kind=c_int), parameter :: MIX_DEFAULT_CHANNELS = 2 - integer(kind=c_int), parameter :: MIX_MAX_VOLUME = 128 - - type, bind(c) :: mix_chunk + integer(kind=c_int), parameter, public :: AUDIO_U8 = int(z'0008') + integer(kind=c_int), parameter, public :: AUDIO_S8 = int(z'8008') + integer(kind=c_int), parameter, public :: AUDIO_U16LSB = int(z'0010') + integer(kind=c_int), parameter, public :: AUDIO_S16LSB = int(z'8010') + integer(kind=c_int), parameter, public :: AUDIO_U16MSB = int(z'1010') + integer(kind=c_int), parameter, public :: AUDIO_S16MSB = int(z'9010') + integer(kind=c_int), parameter, public :: AUDIO_U16 = AUDIO_U16LSB + integer(kind=c_int), parameter, public :: AUDIO_S16 = AUDIO_S16LSB + + integer(kind=c_int), parameter, public :: AUDIO_S32LSB = int(z'8020') + integer(kind=c_int), parameter, public :: AUDIO_S32MSB = int(z'9020') + integer(kind=c_int), parameter, public :: AUDIO_S32 = AUDIO_S32LSB + + integer(kind=c_int), parameter, public :: AUDIO_F32LSB = int(z'8120') + integer(kind=c_int), parameter, public :: AUDIO_F32MSB = int(z'9120') + integer(kind=c_int), parameter, public :: AUDIO_F32 = AUDIO_F32LSB + + integer(kind=c_int), parameter, public :: SDL_AUDIO_ALLOW_FREQUENCY_CHANGE = int(z'00000001') + integer(kind=c_int), parameter, public :: SDL_AUDIO_ALLOW_FORMAT_CHANGE = int(z'00000002') + integer(kind=c_int), parameter, public :: SDL_AUDIO_ALLOW_CHANNELS_CHANGE = int(z'00000002') + integer(kind=c_int), parameter, public :: SDL_AUDIO_ALLOW_ANY_CHANGE = ior(SDL_AUDIO_ALLOW_FREQUENCY_CHANGE, & + ior(SDL_AUDIO_ALLOW_FORMAT_CHANGE, & + SDL_AUDIO_ALLOW_CHANNELS_CHANGE)) + + integer(kind=c_int), parameter, public :: MIX_INIT_FLAC = int(z'00000001') + integer(kind=c_int), parameter, public :: MIX_INIT_MOD = int(z'00000002') + integer(kind=c_int), parameter, public :: MIX_INIT_MP3 = int(z'00000008') + integer(kind=c_int), parameter, public :: MIX_INIT_OGG = int(z'00000010') + integer(kind=c_int), parameter, public :: MIX_INIT_MID = int(z'00000020') + integer(kind=c_int), parameter, public :: MIX_INIT_OPUS = int(z'00000040') + + integer(kind=c_int), parameter, public :: MIX_CHANNELS = 8 + integer(kind=c_int), parameter, public :: MIX_DEFAULT_FREQUENCY = 22050 + integer(kind=c_int), parameter, public :: MIX_DEFAULT_CHANNELS = 2 + integer(kind=c_int), parameter, public :: MIX_MAX_VOLUME = 128 + + type, public, bind(c) :: mix_chunk integer(kind=c_int) :: allocated type(c_ptr) :: abuf integer(kind=c_int64_t) :: alen diff --git a/src/sdl2_ttf.f90 b/src/sdl2_ttf.f90 index d9a24b9..5fcabda 100644 --- a/src/sdl2_ttf.f90 +++ b/src/sdl2_ttf.f90 @@ -6,7 +6,7 @@ ! GitHub: https://github.com/interkosmos/fortran-sdl2/ ! Licence: ISC module sdl2_ttf - use, intrinsic :: iso_c_binding + use sdl2_c_types, only: c_ptr, c_char, c_int implicit none private From 048562545b123d239239ef10c1130b3cabbf76b5 Mon Sep 17 00:00:00 2001 From: "Igor S. Gerasimov" Date: Thu, 25 Sep 2025 18:35:55 +0200 Subject: [PATCH 2/2] Update build systems --- Makefile | 4 ++-- xmake.lua | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 8f8c1aa..84c6c0c 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ LDLIBS = `sdl2-config --libs` LIBGL = -lGL LIBGLU = -lGLU -SDL_SRC = src/c_util.F90 \ +SDL_SRC = src/sdl2/sdl2_c_types.F90 \ src/sdl2/sdl2_stdinc.f90 \ src/sdl2/sdl2_audio.f90 \ src/sdl2/sdl2_blendmode.f90 \ @@ -37,7 +37,7 @@ SDL_SRC = src/c_util.F90 \ src/sdl2/sdl2_opengl.f90 \ src/sdl2.f90 IMG_SRC = src/sdl2_image.f90 -MIX_SRC = src/c_util.F90 \ +MIX_SRC = src/sdl2/sdl2_c_types.F90 \ src/sdl2_mixer.f90 TTF_SRC = src/sdl2_ttf.f90 GLU_SRC = src/glu.f90 diff --git a/xmake.lua b/xmake.lua index 2263016..aee1d43 100644 --- a/xmake.lua +++ b/xmake.lua @@ -10,7 +10,7 @@ target("sdl2") set_kind("static") set_targetdir("build/sdl2") set_values("fortran.moduledir", "build/sdl2") - add_files("src/c_util.f90") + add_files("src/sdl2/sdl2_c_types.F90") add_files("src/sdl2/sdl2_stdinc.f90") add_files("src/sdl2/sdl2_audio.f90") add_files("src/sdl2/sdl2_blendmode.f90") @@ -56,7 +56,7 @@ target("sdl2_mixer") set_targetdir("build/sdl2_mixer") set_values("fortran.moduledir", "build/sdl2_mixer") add_deps("sdl2") - add_files("src/c_util.f90") + add_files("src/sdl2/sdl2_c_types.F90") add_files("src/sdl2_mixer.f90") -- libsdl2_ttf.a @@ -83,7 +83,7 @@ target("fortran-sdl2") set_kind("static") set_targetdir("build/fortran-sdl2") set_values("fortran.moduledir", "build/fortran-sdl2") - add_files("src/c_util.f90") + add_files("src/sdl2/sdl2_c_types.F90") add_files("src/sdl2/sdl2_stdinc.f90") add_files("src/sdl2/sdl2_audio.f90") add_files("src/sdl2/sdl2_blendmode.f90")