diff options
author | Jez Ng <me@jezng.com> | 2013-07-09 20:42:30 -0700 |
---|---|---|
committer | Jez Ng <me@jezng.com> | 2013-07-10 15:26:29 -0700 |
commit | 4a938451cc97ce61a85b54a27e42b25109089f0a (patch) | |
tree | fd319d661ca58174fc87e82026742b95e778fd89 /src/library_sdl.js | |
parent | 4dff05193729be353a6d80e83c4f5e1a108d9512 (diff) |
Fix negative surface zooming.
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r-- | src/library_sdl.js | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 75ec6e20..3888aafe 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1032,11 +1032,17 @@ var LibrarySDL = { zoomSurface: function(src, x, y, smooth) { var srcData = SDL.surfaces[src]; - var w = srcData.width*x; - var h = srcData.height*y; - var ret = SDL.makeSurface(w, h, srcData.flags, false, 'zoomSurface'); + var w = srcData.width * x; + var h = srcData.height * y; + var ret = SDL.makeSurface(Math.abs(w), Math.abs(h), srcData.flags, false, 'zoomSurface'); var dstData = SDL.surfaces[ret]; - dstData.ctx.drawImage(srcData.canvas, 0, 0, w, h); + if (x >= 0 && y >= 0) dstData.ctx.drawImage(srcData.canvas, 0, 0, w, h); + else { + dstData.ctx.save(); + dstData.ctx.scale(x < 0 ? -1 : 1, y < 0 ? -1 : 1); + dstData.ctx.drawImage(srcData.canvas, 0, 0, w, h); + dstData.ctx.restore(); + } return ret; }, |