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