This package contains bindings to the SDL 2 library, in both high- and
low-level forms:
The SDL namespace contains high-level bindings, where enumerations are split
into sum types, and we perform automatic error-checking.
The SDL.Raw namespace contains an almost 1-1 translation of the C API into
Haskell FFI calls. As such, this does not contain sum types nor error
checking. Thus this namespace is suitable for building your own abstraction
over SDL, but is not recommended for day-to-day programming.
Changes
2.2.0
Version 2.0.4 of the SDL2 C library is now required:
SDL.Event:
Add AudioDeviceEvent constructor to Event
Add KeymapChangedEvent constructor to EventPayload
Add mouseWheelEventDirection field to MouseWheelEventData
Add SDL_MOUSEWHEEL_NORMAL and SDL_MOUSEWHEEL_FLIPPED pattern synonyms
Add SDL_KEYMAPCHANGED, SDL_AUDIODEVICEADDED, SDL_AUDIODEVICEREMOVED,
SDL_RENDER_TARGETS_RESET, and SDL_RENDER_DEVICE_RESET pattern synonyms
Add SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE and
SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH pattern synonyms
Add SDL_WINDOW_MOUSE_CAPTURE pattern synonym
SDL.Raw.Event:
Add captureMouse function
Add getGlobalMouseState function
Add warpMouseGlobal function
Add joystickCurrentPowerLevel function
Add joystickFromInstanceID function
Add gameControllerFromInstanceID function
SDL.Raw.Event:
Add AudioDeviceEvent constructor to Event
Add KeymapChangedEvent constructor to Event
Add mouseWheelEventDirection field to MouseMotionEvent constructor
Add SDL.Exception module, exposing SDLException
Add new function, createSoftwareRenderer, to render onto a surface
Add joystick POV hat support
Remove deprecated functionality:
InitEverything enumeration in SDL.Init
mapRGB in SDL.Video.Renderer
setRelativeMouseMode in SDL.Input.Mouse
getRelativeMouseMode in SDL.Input.Mouse
getMouseLocation in SDL.Input.Mouse
Remove ClipboardUpdateEventData
Merge isScreenSaverEnabled, enableScreenSaver, and disableScreenSaverinto ascreenSaverEnabled` StateVar.
Make function surfaceBlit in SDL.Video.Renderer return final blit
rectangle post-clipping.
Make all fields in EventData constructors strict
Fix issue with setWindowMode transitions not working properly between
fullscreen and windowed modes.
2.1.3.1
Raise upper bounds for vector to <0.13
2.1.3
Cabal flag no-linear removes dependency on linear (and thus, transiently,
lens). See SDL.Vect for details.
Remove ‘lens’ dependency from all examples.
Add Cabal flag opengl-example to separate that target from examples,
because it is now the only example with an extra dependency (OpenGL).
Make hlint happy with examples.
Add updateTexture wrapper for native SDL_UpdateTexture.
Expose glGetDrawableSize (can differ from window size in some environments).
Correct hintToString output to match SDL hint tokens, rather than the names
of the CPP macros defining them.
Removed ghc-options: -Wall until we drop support for GHC 7.8. (>1300 warnings!)
Various documentation updates.
2.1.2.1
Raise upper bounds for lens to <4.15 (affects examples only)
2.1.2
Revise some documentation examples to be more idomatic
Update .gitignore to cover stack and other tools
Raise upper bounds for transformers to <0.6
Lower required SDL2 version to 2.0.2.
Fix decoding of TextEditingEvent where the Raw bindings failed to stop reading
character data past the null terminator.
2.1.1
SDL.Input.Mouse new has a new API for fetching the location of the mouse. This
API gives you greater control over finding the mouse position with respect to the
various “modes” a mouse can be in. The old API still exists, but will be removed
at some point in the future.
SDL.Raw now has a binding to SDL_free.
2.1.0
Introduce initializeAll and deprecate InitEverything. To fix this deprecation
warning, change initialize [InitEverything] to initializeAll.
surfaceColorKey, surfaceFillRect and surfaceFillRects now all operate on
on RGBA V4 Word8 values. They all implicitly map and unmap (using SDL_MapRGBA
and SDL_GetRGBA respectively).
SDL.mapRGB is now deprecated, as this conversion is always done for you.
If you still need this routine, use SDL.Raw.mapRGB.
Fix a runtime crash when reading the current BlendMode of a texture. Thanks to
@seppeljordan for discovering and fixing this bug.
2.0.0
Introduce a set of comprehensive high-level bindings to SDL. These bindings
should allow users to work with SDL while writing idiomatic Haskell code. They
take care of pointer manipulation, and wrap up values in much more “natural”
data types. The high-level bindings live in the SDL namespace, and have been
extensively documented.
Raw bindings have been moved from Graphics.UI.SDL to SDL.Raw.