mirror of https://github.com/luileito/jsketch.git
4 lines
1.9 KiB
JavaScript
4 lines
1.9 KiB
JavaScript
/*!
|
|
* Memento plugin for jQuery sketchable | v1.1 | Luis A. Leiva | MIT license
|
|
*/
|
|
(function(d){var a=function(l){var g=[];var f=-1;var h=this;function k(){if(f>0){f--;var n=new Image();n.src=g[f].image;n.onload=function(){i(this)}}}function j(){if(f<g.length-1){f++;var n=new Image();n.src=g[f].image;n.onload=function(){i(this)}}}function i(n){l.sketchable("handler",function(o,p){p.sketch.clear();p.sketch.graphics.drawImage(n,0,0)})}function m(n){if(n.ctrlKey){switch(n.which){case 26:if(n.shiftKey){h.redo()}else{h.undo()}break;case 25:h.redo();break;default:break}}}this.undo=function(){k();l.sketchable("handler",function(n,o){o.strokes=g[f].strokes.slice()})};this.redo=function(){j();l.sketchable("handler",function(n,o){o.strokes=g[f].strokes.slice()})};this.reset=function(){g=[];f=-1};this.save=function(){f++;if(f<g.length){g.length=f}l.sketchable("handler",function(n,o){g.push({image:n[0].toDataURL(),strokes:o.strokes.slice()})})};this.init=function(){d(document).on("keypress",m)};this.destroy=function(){d(document).off("keypress",m);this.reset()}};var c=d.fn.sketchable;var e=c("methods");function b(l,f){d.extend(c.defaults,f);var m=new a(l);var k={init:function(i,n){n.memento=m;n.memento.save();n.memento.init()},mouseup:function(i,n,o){n.memento.save()},destroy:function(i,n){n.memento.destroy()}};function j(n){if(f&&f.events&&typeof f.events[n]==="function"){var i=f.events[n];f.events[n]=function(){var o=Array.prototype.slice.call(arguments,0);i.call(this,o);k[n].apply(this,o)}}else{c.defaults.events[n]=k[n]}}var h="init mouseup destroy".split(" ");for(var g=0;g<h.length;g++){j(h[g])}d.extend(e,{undo:function(){m.undo()},redo:function(){m.redo()}});return c.defaults}d.fn.sketchable=function(g){if(typeof g==="object"||!g){var f=b(this,arguments[0]);return e.init.apply(this,[f])}else{if(e[g]){return e[g].apply(this,Array.prototype.slice.call(arguments,1))}}}})(jQuery); |