diff options
author | Felix H. Dahlke <fhd@ubercode.de> | 2013-03-30 22:24:15 +0100 |
---|---|---|
committer | Felix H. Dahlke <fhd@ubercode.de> | 2013-03-30 22:24:15 +0100 |
commit | 703422829c0b8de54016ed32e4905a4d51b9f7dc (patch) | |
tree | 4f2c672c66dc3b966e612226115588dca0e215d1 | |
parent | 255d0f838de04a1716c1d53632ce911412262471 (diff) |
Support rotozoomSurface
-rw-r--r-- | src/library_sdl.js | 13 | ||||
-rw-r--r-- | tests/sdl_rotozoom.c | 2 | ||||
-rw-r--r-- | tests/sdl_rotozoom.png | bin | 338527 -> 351517 bytes |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 42207f23..71ab2277 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1032,6 +1032,19 @@ var LibrarySDL = { return ret; }, + rotozoomSurface: function(src, angle, zoom, smooth) { + var srcData = SDL.surfaces[src]; + var w = srcData.width * zoom; + var h = srcData.height * zoom; + var diagonal = Math.ceil(Math.sqrt(Math.pow(w, 2) + Math.pow(h, 2))); + var ret = SDL.makeSurface(diagonal, diagonal, srcData.flags, false, 'rotozoomSurface'); + var dstData = SDL.surfaces[ret]; + dstData.ctx.translate(diagonal / 2, diagonal / 2); + dstData.ctx.rotate(angle * Math.PI / 180); + dstData.ctx.drawImage(srcData.canvas, -w / 2, -h / 2, w, h); + return ret; + }, + SDL_SetAlpha: function(surf, flag, alpha) { SDL.surfaces[surf].alpha = alpha; }, diff --git a/tests/sdl_rotozoom.c b/tests/sdl_rotozoom.c index cb6295cc..4bca294a 100644 --- a/tests/sdl_rotozoom.c +++ b/tests/sdl_rotozoom.c @@ -29,7 +29,7 @@ int main(int argc, char **argv) { sprite[1] = SDL_CreateRGBSurface(SDL_SWSURFACE, 100, 100, 32, 0xFF000000, 0xFF0000, 0xFF00, 0xFF); SDL_FillRect(sprite[1], 0, 0xA0A0A0A0); sprite[2] = zoomSurface(sprite[0], 0.5, 0.5, SMOOTHING_ON); - sprite[3] = zoomSurface(sprite[1], 0.5, 0.5, SMOOTHING_ON); + sprite[3] = rotozoomSurface(sprite[1], 45, 0.5, SMOOTHING_ON); mainloop(); diff --git a/tests/sdl_rotozoom.png b/tests/sdl_rotozoom.png Binary files differindex 83ec0589..d78a5ea4 100644 --- a/tests/sdl_rotozoom.png +++ b/tests/sdl_rotozoom.png |