aboutsummaryrefslogtreecommitdiff
path: root/src/library_sdl.js
diff options
context:
space:
mode:
authorJez Ng <me@jezng.com>2013-07-09 20:42:30 -0700
committerJez Ng <me@jezng.com>2013-07-10 15:26:29 -0700
commit4a938451cc97ce61a85b54a27e42b25109089f0a (patch)
treefd319d661ca58174fc87e82026742b95e778fd89 /src/library_sdl.js
parent4dff05193729be353a6d80e83c4f5e1a108d9512 (diff)
Fix negative surface zooming.
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r--src/library_sdl.js14
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;
},