# Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## 0.13.0 - 2016-11-08 ### Fixed * Fixed SDL 2.0.4 specific ```AudioDevice``` methods: ```AudioDevice::QueueAudio()```, ```AudioDevice::GetQueuedAudioSize()``` * Fixed MSVC compiler support and .dll generation * Multiple documentation fixes ### Added * More tests * Automatic SDL 2.0.4 detection * ```Texture::Update()``` overload which takes rvalue reference to ```Surface``` ### Changed * ```Renderer::GetClipRect``` now returns ```Optional``` instead of (possibly empty) ```Rect``` * ```Exception``` is now derived from ```std::runtime_error``` ### Removed * Deprecated ```Renderer::GetInfo()``` variant which takes pointer (use variant which takes reference) ## 0.12.0 - 2016-01-23 ### Fixed * Link SDL2main library, which is needed on some systems * Numerous improvements in Windows support * Documentation fixes * Multiple fixes in pkg-config and CMake module files ## 0.11.0 - 2015-11-30 ### Added * New ```Window``` methods: ```Window::GetDrawableWidth()```, ```Window::GetDrawableHeight()```, ```Window::GetDrawableSize()``` (@csoren) * ```Point``` and ```Rect``` less-than operators and std::hash support which makes them usable as ```std::map```/```std::unordered_map```/```std::set```/```std::unordered_set``` keys * More ```Rect``` methods and wider constexpr support ### Fixed * ```Rect``` documentation fixes * Unused variable warnings (@vladimirgamalian) * Incorrect return value handling in ```Surface::SetClipRect()``` ## 0.10.0 - 2015-10-14 ### Fixed * Improved cygwin compatibility * Missing ```SDL``` method implementations * Fixed return and argument types for some ```Window```, ```Font``` and ```Mixer``` methods to match upstream API * Infinite loop in ```StreamRWops``` * Documentation improvements * Build without [SDL_mixer](https://www.libsdl.org/projects/SDL_mixer/) support ## 0.9.0 - 2015-09-07 ### Added * [SDL_mixer](https://www.libsdl.org/projects/SDL_mixer/) support * More ```Point``` operators: ```*```, ```/```, ```%``` for integer multiplication, division and remainder by a number or another ```Point``` * ```Point``` and ```Rect``` better inlining and constexpr support * New method: ```Surface::GetFormat()``` * ```Texture::Update()``` overload which takes Surface as pixel source ## 0.8.2 - 2015-07-28 ### Fixed * Add missing ```Font::IsGlyphProvided()``` implementation (@vladimirgamalian) * Fix glyph rectangle calculation in ```Font::GetGlyphRect()``` (@vladimirgamalian) ## 0.8.1 - 2015-06-29 ### Fixed * Use correct type flags in ```RWops::Size()```, fixing MinGW build (@vladimirgamalian) ## 0.8.0 - 2015-06-10 ### Added * ```Render::Copy()``` overload which takes target ```Point``` instead of a ```Rect``` * New method ```Render::FillCopy()``` which fills target rect with repeated texture * Improved UTF-16 font rendering support * CMake module file ## 0.7.1 - 2015-03-27 ### Fixed * Miscellaneous style, documentation and build system fixes ## 0.7.0 - 2015-01-22 ### Added * More ```Texture```, ```Renderer``` (both complete now) and ```Window``` methods * New methods: ```Point::Clamp()```, ```Point::Wrap()```, ```Rect::Extend()```, ```Rect::IntersectLine()``` * STL stream output for ```Point``` and ```Rect``` (as in ```std::cout << Rect(10, 20, 30 40);```) ### Changed * Most setters now return reference to self to allow method chaining * Exception now stores both SDL error and name of function which caused it; ```what()``` message now includes these both in a readable way, so SDL2pp exceptions may be conveniently handled with ```catch (std::exception&)``` * pkg-config file now provides SDL libraries along with SDL2pp, so users don't need to care of SDL2 flags in addition to SDL2pp's ### Removed * Deprecated ```Point``` and ```Rect``` methods: ```Null()```, ```IsNull()```, ```Get()``` ### Fixed * Use move, not copy in constructing ```RWops``` from ```CustomRWops```-derived class ## 0.6.0 - 2015-01-11 ### Added * [Doxygen](http://doxygen.org/) documentation for the whole library * Wrapper around [SDL_image](https://www.libsdl.org/projects/SDL_image/) initialization/deinitialization: ```SDLImage``` class * ```Surface````, a wrapepr for [SDL_Surface](https://wiki.libsdl.org/SDL_Surface) including [SDL_image](https://www.libsdl.org/projects/SDL_image/) support. It's now also possible to construct ```Texture``` from ```Surface```. * Bunch of constructors from existing SDL objects (e.g. ```Window::Window(SDL_Window*)```) for ```Point```, ```Rect```, ```Window```, ```Renderer```, ```Texture``` * Complete [SDL_ttf](https://www.libsdl.org/projects/SDL_ttf/) support * Consistent ```GetWidth()```/```GetHeight()```/```GetSize()``` for ```Texture``` and ```Surface``` * More operators, constructors and methods for ```Point``` and ```Rect``` ### Fixed * Added proper error checking for SDL_image-using Texture constructors * Multiple fixes in build system ## 0.5.2 - 2014-12-30 ### Fixed * Added missing include file to installation ## 0.5.1 - 2014-12-27 ### Fixed * Potential problems with SDL2 error handling ## 0.5.0 - 2014-12-26 ### Added * ```AudioDevice::LockHandle``` is now copyable * ```Rect``` now has ```+``` ```-``` ```+=``` ```-=``` operators to offset it by a ```Point``` * ```Optional``` class to pass optional values * Possibility to use c++1y standard and detection of available useful c++1y features with c++11 * Default argument for ```Texture::Lock()``` * Bunch of ```Window``` functions: ```Window::Maximize()```, ```Window::Minimize()```, ```Window::Hide()```, ```Window::Restore()```, ```Window::Raise()```, ```Window::Show()```, ```Window::SetFullscreen()```, ```Window::SetSize()``` * More granular build options for tests and examples ### Changed * ```Point``` and ```Rect``` no longer have invalid (null) states and are now directly derived from [SDL_Point](https://wiki.libsdl.org/SDL_Point) and [SDL_Rect](https://wiki.libsdl.org/SDL_Rect) structures. In places where null states were usable (e.g. usually null ```Rect``` would mean "whole area", like in ```Texture::Lock()```), ```Optional``` class is now used. Use ```NullOpt``` instead of ```Point::Null()``` and ```Rect::Null()``` ## 0.4.0 - 2014-12-19 ### Added * ```StreamRWops``` which works with STL streams * ```AudioDevice``` and ```Texture``` ```LockHandle```s now have empty constructors and may be initialized after construction * ```RWops``` ```(Read|Write)(LE|BE)(16|32|64)``` methods * pkg-config file ### Changed * Plain ```ContainerRWops``` is now able to work with both const and mutable containers * Audio callback is now tied to ```AudioDevice```, not ```AudioSpec```, which is cleaner and easier to use ### Removed * ```ConstContainerRWops``` which is no longer needed ### Fixed * Exception safety when changing audio callback * Made ```-Werror``` flag conditional for user convenience ## 0.3.0 - 2014-11-30 ### Added * [SDL audio](https://wiki.libsdl.org/CategoryAudio) functionality ### Fixed * Proper self-assignment handling in move assignment operators ## 0.2.0 - 2014-11-25 ### Added * Getters for ```Texture``` properties: ```Texture::GetWidth()```, ```Texture::GetHeight()```, ```Texture::GetFormat()```, ```Texture::GetAccess()``` * ```Texture``` locking * New ```Rect``` method ```Rect::Contains()``` to check if it contains a ```Point``` ## 0.1.1 - 2014-09-09 ### Added * Installation * Library version ## 0.1.0 - 2014-09-05 ### Added * [SDL2_image](https://www.libsdl.org/projects/SDL_image/) support * ```RWops``` support * New ```Renderer``` methods: ```Renderer::SetClipRect()```, ```Renderer::SetScale()```, ```Renderer::SetViewport()```, ```Renderer::TargetSupported()``` * New ```SDL``` methods: ```SDL::WasInit()```, ```SDL::InitSubsystem()```, ```SDL::QuitSubSystem()``` * Basic MSVC support * Arithmetic operators for ```Point``` ### Fixed * GUI tests which are sensible to OpenGL implementation-specific behavior are no longer fatal ## 0.0.2 - 2014-02-11 ### Added * Unit tests * New ```Window``` methods: ```Window::GetSize()```, ```Window::GetWidth()```, ```Window::GetHeight()```, ```Window::SetTitle()``` * New ```Renderer``` method: ```Renderer::ReadPixels()``` * ```Point``` and ```Rect``` setters and comparison operators ## 0.0.1 - 2014-02-01 ### Added * Initial release supporting basic ```Window```, ```Renderer```, ```Texture```, ```Rect``` and ```Point``` handling