From 1c8b5c122dd52215b005559923e3d26e4626515b Mon Sep 17 00:00:00 2001 From: kangax Date: Sun, 15 Jan 2012 12:46:52 -0500 Subject: [PATCH] Avoid sub-pixel antialiasing when drawing straight vertical or horizontal lines. --- HEADER.js | 2 +- dist/all.js | 9 ++++----- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 37043 -> 37045 bytes package.json | 2 +- src/line.class.js | 5 ++--- 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/HEADER.js b/HEADER.js index 1d2bcfb4..9b78b927 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2011, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.7.10" }; +var fabric = fabric || { version: "0.7.11" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 855142a7..675aff00 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2011, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.7.10" }; +var fabric = fabric || { version: "0.7.11" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -8287,8 +8287,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { ctx.beginPath(); // move from center (of virtual box) to its left/top corner - ctx.moveTo(-this.width / 2, -this.height / 2); - ctx.lineTo(this.width / 2, this.height / 2); + ctx.moveTo(this.width === 1 ? 0 : (-this.width / 2), this.height === 1 ? 0 : (-this.height / 2)); + ctx.lineTo(this.width === 1 ? 0 : (this.width / 2), this.height === 1 ? 0 : (this.height / 2)); ctx.lineWidth = this.strokeWidth; @@ -8330,7 +8330,6 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @return {string} svg representation of an instance */ toSVG: function() { - console.log() return [ '', textAndBg.textBgRects.join(''), diff --git a/dist/all.min.js b/dist/all.min.js index 35568853..eb0c4f97 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ /* Fabric.js Copyright 2008-2011, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric=fabric||{version:"0.7.10"};if(typeof exports!="undefined"){exports.fabric=fabric}if(typeof document!="undefined"&&typeof window!="undefined"){fabric.document=document;fabric.window=window}else{fabric.document=require("jsdom").jsdom("");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:JV){V=Q}if(P>T){T=P}if(Qz){z=h}L.push(h);h=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}h+=D=Number(B.w||ab.w)+U}L.push(h);h=Math.max(z,h);var m=[];for(var aa=L.length;aa--;){m[aa]=h-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(h+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(h*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-(Cufon.textOptions.height/K)/2);ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(i,g){ad.strokeStyle=g;ad.beginPath();ad.moveTo(0,i);ad.lineTo(h,i);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var ai=0,am=0,x=[{left:0}];if(A.textAlign==="right"){ad.translate(m[am],0);x[0].left=m[am]*K}else{if(A.textAlign==="center"){ad.translate(m[am]/2,0);x[0].left=m[am]/2*K}}for(var ak=0,aj=ag.length;ak.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?1:(l-k)/m;p(j+(r-j)*q(s));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(i){var g=i.fabric||(i.fabric={}),o=g.util.object.extend,e=g.util.string.capitalize,p=g.util.object.clone;var k={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};function d(v,u){if(!v){return}var x,t,s={};if(v.parentNode&&/^g$/i.test(v.parentNode.nodeName)){s=g.parseAttributes(v.parentNode,u)}var w=u.reduce(function(z,y){x=v.getAttribute(y);t=parseFloat(x);if(x){if((y==="fill"||y==="stroke")&&x==="none"){x=""}if(y==="fill-rule"){x=(x==="evenodd")?"destination-over":x}if(y==="transform"){x=g.parseTransformAttribute(x)}if(y in k){y=k[y]}z[y]=isNaN(t)?x:t}return z},{});w=o(w,o(n(v),g.parseStyleAttribute(v)));return o(s,w)}g.parseTransformAttribute=(function(){function s(L,M){var N=M[0];L[0]=Math.cos(N);L[1]=Math.sin(N);L[2]=-Math.sin(N);L[3]=Math.cos(N)}function x(N,O){var M=O[0],L=(O.length===2)?O[1]:O[0];N[0]=M;N[3]=L}function I(L,M){L[2]=M[0]}function u(L,M){L[1]=M[0]}function F(L,M){L[4]=M[0];if(M.length===2){L[5]=M[1]}}var z=[1,0,0,1,0,0],t="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",J="(?:\\s+,?\\s*|,\\s*)",A="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",y="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+")"+J+"("+t+"))?\\s*\\))",K="(?:(scale)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",D="(?:(translate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",G="(?:(matrix)\\s*\\(\\s*("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")\\s*\\))",E="(?:"+G+"|"+D+"|"+K+"|"+H+"|"+A+"|"+y+")",B="(?:"+E+"(?:"+J+E+")*)",v="^\\s*(?:"+B+"?)\\s*$",C=new RegExp(v),w=new RegExp(E);return function(M){var L=z.concat();if(!M||(M&&!C.test(M))){return L}M.replace(w,function(Q){var N=new RegExp(E).exec(Q).filter(function(R){return(R!==""&&R!=null)}),O=N[1],P=N.slice(2).map(parseFloat);switch(O){case"translate":F(L,P);break;case"rotate":s(L,P);break;case"scale":x(L,P);break;case"skewX":I(L,P);break;case"skewY":u(L,P);break;case"matrix":L=P;break}});return L}})();function r(v){if(!v){return null}v=v.trim();var x=v.indexOf(",")>-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var k=d.getElementsByTagName("stop"),d,f,e={},g;for(var h=k.length;h--;){d=k[h];f=parseInt(d.getAttribute("offset"),10)/100;e[f]=c(d)||d.getAttribute("stop-color")}var j={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};a(l,j);return fabric.Gradient.create(m,{x1:j.x1,y1:j.y1,x2:j.x2,y2:j.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects()),];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getContext:function(){return this.contextTop},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;return b.loadFromJSON(JSON.stringify(this.toJSON()),function(){if(c){c(b)}})}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,FX_DURATION:500,MIN_SCALE_LIMIT:0.1,stateProperties:("top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";",].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",this.left," ",this.top,")",i!==0?(" rotate("+i+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,"2")+" "+c(this.scaleY,"2")+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},straighten:function(){var i=this._getAngleValueForStraighten();this.setAngle(i);return this},fxStraighten:function(q){q=q||{};var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(u){t.setAngle(u);i()},onComplete:function(){t.setCoords();s()},onStart:function(){t.setActive(false)}});return this},fxRemove:function(q){q||(q={});var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("opacity"),endValue:0,duration:this.FX_DURATION,onChange:function(u){t.set("opacity",u);i()},onComplete:s,onStart:function(){t.setActive(false)}});return this},_getAngleValueForStraighten:function(){var i=this.get("angle");if(i>-225&&i<=-135){return -180}else{if(i>-135&&i<=-45){return -90}else{if(i>-45&&i<=45){return 0}else{if(i>45&&i<=135){return 90}else{if(i>135&&i<=225){return 180}else{if(i>225&&i<=315){return 270}else{if(i>315){return 360}}}}}}}return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(-this.width/2,-this.height/2);f.lineTo(this.width/2,this.height/2);f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){console.log();return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{maxwidth:null,maxheight:null,active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getNormalizedSize:function(d,c,e){if(e&&c&&(d.width>d.height&&(d.width/d.height)<(c/e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(e&&((d.height==d.width)||(d.height>d.width)||(d.height>e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(c&&(c'},getSrc:function(){return this.getElement().src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(e){var g=Cufon.textOptions||(Cufon.textOptions={});g.left=this.left;g.top=this.top;g.context=e;g.color=this.fill;var f=this._initDummyElement();this.transform(e);Cufon.replaceElement(f,{separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=g.width;this.height=g.height;this._totalLineHeight=g.totalLineHeight;this._fontAscent=g.fontAscent;this._boundaries=g.boundaries;this._shadowOffsets=g.shadowOffsets;this._shadows=g.shadows||[];this.setCoords()},_initDummyElement:function(){var f=b.document.createElement("div"),e=b.document.createElement("div");e.appendChild(f);f.innerHTML=this.text;f.style.fontSize=this.fontSize+"px";f.style.letterSpacing="normal";return f},render:function(e,f){e.save();this._render(e);if(!f&&this.active){this.drawBorders(e);this.hideCorners||this.drawCorners(e)}e.restore()},toObject:function(){return d(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var h=this.text.split("\n"),i=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),f=-(this.width/2),e=(this.height/2)-(h.length*this.fontSize)-this._totalLineHeight,g=this._getSVGTextAndBg(i,f,h),j=this._getSVGShadows(i,h);return['',g.textBgRects.join(""),"',j.join(""),g.textSpans.join(""),"",""].join("")},_getSVGShadows:function(l,k){var n=[];for(var f=0,e=this._shadows.length;f',k[h],"")}}return n},_getSVGTextAndBg:function(k,f,h){var m=[],j=[];for(var g=0,e=h.length;g',h[g],"");if(!this.backgroundColor){continue}j.push('')}return{textSpans:m,textBgRects:j}},setColor:function(e){this.set("fill",e);return this},setFontsize:function(e){this.set("fontSize",e);this.setCoords();return this},getText:function(){return this.text},setText:function(e){this.set("text",e);this.setCoords();return this},set:function(e,f){if(typeof e=="object"){for(var g in e){this.set(g,e[g])}}else{this[e]=f;if(e==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+f+"$3")}}return this}});b.Text.fromObject=function(e){return new b.Text(e.text,c(e))};b.Text.fromElement=function(e){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file +var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:JV){V=Q}if(P>T){T=P}if(Qz){z=h}L.push(h);h=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}h+=D=Number(B.w||ab.w)+U}L.push(h);h=Math.max(z,h);var m=[];for(var aa=L.length;aa--;){m[aa]=h-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(h+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(h*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-(Cufon.textOptions.height/K)/2);ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(i,g){ad.strokeStyle=g;ad.beginPath();ad.moveTo(0,i);ad.lineTo(h,i);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var ai=0,am=0,x=[{left:0}];if(A.textAlign==="right"){ad.translate(m[am],0);x[0].left=m[am]*K}else{if(A.textAlign==="center"){ad.translate(m[am]/2,0);x[0].left=m[am]/2*K}}for(var ak=0,aj=ag.length;ak.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?1:(l-k)/m;p(j+(r-j)*q(s));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(i){var g=i.fabric||(i.fabric={}),o=g.util.object.extend,e=g.util.string.capitalize,p=g.util.object.clone;var k={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};function d(v,u){if(!v){return}var x,t,s={};if(v.parentNode&&/^g$/i.test(v.parentNode.nodeName)){s=g.parseAttributes(v.parentNode,u)}var w=u.reduce(function(z,y){x=v.getAttribute(y);t=parseFloat(x);if(x){if((y==="fill"||y==="stroke")&&x==="none"){x=""}if(y==="fill-rule"){x=(x==="evenodd")?"destination-over":x}if(y==="transform"){x=g.parseTransformAttribute(x)}if(y in k){y=k[y]}z[y]=isNaN(t)?x:t}return z},{});w=o(w,o(n(v),g.parseStyleAttribute(v)));return o(s,w)}g.parseTransformAttribute=(function(){function s(L,M){var N=M[0];L[0]=Math.cos(N);L[1]=Math.sin(N);L[2]=-Math.sin(N);L[3]=Math.cos(N)}function x(N,O){var M=O[0],L=(O.length===2)?O[1]:O[0];N[0]=M;N[3]=L}function I(L,M){L[2]=M[0]}function u(L,M){L[1]=M[0]}function F(L,M){L[4]=M[0];if(M.length===2){L[5]=M[1]}}var z=[1,0,0,1,0,0],t="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",J="(?:\\s+,?\\s*|,\\s*)",A="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",y="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+")"+J+"("+t+"))?\\s*\\))",K="(?:(scale)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",D="(?:(translate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",G="(?:(matrix)\\s*\\(\\s*("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")\\s*\\))",E="(?:"+G+"|"+D+"|"+K+"|"+H+"|"+A+"|"+y+")",B="(?:"+E+"(?:"+J+E+")*)",v="^\\s*(?:"+B+"?)\\s*$",C=new RegExp(v),w=new RegExp(E);return function(M){var L=z.concat();if(!M||(M&&!C.test(M))){return L}M.replace(w,function(Q){var N=new RegExp(E).exec(Q).filter(function(R){return(R!==""&&R!=null)}),O=N[1],P=N.slice(2).map(parseFloat);switch(O){case"translate":F(L,P);break;case"rotate":s(L,P);break;case"scale":x(L,P);break;case"skewX":I(L,P);break;case"skewY":u(L,P);break;case"matrix":L=P;break}});return L}})();function r(v){if(!v){return null}v=v.trim();var x=v.indexOf(",")>-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var k=d.getElementsByTagName("stop"),d,f,e={},g;for(var h=k.length;h--;){d=k[h];f=parseInt(d.getAttribute("offset"),10)/100;e[f]=c(d)||d.getAttribute("stop-color")}var j={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};a(l,j);return fabric.Gradient.create(m,{x1:j.x1,y1:j.y1,x2:j.x2,y2:j.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects()),];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getContext:function(){return this.contextTop},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;return b.loadFromJSON(JSON.stringify(this.toJSON()),function(){if(c){c(b)}})}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,FX_DURATION:500,MIN_SCALE_LIMIT:0.1,stateProperties:("top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";",].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",this.left," ",this.top,")",i!==0?(" rotate("+i+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,"2")+" "+c(this.scaleY,"2")+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},straighten:function(){var i=this._getAngleValueForStraighten();this.setAngle(i);return this},fxStraighten:function(q){q=q||{};var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(u){t.setAngle(u);i()},onComplete:function(){t.setCoords();s()},onStart:function(){t.setActive(false)}});return this},fxRemove:function(q){q||(q={});var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("opacity"),endValue:0,duration:this.FX_DURATION,onChange:function(u){t.set("opacity",u);i()},onComplete:s,onStart:function(){t.setActive(false)}});return this},_getAngleValueForStraighten:function(){var i=this.get("angle");if(i>-225&&i<=-135){return -180}else{if(i>-135&&i<=-45){return -90}else{if(i>-45&&i<=45){return 0}else{if(i>45&&i<=135){return 90}else{if(i>135&&i<=225){return 180}else{if(i>225&&i<=315){return 270}else{if(i>315){return 360}}}}}}}return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{maxwidth:null,maxheight:null,active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getNormalizedSize:function(d,c,e){if(e&&c&&(d.width>d.height&&(d.width/d.height)<(c/e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(e&&((d.height==d.width)||(d.height>d.width)||(d.height>e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(c&&(c'},getSrc:function(){return this.getElement().src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(e){var g=Cufon.textOptions||(Cufon.textOptions={});g.left=this.left;g.top=this.top;g.context=e;g.color=this.fill;var f=this._initDummyElement();this.transform(e);Cufon.replaceElement(f,{separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=g.width;this.height=g.height;this._totalLineHeight=g.totalLineHeight;this._fontAscent=g.fontAscent;this._boundaries=g.boundaries;this._shadowOffsets=g.shadowOffsets;this._shadows=g.shadows||[];this.setCoords()},_initDummyElement:function(){var f=b.document.createElement("div"),e=b.document.createElement("div");e.appendChild(f);f.innerHTML=this.text;f.style.fontSize=this.fontSize+"px";f.style.letterSpacing="normal";return f},render:function(e,f){e.save();this._render(e);if(!f&&this.active){this.drawBorders(e);this.hideCorners||this.drawCorners(e)}e.restore()},toObject:function(){return d(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var h=this.text.split("\n"),i=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),f=-(this.width/2),e=(this.height/2)-(h.length*this.fontSize)-this._totalLineHeight,g=this._getSVGTextAndBg(i,f,h),j=this._getSVGShadows(i,h);return['',g.textBgRects.join(""),"',j.join(""),g.textSpans.join(""),"",""].join("")},_getSVGShadows:function(l,k){var n=[];for(var f=0,e=this._shadows.length;f',k[h],"")}}return n},_getSVGTextAndBg:function(k,f,h){var m=[],j=[];for(var g=0,e=h.length;g',h[g],"");if(!this.backgroundColor){continue}j.push('')}return{textSpans:m,textBgRects:j}},setColor:function(e){this.set("fill",e);return this},setFontsize:function(e){this.set("fontSize",e);this.setCoords();return this},getText:function(){return this.text},setText:function(e){this.set("text",e);this.setCoords();return this},set:function(e,f){if(typeof e=="object"){for(var g in e){this.set(g,e[g])}}else{this[e]=f;if(e==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+f+"$3")}}return this}});b.Text.fromObject=function(e){return new b.Text(e.text,c(e))};b.Text.fromElement=function(e){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index f2d79f105d601254abcaab92dd04c94509dcd329..81ce8818ac0d0dae0f4e8fe257cf9f61e8b914ba 100644 GIT binary patch delta 37037 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 z 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 delta 37013 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%0D`#U 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 ~q?RF*Oek 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 JDs8ym0RUtkLf-%Y diff --git a/package.json b/package.json index 0c12f33f..8563f4bf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "0.7.10", + "version": "0.7.11", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/line.class.js b/src/line.class.js index ae528d99..50b96c83 100644 --- a/src/line.class.js +++ b/src/line.class.js @@ -72,8 +72,8 @@ ctx.beginPath(); // move from center (of virtual box) to its left/top corner - ctx.moveTo(-this.width / 2, -this.height / 2); - ctx.lineTo(this.width / 2, this.height / 2); + ctx.moveTo(this.width === 1 ? 0 : (-this.width / 2), this.height === 1 ? 0 : (-this.height / 2)); + ctx.lineTo(this.width === 1 ? 0 : (this.width / 2), this.height === 1 ? 0 : (this.height / 2)); ctx.lineWidth = this.strokeWidth; @@ -115,7 +115,6 @@ * @return {string} svg representation of an instance */ toSVG: function() { - console.log() return [ '