From bcc7edcbec406ede3f0c6eb581eee8026e629ad7 Mon Sep 17 00:00:00 2001 From: gen2brain Date: Sat, 28 Sep 2013 19:54:24 +0200 Subject: [PATCH] move SDL library --- src/{ => m64py}/SDL/__init__.py | 42 ++++---- src/m64py/SDL/__init__.pyc | Bin 0 -> 3651 bytes src/{ => m64py}/SDL/active.py | 4 +- src/m64py/SDL/active.pyc | Bin 0 -> 998 bytes src/{ => m64py}/SDL/array.py | 0 src/m64py/SDL/array.pyc | Bin 0 -> 9687 bytes src/{ => m64py}/SDL/audio.py | 53 +++++----- src/m64py/SDL/audio.pyc | Bin 0 -> 14388 bytes src/{ => m64py}/SDL/cdrom.py | 34 +++---- src/m64py/SDL/cdrom.pyc | Bin 0 -> 7201 bytes src/{ => m64py}/SDL/constants.py | 0 src/m64py/SDL/constants.pyc | Bin 0 -> 13236 bytes src/{ => m64py}/SDL/darwin.py | 10 +- src/{ => m64py}/SDL/dll.py | 24 ++--- src/m64py/SDL/dll.pyc | Bin 0 -> 8534 bytes src/{ => m64py}/SDL/endian.py | 6 +- src/m64py/SDL/endian.pyc | Bin 0 -> 1442 bytes src/{ => m64py}/SDL/error.py | 8 +- src/m64py/SDL/error.pyc | Bin 0 -> 1893 bytes src/{ => m64py}/SDL/events.py | 69 ++++++------- src/m64py/SDL/events.pyc | Bin 0 -> 17551 bytes src/{ => m64py}/SDL/image.py | 98 +++++++++--------- src/{ => m64py}/SDL/joystick.py | 35 ++++--- src/m64py/SDL/joystick.pyc | Bin 0 -> 5864 bytes src/{ => m64py}/SDL/keyboard.py | 16 +-- src/m64py/SDL/keyboard.pyc | Bin 0 -> 4880 bytes src/{ => m64py}/SDL/mixer.py | 26 ++--- src/{ => m64py}/SDL/mouse.py | 39 +++---- src/m64py/SDL/mouse.pyc | Bin 0 -> 6215 bytes src/{ => m64py}/SDL/quit.py | 6 +- src/m64py/SDL/quit.pyc | Bin 0 -> 1332 bytes src/{ => m64py}/SDL/rwops.py | 16 +-- src/m64py/SDL/rwops.pyc | Bin 0 -> 4825 bytes src/{ => m64py}/SDL/sound.py | 17 ++-- src/{ => m64py}/SDL/timer.py | 17 ++-- src/m64py/SDL/timer.pyc | Bin 0 -> 5087 bytes src/{ => m64py}/SDL/ttf.py | 40 ++++---- src/{ => m64py}/SDL/version.py | 4 +- src/m64py/SDL/version.pyc | Bin 0 -> 2590 bytes src/{ => m64py}/SDL/video.py | 170 +++++++++++++++---------------- src/m64py/SDL/video.pyc | Bin 0 -> 53456 bytes 41 files changed, 367 insertions(+), 367 deletions(-) rename src/{ => m64py}/SDL/__init__.py (80%) create mode 100644 src/m64py/SDL/__init__.pyc rename src/{ => m64py}/SDL/active.py (90%) create mode 100644 src/m64py/SDL/active.pyc rename src/{ => m64py}/SDL/array.py (100%) create mode 100644 src/m64py/SDL/array.pyc rename src/{ => m64py}/SDL/audio.py (90%) create mode 100644 src/m64py/SDL/audio.pyc rename src/{ => m64py}/SDL/cdrom.py (89%) create mode 100644 src/m64py/SDL/cdrom.pyc rename src/{ => m64py}/SDL/constants.py (100%) create mode 100644 src/m64py/SDL/constants.pyc rename src/{ => m64py}/SDL/darwin.py (95%) rename src/{ => m64py}/SDL/dll.py (92%) create mode 100644 src/m64py/SDL/dll.pyc rename src/{ => m64py}/SDL/endian.py (87%) create mode 100644 src/m64py/SDL/endian.pyc rename src/{ => m64py}/SDL/error.py (87%) create mode 100644 src/m64py/SDL/error.pyc rename src/{ => m64py}/SDL/events.py (87%) create mode 100644 src/m64py/SDL/events.pyc rename src/{ => m64py}/SDL/image.py (80%) rename src/{ => m64py}/SDL/joystick.py (83%) create mode 100644 src/m64py/SDL/joystick.pyc rename src/{ => m64py}/SDL/keyboard.py (89%) create mode 100644 src/m64py/SDL/keyboard.pyc rename src/{ => m64py}/SDL/mixer.py (98%) rename src/{ => m64py}/SDL/mouse.py (82%) create mode 100644 src/m64py/SDL/mouse.pyc rename src/{ => m64py}/SDL/quit.py (87%) create mode 100644 src/m64py/SDL/quit.pyc rename src/{ => m64py}/SDL/rwops.py (93%) create mode 100644 src/m64py/SDL/rwops.pyc rename src/{ => m64py}/SDL/sound.py (98%) rename src/{ => m64py}/SDL/timer.py (92%) create mode 100644 src/m64py/SDL/timer.pyc rename src/{ => m64py}/SDL/ttf.py (92%) rename src/{ => m64py}/SDL/version.py (96%) create mode 100644 src/m64py/SDL/version.pyc rename src/{ => m64py}/SDL/video.py (91%) create mode 100644 src/m64py/SDL/video.pyc diff --git a/src/SDL/__init__.py b/src/m64py/SDL/__init__.py similarity index 80% rename from src/SDL/__init__.py rename to src/m64py/SDL/__init__.py index 53f1359..cb0d9e5 100644 --- a/src/SDL/__init__.py +++ b/src/m64py/SDL/__init__.py @@ -27,26 +27,26 @@ __version__ = '$Id: $' import ctypes import sys -import SDL.dll -from SDL.active import * -from SDL.audio import * -from SDL.cdrom import * -from SDL.constants import * -from SDL.endian import * -from SDL.error import * -from SDL.events import * -from SDL.joystick import * -from SDL.keyboard import * -from SDL.mouse import * -from SDL.quit import * -from SDL.rwops import * -from SDL.timer import * -from SDL.version import * -from SDL.video import * +from .dll import private_function, function +from .active import * +from .audio import * +from .cdrom import * +from .constants import * +from .endian import * +from .error import * +from .events import * +from .joystick import * +from .keyboard import * +from .mouse import * +from .quit import * +from .rwops import * +from .timer import * +from .version import * +from .video import * # SDL.h -_SDL_Init = SDL.dll.private_function('SDL_Init', +_SDL_Init = private_function('SDL_Init', arg_types=[ctypes.c_uint], return_type=ctypes.c_int) @@ -81,7 +81,7 @@ def SDL_Init(flags): SDL.darwin.init() return _SDL_Init(flags) -_SDL_InitSubSystem = SDL.dll.private_function('SDL_InitSubSystem', +_SDL_InitSubSystem = private_function('SDL_InitSubSystem', arg_types=[ctypes.c_uint], return_type=ctypes.c_int) @@ -100,7 +100,7 @@ def SDL_InitSubSystem(flags): SDL.darwin.init() return _SDL_InitSubSystem(flags) -SDL_QuitSubSystem = SDL.dll.function('SDL_QuitSubSystem', +SDL_QuitSubSystem = function('SDL_QuitSubSystem', '''Clean up specific SDL subsystems. :Parameters: @@ -112,7 +112,7 @@ SDL_QuitSubSystem = SDL.dll.function('SDL_QuitSubSystem', arg_types=[ctypes.c_uint], return_type=None) -SDL_WasInit = SDL.dll.function('SDL_WasInit', +SDL_WasInit = function('SDL_WasInit', '''Return a mask of the specified subsystems which have been initialized. @@ -129,7 +129,7 @@ SDL_WasInit = SDL.dll.function('SDL_WasInit', arg_types=[ctypes.c_uint], return_type=ctypes.c_int) -SDL_Quit = SDL.dll.function('SDL_Quit', +SDL_Quit = function('SDL_Quit', '''Clean up all initialized subsystems. You should call this function upon all exit conditions. diff --git a/src/m64py/SDL/__init__.pyc b/src/m64py/SDL/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5673f1eb31ee8b7881cbdc2c4daaaea4a9d7f68b GIT binary patch literal 3651 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 Sm20J1xn4dk*G_7s@cjYl=?6Ff literal 0 HcmV?d00001 diff --git a/src/SDL/array.py b/src/m64py/SDL/array.py similarity index 100% rename from src/SDL/array.py rename to src/m64py/SDL/array.py diff --git a/src/m64py/SDL/array.pyc b/src/m64py/SDL/array.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e7667c1de8adbb7d76fd3bb86d2a50988455d2d GIT binary patch literal 9687 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 literal 0 HcmV?d00001 diff --git a/src/SDL/audio.py b/src/m64py/SDL/audio.py similarity index 90% rename from src/SDL/audio.py rename to src/m64py/SDL/audio.py index 2ea7153..63703f3 100644 --- a/src/SDL/audio.py +++ b/src/m64py/SDL/audio.py @@ -7,12 +7,11 @@ __docformat__ = 'restructuredtext' __version__ = '$Id: $' from ctypes import * -import sys -import SDL.array -import SDL.constants -import SDL.dll -import SDL.rwops +from .array import SDL_array, to_ctypes +from .constants import AUDIO_U8, AUDIO_S8, AUDIO_U16LSB, AUDIO_S16LSB, AUDIO_U16MSB, AUDIO_S16MSB +from .dll import function, private_function +from .rwops import SDL_RWops, SDL_RWFromFile _SDL_AudioSpec_fn = \ CFUNCTYPE(POINTER(c_ubyte), POINTER(c_ubyte), POINTER(c_ubyte), c_int) @@ -93,7 +92,7 @@ SetPointerType(_SDL_AudioCVT_p, SDL_AudioCVT) # SDL_AudioInit and SDL_AudioQuit marked private -_SDL_AudioDriverName = SDL.dll.private_function('SDL_AudioDriverName', +_SDL_AudioDriverName = private_function('SDL_AudioDriverName', arg_types=[c_char_p, c_int], return_type=c_char_p) @@ -114,18 +113,18 @@ def SDL_AudioDriverName(maxlen=1024): return None def _ctype_audio_format(fmt): - if fmt == SDL.constants.AUDIO_U8: + if fmt == AUDIO_U8: return c_ubyte - elif fmt == SDL.constants.AUDIO_S8: + elif fmt == AUDIO_S8: return c_char - elif fmt in (SDL.constants.AUDIO_U16LSB, SDL.constants.AUDIO_U16MSB): + elif fmt in (AUDIO_U16LSB, AUDIO_U16MSB): return c_ushort - elif fmt in (SDL.constants.AUDIO_S16LSB, SDL.constants.AUDIO_S16MSB): + elif fmt in (AUDIO_S16LSB, AUDIO_S16MSB): return c_short else: raise TypeError, 'Unsupported format %r' % fmt -_SDL_OpenAudio = SDL.dll.private_function('SDL_OpenAudio', +_SDL_OpenAudio = private_function('SDL_OpenAudio', arg_types=[POINTER(SDL_AudioSpec), POINTER(SDL_AudioSpec)], return_type=c_int, error_return=-1) @@ -202,7 +201,7 @@ def SDL_OpenAudio(desired, obtained): ctype = [_ctype_audio_format(desired.format)] # List, so mutable def cb(data, stream, len): - ar = SDL.array.SDL_array(stream, len/sizeof(ctype[0]), ctype[0]) + ar = SDL_array(stream, len/sizeof(ctype[0]), ctype[0]) callback(userdata, ar) desired._callback = _SDL_AudioSpec_fn(cb) @@ -212,7 +211,7 @@ def SDL_OpenAudio(desired, obtained): obtained.callback = desired.callback ctype[0] = _ctype_audio_format(obtained.format) -SDL_GetAudioStatus = SDL.dll.function('SDL_GetAudioStatus', +SDL_GetAudioStatus = function('SDL_GetAudioStatus', '''Get the current audio state. :rtype: int @@ -222,7 +221,7 @@ SDL_GetAudioStatus = SDL.dll.function('SDL_GetAudioStatus', arg_types=[], return_type=c_int) -SDL_PauseAudio = SDL.dll.function('SDL_PauseAudio', +SDL_PauseAudio = function('SDL_PauseAudio', '''Pause and unpause the audio callback processing. It should be called with a parameter of 0 after opening the audio @@ -238,8 +237,8 @@ SDL_PauseAudio = SDL.dll.function('SDL_PauseAudio', arg_types=[c_int], return_type=None) -_SDL_LoadWAV_RW = SDL.dll.private_function('SDL_LoadWAV_RW', - arg_types=[POINTER(SDL.rwops.SDL_RWops), +_SDL_LoadWAV_RW = private_function('SDL_LoadWAV_RW', + arg_types=[POINTER(SDL_RWops), c_int, POINTER(SDL_AudioSpec), POINTER(POINTER(c_ubyte)), @@ -272,7 +271,7 @@ def SDL_LoadWAV_RW(src, freesrc): _SDL_LoadWAV_RW(src, freesrc, spec, byref(audio_buf), byref(audio_len)) ctype = _ctype_audio_format(spec.format) return (spec, - SDL.array.SDL_array(audio_buf, audio_len.value/sizeof(ctype), ctype)) + SDL_array(audio_buf, audio_len.value/sizeof(ctype), ctype)) def SDL_LoadWAV(file): '''Load a WAVE from a file. @@ -283,9 +282,9 @@ def SDL_LoadWAV(file): :rtype: (`SDL_AudioSpec`, `SDL_array`) :see: `SDL_LoadWAV_RW` ''' - return SDL_LoadWAV_RW(SDL.rwops.SDL_RWFromFile(file, 'rb'), 1) + return SDL_LoadWAV_RW(SDL_RWFromFile(file, 'rb'), 1) -_SDL_FreeWAV = SDL.dll.private_function('SDL_FreeWAV', +_SDL_FreeWAV = private_function('SDL_FreeWAV', arg_types=[POINTER(c_ubyte)], return_type=None) @@ -299,7 +298,7 @@ def SDL_FreeWAV(audio_buf): ''' _SDL_FreeWAV(audio_buf.as_bytes().as_ctypes()) -_SDL_BuildAudioCVT = SDL.dll.private_function('SDL_BuildAudioCVT', +_SDL_BuildAudioCVT = private_function('SDL_BuildAudioCVT', arg_types=[POINTER(SDL_AudioCVT), c_ushort, c_ubyte, c_uint, c_ushort, c_ubyte, c_uint], return_type=c_int, @@ -328,7 +327,7 @@ def SDL_BuildAudioCVT(src_format, src_channels, src_rate, dst_format, dst_channels, dst_rate) return cvt -SDL_ConvertAudio = SDL.dll.function('SDL_ConvertAudio', +SDL_ConvertAudio = function('SDL_ConvertAudio', '''Convert audio data in-place. Once you have initialized the 'cvt' structure using @@ -354,7 +353,7 @@ SDL_ConvertAudio = SDL.dll.function('SDL_ConvertAudio', arg_types=[POINTER(SDL_AudioCVT)], return_type=c_int) -_SDL_MixAudio = SDL.dll.private_function('SDL_MixAudio', +_SDL_MixAudio = private_function('SDL_MixAudio', arg_types=[POINTER(c_ubyte), POINTER(c_ubyte), c_uint, c_int], return_type=None) @@ -378,15 +377,15 @@ def SDL_MixAudio(dst, src, length, volume): - `volume`: int ''' - dstref, dst = SDL.array.to_ctypes(dst, len(dst), c_ubyte) - srcref, src = SDL.array.to_ctypes(src, len(src), c_ubyte) + dstref, dst = to_ctypes(dst, len(dst), c_ubyte) + srcref, src = to_ctypes(src, len(src), c_ubyte) if len(dst) < length: raise TypeError, 'Destination buffer too small' elif len(src) < length: raise TypeError, 'Source buffer too small' _SDL_MixAudio(dst, src, length, volume) -SDL_LockAudio = SDL.dll.function('SDL_LockAudio', +SDL_LockAudio = function('SDL_LockAudio', '''Guarantee the callback function is not running. The lock manipulated by these functions protects the callback function. @@ -398,7 +397,7 @@ SDL_LockAudio = SDL.dll.function('SDL_LockAudio', arg_types=[], return_type=None) -SDL_UnlockAudio = SDL.dll.function('SDL_UnlockAudio', +SDL_UnlockAudio = function('SDL_UnlockAudio', '''Release the audio callback lock. :see: `SDL_LockAudio` @@ -407,7 +406,7 @@ SDL_UnlockAudio = SDL.dll.function('SDL_UnlockAudio', arg_types=[], return_type=None) -SDL_CloseAudio = SDL.dll.function('SDL_CloseAudio', +SDL_CloseAudio = function('SDL_CloseAudio', '''Shut down audio processing and close the audio device. ''', args=[], diff --git a/src/m64py/SDL/audio.pyc b/src/m64py/SDL/audio.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14a4ccdf466390858afe85bbeb9976f3109cb105 GIT binary patch literal 14388 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 N)aL6ea1?c;{{uLK0GI#( literal 0 HcmV?d00001 diff --git a/src/SDL/cdrom.py b/src/m64py/SDL/cdrom.py similarity index 89% rename from src/SDL/cdrom.py rename to src/m64py/SDL/cdrom.py index 95b4d2d..1934d43 100644 --- a/src/SDL/cdrom.py +++ b/src/m64py/SDL/cdrom.py @@ -12,8 +12,8 @@ __version__ = '$Id: $' from ctypes import * -import SDL.constants -import SDL.dll +from .constants import SDL_MAX_TRACKS, CD_FPS +from .dll import function class SDL_CDtrack(Structure): '''Structure describing a single CD track. @@ -61,7 +61,7 @@ class SDL_CD(Structure): ('numtracks', c_int), ('cur_track', c_int), ('cur_frame', c_int), - ('track', SDL_CDtrack * (SDL.constants.SDL_MAX_TRACKS + 1))] + ('track', SDL_CDtrack * (SDL_MAX_TRACKS + 1))] def CD_INDRIVE(status): '''Given a status, returns True if there's a disk in the drive. @@ -82,8 +82,8 @@ def FRAMES_TO_MSF(frames): :rtype: (int, int, int) :return: tuple of (minutes, seconds, frames) ''' - F = frames % SDL.constants.CD_FPS - frames /= SDL.constants.CD_FPS + F = frames % CD_FPS + frames /= CD_FPS S = frames % 60 frames /= 60 M = frames @@ -99,9 +99,9 @@ def MSF_TO_FRAMES(minutes, seconds, frames): :rtype: int ''' - return SDL.constants.CD_FPS(minutes * 60 + seconds) + frames + return CD_FPS(minutes * 60 + seconds) + frames -SDL_CDNumDrives = SDL.dll.function('SDL_CDNumDrives', +SDL_CDNumDrives = function('SDL_CDNumDrives', '''Return the number of CD-ROM drives on the system. :rtype: int @@ -111,7 +111,7 @@ SDL_CDNumDrives = SDL.dll.function('SDL_CDNumDrives', return_type=c_int, error_return=-1) -SDL_CDName = SDL.dll.function('SDL_CDName', +SDL_CDName = function('SDL_CDName', '''Return a human-readable, system-dependent identifier for the CD-ROM. @@ -133,7 +133,7 @@ SDL_CDName = SDL.dll.function('SDL_CDName', return_type=c_char_p, require_return=True) -SDL_CDOpen = SDL.dll.function('SDL_CDOpen', +SDL_CDOpen = function('SDL_CDOpen', '''Open a CD-ROM drive for access. It returns a drive handle on success, or raises an exception if the @@ -155,7 +155,7 @@ SDL_CDOpen = SDL.dll.function('SDL_CDOpen', dereference_return=True, require_return=True) -SDL_CDStatus = SDL.dll.function('SDL_CDStatus', +SDL_CDStatus = function('SDL_CDStatus', '''Return the current status of the given drive. If the drive has a CD in it, the table of contents of the CD and @@ -178,7 +178,7 @@ SDL_CDStatus = SDL.dll.function('SDL_CDStatus', return_type=int, error_return=-1) -SDL_CDPlayTracks = SDL.dll.function('SDL_CDPlayTracks', +SDL_CDPlayTracks = function('SDL_CDPlayTracks', '''Play the given CD. Plays the given CD starting at `start_track` and `start_frame` for @@ -214,7 +214,7 @@ SDL_CDPlayTracks = SDL.dll.function('SDL_CDPlayTracks', return_type=c_int, error_return=-1) -SDL_CDPlay = SDL.dll.function('SDL_CDPlay', +SDL_CDPlay = function('SDL_CDPlay', '''Play the given CD. Plays the given CD starting at `start` frame for `length` frames. @@ -230,7 +230,7 @@ SDL_CDPlay = SDL.dll.function('SDL_CDPlay', return_type=c_int, error_return=-1) -SDL_CDPause = SDL.dll.function('SDL_CDPause', +SDL_CDPause = function('SDL_CDPause', '''Pause play. :Parameters: @@ -242,7 +242,7 @@ SDL_CDPause = SDL.dll.function('SDL_CDPause', return_type=c_int, error_return=-1) -SDL_CDResume = SDL.dll.function('SDL_CDResume', +SDL_CDResume = function('SDL_CDResume', '''Resume play. :Parameters: @@ -254,7 +254,7 @@ SDL_CDResume = SDL.dll.function('SDL_CDResume', return_type=c_int, error_return=-1) -SDL_CDStop = SDL.dll.function('SDL_CDStop', +SDL_CDStop = function('SDL_CDStop', '''Stop play. :Parameters: @@ -266,7 +266,7 @@ SDL_CDStop = SDL.dll.function('SDL_CDStop', return_type=c_int, error_return=-1) -SDL_CDEject = SDL.dll.function('SDL_CDEject', +SDL_CDEject = function('SDL_CDEject', '''Eject CD-ROM. :Parameters: @@ -278,7 +278,7 @@ SDL_CDEject = SDL.dll.function('SDL_CDEject', return_type=c_int, error_return=-1) -SDL_CDClose = SDL.dll.function('SDL_CDClose', +SDL_CDClose = function('SDL_CDClose', '''Close the handle for the CD-ROM drive. :Parameters: diff --git a/src/m64py/SDL/cdrom.pyc b/src/m64py/SDL/cdrom.pyc new file mode 100644 index 0000000000000000000000000000000000000000..caab60d1341c7e19d96ba961d93d6ce83d3024a3 GIT binary patch literal 7201 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 E18;N>s{jB1 literal 0 HcmV?d00001 diff --git a/src/SDL/constants.py b/src/m64py/SDL/constants.py similarity index 100% rename from src/SDL/constants.py rename to src/m64py/SDL/constants.py diff --git a/src/m64py/SDL/constants.pyc b/src/m64py/SDL/constants.pyc new file mode 100644 index 0000000000000000000000000000000000000000..446af72f22698b371a976fae57420a7ccb62abd6 GIT binary patch literal 13236 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 literal 0 HcmV?d00001 diff --git a/src/SDL/endian.py b/src/m64py/SDL/endian.py similarity index 87% rename from src/SDL/endian.py rename to src/m64py/SDL/endian.py index 567f792..0428099 100644 --- a/src/SDL/endian.py +++ b/src/m64py/SDL/endian.py @@ -8,7 +8,7 @@ __version__ = '$Id: $' import sys -import SDL.constants +from .constants import SDL_BIG_ENDIAN, SDL_LIL_ENDIAN def SDL_Swap16(x): return (x << 8 & 0xff00) | \ @@ -28,7 +28,7 @@ def _noop(x): return x if sys.byteorder == 'big': - SDL_BYTEORDER = SDL.constants.SDL_BIG_ENDIAN + SDL_BYTEORDER = SDL_BIG_ENDIAN SDL_SwapLE16 = SDL_Swap16 SDL_SwapLE32 = SDL_Swap32 SDL_SwapLE64 = SDL_Swap64 @@ -36,7 +36,7 @@ if sys.byteorder == 'big': SDL_SwapBE32 = _noop SDL_SwapBE64 = _noop else: - SDL_BYTEORDER = SDL.constants.SDL_LIL_ENDIAN + SDL_BYTEORDER = SDL_LIL_ENDIAN SDL_SwapLE16 = _noop SDL_SwapLE32 = _noop SDL_SwapLE64 = _noop diff --git a/src/m64py/SDL/endian.pyc b/src/m64py/SDL/endian.pyc new file mode 100644 index 0000000000000000000000000000000000000000..494dc47e1560cc51be700fa5aaae88dd95dd6d05 GIT binary patch literal 1442 zcmb_c%Wl&^6g{>RCwBTq0wgw;=psU*rfrl3LP;~78bS?BN2r4t zU?q$Vga%j{%*42aw2ZKf)I?}PV-)0Qc@3f4NCo{<%ku#p#atA=p3z<)2In6nf{8APsfc-vu z>Fg)-`FuW1Gyruh}mNRS1QFVrlWIX zwwZyB7t~7thDjAbf;o`P=`^ZSonlB@E^pomES>{!KZ}&RX)+#VnfoCZ=RB5$n>HJh znOo$s8*~RQ&sZ|b4kj~cFGvSpN0Y^lx!Y3g< z1@}pbN~2Hn(j^Hd%xTBC5<&9)VYJ+VRH>QK3W5sjXwZyeT%og x#p^X2t2X@C0i)S{l?pZ;^A^cee@gGOdzjY-{Fkw?*HV_b+<_8`=N> literal 0 HcmV?d00001 diff --git a/src/SDL/error.py b/src/m64py/SDL/error.py similarity index 87% rename from src/SDL/error.py rename to src/m64py/SDL/error.py index 8fba72f..972ec20 100644 --- a/src/SDL/error.py +++ b/src/m64py/SDL/error.py @@ -8,7 +8,7 @@ __version__ = '$Id: $' from ctypes import * -import SDL.dll +from .dll import function class SDL_Exception(Exception): '''Exception raised for all SDL errors. @@ -26,7 +26,7 @@ class SDL_NotImplementedError(NotImplementedError): requested function.''' pass -SDL_SetError = SDL.dll.function('SDL_SetError', +SDL_SetError = function('SDL_SetError', '''Set the static error string. :Parameters: @@ -38,7 +38,7 @@ SDL_SetError = SDL.dll.function('SDL_SetError', arg_types=[c_char_p], return_type=None) -SDL_GetError = SDL.dll.function('SDL_GetError', +SDL_GetError = function('SDL_GetError', '''Return the last error string set. :rtype: string @@ -47,7 +47,7 @@ SDL_GetError = SDL.dll.function('SDL_GetError', arg_types=[], return_type=c_char_p) -SDL_ClearError = SDL.dll.function('SDL_ClearError', +SDL_ClearError = function('SDL_ClearError', '''Clear any error string set. ''', args=[], diff --git a/src/m64py/SDL/error.pyc b/src/m64py/SDL/error.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b5f0624e415ba39ad4c38b2a98fcc2f6ccd1f071 GIT binary patch literal 1893 zcmbtUO>Y}F5Pd6IvL%1SNgB6D9&%8FLb?<^xJ6quHi`g-5v+WvE;PLyNgM2kN{-S9 z@Gbo_z4cG@7xf3YnAw$sq&X#Ah#;xqaNe6Y)BX2w_}5S8X@+(T0Q?Lf{sX`RGr%X9 zCGZ{0I`Cci9TZ($`5t^9#SY3IW<4Z+7u3f*f#1WQz+2$A*)IG5w5O-T`_loa2fq)0 z0DlO7ghc}X05sIaG5iy}?Q~}cYW5KRk(ezYHZmWJr5GHl!DIL@J~U`O9LZujIuSTy z0Oujp!FXcIIIk7mag(eUM#_K?y=?%v|fTu6~sd<{; z-QC@d5&$gIvs~t8zXxFJi4Orx&o1own~YZS?mgFX;TH+c03ayKP?i%RYt|LgWwC>F zI_iq$jlkGCGQs7MyqVX*xS}xAvx^2#92+wqWJ-$BEy(22xM%|LI#lG%&Bk0y zY`+pKIoD&omURGZf6wJz0dbq)7O*OdsRF%h;O+uw9~j9k-jOR*%u`v6L|Hn;Zvae| zbxD&lFI-hkUWWP=WgI8vci*lylNhqe^z34yNg1y;N~E=Um9w>v#HqMPk_mI$pT;L4 z+ybxgUS!StVwm=}L40B)@_@CGgSAiI1u_!1ZIqQO$yy$&VOjfiA=~DjuQO{?(M~D{ z?Z4^*h7P Zapz?Jq}Si=Cj= SDL.constants.SDL_USEREVENT: + elif self.type >= SDL_USEREVENT: # SDL_MAXEVENTS not defined return SDL_UserEvent.__repr__(self) return 'SDLEvent(type=%d)' % self.type @@ -315,12 +316,12 @@ class SDL_Event(Union): ''' if self.type in self.types: return getattr(self, self.types[self.type][1]) - elif self.type >= SDL.constants.SDL_USEREVENT: + elif self.type >= SDL_USEREVENT: # SDL_MAXEVENTS not defined return self.user return self -SDL_PumpEvents = SDL.dll.function('SDL_PumpEvents', +SDL_PumpEvents = function('SDL_PumpEvents', '''Pumps the event loop, gathering events from the input devices. This function updates the event queue and internal input device state. @@ -330,7 +331,7 @@ SDL_PumpEvents = SDL.dll.function('SDL_PumpEvents', arg_types=[], return_type=None) -_SDL_PeepEvents = SDL.dll.private_function('SDL_PeepEvents', +_SDL_PeepEvents = private_function('SDL_PeepEvents', arg_types=[POINTER(SDL_Event), c_int, c_int, c_uint], return_type=c_int) @@ -362,12 +363,12 @@ def SDL_PeepEvents(numevents, action, mask): :return: list of SDL_Event (or subclass) :see: `SDL_PushEvent`, `SDL_HaveEvents` ''' - if action == SDL.constants.SDL_ADDEVENT: + if action == SDL_ADDEVENT: raise NotImplementedError, 'Use SDL_PushEvent to add events' ar = (SDL_Event * numevents)() num = _SDL_PeepEvents(ar, numevents, action, mask) if num == -1: - raise SDL.error.SDL_Exception, SDL.error.SDL_GetError() + raise SDL_Exception, SDL_GetError() return list([e.specialize() for e in ar[:num]]) def SDL_HaveEvents(mask): @@ -384,10 +385,10 @@ def SDL_HaveEvents(mask): :return: True if at least one event matches the mask in the event queue. ''' - num = _SDL_PeepEvents(None, 1, SDL.constants.SDL_PEEKEVENT, mask) + num = _SDL_PeepEvents(None, 1, SDL_PEEKEVENT, mask) return num > 0 -_SDL_PollEvent = SDL.dll.private_function('SDL_PollEvent', +_SDL_PollEvent = private_function('SDL_PollEvent', arg_types=[POINTER(SDL_Event)], return_type=c_int) @@ -415,7 +416,7 @@ def SDL_PollEventAndReturn(): return e.specialize() return None -_SDL_WaitEvent = SDL.dll.private_function('SDL_WaitEvent', +_SDL_WaitEvent = private_function('SDL_WaitEvent', arg_types=[POINTER(SDL_Event)], return_type=c_int) @@ -428,7 +429,7 @@ def SDL_WaitEvent(): :see: `SDL_WaitEventAndReturn` ''' if _SDL_WaitEvent(None) == 0: - raise SDL.error.SDL_Exception, SDL.error.SDL_GetError() + raise SDL_Exception, SDL_GetError() def SDL_WaitEventAndReturn(): '''Wait indefinitely for the next event and return it. @@ -441,9 +442,9 @@ def SDL_WaitEventAndReturn(): if result == 1: return ev.specialize() else: - raise SDL.error.SDL_Exception, SDL.error.SDL_GetError() + raise SDL_Exception, SDL_GetError() -SDL_PushEvent = SDL.dll.function('SDL_PushEvent', +SDL_PushEvent = function('SDL_PushEvent', '''Add an event to the event queue. :Parameters: @@ -457,7 +458,7 @@ SDL_PushEvent = SDL.dll.function('SDL_PushEvent', _SDL_EventFilter = CFUNCTYPE(c_int, POINTER(SDL_Event)) -_SDL_SetEventFilter = SDL.dll.private_function('SDL_SetEventFilter', +_SDL_SetEventFilter = private_function('SDL_SetEventFilter', arg_types=[_SDL_EventFilter], return_type=None) @@ -496,7 +497,7 @@ def SDL_SetEventFilter(filter): _eventfilter_ref = _SDL_EventFilter() _SDL_SetEventFilter(_eventfilter_ref) -SDL_GetEventFilter = SDL.dll.function('SDL_GetEventFilter', +SDL_GetEventFilter = function('SDL_GetEventFilter', '''Return the current event filter. This can be used to "chain" filters. If there is no event filter set, @@ -508,7 +509,7 @@ SDL_GetEventFilter = SDL.dll.function('SDL_GetEventFilter', arg_types=[], return_type=_SDL_EventFilter) -SDL_EventState = SDL.dll.function('SDL_EventState', +SDL_EventState = function('SDL_EventState', '''Ignore or enable the processing of certain events. The behaviour of this function depends on `state` diff --git a/src/m64py/SDL/events.pyc b/src/m64py/SDL/events.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1f5c7c282701e3d557789748d19499b19917d9ce GIT binary patch literal 17551 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 literal 0 HcmV?d00001 diff --git a/src/SDL/keyboard.py b/src/m64py/SDL/keyboard.py similarity index 89% rename from src/SDL/keyboard.py rename to src/m64py/SDL/keyboard.py index 2236ca8..a2a8914 100644 --- a/src/SDL/keyboard.py +++ b/src/m64py/SDL/keyboard.py @@ -10,7 +10,7 @@ __version__ = '$Id: $' from ctypes import * -import SDL.dll +from .dll import function, private_function class SDL_keysym(Structure): '''Keysym structure @@ -44,7 +44,7 @@ class SDL_keysym(Structure): return unichr(self._unicode) raise AttributeError -SDL_EnableUNICODE = SDL.dll.function('SDL_EnableUNICODE', +SDL_EnableUNICODE = function('SDL_EnableUNICODE', '''Enable or disable Unicode translation of keyboard input. This translation has some overhead, so translation defaults off. @@ -62,7 +62,7 @@ SDL_EnableUNICODE = SDL.dll.function('SDL_EnableUNICODE', arg_types=[c_int], return_type=c_int) -SDL_EnableKeyRepeat = SDL.dll.function('SDL_EnableKeyRepeat', +SDL_EnableKeyRepeat = function('SDL_EnableKeyRepeat', '''Enable keyboard repeat. Keyboard repeat defaults to off. @@ -82,7 +82,7 @@ SDL_EnableKeyRepeat = SDL.dll.function('SDL_EnableKeyRepeat', arg_types=[c_int, c_int], return_type=c_int) -_SDL_GetKeyRepeat = SDL.dll.private_function('SDL_GetKeyRepeat', +_SDL_GetKeyRepeat = private_function('SDL_GetKeyRepeat', arg_types=[POINTER(c_int), POINTER(c_int)], return_type=None, since=(1,2,10)) @@ -99,7 +99,7 @@ def SDL_GetKeyRepeat(): _SDL_GetKeyRepeat(byref(delay), byref(interval)) return delay.value, interval.value -_SDL_GetKeyState = SDL.dll.private_function('SDL_GetKeyState', +_SDL_GetKeyState = private_function('SDL_GetKeyState', arg_types=[POINTER(c_int)], return_type=POINTER(c_ubyte)) @@ -120,7 +120,7 @@ def SDL_GetKeyState(): keystate_ar = cast(keystate, POINTER(c_ubyte * numkeys.value)).contents return list(keystate_ar) -SDL_GetModState = SDL.dll.function('SDL_GetModState', +SDL_GetModState = function('SDL_GetModState', '''Get the current key modifier state. :rtype: int @@ -129,7 +129,7 @@ SDL_GetModState = SDL.dll.function('SDL_GetModState', arg_types=[], return_type=c_int) -SDL_SetModState = SDL.dll.function('SDL_SetModState', +SDL_SetModState = function('SDL_SetModState', '''Set the current key modifier state. This does not change the keyboard state, only the key modifier flags. @@ -142,7 +142,7 @@ SDL_SetModState = SDL.dll.function('SDL_SetModState', arg_types=[c_int], return_type=None) -_SDL_GetKeyName = SDL.dll.private_function('SDL_GetKeyName', +_SDL_GetKeyName = private_function('SDL_GetKeyName', arg_types=[c_int], return_type=c_char_p) diff --git a/src/m64py/SDL/keyboard.pyc b/src/m64py/SDL/keyboard.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22bb784e64fccd64eb79bcba6fba48a8e95fc66f GIT binary patch literal 4880 zcmbtX+in}l5v>_Xv?R-xZ|k+QxAw-!at&FsgCIZzXOZHV0S>BqE~Ko50cQjaXL_o;>vF2<^um8Ht?oVE?W9m% zs{rr^0C1BCKmi;As0a=tP%#|FpcX(aLbd=0Y6(;evPH<3;BX1@796%9QWpR(z#sy( z3_k&!0{nQm47dbp1=K32i=ftE7=gM3xWW&Y>ESe9I9z41bx>DW>?){hFpNt{5{{t} zz6jU?b)CPi@d^>t4?$Ah0d)h^mv9;_99{W{@lxKT05lt^WkiC%Z-X|iXu?}-!bN9Fte z-a+!`y`9}>J<-QOVNpz+Hbdb@=uiwMCiS{7ZgbUN0RW56+ezvt7L~_W-n9VW?w;Bf zclF!1Z{M~f0Pu9Xr|I5~>3tahs+D+|vDL@YV^R+iqDZ|XoVsaV18oTa9+Rct0ssO- z3>ab&-~tR{LL4sg!$S42NX{O_FkB?GsU>#X1?Y6!q^$c-%uaLDT-3I#u8Q)yCk{p^ zTq;dkC=}X>k+kYWS`-S$XcQX1A*4~2Yfa%rpPYtD^r!VYLJZNMm6?#^ai&ulyeP!p zK$xOgbap3sEOjRP8Ey#e#fi?cndSN@9@MWv%ihFj(y}MKmBwY#qY~*zTA6yZqeWO&Ul)d^p&>2Eo&b_vet)sQ_uaFd-CkvcxsUnSPd9`gX(zOsS+7)# z986d$1~lSDhGytTo59=Ld&kmh+Q@C!Q+t&^dSY8>mI<37|i}l)=y+60>(tUyYuu(a_{SAZeFPK=04W`L^~AEI%G&Xv6d3;2&W=1lpbib zjp`760@lPpSR7k)Xef03DXmKHZbKB7Qc$pq&s$0l&PI)pI4+#i{R~SV zbLLep^$P_5Y0kfSq4;A`hAO2*t^U6wL8>sXBP#4iG1%MS0bT>Vq|ygnAH&}xD*au~ z@O^&)0LrD>w2!A;qk)m_Q2P7J0PwB%R`(|!cdadKs11v>7iI%~FfzwBH5tCSEdbaW z6*+F@I+Mn1J-5Y6OugI6fBT#9bj#UvtGn}b>!_@Oo8zg!2mnbkL@&L!Npg>tCtV;~ zi!McN)`f0KLYpNCm!2fa3pL5;l?+J|Rix!}noRmrkDf|VnrP#BcA8AwsIcKB8EDLu zOFCp@qy7im&>^3!lj3Ut(E6wqt?=J^?5~z}axNp?PZ2;EA=oJGD649)RmFjlyBH9} zLc`EzJn;=K`3n91pR0U>W`qrH}yU?HK6$aR)!hiPGy6Mgh2h$i?| z=VeckTn^`2fFQ>?hbnZ-Ge(F$4z+Qil|0yZ=kuAR>M++q?rG!E9?R_K%wXkyPW!Xk zFn4nAL&L}bL-*j~!2aUmP^rdLhgi+`=>KCWNIAl@f(0Q5iu(tQyD%D4_u5-V~D6SFHpID$*ic$Jk0$Y0KP}h!8&X5 zxK7o|Y=^i#+wW_Yd+hZpN!pqikTyQp-sH+;oS|s58~8hi=j#n29f4CDR1^V>c>16(UO4ijUOQi3Y1+m!aK#CG&BH+YQgE^N7e0*R|gh zM=FuZCbb)8q`7Ob++UeBb#@P4boT$&tVh?_YU9OMkHW`qsFIf@;49v44n>)Ef!x*j zkvv9bQT`0kI-!liSAiIjRe`VxH_iJ+7C2X%s%roU9ZzNe!Zvj7P!tG6sdS!u`}1de z`v<$7&NZ6&C4D9~kQT3_=$ zVgHSA@FL53`b<$cC0AGw>h(!NC)C(7tARjhVU*j)M~DS7fSTBi$>B+OXSz)?s;m1P}T zy2E6ivaDMj{F$C|&UJ2*#3yw7Rh4M_g~5)XAu63A&F<0@fxNRpxBGS0C3IR%#+?T= zOeQs6`C#_USa}rq{5O2!e@ZMmZbhwlHNF|&6s=1oqmEnat!OP;i&o;5=vLIC-?f!! XJz9@fuC^9i5&f;it>sFdd3gLkBVgF| literal 0 HcmV?d00001 diff --git a/src/SDL/mixer.py b/src/m64py/SDL/mixer.py similarity index 98% rename from src/SDL/mixer.py rename to src/m64py/SDL/mixer.py index 275b6dd..5030f60 100644 --- a/src/SDL/mixer.py +++ b/src/m64py/SDL/mixer.py @@ -24,19 +24,19 @@ __version__ = '$Id: $' from ctypes import * -import SDL.array -import SDL.dll -import SDL.rwops -import SDL.version +from .array import SDL_array, to_ctypes +from .dll import SDL_DLL +from .rwops import SDL_RWops, SDL_RWFromFile +from .version import SDL_version -_dll = SDL.dll.SDL_DLL('SDL_mixer', 'Mix_Linked_Version') +_dll = SDL_DLL('SDL_mixer', 'Mix_Linked_Version') Mix_Linked_Version = _dll.function('Mix_Linked_Version', '''Get the version of the dynamically linked SDL_mixer library. ''', args=[], arg_types=[], - return_type=POINTER(SDL.version.SDL_version), + return_type=POINTER(SDL_version), dereference_return=True, require_return=True) @@ -61,7 +61,7 @@ class Mix_Chunk(Structure): def __getattr__(self, attr): if attr == 'abuf': - return SDL.array.SDL_array(self._abuf, self.alen, c_ubyte) + return SDL_array(self._abuf, self.alen, c_ubyte) raise AttributeException, attr # opaque type @@ -128,7 +128,7 @@ Mix_LoadWAV_RW = _dll.function('Mix_LoadWAV_RW', :rtype: `Mix_Chunk` ''', args=['src', 'freesrc'], - arg_types=[POINTER(SDL.rwops.SDL_RWops), c_int], + arg_types=[POINTER(SDL_RWops), c_int], return_type=POINTER(Mix_Chunk), dereference_return=True, require_return=True) @@ -142,7 +142,7 @@ def Mix_LoadWAV(file): :rtype: `Mix_Chunk` ''' - return Mix_LoadWAV_RW(SDL.rwops.SDL_RWFromFile(file, 'rb'), 1) + return Mix_LoadWAV_RW(SDL_RWFromFile(file, 'rb'), 1) Mix_LoadMUS = _dll.function('Mix_LoadMUS', '''Load a WAV, MID, OGG, MP3 or MOD file. @@ -188,7 +188,7 @@ def Mix_QuickLoad_WAV(mem): :rtype: `Mix_Chunk` ''' - ref, mem = SDL.array.to_ctypes(mem, len(mem), c_ubyte) + ref, mem = to_ctypes(mem, len(mem), c_ubyte) return _Mix_QuickLoad_WAV(mem) _Mix_QuickLoad_RAW = _dll.private_function('Mix_QuickLoad_RAW', @@ -206,7 +206,7 @@ def Mix_QuickLoad_RAW(mem): :rtype: `Mix_Chunk` ''' l = len(mem) - ref, mem = SDL.array.to_ctypes(mem, len(mem), c_ubyte) + ref, mem = to_ctypes(mem, len(mem), c_ubyte) return _Mix_QuickLoad_RAW(mem, l) Mix_FreeChunk = _dll.function('Mix_FreeChunk', @@ -251,7 +251,7 @@ _Mix_FilterFunc = CFUNCTYPE(None, c_void_p, POINTER(c_ubyte), c_int) def _make_filter(func, udata): if func: def f(ignored, stream, len): - stream = SDL.array.SDL_array(stream, len, c_ubyte) + stream = SDL_array(stream, len, c_ubyte) func(udata, stream) return _Mix_FilterFunc(f) else: @@ -369,7 +369,7 @@ _Mix_EffectFunc = CFUNCTYPE(None, c_int, POINTER(c_ubyte), c_int, c_void_p) def _make_Mix_EffectFunc(func, udata): if func: def f(chan, stream, len, ignored): - stream = SDL.array.SDL_array(stream, len, c_ubyte) + stream = SDL_array(stream, len, c_ubyte) func(chan, stream, udata) return _Mix_EffectFunc(f) else: diff --git a/src/SDL/mouse.py b/src/m64py/SDL/mouse.py similarity index 82% rename from src/SDL/mouse.py rename to src/m64py/SDL/mouse.py index 47d8fb0..b95d191 100644 --- a/src/SDL/mouse.py +++ b/src/m64py/SDL/mouse.py @@ -8,9 +8,10 @@ __version__ = '$Id: $' from ctypes import * -import SDL.array -import SDL.dll -import SDL.video +from .array import SDL_array, to_ctypes +from .dll import function, private_function +from .video import SDL_Rect +from .constants import SDL_BUTTON_LEFT, SDL_BUTTON_MIDDLE, SDL_BUTTON_RIGHT class SDL_Cursor(Structure): '''Cursor structure. @@ -24,7 +25,7 @@ class SDL_Cursor(Structure): Y coordinate of the tip of the cursor ''' - _fields_ = [('area', SDL.video.SDL_Rect), + _fields_ = [('area', SDL_Rect), ('hot_x', c_short), ('hot_y', c_short), ('_data', POINTER(c_ubyte)), @@ -35,12 +36,12 @@ class SDL_Cursor(Structure): def __getattr__(self, name): w, h = self.area.w, self.area.h if name == 'data': - return SDL.array.SDL_array(self._data, w * h / 8, c_ubyte) + return SDL_array(self._data, w * h / 8, c_ubyte) elif name == 'mask': - return SDL.array.SDL_array(self._mask, w * h / 8, c_ubyte) + return SDL_array(self._mask, w * h / 8, c_ubyte) raise AttributeError, name -_SDL_GetMouseState = SDL.dll.private_function('SDL_GetMouseState', +_SDL_GetMouseState = private_function('SDL_GetMouseState', arg_types=[POINTER(c_int), POINTER(c_int)], return_type=c_ubyte) @@ -64,7 +65,7 @@ def SDL_GetMouseState(): return state, x.value, y.value _SDL_GetRelativeMouseState = \ - SDL.dll.private_function('SDL_GetRelativeMouseState', + private_function('SDL_GetRelativeMouseState', arg_types=[POINTER(c_int), POINTER(c_int)], return_type=c_ubyte) @@ -82,7 +83,7 @@ def SDL_GetRelativeMouseState(): state = _SDL_GetRelativeMouseState(byref(dx), byref(dy)) return state, dx.value, dy.value -SDL_WarpMouse = SDL.dll.function('SDL_WarpMouse', +SDL_WarpMouse = function('SDL_WarpMouse', '''Set the position of the mouse cursor. Generates a mouse motion event. @@ -96,7 +97,7 @@ SDL_WarpMouse = SDL.dll.function('SDL_WarpMouse', arg_types=[c_ushort, c_ushort], return_type=None) -_SDL_CreateCursor = SDL.dll.private_function('SDL_CreateCursor', +_SDL_CreateCursor = private_function('SDL_CreateCursor', arg_types=[POINTER(c_ubyte), POINTER(c_ubyte), c_int, c_int, c_int, c_int], return_type=POINTER(SDL_Cursor), dereference_return=True, @@ -132,11 +133,11 @@ def SDL_CreateCursor(data, mask, w, h, hot_x, hot_y): :rtype: `SDL_Cursor` ''' - dataref, data = SDL.array.to_ctypes(data, len(data), c_ubyte) - maskref, mask = SDL.array.to_ctypes(mask, len(mask), c_ubyte) + dataref, data = to_ctypes(data, len(data), c_ubyte) + maskref, mask = to_ctypes(mask, len(mask), c_ubyte) return _SDL_CreateCursor(data, mask, w, h, hot_x, hot_y) -SDL_SetCursor = SDL.dll.function('SDL_SetCursor', +SDL_SetCursor = function('SDL_SetCursor', '''Set the currently active cursor to the specified one. If the cursor is currently visible, the change will be immediately @@ -150,7 +151,7 @@ SDL_SetCursor = SDL.dll.function('SDL_SetCursor', arg_types=[POINTER(SDL_Cursor)], return_type=None) -SDL_GetCursor = SDL.dll.function('SDL_GetCursor', +SDL_GetCursor = function('SDL_GetCursor', '''Return the currently active cursor. :rtype: `SDL_Cursor` @@ -160,7 +161,7 @@ SDL_GetCursor = SDL.dll.function('SDL_GetCursor', return_type=POINTER(SDL_Cursor), dereference_return=True) -SDL_FreeCursor = SDL.dll.function('SDL_FreeCursor', +SDL_FreeCursor = function('SDL_FreeCursor', '''Deallocate a cursor created with `SDL_CreateCursor` :Parameters: @@ -170,7 +171,7 @@ SDL_FreeCursor = SDL.dll.function('SDL_FreeCursor', arg_types=[POINTER(SDL_Cursor)], return_type=None) -SDL_ShowCursor = SDL.dll.function('SDL_ShowCursor', +SDL_ShowCursor = function('SDL_ShowCursor', '''Toggle whether or not the curosr is shown on the screen. The cursor starts off displayed, but can be turned off. @@ -193,6 +194,6 @@ def SDL_BUTTON(X): ''' return 1 << (X-1) -SDL_BUTTON_LMASK = SDL_BUTTON(SDL.constants.SDL_BUTTON_LEFT) -SDL_BUTTON_MMASK = SDL_BUTTON(SDL.constants.SDL_BUTTON_MIDDLE) -SDL_BUTTON_RMASK = SDL_BUTTON(SDL.constants.SDL_BUTTON_RIGHT) +SDL_BUTTON_LMASK = SDL_BUTTON(SDL_BUTTON_LEFT) +SDL_BUTTON_MMASK = SDL_BUTTON(SDL_BUTTON_MIDDLE) +SDL_BUTTON_RMASK = SDL_BUTTON(SDL_BUTTON_RIGHT) diff --git a/src/m64py/SDL/mouse.pyc b/src/m64py/SDL/mouse.pyc new file mode 100644 index 0000000000000000000000000000000000000000..08bef00e8a5f2599cc6f7b56dbb71b5e276ea5c9 GIT binary patch literal 6215 zcmcIo{c;q?5%1lTPMpvOAi!WgJjQ@!A|yzqT!}C)gTYu8gk5{0Y+t2nHQMRD8`#@D z&&)}>l=P34s=P;@B=3+%$^RkMJ-d4nC@wISl{A`}?d|F5>Hc;1H2yt1{f}=RM+ubA zNdWi?0PK1Qpa41mDu7M^Duhl5ssU;OvIcCZNl;D5CZInFok{37q0@wbW~U&Vg8m8U zoPd4{IxRnY0}IKcNR!U|J!Y{cxM1l6OFn6cp211Y7c^m z&J|D}^6FQ4^-G{G^XgZi8&u5sLmJLitAE7AS3!M5#9bgtYUfynLkk^*6CJ_C0@TNE z!TDn*z6Rs;sl9QSWsPN{y;=+az)^Ec zQ@a?_xCH?1M^9sEj2!XE6>;K51GJvt1OTMNJaM|nd7XjL+tOiNO?tjWMtmYn++u?` z&zCa~pKok@_bh(;_?r!P`sm#H+M`ELA2V0_wxo>Ko_xFErc2VVhsGABb~0M$A!)+^ z00O%guzLl74M;=sHk{y2qv}imP69SbqeL)ybl4mZ)fAj1iW7iSMB1GqS5z%NuNFk@ zMH0*Y2LQZWqSpEH^t2E{tgdZKqvckHc9kdS*^~z5rdSo5m5Mg&cl10kC`FM9*F(|g z6Ha*7HPL3TaPcm2(7CH;>G@G4MPZcArNfGa(}Sve9G}r~e13XsKD@k}007#Rn*;!s zuI`Pv7c1%f+qf_7Oa8#hZPc~d?et?WUP4pEkp8|V1v>!P19$=OBB(kcg!>`vH()Oy zTzwgW`3hWvUr)eZ2zw1Ut3o*ECgGp~Z6a$hS+^o<9z*7)h~Y0GA$EI_BzVTMlK7ge zjYqVFMH)qf^6W)B-1Z_8KANN1DF8^~;nv7uMAq+U_JMOoZw(zjHl{GVfY$|PDR*+& z$LK6EIY(Ye!Gs&T1OO|&qK_+moyk03`Q8*SFmZOJ|M?#VqZMnCmG+~jD{L{#gOMZA z;<$@WI%neeI%#r-_yre(ncx!tu>rHU#xboN$Lwiw+%MEHqap1gj#ZJwaYPVOZp-!x zS*bmu^0A8>yzGy(&fHuRR{c8Xap)(q{k=;2N8be@hNwCT*{fT+Nc)Tn7gA7+! z{g57}T@t%XVkGVhf{Y{ETl}m>0G*bMZ!%d0wd)Vse;%U`Jp-e2Cq8|OsS{g6=Zahm z3|fn7`O^}(3~6gsEb81X5zKJoms<7eTNR6kMEh(>?DWuJEzGS_7Hx&B7TMB{T!%o`MA#){0LYkwBJdBTGP*_cYsnn(SE<&Uv*12`~Sris`x%C*vyL}(?y#@ex$b89>V16OE6u66JV0(ft!c027 zjbqdOzZ&P2cQ(#$oSBw+b~j3vUhzGbgREI#0Z{ zWYRj3$Sf1CILhl-wQqVKVEc(~5F8MCRi^XiF-4S+MPwP?a3}_-UH@+s{q6|zy)%wS z1pMFDRx{03Gh15C57G?SThfW1jLXjYj0_XdC$Rmf6jB{We!W(Sz)RHG7<5ilqbqLm8U=v8VKJ6gG( z=nt(Uh?Al}%$y!%4Eld0AhgRutV{cnc^pd2m~UT>=(Dcg##~4%P`e%)Ms-fj1!Wat zYnY~JtSAi8NMZ5kA!(D3qDYy@-V-{nzE7m}4#A6PORv`34@F@VR+e#S588@^4^0u_ zRwffK?M_cS6f#LT)$9saux`>K%ZeSHcgx^)|Ni~^f7Lf~C$exQvoFCKF9khaNlOvlZJk+~g63f*IBezTTuqoL@P6j@;? z0uKsn^;U*UrNVS7^1?0uW{LSj?=|D&*wL;hTu)n3)m^ozr3O)X0!GVk43->0Vayqdzt#tK9T&7zE#{wN!&FfU$U1DKuC7>Bzjum;rS(+zkPQ}_?T>2 z3)RC`c3ctT6<7&a9%gktQCAFiiFe7v7DntyE4GjTzBEKsVhhuv%JOBFEs25@yrb>7 zwz%Wrl+Dj?JE3Hq{s<^IO(3sVd|jXdxbS70@2~7K06e#-$lJWNP;91HlTs8db0J?7 z`9=Kg7}w#%pX-4i-vcq~t1O?!{*y90N*JN>j4$@0E3^v16_?#e$_EQ_eDjflWkH(Fug>v+2AON!h&nL8U18b*AhLG%6|u)06w zvOD^SC@2|b432J6j|!UTHZ_!_mev2z-wp8HNs(hj6%UU#%n+l`iJCw&`V%$xsQH4L z`_#~dd7UsGu3ulDT&JS;^~s1P$4A4xch0wY7hm}Mk1uHxj5f`%88pM`@O*GSI2BwD z&tGl@7lKyUI$QpqYqpxfOfW-p!S!G!Xj1PQ&9;L1pcOVJngRU~MRT&Aoh>gh!qy~x F{a<0%=OzFE literal 0 HcmV?d00001 diff --git a/src/SDL/quit.py b/src/m64py/SDL/quit.py similarity index 87% rename from src/SDL/quit.py rename to src/m64py/SDL/quit.py index 4fe9d0c..f250f71 100644 --- a/src/SDL/quit.py +++ b/src/m64py/SDL/quit.py @@ -19,12 +19,12 @@ quit events for that signal. __docformat__ = 'restructuredtext' __version__ = '$Id: $' -import SDL.events +from .events import SDL_PumpEvents, SDL_HaveEvents, SDL_QUITMASK def SDL_QuitRequested(): '''Return True if there is a quit event in the event queue. :rtype: bool ''' - SDL.events.SDL_PumpEvents() - return SDL.events.SDL_HaveEvents(SDL.events.SDL_QUITMASK) + SDL_PumpEvents() + return SDL_HaveEvents(SDL_QUITMASK) diff --git a/src/m64py/SDL/quit.pyc b/src/m64py/SDL/quit.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f8a44708645b179514005909766baa0da12bddd9 GIT binary patch literal 1332 zcmb7EL5~wR6n>N4%_6s;_Qrw3J8%dhnp_ZvrK*Y`f(Te3Nn0sB%zDRf5*Lp>YdV^MwgPc zvtp;Ma=RRHR-xtuq}SGYQs_KZ+AwwN$m8y4za4kl81z(2ZP7Jkb8$Fs9sd`^c#nP+ zDUw3#d@YS>QCjsCu+RaeF>XidKsiVJ{aVrfdL4Q-YK)=uL>6PCBva^#iPF`LA*L~2 z#$?@=&^n~5qLOnVI`?K)^95=fSQ-;B=(Uxmx0!sv%6VMOUd+yyIQl^CrITKvwoKl~ zh98K;dog>loX+3iD71m8MkZft+xd!~t|A3~Fh*V7peon-BaJ7iT0tLm=!}(o=-)TJ z?fM^32HcS`IpT6do{|UF;ZC-K9V+VY?)zKH7zka3@|&dejs#-Xc8zi`TXg9nkJ@7E zqW?M}y`^qT-fPw4E2?BP2g=%6bd|U|gtd2%ld9gw;ZS-hx3n*Pzu%RH;LX#;tA9-4vot_ICNO|c02yb% z1NfA|VwCO)ZvkLV9KFS*kCa-(*QQFm5t95!gVc{;7u{S4M8q@CZ9`{x>73~b9rt-c zpQm?Vo}`S@!*KHp4*_7ZaWze9ZKSo6ci#O;C5K7<_)*hNf-fhF=dUM;K;E>R6m)|g zHP8Dzk-D1%94F+H)9ie7E2&HmMo}nN76sqFURPnz$6%GBI1cX!=4u;uqaBuJhbdrK> literal 0 HcmV?d00001 diff --git a/src/SDL/rwops.py b/src/m64py/SDL/rwops.py similarity index 93% rename from src/SDL/rwops.py rename to src/m64py/SDL/rwops.py index 547e9ef..ce4a263 100644 --- a/src/SDL/rwops.py +++ b/src/m64py/SDL/rwops.py @@ -13,8 +13,8 @@ __version__ = '$Id: $' from ctypes import * -import SDL.dll -import SDL.constants +from .dll import function +from .constants import RW_SEEK_CUR _rwops_p = POINTER('SDL_RWops') _seek_fn = CFUNCTYPE(c_int, _rwops_p, c_int, c_int) @@ -53,7 +53,7 @@ class SDL_RWops(Structure): ('_hidden_mem', _hidden_mem_t)] SetPointerType(_rwops_p, SDL_RWops) -SDL_RWFromFile = SDL.dll.function('SDL_RWFromFile', +SDL_RWFromFile = function('SDL_RWFromFile', '''Create an SDL_RWops structure from a file on disk. :Parameters: @@ -70,7 +70,7 @@ SDL_RWFromFile = SDL.dll.function('SDL_RWFromFile', dereference_return=True, require_return=True) -SDL_RWFromMem = SDL.dll.function('SDL_RWFromMem', +SDL_RWFromMem = function('SDL_RWFromMem', '''Create an SDL_RWops structure from a contiguous region of memory. :Parameters: @@ -85,7 +85,7 @@ SDL_RWFromMem = SDL.dll.function('SDL_RWFromMem', dereference_return=True, require_return=True) -SDL_RWFromConstMem = SDL.dll.function('SDL_RWFromConstMem', +SDL_RWFromConstMem = function('SDL_RWFromConstMem', '''Create an SDL_RWops structure from a contiguous region of memory. :Parameters: @@ -103,7 +103,7 @@ SDL_RWFromConstMem = SDL.dll.function('SDL_RWFromConstMem', since=(1,2,7)) """ These functions shouldn't be useful to Pythoners. -SDL_AllocRW = SDL.dll.function('SDL_AllocRW', +SDL_AllocRW = function('SDL_AllocRW', '''Allocate a blank SDL_Rwops structure. :rtype: `SDL_RWops` @@ -114,7 +114,7 @@ SDL_AllocRW = SDL.dll.function('SDL_AllocRW', dereference_return=True, require_return=True) -SDL_FreeRW = SDL.dll.function('SDL_FreeRW', +SDL_FreeRW = function('SDL_FreeRW', '''Free a SDL_RWops structure. :param area: `SDL_RWops` @@ -178,7 +178,7 @@ def SDL_RWseek(ctx, offset, whence): return ctx.seek(ctx, offset, whence) def SDL_RWtell(ctx): - return ctx.seek(ctx, 0, SDL.constants.RW_SEEK_CUR) + return ctx.seek(ctx, 0, RW_SEEK_CUR) def SDL_RWread(ctx, ptr, size, n): return ctx.read(ctx, ptr, size, n) diff --git a/src/m64py/SDL/rwops.pyc b/src/m64py/SDL/rwops.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8a659636a5a54c03e1994ad5dcdd21d2b0c333c GIT binary patch literal 4825 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 NX0jCDf5Bf__W!qoVTS+! literal 0 HcmV?d00001 diff --git a/src/SDL/ttf.py b/src/m64py/SDL/ttf.py similarity index 92% rename from src/SDL/ttf.py rename to src/m64py/SDL/ttf.py index 94f63cf..dc21147 100644 --- a/src/SDL/ttf.py +++ b/src/m64py/SDL/ttf.py @@ -12,12 +12,12 @@ __version__ = '$Id: $' from ctypes import * -import SDL.dll -import SDL.rwops -import SDL.version -import SDL.video +from .dll import SDL_DLL +from .rwops import SDL_RWops +from .version import SDL_version +from .video import SDL_Color, SDL_Surface -_dll = SDL.dll.SDL_DLL('SDL_ttf', 'TTF_Linked_Version') +_dll = SDL_DLL('SDL_ttf', 'TTF_Linked_Version') TTF_Linked_Version = _dll.function('TTF_Linked_Version', '''Get the version of the dynamically linked SDL_ttf library. @@ -26,7 +26,7 @@ TTF_Linked_Version = _dll.function('TTF_Linked_Version', ''', args=[], arg_types=[], - return_type=POINTER(SDL.version.SDL_version), + return_type=POINTER(SDL_version), dereference_return=True, require_return=True) @@ -93,7 +93,7 @@ TTF_OpenFontRW = _dll.function('TTF_OpenFontRW', :rtype: ``TTF_Font`` ''', args=['src', 'freesrc', 'ptsize'], - arg_types=[POINTER(SDL.rwops.SDL_RWops), c_int, c_int], + arg_types=[POINTER(SDL_RWops), c_int, c_int], return_type=_TTF_Font, require_return=True) @@ -113,7 +113,7 @@ TTF_OpenFontIndexRW = _dll.function('TTF_OpenFontIndexRW', :rtype: ``TTF_Font`` ''', args=['src', 'freesrc', 'ptsize', 'index'], - arg_types=[POINTER(SDL.rwops.SDL_RWops), c_int, c_int, c_int], + arg_types=[POINTER(SDL_RWops), c_int, c_int, c_int], return_type=_TTF_Font, require_return=True) @@ -314,8 +314,8 @@ def TTF_SizeText(font, text): return w.value, h.value _TTF_RenderUTF8_Solid = _dll.private_function('TTF_RenderUTF8_Solid', - arg_types=[_TTF_Font, c_char_p, SDL.video.SDL_Color], - return_type=POINTER(SDL.video.SDL_Surface), + arg_types=[_TTF_Font, c_char_p, SDL_Color], + return_type=POINTER(SDL_Surface), require_return=True, dereference_return=True) @@ -336,8 +336,8 @@ def TTF_RenderText_Solid(font, text, fg): return _TTF_RenderUTF8_Solid(font, text.encode('utf8'), fg) _TTF_RenderGlyph_Solid = _dll.private_function('TTF_RenderGlyph_Solid', - arg_types=[_TTF_Font, c_ushort, SDL.video.SDL_Color], - return_type=POINTER(SDL.video.SDL_Surface), + arg_types=[_TTF_Font, c_ushort, SDL_Color], + return_type=POINTER(SDL_Surface), require_return=True, dereference_return=True) @@ -361,8 +361,8 @@ def TTF_RenderGlyph_Solid(font, ch, fg): return _TTF_RenderGlyph_Solid(font, ord(text), fg) _TTF_RenderUTF8_Shaded = _dll.private_function('TTF_RenderUTF8_Shaded', - arg_types=[_TTF_Font, c_char_p, SDL.video.SDL_Color, SDL.video.SDL_Color], - return_type=POINTER(SDL.video.SDL_Surface), + arg_types=[_TTF_Font, c_char_p, SDL_Color, SDL_Color], + return_type=POINTER(SDL_Surface), require_return=True, dereference_return=True) @@ -384,8 +384,8 @@ def TTF_RenderText_Shaded(font, text, fg, bg): return _TTF_RenderUTF8_Shaded(font, text.encode('utf8'), fg, bg) _TTF_RenderGlyph_Shaded = _dll.private_function('TTF_RenderGlyph_Shaded', - arg_types=[_TTF_Font, c_ushort, SDL.video.SDL_Color, SDL.video.SDL_Color], - return_type=POINTER(SDL.video.SDL_Surface), + arg_types=[_TTF_Font, c_ushort, SDL_Color, SDL_Color], + return_type=POINTER(SDL_Surface), require_return=True, dereference_return=True) @@ -410,8 +410,8 @@ def TTF_RenderGlyph_Shaded(font, ch, fg, bg): return _TTF_RenderGlyph_Shaded(font, ord(ch), fg, bg) _TTF_RenderUTF8_Blended = _dll.private_function('TTF_RenderUTF8_Blended', - arg_types=[_TTF_Font, c_char_p, SDL.video.SDL_Color], - return_type=POINTER(SDL.video.SDL_Surface), + arg_types=[_TTF_Font, c_char_p, SDL_Color], + return_type=POINTER(SDL_Surface), require_return=True, dereference_return=True) @@ -430,8 +430,8 @@ def TTF_RenderText_Blended(font, text, fg): return _TTF_RenderUTF8_Blended(font, text.encode('utf8'), fg) _TTF_RenderGlyph_Blended = _dll.private_function('TTF_RenderGlyph_Blended', - arg_types=[_TTF_Font, c_ushort, SDL.video.SDL_Color], - return_type=POINTER(SDL.video.SDL_Surface), + arg_types=[_TTF_Font, c_ushort, SDL_Color], + return_type=POINTER(SDL_Surface), require_return=True, dereference_return=True) diff --git a/src/SDL/version.py b/src/m64py/SDL/version.py similarity index 96% rename from src/SDL/version.py rename to src/m64py/SDL/version.py index 267e31d..16ca301 100644 --- a/src/SDL/version.py +++ b/src/m64py/SDL/version.py @@ -8,7 +8,7 @@ __version__ = '$Id: $' from ctypes import * -import SDL.dll +from .dll import function class SDL_version(Structure): '''Version structure. @@ -57,7 +57,7 @@ def SDL_VERSIONNUM(major, minor, patch): ''' return x * 1000 + y * 100 + z -SDL_Linked_Version = SDL.dll.function('SDL_Linked_Version', +SDL_Linked_Version = function('SDL_Linked_Version', '''Get the version of the dynamically linked SDL library. :rtype: `SDL_version` diff --git a/src/m64py/SDL/version.pyc b/src/m64py/SDL/version.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0706078fa075fea63ab40368144ad81c897fc0e8 GIT binary patch literal 2590 zcmcImO>Z1U5PdzfyUwni*l|Jv2+$w}X@TG+A8=S9izId;OO9jBm`LoUJ)Z8h$C(e) z-D_o$;bLz54SoX5&Q3g}~U;>aL#du6p(A_4$C254C`OKwaea5_A`O4yOWY5xNJpMD3~99?e5t=Cun@%ZU0{$f>UYJe(AXOUuFr zMrX0pDsW}s4s;N$Z3gxrHd+N)x@TfD4UV<3X<4lF+!6qztuvFvO^jAfKXin;cn^RE0|o|6K>HYbgkRn9 z>(0K9QH$UtgxXMT?sO1FeR9nH4&Z4OKrnNBrPm9BAQ)~O$0m*UGHr)!pl3Ia4@c+8hvD> z{E&8}Z6SP-kT3MovF!WL#3tZGPz0wQ%!4KZfkT03ZIt)f;?XyU-Z_iU7N0B;#V&Xk z5AV^U>5E0mKX2kys>P;A0a2fP*_{n#IM-6T9snuxQcW@%(g#wiGO7EC zoa{}Vt`aj&b*8Kgi4h^y>I;YeZN@_)6se+J0MME5h_2|0MX%dRXr_5N<5#PUD}k$y z74zzK=iz$9q_lqk*qNAu#j2)MT^yDwwhUq#YLh0xahy$>T7OuYKtGT3qf8HnRT zr literal 0 HcmV?d00001 diff --git a/src/SDL/video.py b/src/m64py/SDL/video.py similarity index 91% rename from src/SDL/video.py rename to src/m64py/SDL/video.py index 8f82d46..cb41492 100644 --- a/src/SDL/video.py +++ b/src/m64py/SDL/video.py @@ -18,11 +18,11 @@ __version__ = '$Id: $' from ctypes import * -import SDL.array -import SDL.dll -import SDL.error -import SDL.constants -import SDL.rwops +from .array import SDL_array, to_ctypes +from .dll import function, private_function, assert_version_compatible +from .error import SDL_Exception, SDL_GetError +from .constants import SDL_HWSURFACE, SDL_ASYNCBLIT, SDL_RLEACCEL +from .rwops import SDL_RWops, SDL_RWFromFile class SDL_Rect(Structure): '''Rectangle structure. @@ -114,7 +114,7 @@ class SDL_Palette(Structure): def __getattr__(self, name): if name == 'colors': - return SDL.array.SDL_array(self._colors, self.ncolors, SDL_Color) + return SDL_array(self._colors, self.ncolors, SDL_Color) raise AttributeError, name @@ -247,7 +247,7 @@ class SDL_Surface(Structure): elif name == 'pixels': # Return SDL_array type for pixels if not self._pixels: - raise SDL.error.SDL_Exception, 'Surface needs locking' + raise SDL_Exception, 'Surface needs locking' bpp = self.format.BitsPerPixel count = self.pitch / self.format.BytesPerPixel * self.h if bpp == 1: @@ -265,8 +265,8 @@ class SDL_Surface(Structure): elif bpp == 32: sz = c_uint else: - raise SDL.error.SDL_Exception, 'Unsupported bytes-per-pixel' - return SDL.array.SDL_array(self._pixels, count, sz) + raise SDL_Exception, 'Unsupported bytes-per-pixel' + return SDL_array(self._pixels, count, sz) raise AttributeError, name def SDL_MUSTLOCK(surface): @@ -280,9 +280,9 @@ def SDL_MUSTLOCK(surface): ''' return surface._offset or \ ((surface.flags & \ - (SDL.constants.SDL_HWSURFACE | \ - SDL.constants.SDL_ASYNCBLIT | \ - SDL.constants.SDL_RLEACCEL)) != 0) + (SDL_HWSURFACE | \ + SDL_ASYNCBLIT | \ + SDL_RLEACCEL)) != 0) SDL_blit = CFUNCTYPE(c_int, POINTER(SDL_Surface), POINTER(SDL_Rect), POINTER(SDL_Surface), POINTER(SDL_Rect)) @@ -354,7 +354,7 @@ class SDL_VideoInfo(Structure): # current_w and current_h added in SDL 1.2.10 if name in ('current_w', 'current_h'): - SDL.dll.assert_version_compatible(name, (1,2,10)) + assert_version_compatible(name, (1,2,10)) return getattr(self, '_%s' % name) raise AttributeError, name @@ -398,18 +398,18 @@ class SDL_Overlay(Structure): elif name == 'pixels': if not self._pixels: - raise SDL.error.SDL_Exception, 'Overlay needs locking' + raise SDL_Exception, 'Overlay needs locking' p = [] for i in range(self.planes): sz = self.pitches[i] * self.h - p.append(SDL.array.SDL_array(self._pixels[i], sz, c_byte)) + p.append(SDL_array(self._pixels[i], sz, c_byte)) return p # SDL_VideoInit and SDL_VideoQuit not implemented (internal only, according # to SDL_video.h). -_SDL_VideoDriverName = SDL.dll.private_function('SDL_VideoDriverName', +_SDL_VideoDriverName = private_function('SDL_VideoDriverName', arg_types=[c_char_p, c_int], return_type=c_int) @@ -428,7 +428,7 @@ def SDL_VideoDriverName(maxlen=1024): return buf.value return None -SDL_GetVideoSurface = SDL.dll.function('SDL_GetVideoSurface', +SDL_GetVideoSurface = function('SDL_GetVideoSurface', '''Return the current display surface. If SDL is doing format conversion on the display surface, this @@ -440,7 +440,7 @@ SDL_GetVideoSurface = SDL.dll.function('SDL_GetVideoSurface', return_type=POINTER(SDL_Surface), dereference_return=True) -SDL_GetVideoInfo = SDL.dll.function('SDL_GetVideoInfo', +SDL_GetVideoInfo = function('SDL_GetVideoInfo', '''Return information about the video hardware. If this is called before `SDL_SetVideoMode`, the ``vfmt`` member @@ -452,7 +452,7 @@ SDL_GetVideoInfo = SDL.dll.function('SDL_GetVideoInfo', return_type=POINTER(SDL_VideoInfo), dereference_return=True) -SDL_VideoModeOK = SDL.dll.function('SDL_VideoModeOK', +SDL_VideoModeOK = function('SDL_VideoModeOK', '''Check to see if a particular video mode is supported. Returns 0 if the requested mode is not supported under any bit @@ -480,7 +480,7 @@ SDL_VideoModeOK = SDL.dll.function('SDL_VideoModeOK', arg_types=[c_int, c_int, c_int, c_uint], return_type=c_int) -_SDL_ListModes = SDL.dll.private_function('SDL_ListModes', +_SDL_ListModes = private_function('SDL_ListModes', arg_types=[POINTER(SDL_PixelFormat), c_uint], return_type=POINTER(POINTER(SDL_Rect))) @@ -513,7 +513,7 @@ def SDL_ListModes(format, flags): i += 1 return lst -SDL_SetVideoMode = SDL.dll.function('SDL_SetVideoMode', +SDL_SetVideoMode = function('SDL_SetVideoMode', '''Set up a video mode with the specified width, height and bits-per-pixel. @@ -593,7 +593,7 @@ SDL_SetVideoMode = SDL.dll.function('SDL_SetVideoMode', dereference_return=True, require_return=True) -_SDL_UpdateRects = SDL.dll.private_function('SDL_UpdateRects', +_SDL_UpdateRects = private_function('SDL_UpdateRects', arg_types=[POINTER(SDL_Surface), c_int, POINTER(SDL_Rect)], return_type=None) @@ -607,10 +607,10 @@ def SDL_UpdateRects(screen, rects): - `screen`: `SDL_Surface` - `rects`: list of `SDL_Rect` ''' - ref, ar = SDL.array.to_ctypes(rects, len(rects), SDL_Rect) + ref, ar = to_ctypes(rects, len(rects), SDL_Rect) _SDL_UpdateRects(screen, len(rects), ar) -SDL_UpdateRect = SDL.dll.function('SDL_UpdateRect', +SDL_UpdateRect = function('SDL_UpdateRect', '''Make sure that the given rectangle is updated on the given screen. @@ -630,7 +630,7 @@ SDL_UpdateRect = SDL.dll.function('SDL_UpdateRect', arg_types=[POINTER(SDL_Surface), c_int, c_int, c_uint, c_uint], return_type=None) -SDL_Flip = SDL.dll.function('SDL_Flip', +SDL_Flip = function('SDL_Flip', '''Flip the front and back buffers. On hardware that supports double-buffering, this function sets up a @@ -652,7 +652,7 @@ SDL_Flip = SDL.dll.function('SDL_Flip', return_type=c_int, success_return=0) -SDL_SetGamma = SDL.dll.function('SDL_SetGamma', +SDL_SetGamma = function('SDL_SetGamma', '''Set the gamma correction for each of the color channels. The gamma values range (approximately) between 0.1 and 10.0 @@ -671,7 +671,7 @@ SDL_SetGamma = SDL.dll.function('SDL_SetGamma', return_type=c_int, success_return=0) -_SDL_SetGammaRamp = SDL.dll.private_function('SDL_SetGammaRamp', +_SDL_SetGammaRamp = private_function('SDL_SetGammaRamp', arg_types=[POINTER(c_ushort), POINTER(c_ushort), POINTER(c_ushort)], return_type=c_int) @@ -700,16 +700,16 @@ def SDL_SetGammaRamp(red, green, blue): ''' rar = gar = bar = None if red: - rref, rar = SDL.array.to_ctypes(red, 256, c_ushort) + rref, rar = to_ctypes(red, 256, c_ushort) if green: - gref, gar = SDL.array.to_ctypes(green, 256, c_ushort) + gref, gar = to_ctypes(green, 256, c_ushort) if blue: - bref, bar = SDL.array.to_ctypes(blue, 256, c_ushort) + bref, bar = to_ctypes(blue, 256, c_ushort) result = _SDL_SetGammaRamp(rar, gar, bar) if result != 0: - raise SDL.error.SDL_Exception, SDL.error.SDL_GetError() + raise SDL_Exception, SDL_GetError() -_SDL_GetGammaRamp = SDL.dll.private_function('SDL_GetGammaRamp', +_SDL_GetGammaRamp = private_function('SDL_GetGammaRamp', arg_types=[POINTER(c_ushort), POINTER(c_ushort), POINTER(c_ushort)], return_type=c_int) @@ -721,14 +721,14 @@ def SDL_GetGammaRamp(): is either None (if the display driver doesn't support gamma translation) or an SDL_array of 256 ints in the range [0, 2**16). ''' - rar = SDL.array.SDL_array(None, 256, c_ushort) - gar = SDL.array.SDL_array(None, 256, c_ushort) - bar = SDL.array.SDL_array(None, 256, c_ushort) + rar = SDL_array(None, 256, c_ushort) + gar = SDL_array(None, 256, c_ushort) + bar = SDL_array(None, 256, c_ushort) if _SDL_GetGammaRamp(rar.as_ctypes(), gar.as_ctypes(), bar.as_ctypes()) == 0: return rar, gar, bar return None, None, None -_SDL_SetColors = SDL.dll.private_function('SDL_SetColors', +_SDL_SetColors = private_function('SDL_SetColors', arg_types=[POINTER(SDL_Surface), POINTER(SDL_Color), c_int, c_int], return_type=c_int) @@ -756,10 +756,10 @@ def SDL_SetColors(surface, colors, firstcolor): :rtype: int :return: 1 if all colors were set as passed, otherwise 0. ''' - ref, ar = SDL.array.to_ctypes(colors, len(colors), SDL_Color) + ref, ar = to_ctypes(colors, len(colors), SDL_Color) return _SDL_SetColors(surface, ar, firstcolor, len(colors)) -_SDL_SetPalette = SDL.dll.private_function('SDL_SetPalette', +_SDL_SetPalette = private_function('SDL_SetPalette', arg_types=[POINTER(SDL_Surface), c_int, POINTER(SDL_Color), c_int, c_int], return_type=c_int) @@ -787,12 +787,12 @@ def SDL_SetPalette(surface, flags, colors, firstcolor): - `colors`: sequence or SDL_array of `SDL_Color` - `firstcolor`: int; the first color index to set. ''' - ref, ar = SDL.array.to_ctypes(colors, len(colors), SDL_Color) + ref, ar = to_ctypes(colors, len(colors), SDL_Color) result = _SDL_SetPalette(surface, flags, ar, firstcolor, len(colors)) if result != 1: - raise SDL.error.SDL_Exception, SDL.error.SDL_GetError() + raise SDL_Exception, SDL_GetError() -SDL_MapRGB = SDL.dll.function('SDL_MapRGB', +SDL_MapRGB = function('SDL_MapRGB', '''Map an RGB triple to an opaque pixel value for a given pixel format. @@ -809,7 +809,7 @@ SDL_MapRGB = SDL.dll.function('SDL_MapRGB', arg_types=[POINTER(SDL_PixelFormat), c_ubyte, c_ubyte, c_ubyte], return_type=c_uint) -SDL_MapRGBA = SDL.dll.function('SDL_MapRGBA', +SDL_MapRGBA = function('SDL_MapRGBA', '''Map an RGBA quadruple to an opaque pixel value for a given pixel format. @@ -827,7 +827,7 @@ SDL_MapRGBA = SDL.dll.function('SDL_MapRGBA', arg_types=[POINTER(SDL_PixelFormat), c_ubyte, c_ubyte, c_ubyte, c_ubyte], return_type=c_uint) -_SDL_GetRGB = SDL.dll.private_function('SDL_GetRGB', +_SDL_GetRGB = private_function('SDL_GetRGB', arg_types=[c_uint, POINTER(SDL_PixelFormat), POINTER(c_ubyte), POINTER(c_ubyte), POINTER(c_ubyte)], return_type=None) @@ -848,7 +848,7 @@ def SDL_GetRGB(pixel, fmt): _SDL_GetRGB(pixel, fmt, byref(r), byref(g), byref(b)) return r.value, g.value, b.value -_SDL_GetRGBA = SDL.dll.private_function('SDL_GetRGBA', +_SDL_GetRGBA = private_function('SDL_GetRGBA', arg_types=[c_uint, POINTER(SDL_PixelFormat), POINTER(c_ubyte), POINTER(c_ubyte), POINTER(c_ubyte), POINTER(c_ubyte)], @@ -870,7 +870,7 @@ def SDL_GetRGBA(pixel, fmt): _SDL_GetRGBA(pixel, fmt, byref(r), byref(g), byref(b), byref(a)) return r.value, g.value, b.value, a.value -SDL_CreateRGBSurface = SDL.dll.function('SDL_CreateRGBSurface', +SDL_CreateRGBSurface = function('SDL_CreateRGBSurface', '''Allocate an RGB surface. Must be called after `SDL_SetVideoMode`. If the depth is 4 or 8 @@ -938,7 +938,7 @@ SDL_CreateRGBSurface = SDL.dll.function('SDL_CreateRGBSurface', require_return=True) _SDL_CreateRGBSurfaceFrom = \ - SDL.dll.private_function('SDL_CreateRGBSurfaceFrom', + private_function('SDL_CreateRGBSurfaceFrom', arg_types=[POINTER(c_ubyte), c_int, c_int, c_int, c_uint, c_uint, c_uint, c_uint], return_type=POINTER(SDL_Surface), @@ -981,14 +981,14 @@ def SDL_CreateRGBSurfaceFrom(pixels, width, height, depth, pitch, if len(pixels) == pitch * 8 / depth * height: # pixel array? if depth == 8: - ref, ar = SDL.array.to_ctypes(pixels, len(pixels), c_ubyte) + ref, ar = to_ctypes(pixels, len(pixels), c_ubyte) elif depth == 16: - ref, ar = SDL.array.to_ctypes(pixels, len(pixels), c_ushort) + ref, ar = to_ctypes(pixels, len(pixels), c_ushort) elif depth == 32: - ref, ar = SDL.array.to_ctypes(pixels, len(pixels), c_uint) + ref, ar = to_ctypes(pixels, len(pixels), c_uint) elif len(pixels) == pitch * height: # byte array - ref, ar = SDL.array.to_ctypes(pixels, len(pixels), c_ubyte) + ref, ar = to_ctypes(pixels, len(pixels), c_ubyte) else: raise TypeError, 'Length of pixels does not match given dimensions.' @@ -997,7 +997,7 @@ def SDL_CreateRGBSurfaceFrom(pixels, width, height, depth, pitch, surface._buffer_ref = ref return surface -SDL_FreeSurface = SDL.dll.function('SDL_FreeSurface', +SDL_FreeSurface = function('SDL_FreeSurface', '''Free an RGB Surface. :Parameters: @@ -1007,7 +1007,7 @@ SDL_FreeSurface = SDL.dll.function('SDL_FreeSurface', arg_types=[POINTER(SDL_Surface)], return_type=None) -SDL_LockSurface = SDL.dll.function('SDL_LockSurface', +SDL_LockSurface = function('SDL_LockSurface', '''Set up a surface for directly accessing the pixels. Between calls to `SDL_LockSurface`/`SDL_UnlockSurface`, you can write @@ -1032,7 +1032,7 @@ SDL_LockSurface = SDL.dll.function('SDL_LockSurface', return_type=c_int, success_return=0) -SDL_UnlockSurface = SDL.dll.function('SDL_UnlockSurface', +SDL_UnlockSurface = function('SDL_UnlockSurface', '''Unlock a surface locked with `SDL_LockSurface`. :Parameters: @@ -1042,7 +1042,7 @@ SDL_UnlockSurface = SDL.dll.function('SDL_UnlockSurface', arg_types=[POINTER(SDL_Surface)], return_type=None) -SDL_LoadBMP_RW = SDL.dll.function('SDL_LoadBMP_RW', +SDL_LoadBMP_RW = function('SDL_LoadBMP_RW', '''Load a surface from a seekable SDL data source (memory or file). If `freesrc` is non-zero, the source will be closed after being read. @@ -1056,7 +1056,7 @@ SDL_LoadBMP_RW = SDL.dll.function('SDL_LoadBMP_RW', :rtype: `SDL_Surface` ''', args=['src', 'freesrc'], - arg_types=[POINTER(SDL.rwops.SDL_RWops), c_int], + arg_types=[POINTER(SDL_RWops), c_int], return_type=POINTER(SDL_Surface), dereference_return=True, require_return=True) @@ -1072,9 +1072,9 @@ def SDL_LoadBMP(file): :rtype: `SDL_Surface` ''' - return SDL_LoadBMP_RW(SDL.rwops.SDL_RWFromFile(file, 'rb'), 1) + return SDL_LoadBMP_RW(SDL_RWFromFile(file, 'rb'), 1) -SDL_SaveBMP_RW = SDL.dll.function('SDL_SaveBMP_RW', +SDL_SaveBMP_RW = function('SDL_SaveBMP_RW', '''Save a surface to a seekable SDL data source (memory or file). If `freedst` is non-zero, the destination will be closed after being @@ -1086,7 +1086,7 @@ SDL_SaveBMP_RW = SDL.dll.function('SDL_SaveBMP_RW', - `freesrc`: int ''', args=['surface', 'dst', 'freedst'], - arg_types=[POINTER(SDL_Surface), POINTER(SDL.rwops.SDL_RWops), c_int], + arg_types=[POINTER(SDL_Surface), POINTER(SDL_RWops), c_int], return_type=c_int, success_return=0) @@ -1100,9 +1100,9 @@ def SDL_SaveBMP(surface, file): - `surface`: `SDL_Surface` - `dst`: `SDL_RWops` ''' - return SDL_SaveBMP_RW(surface, SDL.rwops.SDL_RWFromFile(file, 'wb'), 1) + return SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, 'wb'), 1) -SDL_SetColorKey = SDL.dll.function('SDL_SetColorKey', +SDL_SetColorKey = function('SDL_SetColorKey', '''Set the color key (transparent pixel) in a blittable surface. If `flag` is `SDL_SRCCOLORKEY` (optionally OR'd with `SDL_RLEACCEL`), @@ -1121,7 +1121,7 @@ SDL_SetColorKey = SDL.dll.function('SDL_SetColorKey', return_type=c_int, success_return=0) -SDL_SetAlpha = SDL.dll.function('SDL_SetAlpha', +SDL_SetAlpha = function('SDL_SetAlpha', '''Set the alpha value for the entire surface, as opposed to using the alpha component of each pixel. @@ -1151,7 +1151,7 @@ SDL_SetAlpha = SDL.dll.function('SDL_SetAlpha', arg_types=[POINTER(SDL_Surface), c_uint, c_uint], return_type=c_int) -SDL_SetClipRect = SDL.dll.function('SDL_SetClipRect', +SDL_SetClipRect = function('SDL_SetClipRect', '''Set the clipping rectangle for the destination surface in a blit. If the clip rectangle is None, clipping will be disabled. @@ -1175,7 +1175,7 @@ SDL_SetClipRect = SDL.dll.function('SDL_SetClipRect', arg_types=[POINTER(SDL_Surface), POINTER(SDL_Rect)], return_type=c_int) -_SDL_GetClipRect = SDL.dll.private_function('SDL_GetClipRect', +_SDL_GetClipRect = private_function('SDL_GetClipRect', arg_types=[POINTER(SDL_Surface), POINTER(SDL_Rect)], return_type=None) @@ -1193,7 +1193,7 @@ def SDL_GetClipRect(surface): _SDL_GetClipRect(surface, byref(rect)) return rect -SDL_ConvertSurface = SDL.dll.function('SDL_ConvertSurface', +SDL_ConvertSurface = function('SDL_ConvertSurface', '''Create a new surface of the specified format, then copy and map the given surface to it so the blit of the converted surface will be as fast as possible. @@ -1218,7 +1218,7 @@ SDL_ConvertSurface = SDL.dll.function('SDL_ConvertSurface', dereference_return=True, require_return=True) -SDL_UpperBlit = SDL.dll.function('SDL_UpperBlit', +SDL_UpperBlit = function('SDL_UpperBlit', '''Perform a fast blit from the source surface to the destination surface. @@ -1300,7 +1300,7 @@ SDL_UpperBlit = SDL.dll.function('SDL_UpperBlit', return_type=c_int, error_return=-1) -SDL_BlitSurface = SDL.dll.function('SDL_UpperBlit', +SDL_BlitSurface = function('SDL_UpperBlit', '''Perform a fast blit from the source surface to the destination surface. @@ -1314,7 +1314,7 @@ SDL_BlitSurface = SDL.dll.function('SDL_UpperBlit', return_type=c_int, error_return=-1) -SDL_LowerBlit = SDL.dll.function('SDL_LowerBlit', +SDL_LowerBlit = function('SDL_LowerBlit', '''Low-level fast blit. This is a semi-private blit function that does not perform @@ -1329,7 +1329,7 @@ SDL_LowerBlit = SDL.dll.function('SDL_LowerBlit', return_type=c_int, error_return=-1) -SDL_FillRect = SDL.dll.function('SDL_FillRect', +SDL_FillRect = function('SDL_FillRect', '''Perform a fast fill of the given rectangle with `color`. The given rectangle is clipped to the destination surface clip area @@ -1348,7 +1348,7 @@ SDL_FillRect = SDL.dll.function('SDL_FillRect', return_type=c_int, success_return=0) -SDL_DisplayFormat = SDL.dll.function('SDL_DisplayFormat', +SDL_DisplayFormat = function('SDL_DisplayFormat', '''Copy a surface to the pixel format and colors of the display buffer. @@ -1370,7 +1370,7 @@ SDL_DisplayFormat = SDL.dll.function('SDL_DisplayFormat', dereference_return=True, require_return=True) -SDL_DisplayFormatAlpha = SDL.dll.function('SDL_DisplayFormatAlpha', +SDL_DisplayFormatAlpha = function('SDL_DisplayFormatAlpha', '''Copy a surface to the pixel format and colors of the display buffer. @@ -1393,7 +1393,7 @@ SDL_DisplayFormatAlpha = SDL.dll.function('SDL_DisplayFormatAlpha', dereference_return=True, require_return=True) -SDL_CreateYUVOverlay = SDL.dll.function('SDL_CreateYUVOverlay', +SDL_CreateYUVOverlay = function('SDL_CreateYUVOverlay', '''Create a video output overlay. Calling the returned surface an overlay is something of a misnomer @@ -1434,7 +1434,7 @@ SDL_CreateYUVOverlay = SDL.dll.function('SDL_CreateYUVOverlay', dereference_return=True, require_return=True) -SDL_LockYUVOverlay = SDL.dll.function('SDL_LockYUVOverlay', +SDL_LockYUVOverlay = function('SDL_LockYUVOverlay', '''Lock an overlay for direct access. Unlock the overlay when done with `SDL_UnlockYUVOverlay`. @@ -1449,7 +1449,7 @@ SDL_LockYUVOverlay = SDL.dll.function('SDL_LockYUVOverlay', arg_types=[POINTER(SDL_Overlay)], return_type=c_int) -SDL_UnlockYUVOverlay = SDL.dll.function('SDL_UnlockYUVOverlay', +SDL_UnlockYUVOverlay = function('SDL_UnlockYUVOverlay', '''Unlock an overlay after locking it with `SDL_LockYUVOverlay`. :Parameters: @@ -1459,7 +1459,7 @@ SDL_UnlockYUVOverlay = SDL.dll.function('SDL_UnlockYUVOverlay', arg_types=[POINTER(SDL_Overlay)], return_type=None) -SDL_DisplayYUVOverlay = SDL.dll.function('SDL_DisplayYUVOverlay', +SDL_DisplayYUVOverlay = function('SDL_DisplayYUVOverlay', '''Blit a video overlay to the display surface. The contents of the video surface underneath the blit destination @@ -1478,7 +1478,7 @@ SDL_DisplayYUVOverlay = SDL.dll.function('SDL_DisplayYUVOverlay', arg_types=[POINTER(SDL_Overlay), POINTER(SDL_Rect)], return_type=c_int) -SDL_FreeYUVOverlay = SDL.dll.function('SDL_FreeYUVOverlay', +SDL_FreeYUVOverlay = function('SDL_FreeYUVOverlay', '''Free a video overlay. :Parameters: @@ -1491,7 +1491,7 @@ SDL_FreeYUVOverlay = SDL.dll.function('SDL_FreeYUVOverlay', # SDL_GL_LoadLibrary, SDL_GL_GetProcAddress not implemented. -SDL_GL_SetAttribute = SDL.dll.function('SDL_GL_SetAttribute', +SDL_GL_SetAttribute = function('SDL_GL_SetAttribute', '''Set an attribute of the OpenGL subsystem before initialization. :Parameters: @@ -1505,7 +1505,7 @@ SDL_GL_SetAttribute = SDL.dll.function('SDL_GL_SetAttribute', arg_types=[c_uint, c_int], return_type=c_int) -_SDL_GL_GetAttribute = SDL.dll.private_function('SDL_GL_GetAttribute', +_SDL_GL_GetAttribute = private_function('SDL_GL_GetAttribute', arg_types=[c_int, POINTER(c_int)], return_type=c_int) @@ -1517,7 +1517,7 @@ def SDL_GL_GetAttribute(attr): _SDL_GL_GetAttribute(attr, byref(val)) return val.value -SDL_GL_SwapBuffers = SDL.dll.function('SDL_GL_SwapBuffers', +SDL_GL_SwapBuffers = function('SDL_GL_SwapBuffers', '''Swap the OpenGL buffers, if double-buffering is supported. ''', args=[], @@ -1527,7 +1527,7 @@ SDL_GL_SwapBuffers = SDL.dll.function('SDL_GL_SwapBuffers', # SDL_GL_UpdateRects, SDL_GL_Lock and SDL_GL_Unlock not implemented (marked # private in SDL_video.h) -_SDL_WM_SetCaption = SDL.dll.private_function('SDL_WM_SetCaption', +_SDL_WM_SetCaption = private_function('SDL_WM_SetCaption', arg_types=[c_char_p, c_char_p], return_type=None) @@ -1543,7 +1543,7 @@ def SDL_WM_SetCaption(title, icon): _SDL_WM_SetCaption(title.encode('utf-8'), icon.encode('utf-8')) -_SDL_WM_GetCaption = SDL.dll.private_function('SDL_WM_GetCaption', +_SDL_WM_GetCaption = private_function('SDL_WM_GetCaption', arg_types=[POINTER(c_char_p), POINTER(c_char_p)], return_type=None) @@ -1567,7 +1567,7 @@ def SDL_WM_GetCaption(): icon = None return title, icon -_SDL_WM_SetIcon = SDL.dll.private_function('SDL_WM_SetIcon', +_SDL_WM_SetIcon = private_function('SDL_WM_SetIcon', arg_types=[POINTER(SDL_Surface), POINTER(c_ubyte)], return_type=None) @@ -1585,10 +1585,10 @@ def SDL_WM_SetIcon(icon, mask): ''' if mask: ref, mask = \ - SDL.array.to_ctypes(mask, (icon.w * icon.h + 7) / 8, c_ubyte) + to_ctypes(mask, (icon.w * icon.h + 7) / 8, c_ubyte) _SDL_WM_SetIcon(icon, mask) -SDL_WM_IconifyWindow = SDL.dll.function('SDL_WM_IconifyWindow', +SDL_WM_IconifyWindow = function('SDL_WM_IconifyWindow', '''Iconify the window. If the function succeeds, it generates an `SDL_APPACTIVATE` loss @@ -1599,7 +1599,7 @@ SDL_WM_IconifyWindow = SDL.dll.function('SDL_WM_IconifyWindow', return_type=c_int, error_return=0) -SDL_WM_ToggleFullScreen = SDL.dll.function('SDL_WM_ToggleFullScreen', +SDL_WM_ToggleFullScreen = function('SDL_WM_ToggleFullScreen', '''Toggle fullscreen mode without changing the contents of the screen. @@ -1620,7 +1620,7 @@ SDL_WM_ToggleFullScreen = SDL.dll.function('SDL_WM_ToggleFullScreen', return_type=c_int, error_return=0) -SDL_WM_GrabInput = SDL.dll.function('SDL_WM_GrabInput', +SDL_WM_GrabInput = function('SDL_WM_GrabInput', '''Set the grab mode for the mouse and keyboard. Grabbing means that the mouse is confined to the application window, diff --git a/src/m64py/SDL/video.pyc b/src/m64py/SDL/video.pyc new file mode 100644 index 0000000000000000000000000000000000000000..47d54cbc83c1fcdc3e7f72a478f801bb8d4d486c GIT binary patch literal 53456 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 literal 0 HcmV?d00001