-
Notifications
You must be signed in to change notification settings - Fork 1
/
jcanvas.min.js
7 lines (7 loc) · 7.88 KB
/
jcanvas.min.js
1
2
3
4
5
6
7
/*!
jCanvas v4.0
Copyright 2011, Caleb Evans
Licensed under the MIT license
http://bit.ly/onG8YJ
*/
(function(f,n,k,s,h){var l,e,i,j=f.fn,r=f.extend,m=f.event.fix,t=k.PI,u=k.round,a=k.sin,b=k.cos;function o(w,x){if(!w){e=r({},l)}else{if(x){l=r({},l,w);e=r({},l)}else{e=r({},e,w)}}return this}l={width:0,height:0,cornerRadius:0,fillStyle:"transparent",strokeStyle:"transparent",strokeWidth:1,strokeCap:"butt",strokeJoin:"miter",rounded:false,shadowX:0,shadowY:0,shadowBlur:3,shadowColor:"transparent",opacity:1,compositing:"source-over",mask:false,x:0,y:0,x1:0,y1:0,x2:0,y2:0,radius:0,start:0,end:360,ccw:false,inDegrees:true,fromCenter:true,closed:false,sides:3,angle:0,text:"",font:"normal 12pt sans-serif",align:"center",baseline:"middle",source:"",repeat:"repeat"};e=r({},l);function q(w,x){w.fillStyle=x.fillStyle;w.strokeStyle=x.strokeStyle;w.lineWidth=x.strokeWidth;w.lineCap=x.strokeCap;w.lineJoin=x.strokeJoin;if(x.rounded){w.lineCap="round";w.lineJoin="round"}w.shadowOffsetX=x.shadowX;w.shadowOffsetY=x.shadowY;w.shadowBlur=x.shadowBlur;w.shadowColor=x.shadowColor;w.globalAlpha=x.opacity;w.globalCompositeOperation=x.compositing}function d(w,x){if(x.mask){w.save();w.clip()}if(x.closed){w.closePath();w.fill();w.stroke()}else{w.fill();w.stroke();w.closePath()}}function c(w){return w.inDegrees?t/180:1}function p(x,A,y,w){var z=c(A);if(!A.fromCenter){A.x+=y/2;A.y+=w/2}x.save();if(A.angle){x.translate(A.x,A.y);x.rotate(A.angle*z);x.translate(-A.x,-A.y)}return z}j.jCanvas=o;j.loadCanvas=function(w){return this[0].getContext(w||"2d")};j.draw=function(y){var x=this,w;for(w=0;w<x.length;w+=1){y.call(x[w],x[w].getContext("2d"))}return this};j.gradient=function(x){var w=this[0].getContext("2d"),C=r({},e,x),B,A,z=0,y=1;if(C.r1!==h||C.r2!==h){B=w.createRadialGradient(C.x1,C.y1,C.r1,C.x2,C.y2,C.r2)}else{B=w.createLinearGradient(C.x1,C.y1,C.x2,C.y2)}while(C["c"+y]!==h){z+=1;y+=1}for(y=1;y<=z;y+=1){A=u(100/(z-1)*(y-1))/100;if(C["s"+y]===h){C["s"+y]=A}B.addColorStop(C["s"+y],C["c"+y])}return B};j.pattern=function(y){var w=this[0].getContext("2d"),C=r({},e,y),x=new s(),A;x.src=C.source;function z(){if(x.complete){A=w.createPattern(x,C.repeat);return true}else{return false}}function B(){z();if(C.load){C.load.call(this[0],A)}}if(C.load){x.onload=B}else{if(!z()){x.onload=B}}return A};j.clearCanvas=function(x){var w,y,z=r({},e,x);for(y=0;y<this.length;y+=1){w=this[y].getContext("2d");p(w,z,z.width,z.height);if(!x){w.clearRect(0,0,this[y].width,this[y].height)}else{w.clearRect(z.x-z.width/2,z.y-z.height/2,z.width,z.height)}}return this};j.saveCanvas=function(){for(var w=0;w<this.length;w+=1){this[w].getContext("2d").save()}return this};j.restoreCanvas=function(){for(var w=0;w<this.length;w+=1){this[w].getContext("2d").restore()}return this};j.scaleCanvas=function(x){var w,y,z=r({},e,x);for(y=0;y<this.length;y+=1){w=this[y].getContext("2d");w.save();w.translate(z.x,z.y);w.scale(z.width,z.height);w.translate(-z.x,-z.y)}return this};j.translateCanvas=function(x){var w,y,z=r({},e,x);for(y=0;y<this.length;y+=1){w=this[y].getContext("2d");w.save();w.translate(z.x,z.y)}return this};j.rotateCanvas=function(x){var w,y,z=r({},e,x);for(y=0;y<this.length;y+=1){w=this[y].getContext("2d");p(w,z,0,0)}return this};j.drawRect=function(B){var E,A,z=r({},e,B),y,D,x,C,w;for(A=0;A<this.length;A+=1){E=this[A].getContext("2d");q(E,z);p(E,z,z.width,z.height);if(z.cornerRadius>0){y=z.x-z.width/2;D=z.y-z.height/2;x=z.x+z.width/2;C=z.y+z.height/2;w=z.cornerRadius;if((x-y)-(2*w)<0){w=(x-y)/2}if((C-D)-(2*w)<0){w=(C-D)/2}E.beginPath();E.moveTo(y+w,D);E.lineTo(x-w,D);E.arc(x-w,D+w,w,3*t/2,t*2);E.lineTo(x,C-w);E.arc(x-w,C-w,w,0,t/2);E.lineTo(y+w,C);E.arc(y+w,C-w,w,t/2,t);E.lineTo(y,D+w);E.arc(y+w,D+w,w,t,3*t/2)}else{E.beginPath();E.rect(z.x-z.width/2,z.y-z.height/2,z.width,z.height);E.restore()}d(E,z)}return this};j.drawArc=function(x){var w,z,y,A=r({},e,x);if(!A.inDegrees&&A.end===360){A.end=t*2}for(z=0;z<this.length;z+=1){w=this[z].getContext("2d");q(w,A);y=p(w,A,A.radius,A.radius);w.beginPath();w.arc(A.x,A.y,A.radius,(A.start*y)-(t/2),(A.end*y)-(t/2),A.ccw);w.restore();d(w,A)}return this};j.drawEllipse=function(x){var w,z,A=r({},e,x),y=A.width*(4/3);for(z=0;z<this.length;z+=1){w=this[z].getContext("2d");q(w,A);p(w,A,A.width,A.height);w.beginPath();w.moveTo(A.x,A.y-A.height/2);w.bezierCurveTo(A.x-y/2,A.y-A.height/2,A.x-y/2,A.y+A.height/2,A.x,A.y+A.height/2);w.bezierCurveTo(A.x+y/2,A.y+A.height/2,A.x+y/2,A.y-A.height/2,A.x,A.y-A.height/2);w.restore();d(w,A)}return this};j.drawLine=function(y){var x,B,C=r({},e,y),w=2,A,z;for(B=0;B<this.length;B+=1){x=this[B].getContext("2d");q(x,C);x.beginPath();x.moveTo(C.x1,C.y1);while(1){A=C["x"+w];z=C["y"+w];if(A!==h&&z!==h){x.lineTo(A,z)}else{break}w+=1}d(x,C)}return this};j.drawQuad=function(B){var E,A,z=r({},e,B),y=2,x,w,D,C;for(A=0;A<this.length;A+=1){E=this[A].getContext("2d");q(E,z);E.beginPath();E.moveTo(z.x1,z.y1);while(1){x=z["x"+y];w=z["y"+y];D=z["cx"+(y-1)];C=z["cy"+(y-1)];if(x!==h&&w!==h&&D!==h&&C!==h){E.quadraticCurveTo(D,C,x,w)}else{break}y+=1}d(E,z)}return this};j.drawBezier=function(G){var H,F,C=r({},e,G),B=2,y=1,A,z,E,x,D,w;for(F=0;F<this.length;F+=1){H=this[F].getContext("2d");q(H,C);H.beginPath();H.moveTo(C.x1,C.y1);while(1){A=C["x"+B];z=C["y"+B];E=C["cx"+y];x=C["cy"+y];D=C["cx"+(y+1)];w=C["cy"+(y+1)];if(A!==h&&z!==h&&E!==h&&x!==h&&D!==h&&w!==h){H.bezierCurveTo(E,x,D,w,A,z)}else{break}B+=1;y+=2}d(H,C)}return this};j.drawText=function(x){var w,y,z=r({},e,x);for(y=0;y<this.length;y+=1){w=this[y].getContext("2d");q(w,z);w.textBaseline=z.baseline;w.textAlign=z.align;w.font=z.font;w.strokeText(z.text,z.x,z.y);w.fillText(z.text,z.x,z.y)}return this};j.drawImage=function(C){var E,x,B,z=r({},e,C),A=new s(),w;A.src=z.source;function D(F){if(A.complete){w=A.width/A.height;if(z.sx===h){z.sx=A.width/2}if(z.sy===h){z.sy=A.height/2}z.sWidth=z.sWidth||A.width;z.sHeight=z.sHeight||A.height;if(z.width&&!z.height){z.height=z.width/w}else{if(!z.width&&z.height){z.width=z.height*w}else{if(!z.width&&!z.height){z.width=A.width;z.height=A.height}}}p(F,z,z.width,z.height);F.drawImage(A,z.sx-z.sWidth/2,z.sy-z.sHeight/2,z.sWidth,z.sHeight,z.x-z.width/2,z.y-z.height/2,z.width,z.height);F.restore();return true}else{return false}}function y(){D(E);if(z.load){z.load.call(x)}}for(B=0;B<this.length;B+=1){x=this[B];E=x.getContext("2d");q(E,z);if(z.load){A.onload=y}else{if(!D(E)){A.onload=y}}}return this};j.drawPolygon=function(C){var H,B,z=r({},e,C),I=t/z.sides,y=(t/2)+I,G=(t*2)/z.sides,F=b(G/2)*z.radius,x,E,w,D,A;z.closed=true;if(z.sides>2){for(B=0;B<this.length;B+=1){H=this[B].getContext("2d");q(H,z);p(H,z,z.radius,z.radius);H.beginPath();for(A=0;A<z.sides;A+=1){x=z.x+(z.radius*b(y));E=z.y+(z.radius*a(y));w=z.x+((F+F*z.projection)*b(y+I));D=z.y+((F+F*z.projection)*a(y+I));if(A===0){H.moveTo(x,E)}else{H.lineTo(x,E)}if(z.projection){H.lineTo(w,D)}y+=G}H.restore();d(H,z)}}return this};j.setPixels=function(D){var F,x,C,A,y=r({},e,D),w,z,B,E;for(C=0;C<this.length;C+=1){x=this[C];F=x.getContext("2d");if(!y.x&&!y.y&&!y.width&&!y.height){y.width=x.width;y.height=x.height;y.x=y.width/2;y.y=y.height/2}p(F,y,y.width,y.height);w=F.getImageData(y.x-y.width/2,y.y-y.height/2,y.width,y.height);z=w.data;B=z.length;E=[];if(y.each!==h){for(A=0;A<B;A+=4){E=y.each.call(x,z[A],z[A+1],z[A+2],z[A+3]);z[A]=E[0];z[A+1]=E[1];z[A+2]=E[2];z[A+3]=E[3]}}F.putImageData(w,y.x-y.width/2,y.y-y.height/2);F.restore()}return this};i=[];function v(w){var x=r({},e,w);i.push(x);return x}j.drawLayers=function(w){var x,A,z,y;for(z=0;z<this.length;z+=1){x=this[z].getContext("2d");if(w){x.clearRect(0,0,this[z].width,this[z].height)}for(y=0;y<i.length;y+=1){A=i[y];if(A.fn){j[A.fn].call(this.eq(z),A)}}}return this};f.event.fix=function(w){w=m.call(f.event,w);if(w.layerX===h&&w.layerY===h){w.layerX=w.offsetX;w.layerY=w.offsetY}return w};function g(){o.retro=true;o.queue=i;o.create=v;j.drawQueue=j.drawLayers;o.checkUnits=o.convertAngles;return o}o.defaults=l;o.prefs=e;o.setGlobals=q;o.convertAngles=c;o.rotate=p;o.layers=i;o.addLayer=v;o.retrofit=g;o.retro=false;f.jCanvas=o}(jQuery,document,Math,Image));