From 90d7f7acf3020da6ba941c189102d6fcdd879c5c Mon Sep 17 00:00:00 2001 From: kangax Date: Thu, 16 Aug 2012 18:08:13 +0200 Subject: [PATCH] Fix native text rendering under node-canvas. --- HEADER.js | 2 +- dist/all.js | 4 ++-- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 41705 -> 41722 bytes package.json | 2 +- src/text.class.js | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/HEADER.js b/HEADER.js index 4b4aae3a..2149f14f 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.8.52" }; +var fabric = fabric || { version: "0.8.53" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 8e5f9147..c39b4531 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL` */ /*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.8.52" }; +var fabric = fabric || { version: "0.8.53" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -13046,7 +13046,7 @@ fabric.Image.filters.Tint.fromObject = function(object) { this.fontStyle, this.fontWeight, this.fontSize + 'px', - this.fontFamily + (fabric.isLikelyNode ? ('"' + this.fontFamily + '"') : this.fontFamily) ].join(' '); }, diff --git a/dist/all.min.js b/dist/all.min.js index d687f16f..f3d5b3b7 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ /* Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric=fabric||{version:"0.8.52"};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;fabric.isLikelyNode=typeof Buffer!=="undefined"&&typeof window==="undefined"; +var fabric=fabric||{version:"0.8.53"};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;fabric.isLikelyNode=typeof Buffer!=="undefined"&&typeof window==="undefined"; /* * Copyright (c) 2009 Simo Kinnunen. * Licensed under the MIT license. */ -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:Jz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-((Cufon.textOptions.height/K)/2)+(Cufon.fonts[ab.family].offsetTop||0));ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(){function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!w.documentElement){return}h.parseSVGDocument(w.documentElement,function(z,y){k.set(t,{objects:h.util.array.invoke(z,"toObject"),options:y});v(z,y)})}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(t,w){t=t.trim();var u;if(typeof DOMParser!=="undefined"){var v=new DOMParser();if(v&&v.parseFromString){u=v.parseFromString(t,"text/xml")}}else{if(h.window.ActiveXObject){var u=new ActiveXObject("Microsoft.XMLDOM");u.async="false";u.loadXML(t.replace(//i,""))}}h.parseSVGDocument(u.documentElement,function(y,x){w(y,x)})}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});r.fire("selected",{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;r&&r.setActive(true);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)?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,strokeDashArray:this.strokeDashArray,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","stroke-dasharray: ",(this.strokeDashArray?this.strokeDashArray.join(" "):"; "),"fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(i,q){if(typeof i==="object"){for(var r in i){this._set(r,i[r])}}else{if(typeof q==="function"){this._set(i,q(this.get(i)))}else{this._set(i,q)}}return this},_set:function(i,q){var r=(i==="scaleX"||i==="scaleY")&&qi){var C=x-i}if(E){z+=(D*E)-(C*E||0)}else{v+=(D*y)-(C*y||0)}B[1&s?"moveTo":"lineTo"](z,v);if(s>=u){s=0}}}q(1,0);q(0,1);q(-1,0);q(0,-1);B.stroke();B.closePath();B.restore()},drawCorners:function(B){if(!this.hasControls){return}var D=this.cornersize,y=D/2,x=this.padding,r=-(this.width/2),w=-(this.height/2),C,A,q=D/this.scaleX,i=D/this.scaleY,s=(x+y)/this.scaleY,t=(x+y)/this.scaleX,v=(x+y-D)/this.scaleX,u=(x+y-D)/this.scaleY,z=this.height;B.save();B.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;B.fillStyle=this.cornerColor;C=r-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width-t;A=w-s;B.fillRect(C,A,q,i);C=r-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z/2-s;B.fillRect(C,A,q,i);C=r-t;A=w+z/2-s;B.fillRect(C,A,q,i);if(this.hasRotatingPoint){C=r+this.width/2-t;A=this.flipY?(w+z+(this.rotatingPointOffset/this.scaleY)-i/2):(w-(this.rotatingPointOffset/this.scaleY)-i/2);B.fillRect(C,A,q,i)}B.restore();return this},clone:function(i){if(this.constructor.fromObject){return this.constructor.fromObject(this.toObject(),i)}return new d.Object(this.toObject())},cloneAsImage:function(s){if(d.Image){var q=new Image();q.onload=function(){if(s){s(new d.Image(q),r)}q=q.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",false).set("flipY",false);this.toDataURL(function(i){q.src=i})}return this},toDataURL:function(s){var q=d.document.createElement("canvas");if(!q.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(q)}this.setCoords();q.width=this.getBoundingRectWidth();q.height=this.getBoundingRectHeight();d.util.wrapElement(q,"div");var i=new d.Canvas(q);i.backgroundColor="transparent";i.renderAll();if(this.constructor.async){this.clone(r)}else{r(this.clone())}function r(u){u.left=q.width/2;u.top=q.height/2;u.setActive(false);i.add(u);var t=i.toDataURL("png");i.dispose();i=u=null;s&&s(t)}},hasStateChanged:function(){return this.stateProperties.some(function(i){return this[i]!==this.originalState[i]},this)},saveState:function(){this.stateProperties.forEach(function(i){this.originalState[i]=this.get(i)},this);return this},setupState:function(){this.originalState={};this.saveState()},intersectsWithRect:function(r,t){var w=this.oCoords,i=new d.Point(w.tl.x,w.tl.y),s=new d.Point(w.tr.x,w.tr.y),v=new d.Point(w.bl.x,w.bl.y),q=new d.Point(w.br.x,w.br.y);var u=d.Intersection.intersectPolygonRectangle([i,s,q,v],r,t);return(u.status==="Intersection")},intersectsWithObject:function(i){function q(u){return{tl:new d.Point(u.tl.x,u.tl.y),tr:new d.Point(u.tr.x,u.tr.y),bl:new d.Point(u.bl.x,u.bl.y),br:new d.Point(u.br.x,u.br.y)}}var r=q(this.oCoords),t=q(i.oCoords);var s=d.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[t.tl,t.tr,t.br,t.bl]);return(s.status==="Intersection")},isContainedWithinObject:function(i){return this.isContainedWithinRect(i.oCoords.tl,i.oCoords.br)},isContainedWithinRect:function(r,t){var v=this.oCoords,i=new d.Point(v.tl.x,v.tl.y),s=new d.Point(v.tr.x,v.tr.y),u=new d.Point(v.bl.x,v.bl.y),q=new d.Point(v.br.x,v.br.y);return i.x>r.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 u=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),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(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(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.top:(this.y1+this.height/2))},_set:function(f,g){this[f]=g;if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2;this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",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.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.strokeDashArray){this._renderDashedStroke(f)}else{if(this.stroke){f.stroke()}}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);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},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);return this},size:function(){return this.getObjects().length},_set:function(j,k){if(j==="fill"||j==="opacity"){var h=this.objects.length;this[j]=k;while(h--){this.objects[h].set(j,k)}}else{this[j]=k}},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j,o){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}if(!o&&this.active){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(){this.forEachObject(function(h){h.setActive()});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()}},toSVG:function(){var k=[];for(var j=0,h=this.objects.length;j'+k.join("")+"")}});e.Group.fromObject=function(h,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0,g.width,g.height);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=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._element=f;i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)0){l[m]=o;l[m+1]=e;l[m+2]=k}}f.putImageData(c,0,0)},toJSON:function(){return{type:this.type,color:this.color}}});fabric.Image.filters.Tint.fromObject=function(a){return new fabric.Image.filters.Tint(a)};(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.util.object.clone,a=c.util.toFixed;if(c.Text){c.warn("fabric.Text is already defined");return}if(!c.Object){c.warn("fabric.Text requires fabric.Object");return}c.Text=c.util.createClass(c.Object,{fontSize:40,fontWeight:100,fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,strokeStyle:"",strokeWidth:1,backgroundColor:"",path:null,type:"text",useNative:true,initialize:function(g,f){this._initStateProperties();this.text=g;this.setOptions(f||{});this.theta=this.angle*Math.PI/180;this._initDimensions();this.setCoords()},_initDimensions:function(){var f=c.document.createElement("canvas");if(!f.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(f)}this._render(f.getContext("2d"))},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat();this.stateProperties.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","strokeStyle","strokeWidth","backgroundColor","useNative");c.util.removeFromArray(this.stateProperties,"width")},toString:function(){return"#'},_render:function(f){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElementForCufon();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[1],10);f.shadowOffsetY=parseInt(i[2],10);f.shadowBlur=parseInt(i[3],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var i=this.text.split(/\r?\n/),j=this.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.ATTRIBUTE_NAMES=("x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration").split(" ");c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(g,f){if(!g){return null}var h=c.parseAttributes(g,c.Text.ATTRIBUTE_NAMES);var f=c.util.object.extend((f?c.util.object.clone(f):{}),h);var i=new c.Text(g.textContent,f);return i}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){fabric.loadSVGFromString(body,callback)})};fabric.loadSVGFromString=function(string,callback){var doc=new DOMParser().parseFromString(string);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:Jz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-((Cufon.textOptions.height/K)/2)+(Cufon.fonts[ab.family].offsetTop||0));ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(){function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!w.documentElement){return}h.parseSVGDocument(w.documentElement,function(z,y){k.set(t,{objects:h.util.array.invoke(z,"toObject"),options:y});v(z,y)})}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(t,w){t=t.trim();var u;if(typeof DOMParser!=="undefined"){var v=new DOMParser();if(v&&v.parseFromString){u=v.parseFromString(t,"text/xml")}}else{if(h.window.ActiveXObject){var u=new ActiveXObject("Microsoft.XMLDOM");u.async="false";u.loadXML(t.replace(//i,""))}}h.parseSVGDocument(u.documentElement,function(y,x){w(y,x)})}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});r.fire("selected",{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;r&&r.setActive(true);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)?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,strokeDashArray:this.strokeDashArray,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","stroke-dasharray: ",(this.strokeDashArray?this.strokeDashArray.join(" "):"; "),"fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(i,q){if(typeof i==="object"){for(var r in i){this._set(r,i[r])}}else{if(typeof q==="function"){this._set(i,q(this.get(i)))}else{this._set(i,q)}}return this},_set:function(i,q){var r=(i==="scaleX"||i==="scaleY")&&qi){var C=x-i}if(E){z+=(D*E)-(C*E||0)}else{v+=(D*y)-(C*y||0)}B[1&s?"moveTo":"lineTo"](z,v);if(s>=u){s=0}}}q(1,0);q(0,1);q(-1,0);q(0,-1);B.stroke();B.closePath();B.restore()},drawCorners:function(B){if(!this.hasControls){return}var D=this.cornersize,y=D/2,x=this.padding,r=-(this.width/2),w=-(this.height/2),C,A,q=D/this.scaleX,i=D/this.scaleY,s=(x+y)/this.scaleY,t=(x+y)/this.scaleX,v=(x+y-D)/this.scaleX,u=(x+y-D)/this.scaleY,z=this.height;B.save();B.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;B.fillStyle=this.cornerColor;C=r-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width-t;A=w-s;B.fillRect(C,A,q,i);C=r-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z/2-s;B.fillRect(C,A,q,i);C=r-t;A=w+z/2-s;B.fillRect(C,A,q,i);if(this.hasRotatingPoint){C=r+this.width/2-t;A=this.flipY?(w+z+(this.rotatingPointOffset/this.scaleY)-i/2):(w-(this.rotatingPointOffset/this.scaleY)-i/2);B.fillRect(C,A,q,i)}B.restore();return this},clone:function(i){if(this.constructor.fromObject){return this.constructor.fromObject(this.toObject(),i)}return new d.Object(this.toObject())},cloneAsImage:function(s){if(d.Image){var q=new Image();q.onload=function(){if(s){s(new d.Image(q),r)}q=q.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",false).set("flipY",false);this.toDataURL(function(i){q.src=i})}return this},toDataURL:function(s){var q=d.document.createElement("canvas");if(!q.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(q)}this.setCoords();q.width=this.getBoundingRectWidth();q.height=this.getBoundingRectHeight();d.util.wrapElement(q,"div");var i=new d.Canvas(q);i.backgroundColor="transparent";i.renderAll();if(this.constructor.async){this.clone(r)}else{r(this.clone())}function r(u){u.left=q.width/2;u.top=q.height/2;u.setActive(false);i.add(u);var t=i.toDataURL("png");i.dispose();i=u=null;s&&s(t)}},hasStateChanged:function(){return this.stateProperties.some(function(i){return this[i]!==this.originalState[i]},this)},saveState:function(){this.stateProperties.forEach(function(i){this.originalState[i]=this.get(i)},this);return this},setupState:function(){this.originalState={};this.saveState()},intersectsWithRect:function(r,t){var w=this.oCoords,i=new d.Point(w.tl.x,w.tl.y),s=new d.Point(w.tr.x,w.tr.y),v=new d.Point(w.bl.x,w.bl.y),q=new d.Point(w.br.x,w.br.y);var u=d.Intersection.intersectPolygonRectangle([i,s,q,v],r,t);return(u.status==="Intersection")},intersectsWithObject:function(i){function q(u){return{tl:new d.Point(u.tl.x,u.tl.y),tr:new d.Point(u.tr.x,u.tr.y),bl:new d.Point(u.bl.x,u.bl.y),br:new d.Point(u.br.x,u.br.y)}}var r=q(this.oCoords),t=q(i.oCoords);var s=d.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[t.tl,t.tr,t.br,t.bl]);return(s.status==="Intersection")},isContainedWithinObject:function(i){return this.isContainedWithinRect(i.oCoords.tl,i.oCoords.br)},isContainedWithinRect:function(r,t){var v=this.oCoords,i=new d.Point(v.tl.x,v.tl.y),s=new d.Point(v.tr.x,v.tr.y),u=new d.Point(v.bl.x,v.bl.y),q=new d.Point(v.br.x,v.br.y);return i.x>r.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 u=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),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(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(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.top:(this.y1+this.height/2))},_set:function(f,g){this[f]=g;if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2;this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",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.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.strokeDashArray){this._renderDashedStroke(f)}else{if(this.stroke){f.stroke()}}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);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},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);return this},size:function(){return this.getObjects().length},_set:function(j,k){if(j==="fill"||j==="opacity"){var h=this.objects.length;this[j]=k;while(h--){this.objects[h].set(j,k)}}else{this[j]=k}},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j,o){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}if(!o&&this.active){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(){this.forEachObject(function(h){h.setActive()});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()}},toSVG:function(){var k=[];for(var j=0,h=this.objects.length;j'+k.join("")+"")}});e.Group.fromObject=function(h,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0,g.width,g.height);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=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._element=f;i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)0){l[m]=o;l[m+1]=e;l[m+2]=k}}f.putImageData(c,0,0)},toJSON:function(){return{type:this.type,color:this.color}}});fabric.Image.filters.Tint.fromObject=function(a){return new fabric.Image.filters.Tint(a)};(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.util.object.clone,a=c.util.toFixed;if(c.Text){c.warn("fabric.Text is already defined");return}if(!c.Object){c.warn("fabric.Text requires fabric.Object");return}c.Text=c.util.createClass(c.Object,{fontSize:40,fontWeight:100,fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,strokeStyle:"",strokeWidth:1,backgroundColor:"",path:null,type:"text",useNative:true,initialize:function(g,f){this._initStateProperties();this.text=g;this.setOptions(f||{});this.theta=this.angle*Math.PI/180;this._initDimensions();this.setCoords()},_initDimensions:function(){var f=c.document.createElement("canvas");if(!f.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(f)}this._render(f.getContext("2d"))},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat();this.stateProperties.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","strokeStyle","strokeWidth","backgroundColor","useNative");c.util.removeFromArray(this.stateProperties,"width")},toString:function(){return"#'},_render:function(f){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElementForCufon();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[1],10);f.shadowOffsetY=parseInt(i[2],10);f.shadowBlur=parseInt(i[3],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",(c.isLikelyNode?('"'+this.fontFamily+'"'):this.fontFamily)].join(" ")},_initDummyElementForCufon:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var i=this.text.split(/\r?\n/),j=this.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.ATTRIBUTE_NAMES=("x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration").split(" ");c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(g,f){if(!g){return null}var h=c.parseAttributes(g,c.Text.ATTRIBUTE_NAMES);var f=c.util.object.extend((f?c.util.object.clone(f):{}),h);var i=new c.Text(g.textContent,f);return i}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){fabric.loadSVGFromString(body,callback)})};fabric.loadSVGFromString=function(string,callback){var doc=new DOMParser().parseFromString(string);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 b54682b25b4969eda5bcabc2034b58e959b29179..f0ef9953af0e7c1192c5e11cb285b0780f3657c7 100644 GIT binary patch literal 41722 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", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/text.class.js b/src/text.class.js index 89322317..f2ba20ac 100644 --- a/src/text.class.js +++ b/src/text.class.js @@ -478,7 +478,7 @@ this.fontStyle, this.fontWeight, this.fontSize + 'px', - this.fontFamily + (fabric.isLikelyNode ? ('"' + this.fontFamily + '"') : this.fontFamily) ].join(' '); },