From 8a84affd6c7599f76419e42ebc2233dcf76951d5 Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 12 May 2012 13:44:26 +0400 Subject: [PATCH] [BACK_INCOMPAT] Remove "memo" from event objects. `e.memo.xxx` is now `e.xxx`. --- HEADER.js | 2 +- dist/all.js | 16 ++--- dist/all.min.js | 4 +- dist/all.min.js.gz | Bin 37412 -> 37407 bytes lib/aligning_guidelines.js | 130 ++++++++++++++++++------------------ lib/centering_guidelines.js | 28 ++++---- package.json | 2 +- src/observable.js | 14 ++-- 8 files changed, 98 insertions(+), 98 deletions(-) diff --git a/HEADER.js b/HEADER.js index a823ebbe..5959f064 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.8.2" }; +var fabric = fabric || { version: "0.8.3" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 13b92e24..b02e9602 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.8.2" }; +var fabric = fabric || { version: "0.8.3" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -1734,7 +1734,7 @@ if (typeof console !== 'undefined') { * @namespace */ fabric.Observable = { - + /** * Observes specified event * @method observe @@ -1758,7 +1758,7 @@ fabric.Observable = { this.__eventListeners[eventName].push(handler); } }, - + /** * Stops event observing for a particular event handler * @method stopObserving @@ -1773,14 +1773,14 @@ fabric.Observable = { fabric.util.removeFromArray(this.__eventListeners[eventName], handler); } }, - + /** - * Fires event with an optional memo object + * Fires event with an optional options object * @method fire * @param {String} eventName - * @param {Object} [memo] + * @param {Object} [options] */ - fire: function(eventName, memo) { + fire: function(eventName, options) { if (!this.__eventListeners) { this.__eventListeners = { } } @@ -1788,7 +1788,7 @@ fabric.Observable = { if (!listenersForEvent) return; for (var i = 0, len = listenersForEvent.length; i < len; i++) { // avoiding try/catch for perf. reasons - listenersForEvent[i]({ memo: memo }); + listenersForEvent[i](options || { }); } } }; diff --git a/dist/all.min.js b/dist/all.min.js index 6fae91eb..2e7d05f4 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ /* Fabric.js Copyright 2008-2012, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric=fabric||{version:"0.8.2"};if(typeof exports!="undefined"){exports.fabric=fabric}if(typeof document!="undefined"&&typeof window!="undefined"){fabric.document=document;fabric.window=window}else{fabric.document=require("jsdom").jsdom("");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:JV){V=Q}if(P>T){T=P}if(Qz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-(Cufon.textOptions.height/K)/2);ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?1:(l-k)/m;p(j+(r-j)*q(s));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}else{m&&m.call(l,k)}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]",">")}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;if(c){b=function(g,i){if(i.toString!==Object.prototype.toString){g.prototype.toString=i.toString}if(i.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=i.valueOf}for(var h in i){g.prototype[h]=i[h]}}}else{b=function(g,i){for(var h in i){g.prototype[h]=i[h]}}}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(i){var g=i.fabric||(i.fabric={}),o=g.util.object.extend,e=g.util.string.capitalize,p=g.util.object.clone;var k={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};function d(v,u){if(!v){return}var x,t,s={};if(v.parentNode&&/^g$/i.test(v.parentNode.nodeName)){s=g.parseAttributes(v.parentNode,u)}var w=u.reduce(function(z,y){x=v.getAttribute(y);t=parseFloat(x);if(x){if((y==="fill"||y==="stroke")&&x==="none"){x=""}if(y==="fill-rule"){x=(x==="evenodd")?"destination-over":x}if(y==="transform"){x=g.parseTransformAttribute(x)}if(y in k){y=k[y]}z[y]=isNaN(t)?x:t}return z},{});w=o(w,o(n(v),g.parseStyleAttribute(v)));return o(s,w)}g.parseTransformAttribute=(function(){function s(L,M){var N=M[0];L[0]=Math.cos(N);L[1]=Math.sin(N);L[2]=-Math.sin(N);L[3]=Math.cos(N)}function x(N,O){var M=O[0],L=(O.length===2)?O[1]:O[0];N[0]=M;N[3]=L}function I(L,M){L[2]=M[0]}function u(L,M){L[1]=M[0]}function F(L,M){L[4]=M[0];if(M.length===2){L[5]=M[1]}}var z=[1,0,0,1,0,0],t="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",J="(?:\\s+,?\\s*|,\\s*)",A="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",y="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+")"+J+"("+t+"))?\\s*\\))",K="(?:(scale)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",D="(?:(translate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",G="(?:(matrix)\\s*\\(\\s*("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")\\s*\\))",E="(?:"+G+"|"+D+"|"+K+"|"+H+"|"+A+"|"+y+")",B="(?:"+E+"(?:"+J+E+")*)",v="^\\s*(?:"+B+"?)\\s*$",C=new RegExp(v),w=new RegExp(E);return function(M){var L=z.concat();if(!M||(M&&!C.test(M))){return L}M.replace(w,function(Q){var N=new RegExp(E).exec(Q).filter(function(R){return(R!==""&&R!=null)}),O=N[1],P=N.slice(2).map(parseFloat);switch(O){case"translate":F(L,P);break;case"rotate":s(L,P);break;case"scale":x(L,P);break;case"skewX":I(L,P);break;case"skewY":u(L,P);break;case"matrix":L=P;break}});return L}})();function r(v){if(!v){return null}v=v.trim();var x=v.indexOf(",")>-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u/i,""))}if(!v.documentElement){return}g.parseSVGDocument(v.documentElement,function(y,x){j.set(s,{objects:g.util.array.invoke(y,"toObject"),options:x});u(y,x)})}}function a(u){var t=u.objects,s=u.options;t=t.map(function(v){return g[e(v.type)].fromObject(v)});return({objects:t,options:s})}function m(s,v){s=s.trim();var t;if(typeof DOMParser!=="undefined"){var u=new DOMParser();if(u&&u.parseFromString){t=u.parseFromString(s,"text/xml")}}else{if(g.window.ActiveXObject){var t=new ActiveXObject("Microsoft.XMLDOM");t.async="false";t.loadXML(s.replace(//i,""))}}g.parseSVGDocument(t.documentElement,function(x,w){v(x,w)})}function l(v){var t="";for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);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())];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getContext:function(){return this.contextTop},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(b){var a=JSON.stringify(this);this.cloneWithoutData(function(c){c.loadFromJSON(a,function(){if(b){b(c)}})})},cloneWithoutData:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;if(c){c(b)}}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,MIN_SCALE_LIMIT:0.1,stateProperties:("top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElement();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_initDummyElement:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var i=this.text.split(/\r?\n/),j=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),g=-(this.width/2),f=(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=((this._fontAscent/5)*this.lineHeight);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file +var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:JV){V=Q}if(P>T){T=P}if(Qz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-(Cufon.textOptions.height/K)/2);ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?1:(l-k)/m;p(j+(r-j)*q(s));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}else{m&&m.call(l,k)}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]",">")}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;if(c){b=function(g,i){if(i.toString!==Object.prototype.toString){g.prototype.toString=i.toString}if(i.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=i.valueOf}for(var h in i){g.prototype[h]=i[h]}}}else{b=function(g,i){for(var h in i){g.prototype[h]=i[h]}}}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(i){var g=i.fabric||(i.fabric={}),o=g.util.object.extend,e=g.util.string.capitalize,p=g.util.object.clone;var k={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};function d(v,u){if(!v){return}var x,t,s={};if(v.parentNode&&/^g$/i.test(v.parentNode.nodeName)){s=g.parseAttributes(v.parentNode,u)}var w=u.reduce(function(z,y){x=v.getAttribute(y);t=parseFloat(x);if(x){if((y==="fill"||y==="stroke")&&x==="none"){x=""}if(y==="fill-rule"){x=(x==="evenodd")?"destination-over":x}if(y==="transform"){x=g.parseTransformAttribute(x)}if(y in k){y=k[y]}z[y]=isNaN(t)?x:t}return z},{});w=o(w,o(n(v),g.parseStyleAttribute(v)));return o(s,w)}g.parseTransformAttribute=(function(){function s(L,M){var N=M[0];L[0]=Math.cos(N);L[1]=Math.sin(N);L[2]=-Math.sin(N);L[3]=Math.cos(N)}function x(N,O){var M=O[0],L=(O.length===2)?O[1]:O[0];N[0]=M;N[3]=L}function I(L,M){L[2]=M[0]}function u(L,M){L[1]=M[0]}function F(L,M){L[4]=M[0];if(M.length===2){L[5]=M[1]}}var z=[1,0,0,1,0,0],t="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",J="(?:\\s+,?\\s*|,\\s*)",A="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",y="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+")"+J+"("+t+"))?\\s*\\))",K="(?:(scale)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",D="(?:(translate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",G="(?:(matrix)\\s*\\(\\s*("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")\\s*\\))",E="(?:"+G+"|"+D+"|"+K+"|"+H+"|"+A+"|"+y+")",B="(?:"+E+"(?:"+J+E+")*)",v="^\\s*(?:"+B+"?)\\s*$",C=new RegExp(v),w=new RegExp(E);return function(M){var L=z.concat();if(!M||(M&&!C.test(M))){return L}M.replace(w,function(Q){var N=new RegExp(E).exec(Q).filter(function(R){return(R!==""&&R!=null)}),O=N[1],P=N.slice(2).map(parseFloat);switch(O){case"translate":F(L,P);break;case"rotate":s(L,P);break;case"scale":x(L,P);break;case"skewX":I(L,P);break;case"skewY":u(L,P);break;case"matrix":L=P;break}});return L}})();function r(v){if(!v){return null}v=v.trim();var x=v.indexOf(",")>-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u/i,""))}if(!v.documentElement){return}g.parseSVGDocument(v.documentElement,function(y,x){j.set(s,{objects:g.util.array.invoke(y,"toObject"),options:x});u(y,x)})}}function a(u){var t=u.objects,s=u.options;t=t.map(function(v){return g[e(v.type)].fromObject(v)});return({objects:t,options:s})}function m(s,v){s=s.trim();var t;if(typeof DOMParser!=="undefined"){var u=new DOMParser();if(u&&u.parseFromString){t=u.parseFromString(s,"text/xml")}}else{if(g.window.ActiveXObject){var t=new ActiveXObject("Microsoft.XMLDOM");t.async="false";t.loadXML(s.replace(//i,""))}}g.parseSVGDocument(t.documentElement,function(x,w){v(x,w)})}function l(v){var t="";for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);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())];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getContext:function(){return this.contextTop},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(b){var a=JSON.stringify(this);this.cloneWithoutData(function(c){c.loadFromJSON(a,function(){if(b){b(c)}})})},cloneWithoutData:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;if(c){c(b)}}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,MIN_SCALE_LIMIT:0.1,stateProperties:("top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElement();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_initDummyElement:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var i=this.text.split(/\r?\n/),j=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),g=-(this.width/2),f=(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=((this._fontAscent/5)*this.lineHeight);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index cc319fcad7180d608ed396159236878b0d988325..2ddbf46837a37a11cd391bb428ab52c4e373a8ef 100644 GIT binary patch delta 36704 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 delta 36676 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 z zszd&1f)!d&^=*L|akx~11#pZ^o{)n-B$>1mB^^j`U{E#0=t2lKkk1;lS-?Ft$3Lmz z#klKMiYSM3JIUH8i5XP&hsbT=0GcTRi9uC=NNImDU&ar;9)KV$V0~LkC7mXq-ED>S5PHIB|6Csf2IL42d>oFAQ^W;a*0;>P!`({W&LV0op#e7Kfn7a zR>y@z7b1&eLzSgpj($&%f1mF66Bhgq0BO^&^7rJb1d*{mWAIfDu2(@rmH~boNQ+M> zc$H*tB=;B)G`^OZ) zV6DnF81M+>_||*;F9IpHOPPN;v?#CyO^ov?y>{@^i3)WU7a~-`&`sKZDHMnGilNz< z>-w%2JD%?Ww_(rcB zKW*6GMu8!2dAdhAIQ z(Ht8yBF}e^78$Gn4{QZ16;8@MVWEFuWA4k*6}lpTb>!yywPOr>t<-Tg8d^ChC)!|9-n zH>|%V0P5f%<4eN6(&kj&1A5y<>lhEJMC7dJ%v^BFY{fp7GE-fUh_UjFy*`&WBW z_&dkEzgLG@w2zL~f^xqc{QL7DvQ1EVyeV9gCq%8Mf?<;Ae_(-aDJ`iqn|Gl;d z=9)^5?AaFGN=GNr(9nPU0^F9;keofQtR`cChNxDdQkN+v{rLIw&pK_eSfE89@pExb z#gdU)eSzww_8Wl(fW--+3)Y>sXB_~c4EY#@W`ZujvA}<%pnxSK)*dIgk~kzK7R8kC zKLEjC*}*JZOq-K##6%AS@reVhxhM4zJBw|r`P97S!O)zhk=<>F9Fn_ zcIB${mRYw`TFgp8S@e%1Dg&~T-*_&hilc552QYzNQNNX*i1~D@_zJAQV8j7%me;c> z#!=T^%0!Z|bD4j20NQcrDR%}B4i(`lcOq41Z&Wt+0DT&bqg!p-)(~5!mtCVYK4Tcg z+k@qlOxJani{@gPoy|JkI6kb^qI+zo9P^SeSNOmA5`zjl!hl7#iHA&|E%WFFtz_E7 zfbaTQ0mn!j-GtPYNCya5{7K){Ma9CZ4Jv_p-!U}ZP_uuAR2*YN?N+k`gwz{Xhsho! zd|@jZiv9QR)8Df_t`lp>KaQ(=|4wP-OR`~2&O0rD8Zq2`x>Yy|630@BhN%+-qdXTN zCWKl_0wmy>b$*uPMJD4#8$0giY|NFAx|*NbX>z@I(st!$)V*nr#n5GyogLM^*;}zX z9pNRTOYeVi62+?AghDCL!`>3GdOPtbw_$bzvn+ERYRJrx217DOO#q9SlMpbE1JyUP z^gZ4QH5k)sM?8-4g0II<)}5b1g95bUWawuo^eO*Rt1+oB3BPfe)I5pQP#Hs|5aFns z6Jk}BFQ`SMfRM53Vaq{N{=lid1WqRNGZxr%S8<^ZOs*>UEnF&r2vLV~l}0HSi@AX(Drh)Ukc6JC6O)xZ;y| z?uxgMRx0Q|GO0|pW}V0A-t5Y7{nl{jNJoawiAjom!%VYpn~}K^LYV((MIqvUVmZS+ kRa_oRtGjK>As-*8zwcj=Z<`p>rBUPm12}Y(`!VGK0P!xwrvLx| diff --git a/lib/aligning_guidelines.js b/lib/aligning_guidelines.js index 05a3a0fa..3762a240 100644 --- a/lib/aligning_guidelines.js +++ b/lib/aligning_guidelines.js @@ -4,30 +4,30 @@ * */ function initAligningGuidelines(canvas) { - + var ctx = canvas.getContext(), canvasHeight = canvas.getHeight(), aligningLineOffset = 5, aligningLineMargin = 4, aligningLineWidth = 1, aligningLineColor = 'rgb(0,255,0)'; - + function drawVerticalLine(coords) { drawLine( - coords.x + 0.5, - coords.y1 > coords.y2 ? coords.y2 : coords.y1, - coords.x + 0.5, + coords.x + 0.5, + coords.y1 > coords.y2 ? coords.y2 : coords.y1, + coords.x + 0.5, coords.y2 > coords.y1 ? coords.y2 : coords.y1); } - + function drawHorizontalLine(coords) { drawLine( - coords.x1 > coords.x2 ? coords.x2 : coords.x1, - coords.y + 0.5, - coords.x2 > coords.x1 ? coords.x2 : coords.x1, + coords.x1 > coords.x2 ? coords.x2 : coords.x1, + coords.y + 0.5, + coords.x2 > coords.x1 ? coords.x2 : coords.x1, coords.y + 0.5); } - + function drawLine(x1, y1, x2, y2) { ctx.save(); ctx.lineWidth = aligningLineWidth; @@ -38,7 +38,7 @@ function initAligningGuidelines(canvas) { ctx.stroke(); ctx.restore(); } - + function isInRange(value1, value2) { value1 = Math.round(value1); value2 = Math.round(value2); @@ -49,128 +49,128 @@ function initAligningGuidelines(canvas) { } return false; } - + var verticalLines = [ ], horizontalLines = [ ]; - + canvas.observe('object:moving', function(e) { - - var activeObject = e.memo.target, + + var activeObject = e.target, canvasObjects = canvas.getObjects(), activeObjectLeft = activeObject.get('left'), activeObjectTop = activeObject.get('top'), activeObjectHeight = activeObject.getHeight(), activeObjectWidth = activeObject.getWidth(), noneInTheRange = true; - + // It should be trivial to DRY this up by encapsulating (repeating) creation of x1, x2, y1, and y2 into functions, // but we're not doing it here for perf. reasons -- as this a function that's invoked on every mouse move - + for (var i = canvasObjects.length; i--; ) { - + if (canvasObjects[i] === activeObject) continue; - + var objectLeft = canvasObjects[i].get('left'), objectTop = canvasObjects[i].get('top'), objectHeight = canvasObjects[i].getHeight(), objectWidth = canvasObjects[i].getWidth(); - + // snap by the horizontal center line if (isInRange(objectLeft, activeObjectLeft)) { noneInTheRange = false; verticalLines.push({ - x: objectLeft, - y1: (objectTop < activeObjectTop) - ? (objectTop - objectHeight / 2 - aligningLineOffset) - : (objectTop + objectHeight / 2 + aligningLineOffset), - y2: (activeObjectTop > objectTop) - ? (activeObjectTop + activeObjectHeight / 2 + aligningLineOffset) - : (activeObjectTop - activeObjectHeight / 2 - aligningLineOffset) + x: objectLeft, + y1: (objectTop < activeObjectTop) + ? (objectTop - objectHeight / 2 - aligningLineOffset) + : (objectTop + objectHeight / 2 + aligningLineOffset), + y2: (activeObjectTop > objectTop) + ? (activeObjectTop + activeObjectHeight / 2 + aligningLineOffset) + : (activeObjectTop - activeObjectHeight / 2 - aligningLineOffset) }); activeObject.set('left', objectLeft); } - + // snap by the left edge if (isInRange(objectLeft - objectWidth / 2, activeObjectLeft - activeObjectWidth / 2)) { noneInTheRange = false; verticalLines.push({ - x: objectLeft - objectWidth / 2, - y1: (objectTop < activeObjectTop) - ? (objectTop - objectHeight / 2 - aligningLineOffset) - : (objectTop + objectHeight / 2 + aligningLineOffset), - y2: (activeObjectTop > objectTop) - ? (activeObjectTop + activeObjectHeight / 2 + aligningLineOffset) - : (activeObjectTop - activeObjectHeight / 2 - aligningLineOffset) + x: objectLeft - objectWidth / 2, + y1: (objectTop < activeObjectTop) + ? (objectTop - objectHeight / 2 - aligningLineOffset) + : (objectTop + objectHeight / 2 + aligningLineOffset), + y2: (activeObjectTop > objectTop) + ? (activeObjectTop + activeObjectHeight / 2 + aligningLineOffset) + : (activeObjectTop - activeObjectHeight / 2 - aligningLineOffset) }); activeObject.set('left', objectLeft - objectWidth / 2 + activeObjectWidth / 2); } - + // snap by the right edge if (isInRange(objectLeft + objectWidth / 2, activeObjectLeft + activeObjectWidth / 2)) { noneInTheRange = false; verticalLines.push({ x: objectLeft + objectWidth / 2, - y1: (objectTop < activeObjectTop) - ? (objectTop - objectHeight / 2 - aligningLineOffset) - : (objectTop + objectHeight / 2 + aligningLineOffset), - y2: (activeObjectTop > objectTop) - ? (activeObjectTop + activeObjectHeight / 2 + aligningLineOffset) - : (activeObjectTop - activeObjectHeight / 2 - aligningLineOffset) + y1: (objectTop < activeObjectTop) + ? (objectTop - objectHeight / 2 - aligningLineOffset) + : (objectTop + objectHeight / 2 + aligningLineOffset), + y2: (activeObjectTop > objectTop) + ? (activeObjectTop + activeObjectHeight / 2 + aligningLineOffset) + : (activeObjectTop - activeObjectHeight / 2 - aligningLineOffset) }); activeObject.set('left', objectLeft + objectWidth / 2 - activeObjectWidth / 2); } - + // snap by the vertical center line if (isInRange(objectTop, activeObjectTop)) { noneInTheRange = false; horizontalLines.push({ - y: objectTop, - x1: (objectLeft < activeObjectLeft) - ? (objectLeft - objectWidth / 2 - aligningLineOffset) - : (objectLeft + objectWidth / 2 + aligningLineOffset), - x2: (activeObjectLeft > objectLeft) - ? (activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset) + y: objectTop, + x1: (objectLeft < activeObjectLeft) + ? (objectLeft - objectWidth / 2 - aligningLineOffset) + : (objectLeft + objectWidth / 2 + aligningLineOffset), + x2: (activeObjectLeft > objectLeft) + ? (activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset) : (activeObjectLeft - activeObjectWidth / 2 - aligningLineOffset) }); activeObject.set('top', objectTop); } - + // snap by the top edge if (isInRange(objectTop - objectHeight / 2, activeObjectTop - activeObjectHeight / 2)) { noneInTheRange = false; horizontalLines.push({ - y: objectTop - objectHeight / 2, - x1: (objectLeft < activeObjectLeft) - ? (objectLeft - objectWidth / 2 - aligningLineOffset) - : (objectLeft + objectWidth / 2 + aligningLineOffset), - x2: (activeObjectLeft > objectLeft) - ? (activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset) + y: objectTop - objectHeight / 2, + x1: (objectLeft < activeObjectLeft) + ? (objectLeft - objectWidth / 2 - aligningLineOffset) + : (objectLeft + objectWidth / 2 + aligningLineOffset), + x2: (activeObjectLeft > objectLeft) + ? (activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset) : (activeObjectLeft - activeObjectWidth / 2 - aligningLineOffset) }); activeObject.set('top', objectTop - objectHeight / 2 + activeObjectHeight / 2); } - + // snap by the bottom edge if (isInRange(objectTop + objectHeight / 2, activeObjectTop + activeObjectHeight / 2)) { noneInTheRange = false; horizontalLines.push({ y: objectTop + objectHeight / 2, - x1: (objectLeft < activeObjectLeft) - ? (objectLeft - objectWidth / 2 - aligningLineOffset) - : (objectLeft + objectWidth / 2 + aligningLineOffset), - x2: (activeObjectLeft > objectLeft) - ? (activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset) + x1: (objectLeft < activeObjectLeft) + ? (objectLeft - objectWidth / 2 - aligningLineOffset) + : (objectLeft + objectWidth / 2 + aligningLineOffset), + x2: (activeObjectLeft > objectLeft) + ? (activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset) : (activeObjectLeft - activeObjectWidth / 2 - aligningLineOffset) }); activeObject.set('top', objectTop + objectHeight / 2 - activeObjectHeight / 2); } } - + if (noneInTheRange) { verticalLines.length = horizontalLines.length = 0; } }); - + canvas.observe('after:render', function() { for (var i = verticalLines.length; i--; ) { drawVerticalLine(verticalLines[i]); @@ -179,7 +179,7 @@ function initAligningGuidelines(canvas) { drawHorizontalLine(horizontalLines[i]); } }); - + canvas.observe('mouse:up', function() { verticalLines.length = horizontalLines.length = 0; canvas.renderAll(); diff --git a/lib/centering_guidelines.js b/lib/centering_guidelines.js index 13a26565..6509fdfe 100644 --- a/lib/centering_guidelines.js +++ b/lib/centering_guidelines.js @@ -1,11 +1,11 @@ /** - * Augments canvas by assigning to `onObjectMove` and `onAfterRender`. - * This kind of sucks because other code using those methods will stop functioning. + * Augments canvas by assigning to `onObjectMove` and `onAfterRender`. + * This kind of sucks because other code using those methods will stop functioning. * Need to fix it by replacing callbacks with pub/sub kind of subscription model. * (or maybe use existing fabric.util.fire/observe (if it won't be too slow)) */ function initCenteringGuidelines(canvas) { - + var canvasWidth = canvas.getWidth(), canvasHeight = canvas.getHeight(), canvasWidthCenter = canvasWidth / 2, @@ -16,22 +16,22 @@ function initCenteringGuidelines(canvas) { centerLineColor = 'rgba(255,0,241,0.5)', centerLineWidth = 1, ctx = canvas.getContext(); - + for (var i = canvasWidthCenter - centerLineMargin, len = canvasWidthCenter + centerLineMargin; i <= len; i++) { canvasWidthCenterMap[i] = true; } for (var i = canvasHeightCenter - centerLineMargin, len = canvasHeightCenter + centerLineMargin; i <= len; i++) { canvasHeightCenterMap[i] = true; } - + function showVerticalCenterLine() { showCenterLine(canvasWidthCenter + 0.5, 0, canvasWidthCenter + 0.5, canvasHeight); } - + function showHorizontalCenterLine() { showCenterLine(0, canvasHeightCenter + 0.5, canvasWidth, canvasHeightCenter + 0.5); } - + function showCenterLine(x1, y1, x2, y2) { ctx.save(); ctx.strokeStyle = centerLineColor; @@ -42,17 +42,17 @@ function initCenteringGuidelines(canvas) { ctx.stroke(); ctx.restore(); } - + var afterRenderActions = [ ], isInVerticalCenter, isInHorizontalCenter; - + canvas.observe('object:moving', function(e) { - object = e.memo.target; - + object = e.target; + isInVerticalCenter = object.get('left') in canvasWidthCenterMap, isInHorizontalCenter = object.get('top') in canvasHeightCenterMap; - + if (isInHorizontalCenter) { object.set('top', canvasHeightCenter); } @@ -60,7 +60,7 @@ function initCenteringGuidelines(canvas) { object.set('left', canvasWidthCenter); } }); - + canvas.observe('after:render', function() { if (isInVerticalCenter) { showVerticalCenterLine(); @@ -69,7 +69,7 @@ function initCenteringGuidelines(canvas) { showHorizontalCenterLine(); } }); - + canvas.observe('mouse:up', function() { // clear these values, to stop drawing guidelines once mouse is up isInVerticalCenter = isInHorizontalCenter = null; diff --git a/package.json b/package.json index cc5f634b..5d456784 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "0.8.2", + "version": "0.8.3", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/observable.js b/src/observable.js index 48a490b6..26c7a329 100644 --- a/src/observable.js +++ b/src/observable.js @@ -2,7 +2,7 @@ * @namespace */ fabric.Observable = { - + /** * Observes specified event * @method observe @@ -26,7 +26,7 @@ fabric.Observable = { this.__eventListeners[eventName].push(handler); } }, - + /** * Stops event observing for a particular event handler * @method stopObserving @@ -41,14 +41,14 @@ fabric.Observable = { fabric.util.removeFromArray(this.__eventListeners[eventName], handler); } }, - + /** - * Fires event with an optional memo object + * Fires event with an optional options object * @method fire * @param {String} eventName - * @param {Object} [memo] + * @param {Object} [options] */ - fire: function(eventName, memo) { + fire: function(eventName, options) { if (!this.__eventListeners) { this.__eventListeners = { } } @@ -56,7 +56,7 @@ fabric.Observable = { if (!listenersForEvent) return; for (var i = 0, len = listenersForEvent.length; i < len; i++) { // avoiding try/catch for perf. reasons - listenersForEvent[i]({ memo: memo }); + listenersForEvent[i](options || { }); } } }; \ No newline at end of file