treasurehunting2/PySDL2-0.9.5/sdl2/haptic.py
2017-05-13 11:00:53 +02:00

195 lines
8.4 KiB
Python

from ctypes import Structure, Union, POINTER, c_int, c_uint, c_float, c_char_p
from .dll import _bind
from .stdinc import Uint8, Uint16, Uint32, Sint16, Sint32
from .joystick import SDL_Joystick
__all__ = ["SDL_Haptic", "SDL_HAPTIC_CONSTANT", "SDL_HAPTIC_SINE",
"SDL_HAPTIC_LEFTRIGHT", "SDL_HAPTIC_TRIANGLE",
"SDL_HAPTIC_SAWTOOTHUP", "SDL_HAPTIC_SAWTOOTHDOWN",
"SDL_HAPTIC_RAMP", "SDL_HAPTIC_SPRING", "SDL_HAPTIC_DAMPER",
"SDL_HAPTIC_INERTIA", "SDL_HAPTIC_FRICTION", "SDL_HAPTIC_CUSTOM",
"SDL_HAPTIC_GAIN", "SDL_HAPTIC_AUTOCENTER", "SDL_HAPTIC_STATUS",
"SDL_HAPTIC_PAUSE", "SDL_HAPTIC_POLAR", "SDL_HAPTIC_CARTESIAN",
"SDL_HAPTIC_SPHERICAL", "SDL_HAPTIC_INFINITY",
"SDL_HapticDirection", "SDL_HapticConstant", "SDL_HapticPeriodic",
"SDL_HapticCondition", "SDL_HapticRamp", "SDL_HapticCustom",
"SDL_HapticLeftRight", "SDL_HapticEffect", "SDL_NumHaptics",
"SDL_HapticName", "SDL_HapticOpen", "SDL_HapticOpened",
"SDL_HapticIndex", "SDL_MouseIsHaptic", "SDL_HapticOpenFromMouse",
"SDL_JoystickIsHaptic", "SDL_HapticOpenFromJoystick",
"SDL_HapticClose", "SDL_HapticNumEffects",
"SDL_HapticNumEffectsPlaying", "SDL_HapticQuery",
"SDL_HapticNumAxes", "SDL_HapticEffectSupported",
"SDL_HapticNewEffect", "SDL_HapticUpdateEffect",
"SDL_HapticRunEffect", "SDL_HapticStopEffect",
"SDL_HapticDestroyEffect", "SDL_HapticGetEffectStatus",
"SDL_HapticSetGain", "SDL_HapticSetAutocenter", "SDL_HapticPause",
"SDL_HapticUnpause", "SDL_HapticStopAll",
"SDL_HapticRumbleSupported", "SDL_HapticRumbleInit",
"SDL_HapticRumblePlay", "SDL_HapticRumbleStop"
]
class SDL_Haptic(Structure):
pass
SDL_HAPTIC_CONSTANT = 1 << 0
SDL_HAPTIC_SINE = 1 << 1
SDL_HAPTIC_LEFTRIGHT = 1 << 2
SDL_HAPTIC_TRIANGLE = 1 << 3
SDL_HAPTIC_SAWTOOTHUP = 1 << 4
SDL_HAPTIC_SAWTOOTHDOWN = 1 << 5
SDL_HAPTIC_RAMP = 1 << 6
SDL_HAPTIC_SPRING = 1 << 7
SDL_HAPTIC_DAMPER = 1 << 8
SDL_HAPTIC_INERTIA = 1 << 9
SDL_HAPTIC_FRICTION = 1 << 10
SDL_HAPTIC_CUSTOM = 1 << 11
SDL_HAPTIC_GAIN = 1 << 12
SDL_HAPTIC_AUTOCENTER = 1 << 13
SDL_HAPTIC_STATUS = 1 << 14
SDL_HAPTIC_PAUSE = 1 << 15
SDL_HAPTIC_POLAR = 0
SDL_HAPTIC_CARTESIAN = 1
SDL_HAPTIC_SPHERICAL = 2
SDL_HAPTIC_INFINITY = 4294967295
class SDL_HapticDirection(Structure):
_fields_ = [("type", Uint8), ("dir", (Sint32 * 3))]
class SDL_HapticConstant(Structure):
_fields_ = [("type", Uint16),
("direction", SDL_HapticDirection),
("length", Uint32),
("delay", Uint16),
("button", Uint16),
("interval", Uint16),
("level", Sint16),
("attack_length", Uint16),
("attack_level", Uint16),
("fade_length", Uint16),
("fade_level", Uint16),
]
class SDL_HapticPeriodic(Structure):
_fields_ = [("type", Uint16),
("direction", SDL_HapticDirection),
("length", Uint32),
("delay", Uint16),
("button", Uint16),
("interval", Uint16),
("period", Uint16),
("magnitude", Sint16),
("offset", Sint16),
("phase", Uint16),
("attack_length", Uint16),
("attack_level", Uint16),
("fade_length", Uint16),
("fade_level", Uint16),
]
class SDL_HapticCondition(Structure):
"""A conditionally running effect."""
_fields_ = [("type", Uint16),
("direction", SDL_HapticDirection),
("length", Uint32),
("delay", Uint16),
("button", Uint16),
("interval", Uint16),
("right_sat", (Uint16 * 3)),
("left_sat", (Uint16 * 3)),
("right_coeff", (Sint16 * 3)),
("left_coeff", (Sint16 * 3)),
("deadband", (Uint16 * 3)),
("center", (Sint16 * 3)),
]
class SDL_HapticRamp(Structure):
"""A ramp-like effect."""
_fields_ = [("type", Uint16),
("direction", SDL_HapticDirection),
("length", Uint32),
("delay", Uint16),
("button", Uint16),
("interval", Uint16),
("start", Sint16),
("end", Sint16),
("attack_length", Uint16),
("attack_level", Uint16),
("fade_length", Uint16),
("fade_level", Uint16),
]
class SDL_HapticLeftRight(Structure):
"""A left-right effect."""
_fields_ = [("type", Uint16),
("length", Uint32),
("large_magnitude", Uint16),
("small_magnitude", Uint16)
]
class SDL_HapticCustom(Structure):
"""A custom effect."""
_fields_ = [("type", Uint16),
("direction", SDL_HapticDirection),
("length", Uint32),
("delay", Uint16),
("button", Uint16),
("interval", Uint16),
("channels", Uint8),
("period", Uint16),
("samples", Uint16),
("data", POINTER(Uint16)),
("attack_length", Uint16),
("attack_level", Uint16),
("fade_length", Uint16),
("fade_level", Uint16),
]
class SDL_HapticEffect(Union):
"""A generic haptic effect, containing the concrete haptic effect."""
_fields_ = [("type", Uint16),
("constant", SDL_HapticConstant),
("periodic", SDL_HapticPeriodic),
("condition", SDL_HapticCondition),
("ramp", SDL_HapticRamp),
("leftright", SDL_HapticLeftRight),
("custom", SDL_HapticCustom),
]
SDL_NumHaptics = _bind("SDL_NumHaptics", None, c_int)
SDL_HapticName = _bind("SDL_HapticName", [c_int], c_char_p)
SDL_HapticOpen = _bind("SDL_HapticOpen", [c_int], POINTER(SDL_Haptic))
SDL_HapticOpened = _bind("SDL_HapticOpened", [c_int], c_int)
SDL_HapticIndex = _bind("SDL_HapticIndex", [POINTER(SDL_Haptic)], c_int)
SDL_MouseIsHaptic = _bind("SDL_MouseIsHaptic", None, c_int)
SDL_HapticOpenFromMouse = _bind("SDL_HapticOpenFromMouse", None, POINTER(SDL_Haptic))
SDL_JoystickIsHaptic = _bind("SDL_JoystickIsHaptic", [POINTER(SDL_Joystick)], c_int)
SDL_HapticOpenFromJoystick = _bind("SDL_HapticOpenFromJoystick", [POINTER(SDL_Joystick)], POINTER(SDL_Haptic))
SDL_HapticClose = _bind("SDL_HapticClose", [POINTER(SDL_Haptic)])
SDL_HapticNumEffects = _bind("SDL_HapticNumEffects", [POINTER(SDL_Haptic)], c_int)
SDL_HapticNumEffectsPlaying = _bind("SDL_HapticNumEffectsPlaying", [POINTER(SDL_Haptic)], c_int)
SDL_HapticQuery = _bind("SDL_HapticQuery", [POINTER(SDL_Haptic)], c_uint)
SDL_HapticNumAxes = _bind("SDL_HapticNumAxes", [POINTER(SDL_Haptic)], c_int)
SDL_HapticEffectSupported = _bind("SDL_HapticEffectSupported", [POINTER(SDL_Haptic), POINTER(SDL_HapticEffect)], c_int)
SDL_HapticNewEffect = _bind("SDL_HapticNewEffect", [POINTER(SDL_Haptic), POINTER(SDL_HapticEffect)], c_int)
SDL_HapticUpdateEffect = _bind("SDL_HapticUpdateEffect", [POINTER(SDL_Haptic), c_int, POINTER(SDL_HapticEffect)], c_int)
SDL_HapticRunEffect = _bind("SDL_HapticRunEffect", [POINTER(SDL_Haptic), c_int, Uint32], c_int)
SDL_HapticStopEffect = _bind("SDL_HapticStopEffect", [POINTER(SDL_Haptic), c_int], c_int)
SDL_HapticDestroyEffect = _bind("SDL_HapticDestroyEffect", [POINTER(SDL_Haptic), c_int])
SDL_HapticGetEffectStatus = _bind("SDL_HapticGetEffectStatus", [POINTER(SDL_Haptic), c_int], c_int)
SDL_HapticSetGain = _bind("SDL_HapticSetGain", [POINTER(SDL_Haptic), c_int], c_int)
SDL_HapticSetAutocenter = _bind("SDL_HapticSetAutocenter", [POINTER(SDL_Haptic), c_int], c_int)
SDL_HapticPause = _bind("SDL_HapticPause", [POINTER(SDL_Haptic)], c_int)
SDL_HapticUnpause = _bind("SDL_HapticUnpause", [POINTER(SDL_Haptic)], c_int)
SDL_HapticStopAll = _bind("SDL_HapticStopAll", [POINTER(SDL_Haptic)], c_int)
SDL_HapticRumbleSupported = _bind("SDL_HapticRumbleSupported", [POINTER(SDL_Haptic)], c_int)
SDL_HapticRumbleInit = _bind("SDL_HapticRumbleInit", [POINTER(SDL_Haptic)], c_int)
SDL_HapticRumblePlay = _bind("SDL_HapticRumblePlay", [POINTER(SDL_Haptic), c_float, Uint32], c_int)
SDL_HapticRumbleStop = _bind("SDL_HapticRumbleStop", [POINTER(SDL_Haptic)], c_int)