From 1993fd3ec69aacf5747ea3d28ae192febcc451c8 Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Fri, 5 Sep 2014 05:06:21 +0400 Subject: [PATCH] Add demo for SDL_image support --- demos/CMakeLists.txt | 3 ++ demos/image.cc | 77 +++++++++++++++++++++++++++++++++++++++++++ testdata/test.png | Bin 0 -> 1328 bytes 3 files changed, 80 insertions(+) create mode 100644 demos/image.cc create mode 100644 testdata/test.png diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt index 5fbf3a6..6672c2a 100644 --- a/demos/CMakeLists.txt +++ b/demos/CMakeLists.txt @@ -2,8 +2,11 @@ SET(DEMOS sprites lines rendertarget + image ) +ADD_DEFINITIONS(-DTESTDATA_DIR="${PROJECT_SOURCE_DIR}/testdata") + FOREACH(DEMO ${DEMOS}) ADD_EXECUTABLE(${DEMO} ${DEMO}.cc) TARGET_LINK_LIBRARIES(${DEMO} SDL2pp) diff --git a/demos/image.cc b/demos/image.cc new file mode 100644 index 0000000..23cf602 --- /dev/null +++ b/demos/image.cc @@ -0,0 +1,77 @@ +/* + libSDL2pp - C++ wrapper for libSDL2 + Copyright (C) 2013-2014 Dmitry Marakasov + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include + +#include + +#include + +using namespace SDL2pp; + +int Run() { + SDL sdl(SDL_INIT_VIDEO); + Window window("libSDL2pp demo: loading", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_RESIZABLE); + Renderer render(window, -1, SDL_RENDERER_ACCELERATED); + + // Load sprite texture + Texture sprite(render, TESTDATA_DIR "/test.png"); + sprite.SetBlendMode(SDL_BLENDMODE_BLEND); + + render.SetDrawBlendMode(SDL_BLENDMODE_BLEND); + + while (1) { + // Process input + SDL_Event event; + while (SDL_PollEvent(&event)) + if (event.type == SDL_QUIT || (event.type == SDL_KEYDOWN && (event.key.keysym.sym == SDLK_ESCAPE || event.key.keysym.sym == SDLK_q))) + return 0; + + // Clear screen + render.SetDrawColor(255, 255, 255); + render.Clear(); + + // Simple copy + float angle = SDL_GetTicks() / 5000.0 * 2.0 * M_PI; + render.Copy(sprite, Rect::Null(), Rect(320 - 64, 240 - 64, 128, 128), angle / M_PI * 180.0); + render.Copy(sprite, Rect::Null(), Rect(320 - 32 + sin(angle) * 40, 240 - 32 + cos(angle) * 40, 64, 64)); + render.Copy(sprite, Rect::Null(), Rect(320 - 32 - sin(angle) * 40, 240 - 32 - cos(angle) * 40, 64, 64)); + + render.Present(); + + // Frame limiter + SDL_Delay(1); + } + + return 0; +} + +int main() { + try { + return Run(); + } catch (Exception& e) { + std::cerr << "Error: " << e.what() << " (" << e.GetSDLError() << ")" << std::endl; + } catch (std::exception& e) { + std::cerr << "Error: " << e.what() << std::endl; + } + + return -1; +} diff --git a/testdata/test.png b/testdata/test.png new file mode 100644 index 0000000000000000000000000000000000000000..48966decbd085c517475d35621d8a85930d7413c GIT binary patch literal 1328 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjQh zm0t&8MkkHg6+l7B64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq!<_&9Rqwq zT>t<74^%&>0MKu&tgJvM@$&Kt2?>dbiHVDgL%71i!jh7bGBPqsN=oYL>KYmvnwpwM zMn(<}4o*%^E-o&fo}S*`-eF;3F)=ZPg@wh%#U&*rWo2a*6%{o#HTCuN&CSidy}gqs zPo6n*=AuQ5mM&eoY}vBq%a^ZRyLQv2O!Gi}+o;-Q^^5t8%Zr#3p`~Ca( zA3l8e`0?Y{uU~)u{Q2wGuRnkO{Qdj)-@kvr(6evmpAB@JMM;ofFat9y8@r&eh=ihs zwvMi$v6X|Xmv2Z+Tuy#zd1L>iX>(St*}8ZC;iJb+oIG{u`rQXlK7IcF`}g0!&ax%_#t-Isy+43);RB7N6pep?<|vrHyv7K=lW`zztA!EA><1&V&% z5$Q6S(IchrdZ4Y;&ZCQ#H~jke?87GwhKtV%Wm(TpP=B6V{-dY=hB0G?@xM;%+X*Jy z*IUhnJT@?3vSeX6DOUd4{#$(hA3el>cRNGqD!GnB5l==+5)SNHKrr#}oQKDBK6 zy1Slr*4tvqc!rymyCr|TDw>rYa_5M6!yVC>?0tNnd!m`^84l~t({*u4x^J!I^^f5c z$GzGlrKsI5Zzt?c_Y-Gn+GV-z+lIE&rb@TGl+%;mMcnc(Vwip>I%$=!<&y0kCuSVo zJMZV;y~p(!O60%KNWXAjIa_7XT%o)zYj}61Z2u|1XK%9GQ`UR^UdPP#jyLOfM5qQ? zHyu9o@SxuG+wuo`SMY_ntQN1>Dm?KyZy@W$udIuOrU{=s%)`3fe@Vxqv(7I6*v_fA z{Fae#5Z9jggon3Y-l6osb1uG8`3Jwb{>;6x`_OjbpY0o;AK92VXPU=egFfFSnJe#j zFZsCAX6KB$ph_o0U$z&blOGg`-3e&fZgS8!v>;mi-v*AlTP^nMn&y{3WN|h)D(JU~ z<+9B~mtvl)rF#n4je}y%ZiYpF58XT|SM9F+srx5O=9?DqT)BUx(fP*-<(e12nm4}Z lXFG2%QTspP$1}zM41r;hJyqw^vw)e6!PC{xWt~$(69BWTEI0rF literal 0 HcmV?d00001