diff options
Diffstat (limited to 'js/ui/transform.js')
| -rw-r--r-- | js/ui/transform.js | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/js/ui/transform.js b/js/ui/transform.js index b155af5..d6253bc 100644 --- a/js/ui/transform.js +++ b/js/ui/transform.js @@ -21,7 +21,7 @@ var transform = (function(){ var dy = e.pageY - q[1] var w = canvas.w var h = canvas.h - mode.before(dx, dy, pdx, pdy) + mode.before(dx, dy, pdx, pdy, point) for (var x = 0; x < w; x++) { for (var y = 0; y < h; y++) { lex = canvas.get(x, y) @@ -104,27 +104,35 @@ var transform = (function(){ slice: { init: function(e){ + mode.is_y = ! (e.altKey || e.metaKey) + mode.reverse = !! (e.shiftKey) mode.position = 0 - mode.is_y = e.shiftKey || e.altKey || e.metaKey + mode.direction = 0 + mode.last_dd = -1 }, - before: function(dx, dy, pdx, pdy){ - var pd = mode.is_y ? pdy : pdx + before: function(dx, dy, pdx, pdy, point){ + var new_position = mode.is_y ? point[1] : point[0] var dd = mode.is_y ? pdx : pdy - var new_position = mod(mode.position + pd, mode.limit) + if (mode.position !== new_position) { mode.position = new_position + mode.direction = 0 + } + if (mode.last_dd !== -1) { + mode.direction = mode.last_dd - dd } - mode.direction = dd + console.log(mode.position) + mode.last_dd = dd copy.assign(canvas) }, shade: function(src, dest, lex, x, y, w, h){ if (mode.is_y) { - if (y >= mode.position) { + if (y >= mode.position || (mode.reverse && mode.position >= y)) { var copy = src.get(x + mode.direction, y) lex.assign(copy) } } - else if (x >= mode.position) { + else if (x >= mode.position || (mode.reverse && mode.position >= x)) { var copy = src.get(x, y + mode.direction) lex.assign(copy) } |
