From c39053456cf06b8b17da696f7bcc00994d23c79a Mon Sep 17 00:00:00 2001 From: kangax Date: Thu, 5 Jan 2012 22:39:30 -0500 Subject: [PATCH] Fix `fabric.Text#textShadow` to actually use specified color. --- HEADER.js | 2 +- dist/all.js | 9 ++++----- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 36815 -> 36801 bytes lib/cufon.js | 7 +++---- package.json | 2 +- 6 files changed, 11 insertions(+), 13 deletions(-) diff --git a/HEADER.js b/HEADER.js index 351486b9..54bd27b4 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2011, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.7.7" }; +var fabric = fabric || { version: "0.7.8" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index c2270342..b3c45d18 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2011, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.7.7" }; +var fabric = fabric || { version: "0.7.8" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -1360,8 +1360,8 @@ Cufon.registerEngine('canvas', (function() { Cufon.textOptions.boundaries = boundaries; } - function renderText() { - g.fillStyle = Cufon.textOptions.color || style.get('color'); + function renderText(color) { + g.fillStyle = color || Cufon.textOptions.color || style.get('color'); var left = 0, lineNum = 0; @@ -1461,9 +1461,8 @@ Cufon.registerEngine('canvas', (function() { for (var i = 0, l = shadows.length; i < l; ++i) { var shadow = shadows[i]; g.save(); - g.fillStyle = shadow.color; g.translate.apply(g, shadowOffsets[i]); - renderText(); + renderText(shadow.color); g.restore(); } } diff --git a/dist/all.min.js b/dist/all.min.js index 3f4f5403..4501ffe0 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ /* Fabric.js Copyright 2008-2011, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric=fabric||{version:"0.7.7"};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:JU){U=P}if(O>S){S=O}if(Pw){w=h}K.push(h);h=0;continue}var A=aa.glyphs[af[Z]]||aa.missingGlyph;if(!A){continue}h+=C=Number(A.w||aa.w)+T}K.push(h);h=Math.max(w,h);var m=[];for(var Z=K.length;Z--;){m[Z]=h-K[Z]}if(C===null){return null}U+=(G.width-C);B+=G.minX;var v,p;if(n){v=I;p=I.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=D;p=fabric.document.createElement("canvas");v.appendChild(p);if(z.printable){var X=fabric.document.createElement("span");X.className="cufon-alt";X.appendChild(fabric.document.createTextNode(D));v.appendChild(X)}}var ag=v.style;var N=p.style||{};var k=o.convert(G.height-H+S);var ae=Math.ceil(k);var R=ae/k;p.width=Math.ceil(o.convert(h+U-B)*R);p.height=ae;H+=G.minY;N.top=Math.round(o.convert(H-aa.ascent))+"px";N.left=Math.round(o.convert(B))+"px";var j=Math.ceil(o.convert(h*R));var t=j+"px";var s=o.convert(aa.height);var E=(z.lineHeight-1)*o.convert(-aa.ascent/5)*(L-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*L)+E;Cufon.textOptions.lines=L;Cufon.textOptions.totalLineHeight=E;if(a){ag.width=t;ag.height=s+"px"}else{ag.paddingLeft=t;ag.paddingBottom=(s-1)+"px"}var ac=Cufon.textOptions.context||p.getContext("2d"),J=ae/G.height;Cufon.textOptions.fontAscent=aa.ascent*J;Cufon.textOptions.boundaries=null;ac.save();ac.scale(J,J);ac.translate(-B-((1/J*p.width)/2)+(Cufon.fonts[aa.family].offsetLeft||0),-H-(Cufon.textOptions.height/J)/2);ac.lineWidth=aa.face["underline-thickness"];ac.save();function q(i,g){ac.strokeStyle=g;ac.beginPath();ac.moveTo(0,i);ac.lineTo(h,i);ac.stroke()}var r=Cufon.getTextDecoration(z),u=z.fontStyle==="italic";function ad(){ac.save();ac.fillStyle=z.backgroundColor;var ah=0,al=0,x=[{left:0}];if(z.textAlign==="right"){ac.translate(m[al],0);x[0].left=m[al]*J}else{if(z.textAlign==="center"){ac.translate(m[al]/2,0);x[0].left=m[al]/2*J}}for(var aj=0,ai=af.length;aj.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?1:(l-k)/m;p(j+(r-j)*q(s));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(i){var g=i.fabric||(i.fabric={}),o=g.util.object.extend,e=g.util.string.capitalize,p=g.util.object.clone;var k={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};function d(v,u){if(!v){return}var x,t,s={};if(v.parentNode&&/^g$/i.test(v.parentNode.nodeName)){s=g.parseAttributes(v.parentNode,u)}var w=u.reduce(function(z,y){x=v.getAttribute(y);t=parseFloat(x);if(x){if((y==="fill"||y==="stroke")&&x==="none"){x=""}if(y==="fill-rule"){x=(x==="evenodd")?"destination-over":x}if(y==="transform"){x=g.parseTransformAttribute(x)}if(y in k){y=k[y]}z[y]=isNaN(t)?x:t}return z},{});w=o(w,o(n(v),g.parseStyleAttribute(v)));return o(s,w)}g.parseTransformAttribute=(function(){function s(L,M){var N=M[0];L[0]=Math.cos(N);L[1]=Math.sin(N);L[2]=-Math.sin(N);L[3]=Math.cos(N)}function x(N,O){var M=O[0],L=(O.length===2)?O[1]:O[0];N[0]=M;N[3]=L}function I(L,M){L[2]=M[0]}function u(L,M){L[1]=M[0]}function F(L,M){L[4]=M[0];if(M.length===2){L[5]=M[1]}}var z=[1,0,0,1,0,0],t="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",J="(?:\\s+,?\\s*|,\\s*)",A="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",y="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+")"+J+"("+t+"))?\\s*\\))",K="(?:(scale)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",D="(?:(translate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",G="(?:(matrix)\\s*\\(\\s*("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")\\s*\\))",E="(?:"+G+"|"+D+"|"+K+"|"+H+"|"+A+"|"+y+")",B="(?:"+E+"(?:"+J+E+")*)",v="^\\s*(?:"+B+"?)\\s*$",C=new RegExp(v),w=new RegExp(E);return function(M){var L=z.concat();if(!M||(M&&!C.test(M))){return L}M.replace(w,function(Q){var N=new RegExp(E).exec(Q).filter(function(R){return(R!==""&&R!=null)}),O=N[1],P=N.slice(2).map(parseFloat);switch(O){case"translate":F(L,P);break;case"rotate":s(L,P);break;case"scale":x(L,P);break;case"skewX":I(L,P);break;case"skewY":u(L,P);break;case"matrix":L=P;break}});return L}})();function r(v){if(!v){return null}v=v.trim();var x=v.indexOf(",")>-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var k=d.getElementsByTagName("stop"),d,f,e={},g;for(var h=k.length;h--;){d=k[h];f=parseInt(d.getAttribute("offset"),10)/100;e[f]=c(d)||d.getAttribute("stop-color")}var j={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};a(l,j);return fabric.Gradient.create(m,{x1:j.x1,y1:j.y1,x2:j.x2,y2:j.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects()),];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getContext:function(){return this.contextTop},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;return b.loadFromJSON(JSON.stringify(this.toJSON()),function(){if(c){c(b)}})}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,FX_DURATION:500,MIN_SCALE_LIMIT:0.1,stateProperties:("top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";",].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",this.left," ",this.top,")",i!==0?(" rotate("+i+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,"2")+" "+c(this.scaleY,"2")+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},getCenter:function(){return{x:this.get("left")+this.width/2,y:this.get("top")+this.height/2}},straighten:function(){var i=this._getAngleValueForStraighten();this.setAngle(i);return this},fxStraighten:function(q){q=q||{};var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(u){t.setAngle(u);i()},onComplete:function(){t.setCoords();s()},onStart:function(){t.setActive(false)}});return this},fxRemove:function(q){q||(q={});var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("opacity"),endValue:0,duration:this.FX_DURATION,onChange:function(u){t.set("opacity",u);i()},onComplete:s,onStart:function(){t.setActive(false)}});return this},_getAngleValueForStraighten:function(){var i=this.get("angle");if(i>-225&&i<=-135){return -180}else{if(i>-135&&i<=-45){return -90}else{if(i>-45&&i<=45){return 0}else{if(i>45&&i<=135){return 90}else{if(i>135&&i<=225){return 180}else{if(i>225&&i<=315){return 270}else{if(i>315){return 360}}}}}}}return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(-this.width/2,-this.height/2);f.lineTo(this.width/2,this.height/2);f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){console.log();return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{maxwidth:null,maxheight:null,active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getNormalizedSize:function(d,c,e){if(e&&c&&(d.width>d.height&&(d.width/d.height)<(c/e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(e&&((d.height==d.width)||(d.height>d.width)||(d.height>e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(c&&(c'},getSrc:function(){return this.getElement().src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(e){var g=Cufon.textOptions||(Cufon.textOptions={});g.left=this.left;g.top=this.top;g.context=e;g.color=this.fill;var f=this._initDummyElement();this.transform(e);Cufon.replaceElement(f,{separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=g.width;this.height=g.height;this._totalLineHeight=g.totalLineHeight;this._fontAscent=g.fontAscent;this._boundaries=g.boundaries;this.setCoords()},_initDummyElement:function(){var f=b.document.createElement("div"),e=b.document.createElement("div");e.appendChild(f);f.innerHTML=this.text;f.style.fontSize=this.fontSize+"px";f.style.letterSpacing="normal";return f},render:function(e,f){e.save();this._render(e);if(!f&&this.active){this.drawBorders(e);this.hideCorners||this.drawCorners(e)}e.restore()},toObject:function(){return d(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var e=[],l=this.text.split("\n"),g=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),h=[];var f=-(this.width/2),n=(this.height/2)-(l.length*this.fontSize)-this._totalLineHeight;for(var j=0,m=l.length;j',l[j],"");if(!this.backgroundColor){continue}h.push('')}return['',h.join(""),"',e.join(""),"",""].join("")},setColor:function(e){this.set("fill",e);return this},setFontsize:function(e){this.set("fontSize",e);this.setCoords();return this},getText:function(){return this.text},setText:function(e){this.set("text",e);this.setCoords();return this},set:function(e,f){if(typeof e=="object"){for(var g in e){this.set(g,e[g])}}else{this[e]=f;if(e==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+f+"$3")}}return this}});b.Text.fromObject=function(e){return new b.Text(e.text,c(e))};b.Text.fromElement=function(e){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file +var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:JU){U=P}if(O>S){S=O}if(Pw){w=h}K.push(h);h=0;continue}var A=aa.glyphs[af[Z]]||aa.missingGlyph;if(!A){continue}h+=C=Number(A.w||aa.w)+T}K.push(h);h=Math.max(w,h);var m=[];for(var Z=K.length;Z--;){m[Z]=h-K[Z]}if(C===null){return null}U+=(G.width-C);B+=G.minX;var v,p;if(n){v=I;p=I.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=D;p=fabric.document.createElement("canvas");v.appendChild(p);if(z.printable){var X=fabric.document.createElement("span");X.className="cufon-alt";X.appendChild(fabric.document.createTextNode(D));v.appendChild(X)}}var ag=v.style;var N=p.style||{};var k=o.convert(G.height-H+S);var ae=Math.ceil(k);var R=ae/k;p.width=Math.ceil(o.convert(h+U-B)*R);p.height=ae;H+=G.minY;N.top=Math.round(o.convert(H-aa.ascent))+"px";N.left=Math.round(o.convert(B))+"px";var j=Math.ceil(o.convert(h*R));var t=j+"px";var s=o.convert(aa.height);var E=(z.lineHeight-1)*o.convert(-aa.ascent/5)*(L-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*L)+E;Cufon.textOptions.lines=L;Cufon.textOptions.totalLineHeight=E;if(a){ag.width=t;ag.height=s+"px"}else{ag.paddingLeft=t;ag.paddingBottom=(s-1)+"px"}var ac=Cufon.textOptions.context||p.getContext("2d"),J=ae/G.height;Cufon.textOptions.fontAscent=aa.ascent*J;Cufon.textOptions.boundaries=null;ac.save();ac.scale(J,J);ac.translate(-B-((1/J*p.width)/2)+(Cufon.fonts[aa.family].offsetLeft||0),-H-(Cufon.textOptions.height/J)/2);ac.lineWidth=aa.face["underline-thickness"];ac.save();function q(i,g){ac.strokeStyle=g;ac.beginPath();ac.moveTo(0,i);ac.lineTo(h,i);ac.stroke()}var r=Cufon.getTextDecoration(z),u=z.fontStyle==="italic";function ad(){ac.save();ac.fillStyle=z.backgroundColor;var ah=0,al=0,x=[{left:0}];if(z.textAlign==="right"){ac.translate(m[al],0);x[0].left=m[al]*J}else{if(z.textAlign==="center"){ac.translate(m[al]/2,0);x[0].left=m[al]/2*J}}for(var aj=0,ai=af.length;aj.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?1:(l-k)/m;p(j+(r-j)*q(s));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(i){var g=i.fabric||(i.fabric={}),o=g.util.object.extend,e=g.util.string.capitalize,p=g.util.object.clone;var k={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};function d(v,u){if(!v){return}var x,t,s={};if(v.parentNode&&/^g$/i.test(v.parentNode.nodeName)){s=g.parseAttributes(v.parentNode,u)}var w=u.reduce(function(z,y){x=v.getAttribute(y);t=parseFloat(x);if(x){if((y==="fill"||y==="stroke")&&x==="none"){x=""}if(y==="fill-rule"){x=(x==="evenodd")?"destination-over":x}if(y==="transform"){x=g.parseTransformAttribute(x)}if(y in k){y=k[y]}z[y]=isNaN(t)?x:t}return z},{});w=o(w,o(n(v),g.parseStyleAttribute(v)));return o(s,w)}g.parseTransformAttribute=(function(){function s(L,M){var N=M[0];L[0]=Math.cos(N);L[1]=Math.sin(N);L[2]=-Math.sin(N);L[3]=Math.cos(N)}function x(N,O){var M=O[0],L=(O.length===2)?O[1]:O[0];N[0]=M;N[3]=L}function I(L,M){L[2]=M[0]}function u(L,M){L[1]=M[0]}function F(L,M){L[4]=M[0];if(M.length===2){L[5]=M[1]}}var z=[1,0,0,1,0,0],t="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",J="(?:\\s+,?\\s*|,\\s*)",A="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",y="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+")"+J+"("+t+"))?\\s*\\))",K="(?:(scale)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",D="(?:(translate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",G="(?:(matrix)\\s*\\(\\s*("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")\\s*\\))",E="(?:"+G+"|"+D+"|"+K+"|"+H+"|"+A+"|"+y+")",B="(?:"+E+"(?:"+J+E+")*)",v="^\\s*(?:"+B+"?)\\s*$",C=new RegExp(v),w=new RegExp(E);return function(M){var L=z.concat();if(!M||(M&&!C.test(M))){return L}M.replace(w,function(Q){var N=new RegExp(E).exec(Q).filter(function(R){return(R!==""&&R!=null)}),O=N[1],P=N.slice(2).map(parseFloat);switch(O){case"translate":F(L,P);break;case"rotate":s(L,P);break;case"scale":x(L,P);break;case"skewX":I(L,P);break;case"skewY":u(L,P);break;case"matrix":L=P;break}});return L}})();function r(v){if(!v){return null}v=v.trim();var x=v.indexOf(",")>-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var k=d.getElementsByTagName("stop"),d,f,e={},g;for(var h=k.length;h--;){d=k[h];f=parseInt(d.getAttribute("offset"),10)/100;e[f]=c(d)||d.getAttribute("stop-color")}var j={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};a(l,j);return fabric.Gradient.create(m,{x1:j.x1,y1:j.y1,x2:j.x2,y2:j.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects()),];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getContext:function(){return this.contextTop},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;return b.loadFromJSON(JSON.stringify(this.toJSON()),function(){if(c){c(b)}})}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,FX_DURATION:500,MIN_SCALE_LIMIT:0.1,stateProperties:("top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";",].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",this.left," ",this.top,")",i!==0?(" rotate("+i+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,"2")+" "+c(this.scaleY,"2")+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},getCenter:function(){return{x:this.get("left")+this.width/2,y:this.get("top")+this.height/2}},straighten:function(){var i=this._getAngleValueForStraighten();this.setAngle(i);return this},fxStraighten:function(q){q=q||{};var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(u){t.setAngle(u);i()},onComplete:function(){t.setCoords();s()},onStart:function(){t.setActive(false)}});return this},fxRemove:function(q){q||(q={});var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("opacity"),endValue:0,duration:this.FX_DURATION,onChange:function(u){t.set("opacity",u);i()},onComplete:s,onStart:function(){t.setActive(false)}});return this},_getAngleValueForStraighten:function(){var i=this.get("angle");if(i>-225&&i<=-135){return -180}else{if(i>-135&&i<=-45){return -90}else{if(i>-45&&i<=45){return 0}else{if(i>45&&i<=135){return 90}else{if(i>135&&i<=225){return 180}else{if(i>225&&i<=315){return 270}else{if(i>315){return 360}}}}}}}return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(-this.width/2,-this.height/2);f.lineTo(this.width/2,this.height/2);f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){console.log();return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{maxwidth:null,maxheight:null,active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getNormalizedSize:function(d,c,e){if(e&&c&&(d.width>d.height&&(d.width/d.height)<(c/e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(e&&((d.height==d.width)||(d.height>d.width)||(d.height>e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(c&&(c'},getSrc:function(){return this.getElement().src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(e){var g=Cufon.textOptions||(Cufon.textOptions={});g.left=this.left;g.top=this.top;g.context=e;g.color=this.fill;var f=this._initDummyElement();this.transform(e);Cufon.replaceElement(f,{separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=g.width;this.height=g.height;this._totalLineHeight=g.totalLineHeight;this._fontAscent=g.fontAscent;this._boundaries=g.boundaries;this.setCoords()},_initDummyElement:function(){var f=b.document.createElement("div"),e=b.document.createElement("div");e.appendChild(f);f.innerHTML=this.text;f.style.fontSize=this.fontSize+"px";f.style.letterSpacing="normal";return f},render:function(e,f){e.save();this._render(e);if(!f&&this.active){this.drawBorders(e);this.hideCorners||this.drawCorners(e)}e.restore()},toObject:function(){return d(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var e=[],l=this.text.split("\n"),g=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),h=[];var f=-(this.width/2),n=(this.height/2)-(l.length*this.fontSize)-this._totalLineHeight;for(var j=0,m=l.length;j',l[j],"");if(!this.backgroundColor){continue}h.push('')}return['',h.join(""),"',e.join(""),"",""].join("")},setColor:function(e){this.set("fill",e);return this},setFontsize:function(e){this.set("fontSize",e);this.setCoords();return this},getText:function(){return this.text},setText:function(e){this.set("text",e);this.setCoords();return this},set:function(e,f){if(typeof e=="object"){for(var g in e){this.set(g,e[g])}}else{this[e]=f;if(e==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+f+"$3")}}return this}});b.Text.fromObject=function(e){return new b.Text(e.text,c(e))};b.Text.fromElement=function(e){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 346b54e81e6cbf40de5e33976241a5f0dcfe16c8..73b12ec4dc487bdce053f9dc83143b595ef8c3ce 100644 GIT binary patch delta 36047 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%0AG_n&Z9CJUooxt9$72{b0~-sx3Z)1 zxkzAkTQX^cslqCc@kvu061Qw|C3$AeKXw7QFu-*q=XH>i*?sU_TtDxG%be>JT5zUY zsQ0jtI;-~*q|(-*Z9nE9UjB>^y_q@;Zbw=Gr>&C~K;i(kWqQtUEe?TyP(+c9|J}P( z=)FZ!>%{0OQ$u;=(v)d~n93k@pgUXxrD;$e_)=w^Z28XYsDBjODmG#pIBm*w(+#tu zM_DJeF2jddL7mG{=UcBl)^O$ z@tb^p+s^2w=>*l7?zn0xH&<_Vc<5o0sznTjOv&{QBker;kUU z-+p+{WY3oUW5<-(q2E>uaJP{}HX;)n^Xpg=NR)KDz}sH9pa1WF7LI~imaiMKb>FsZ zTu}K(uiB?le-!QLu3a|^gm-FmHqtd5rWQN+=vb1saX%=81YcI{gUURn{nD9=ht9TX z8`niCpezMIql+uxjBxWiE-Si7MF`>d!@(ztymQ+U@O5H2ytWbRGJ1uTDPA&6qS@wL zcLzfw0)y9)VXXCkdoa;q!g`i}I8G$uj*%kxh-5kj^fI;maO9zC9!3nbuD_IdqlQLU z-a(l1sGfD{h7P~wtG0CjVMf&|#>;J!b3WV+9gKkW0Cl%v)B<&5lq>W_00p5q>Mv$% z*k@s~thIHgGLBFhPkA8b{1tzO0H%Zg4O$||(0O{%>Lqx8aw`0{J|~kW#zx!;`^70m z0Vg9y?yD$hl1U=WZPYwp@St};|QY(!C-h)A+&Ls@g?*OlW!GFk)Mlr zBAhCTK0ZUHJ!KI#*{0qFbzUTE$l~2H`KZr;VQix^MQ~1|uYACi3p`d{P4huG!ojl_ zjfR+jNZD9RfiWSvS$egAwY?MtMZO)G+g$rOyW%r{m^|-|g+AM$ zn1s~jL)uu^c_Xd;TRQAa%L8$_t6T0UQh-RY9MbT+3~=^m)5ikNp$BjdEjQ#n6W(c|>x&623+TvXf&**H{H7d~McI zelup%#0n+Rfpf1t#kHe|p4}gEp9fS*S)<&48m(6^X@b)?yc1rnX^sWgxBX~m25r;z zw-%s5y6NNF5TCU)`B?w*g?A5^)ciCdoUpuw6@kM{PBDcx3I8qcRi|!(ijV^W+VZq7 zoC1@N0QBHwqX=X$!VX?i+{;3&v|d@PG&YWVJ}&?hCz(%)b!DoEc*I6Bp>Q(UmCUk# zTnLD?UNXp%1i0ak7$tm~vsuhTdl)#5M}gtsr!J4Pxa2ZHHYOzE+@<*))@@4vsarx^ zy#MKkFK<2`ogmBe<@D`$Z$E!(9x#IsY63oFKfHba<r>ri*o@OEw7@ zp9J4JE5c>x8~jaAiWNh_hL`!cg!&!+6v+*O-n8-2uCkDi|39>0Q&tr%S`8xZF9;5P z1^7eLm`TWW8&ag(kXo|)QayH`@fkF^#ESnu6TeB#wZX(ppd_Cer06*{_Yc^ARlC^flUpR>YZLwRSpMU!gH>9h^o{6R9CjdPVikI3R13As

b*o#KRF+t|kC`g-j#q+X$G;)l`swljM$0X#}M4 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%0AsK11FoT7(W{euhl? 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 delta 36061 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

>|%^L@+D# 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 diff --git a/lib/cufon.js b/lib/cufon.js index ac13471e..d34da847 100644 --- a/lib/cufon.js +++ b/lib/cufon.js @@ -854,8 +854,8 @@ Cufon.registerEngine('canvas', (function() { Cufon.textOptions.boundaries = boundaries; } - function renderText() { - g.fillStyle = Cufon.textOptions.color || style.get('color'); + function renderText(color) { + g.fillStyle = color || Cufon.textOptions.color || style.get('color'); var left = 0, lineNum = 0; @@ -955,9 +955,8 @@ Cufon.registerEngine('canvas', (function() { for (var i = 0, l = shadows.length; i < l; ++i) { var shadow = shadows[i]; g.save(); - g.fillStyle = shadow.color; g.translate.apply(g, shadowOffsets[i]); - renderText(); + renderText(shadow.color); g.restore(); } } diff --git a/package.json b/package.json index 0ae327e4..eec0c2a9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "0.7.7", + "version": "0.7.8", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",