From b701627f4230db41aadaf297c7c12b9aa987bda8 Mon Sep 17 00:00:00 2001 From: kangax Date: Sun, 10 Jun 2012 12:13:12 +0200 Subject: [PATCH] Fix "stroke-width" being ignored in style attribute. --- HEADER.js | 2 +- dist/all.js | 19 ++++++++++++------- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 39126 -> 39143 bytes package.json | 2 +- src/parser.js | 17 +++++++++++------ 6 files changed, 27 insertions(+), 17 deletions(-) diff --git a/HEADER.js b/HEADER.js index d211335b..cd7e196f 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.8.16" }; +var fabric = fabric || { version: "0.8.17" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 50322b6d..d8ac68b2 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.8.16" }; +var fabric = fabric || { version: "0.8.17" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -3177,6 +3177,14 @@ fabric.util.string = { 'transform': 'transformMatrix' }; + function normalizeAttr(attr) { + // transform attribute names + if (attr in attributesMap) { + return attributesMap[attr]; + } + return attr; + } + /** * Returns an object of attributes' name/value, given element and an array of attribute names; * Parses parent "g" nodes recursively upwards. @@ -3216,10 +3224,7 @@ fabric.util.string = { if (attr === 'transform') { value = fabric.parseTransformAttribute(value); } - // transform attribute names - if (attr in attributesMap) { - attr = attributesMap[attr]; - } + attr = normalizeAttr(attr); memo[attr] = isNaN(parsed) ? value : parsed; } return memo; @@ -3421,12 +3426,12 @@ fabric.util.string = { if (typeof style == 'string') { style = style.replace(/;$/, '').split(';').forEach(function (current) { var attr = current.split(':'); - oStyle[attr[0].trim().toLowerCase()] = attr[1].trim(); + oStyle[normalizeAttr(attr[0].trim().toLowerCase())] = attr[1].trim(); }); } else { for (var prop in style) { if (typeof style[prop] !== 'undefined') { - oStyle[prop.toLowerCase()] = style[prop]; + oStyle[normalizeAttr(prop.toLowerCase())] = style[prop]; } } } diff --git a/dist/all.min.js b/dist/all.min.js index acc8c173..568d318c 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ /* Fabric.js Copyright 2008-2012, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric=fabric||{version:"0.8.16"};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=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-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(e+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(e*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(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.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?m:(l-k);p(q(currentTime,j,byValue,m));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}else{m&&m.call(l,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]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-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(){fabric.util.ease={};function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u/i,""))}if(!v.documentElement){return}g.parseSVGDocument(v.documentElement,function(y,x){j.set(s,{objects:g.util.array.invoke(y,"toObject"),options:x});u(y,x)})}}function a(u){var t=u.objects,s=u.options;t=t.map(function(v){return g[e(v.type)].fromObject(v)});return({objects:t,options:s})}function m(s,v){s=s.trim();var t;if(typeof DOMParser!=="undefined"){var u=new DOMParser();if(u&&u.parseFromString){t=u.parseFromString(s,"text/xml")}}else{if(g.window.ActiveXObject){var t=new ActiveXObject("Microsoft.XMLDOM");t.async="false";t.loadXML(s.replace(//i,""))}}g.parseSVGDocument(t.documentElement,function(x,w){v(x,w)})}function l(v){var t="";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*/);if(k[k.length-1]===""){k.pop()}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 j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.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())];if(this.backgroundImage){h.push('')}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.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}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)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},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(b.backgroundImage){c.setBackgroundImage(b.backgroundImage,c.renderAll.bind(c));c.backgroundImageOpacity=b.backgroundImageOpacity;c.backgroundImageStretch=b.backgroundImageStretch}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(b){var a=JSON.stringify(this);this.cloneWithoutData(function(c){c.loadFromJSON(a,function(){if(b){b(c)}})})},cloneWithoutData:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=new fabric.Canvas(a);b.clipTo=this.clipTo;if(this.backgroundImage){b.setBackgroundImage(this.backgroundImage.src,function(){b.renderAll();if(c){c(b)}});b.backgroundImageOpacity=this.backgroundImageOpacity;b.backgroundImageStretch=this.backgroundImageStretch}else{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,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,hasRotatingPoint:false,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,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};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(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(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 w=this.oCoords,r=b(45-this.getAngle()),i=Math.sqrt(2*Math.pow(this.cornersize,2))/2,x=i*Math.cos(r),q=i*Math.sin(r),v=Math.sin(this.theta),u=Math.cos(this.theta);w.tl.corner={tl:{x:w.tl.x-q,y:w.tl.y-x},tr:{x:w.tl.x+x,y:w.tl.y-q},bl:{x:w.tl.x-x,y:w.tl.y+q},br:{x:w.tl.x+q,y:w.tl.y+x}};w.tr.corner={tl:{x:w.tr.x-q,y:w.tr.y-x},tr:{x:w.tr.x+x,y:w.tr.y-q},br:{x:w.tr.x+q,y:w.tr.y+x},bl:{x:w.tr.x-x,y:w.tr.y+q}};w.bl.corner={tl:{x:w.bl.x-q,y:w.bl.y-x},bl:{x:w.bl.x-x,y:w.bl.y+q},br:{x:w.bl.x+q,y:w.bl.y+x},tr:{x:w.bl.x+x,y:w.bl.y-q}};w.br.corner={tr:{x:w.br.x+x,y:w.br.y-q},bl:{x:w.br.x-x,y:w.br.y+q},br:{x:w.br.x+q,y:w.br.y+x},tl:{x:w.br.x-q,y:w.br.y-x}};w.ml.corner={tl:{x:w.ml.x-q,y:w.ml.y-x},tr:{x:w.ml.x+x,y:w.ml.y-q},bl:{x:w.ml.x-x,y:w.ml.y+q},br:{x:w.ml.x+q,y:w.ml.y+x}};w.mt.corner={tl:{x:w.mt.x-q,y:w.mt.y-x},tr:{x:w.mt.x+x,y:w.mt.y-q},bl:{x:w.mt.x-x,y:w.mt.y+q},br:{x:w.mt.x+q,y:w.mt.y+x}};w.mr.corner={tl:{x:w.mr.x-q,y:w.mr.y-x},tr:{x:w.mr.x+x,y:w.mr.y-q},bl:{x:w.mr.x-x,y:w.mr.y+q},br:{x:w.mr.x+q,y:w.mr.y+x}};w.mb.corner={tl:{x:w.mb.x-q,y:w.mb.y-x},tr:{x:w.mb.x+x,y:w.mb.y-q},bl:{x:w.mb.x-x,y:w.mb.y+q},br:{x:w.mb.x+q,y:w.mb.y+x}};var t=40;w.mtr.corner={tl:{x:w.mtr.x-q+(v*t),y:w.mtr.y-x-(u*t)},tr:{x:w.mtr.x+x+(v*t),y:w.mtr.y-q-(u*t)},bl:{x:w.mtr.x-x+(v*t),y:w.mtr.y+q-(u*t)},br:{x:w.mtr.x+q+(v*t),y:w.mtr.y+x-(u*t)}};var s=(-t-this.currentHeight);w.mbr.corner={tl:{x:w.mbr.x-q+(v*s),y:w.mbr.y-x-(u*s)},tr:{x:w.mbr.x+x+(v*s),y:w.mbr.y-q-(u*s)},bl:{x:w.mbr.x-x+(v*s),y:w.mbr.y+q-(u*s)},br:{x:w.mbr.x+q+(v*s),y:w.mbr.y+x-(u*s)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){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,byValue:i.by,easing:i.easing,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.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")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},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},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},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,{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},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||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;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}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(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.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.prototype.getSvgSrc=fabric.Image.prototype.getSrc;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.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return 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(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElement();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",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=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_initDummyElement:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(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 i=this.text.split(/\r?\n/),j=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),g=-(this.width/2),f=(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=((this._fontAscent/5)*this.lineHeight);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,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");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=new DOMParser().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=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-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(e+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(e*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(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.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?m:(l-k);p(q(currentTime,j,byValue,m));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}else{m&&m.call(l,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]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-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(){fabric.util.ease={};function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!w.documentElement){return}h.parseSVGDocument(w.documentElement,function(z,y){k.set(t,{objects:h.util.array.invoke(z,"toObject"),options:y});v(z,y)})}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(t,w){t=t.trim();var u;if(typeof DOMParser!=="undefined"){var v=new DOMParser();if(v&&v.parseFromString){u=v.parseFromString(t,"text/xml")}}else{if(h.window.ActiveXObject){var u=new ActiveXObject("Microsoft.XMLDOM");u.async="false";u.loadXML(t.replace(//i,""))}}h.parseSVGDocument(u.documentElement,function(y,x){w(y,x)})}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}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 j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.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())];if(this.backgroundImage){h.push('')}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.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}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)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},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(b.backgroundImage){c.setBackgroundImage(b.backgroundImage,c.renderAll.bind(c));c.backgroundImageOpacity=b.backgroundImageOpacity;c.backgroundImageStretch=b.backgroundImageStretch}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(b){var a=JSON.stringify(this);this.cloneWithoutData(function(c){c.loadFromJSON(a,function(){if(b){b(c)}})})},cloneWithoutData:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=new fabric.Canvas(a);b.clipTo=this.clipTo;if(this.backgroundImage){b.setBackgroundImage(this.backgroundImage.src,function(){b.renderAll();if(c){c(b)}});b.backgroundImageOpacity=this.backgroundImageOpacity;b.backgroundImageStretch=this.backgroundImageStretch}else{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,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,hasRotatingPoint:false,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,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};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(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(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 w=this.oCoords,r=b(45-this.getAngle()),i=Math.sqrt(2*Math.pow(this.cornersize,2))/2,x=i*Math.cos(r),q=i*Math.sin(r),v=Math.sin(this.theta),u=Math.cos(this.theta);w.tl.corner={tl:{x:w.tl.x-q,y:w.tl.y-x},tr:{x:w.tl.x+x,y:w.tl.y-q},bl:{x:w.tl.x-x,y:w.tl.y+q},br:{x:w.tl.x+q,y:w.tl.y+x}};w.tr.corner={tl:{x:w.tr.x-q,y:w.tr.y-x},tr:{x:w.tr.x+x,y:w.tr.y-q},br:{x:w.tr.x+q,y:w.tr.y+x},bl:{x:w.tr.x-x,y:w.tr.y+q}};w.bl.corner={tl:{x:w.bl.x-q,y:w.bl.y-x},bl:{x:w.bl.x-x,y:w.bl.y+q},br:{x:w.bl.x+q,y:w.bl.y+x},tr:{x:w.bl.x+x,y:w.bl.y-q}};w.br.corner={tr:{x:w.br.x+x,y:w.br.y-q},bl:{x:w.br.x-x,y:w.br.y+q},br:{x:w.br.x+q,y:w.br.y+x},tl:{x:w.br.x-q,y:w.br.y-x}};w.ml.corner={tl:{x:w.ml.x-q,y:w.ml.y-x},tr:{x:w.ml.x+x,y:w.ml.y-q},bl:{x:w.ml.x-x,y:w.ml.y+q},br:{x:w.ml.x+q,y:w.ml.y+x}};w.mt.corner={tl:{x:w.mt.x-q,y:w.mt.y-x},tr:{x:w.mt.x+x,y:w.mt.y-q},bl:{x:w.mt.x-x,y:w.mt.y+q},br:{x:w.mt.x+q,y:w.mt.y+x}};w.mr.corner={tl:{x:w.mr.x-q,y:w.mr.y-x},tr:{x:w.mr.x+x,y:w.mr.y-q},bl:{x:w.mr.x-x,y:w.mr.y+q},br:{x:w.mr.x+q,y:w.mr.y+x}};w.mb.corner={tl:{x:w.mb.x-q,y:w.mb.y-x},tr:{x:w.mb.x+x,y:w.mb.y-q},bl:{x:w.mb.x-x,y:w.mb.y+q},br:{x:w.mb.x+q,y:w.mb.y+x}};var t=40;w.mtr.corner={tl:{x:w.mtr.x-q+(v*t),y:w.mtr.y-x-(u*t)},tr:{x:w.mtr.x+x+(v*t),y:w.mtr.y-q-(u*t)},bl:{x:w.mtr.x-x+(v*t),y:w.mtr.y+q-(u*t)},br:{x:w.mtr.x+q+(v*t),y:w.mtr.y+x-(u*t)}};var s=(-t-this.currentHeight);w.mbr.corner={tl:{x:w.mbr.x-q+(v*s),y:w.mbr.y-x-(u*s)},tr:{x:w.mbr.x+x+(v*s),y:w.mbr.y-q-(u*s)},bl:{x:w.mbr.x-x+(v*s),y:w.mbr.y+q-(u*s)},br:{x:w.mbr.x+q+(v*s),y:w.mbr.y+x-(u*s)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){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,byValue:i.by,easing:i.easing,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.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")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},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},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},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,{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},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||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;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}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(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.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.prototype.getSvgSrc=fabric.Image.prototype.getSrc;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.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return 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(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElement();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",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=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_initDummyElement:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(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 i=this.text.split(/\r?\n/),j=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),g=-(this.width/2),f=(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=((this._fontAscent/5)*this.lineHeight);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,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");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=new DOMParser().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 c0ac58586c3145e1ab859f8568d17188779940e5..df40fae18472d1f739395fceaf4f719552b263ad 100644 GIT binary patch delta 37593 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 RhIDJx`v0}ZuA?dd0sy-W*m3{> delta 37519 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 diff --git a/package.json b/package.json index 79bb90b6..8d20b6f5 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.8.16", + "version": "0.8.17", "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/parser.js b/src/parser.js index 1de75fa5..4f658be6 100644 --- a/src/parser.js +++ b/src/parser.js @@ -24,6 +24,14 @@ 'transform': 'transformMatrix' }; + function normalizeAttr(attr) { + // transform attribute names + if (attr in attributesMap) { + return attributesMap[attr]; + } + return attr; + } + /** * Returns an object of attributes' name/value, given element and an array of attribute names; * Parses parent "g" nodes recursively upwards. @@ -63,10 +71,7 @@ if (attr === 'transform') { value = fabric.parseTransformAttribute(value); } - // transform attribute names - if (attr in attributesMap) { - attr = attributesMap[attr]; - } + attr = normalizeAttr(attr); memo[attr] = isNaN(parsed) ? value : parsed; } return memo; @@ -268,12 +273,12 @@ if (typeof style == 'string') { style = style.replace(/;$/, '').split(';').forEach(function (current) { var attr = current.split(':'); - oStyle[attr[0].trim().toLowerCase()] = attr[1].trim(); + oStyle[normalizeAttr(attr[0].trim().toLowerCase())] = attr[1].trim(); }); } else { for (var prop in style) { if (typeof style[prop] !== 'undefined') { - oStyle[prop.toLowerCase()] = style[prop]; + oStyle[normalizeAttr(prop.toLowerCase())] = style[prop]; } } }