From b330c9d715c8ed7eb7bddaf4cfff3de112d6b3ca Mon Sep 17 00:00:00 2001 From: kangax Date: Mon, 3 Dec 2012 20:23:45 +0100 Subject: [PATCH] Build distribution. Fix unit tests. Version 0.9.27. --- HEADER.js | 2 +- dist/all.js | 20 ++++++++++++++------ dist/all.min.js | 10 +++++----- dist/all.min.js.gz | Bin 40672 -> 40705 bytes package.json | 2 +- test/unit/text.js | 1 + 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/HEADER.js b/HEADER.js index 1ed242d7..a46dfe35 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.9.26" }; +var fabric = fabric || { version: "0.9.27" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 84d1ad6d..3c4bc55b 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.9.26" }; +var fabric = fabric || { version: "0.9.27" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; @@ -851,10 +851,16 @@ Cufon.registerEngine('canvas', (function() { function renderBackground() { g.save(); - g.fillStyle = options.backgroundColor; - var left = 0, lineNum = 0, boundaries = [{ left: 0 }]; + if (options.backgroundColor) { + g.save(); + g.fillStyle = options.backgroundColor; + g.translate(0, font.ascent); + g.fillRect(0, 0, width + 10, (-font.ascent + font.descent) * lines); + g.restore(); + } + if (options.textAlign === 'right') { g.translate(lineOffsets[lineNum], 0); boundaries[0].left = lineOffsets[lineNum] * scale; @@ -904,9 +910,10 @@ Cufon.registerEngine('canvas', (function() { var charWidth = Number(glyph.w || font.w) + letterSpacing; - // only draw background when there's some kind of value - if (options.backgroundColor) { + // only draw text-background when there's some kind of value + if (options.textBackgroundColor) { g.save(); + g.fillStyle = options.textBackgroundColor; g.translate(0, font.ascent); g.fillRect(0, 0, charWidth + 10, -font.ascent + font.descent); g.restore(); @@ -13827,7 +13834,8 @@ fabric.Image.filters.Pixelate.fromObject = function(object) { lineHeight: this.lineHeight, strokeStyle: this.strokeStyle, strokeWidth: this.strokeWidth, - backgroundColor: this.backgroundColor + backgroundColor: this.backgroundColor, + textBackgroundColor: this.textBackgroundColor }); // update width, height diff --git a/dist/all.min.js b/dist/all.min.js index 725a5061..d6f1ee3b 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,5 +1,5 @@ -/* build: `node build.js modules=ALL` *//*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"0.9.26"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(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 Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.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(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_r?n:i-t;s(u(l,a,c,n));if(i>r||o()){e.onComplete&&e.onComplete();return}f(h)}()}function l(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function c(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e){i[t]=e,r()}):(i[t]=s.fromObject(e),r())})}function h(e,t,n){var r=e.length>1?new fabric.PathGroup(e,t):e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}function p(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;r=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==1/0&&r!==-1/0&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),t},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.type="text/javascript",r.setAttribute("runat","server"),r.onload=r.onreadystatechange= -function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementPosition=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function g(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function y(e){var t="";for(var n=0,r=e.length;n",'",""].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,p=f.length;c0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){arguments.length>0&&this.init(e)}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={init:function(e){this.status=e,this.points=[]},appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n("No Intersection")}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n("No Intersection"),s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n("No Intersection"),i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n("No Intersection");return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t=n.sourceFromHex(e);t||(t=n.sourceFromRgb(e)),t&&this.setSource(t)},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHex:function(){var e=this.getSource(),t=e[0].toString(16);t=t.length===1?"0"+t:t;var n=e[1].toString(16);n=n.length===1?"0"+n:n;var r=e[2].toString(16);return r=r.length===1?"0"+r:r,t.toUpperCase()+n.toUpperCase()+r.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((e[0]*.3+e[1]*.59+e[2]*.11).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),r=t[3];return e=e||127,n=Number(n)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];this.backgroundImage&&e.push(''),this.overlayImage&&e.push('');for(var t=0,n=this.getObjects(),r=n.length;t"),e.join("")},isEmpty:function(){return this._objects.length===0},remove:function(e){return n(this._objects,e),this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),this.renderAll(),e},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3;a0?0:-n),t.ey-(r>0?0:-r),i,s),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var o=t.ex+v-(n>0?0:i),u=t.ey+v-(r>0?0:s);e.beginPath(),this.drawDashedLine(e,o,u,o+i,u,this.selectionDashArray),this.drawDashedLine(e,o,u+s-1,o+i,u+s-1,this.selectionDashArray),this.drawDashedLine(e,o,u,o,u+s,this.selectionDashArray),this.drawDashedLine(e,o+i-1,u,o+i-1,u+s,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+v-(n>0?0:i),t.ey+v-(r>0?0:s),i,s)},drawDashedLine:function(e,t,n,r,i,s){var o=r-t,u=i-n,a=Math.sqrt(o*o+u*u),f=Math.atan2(u,o),l=s.length,c=0,h=!0;e.save(),e.translate(t,n),e.moveTo(0,0),e.rotate(f),t=0;while(a>t)t+=s[c++%l],t>a&&(t=a),e[h?"lineTo":"moveTo"](t,0),h=!h;e.restore()},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,o,u=new fabric.Point(p(n,i),p(r,s)),a=new fabric.Point(d(n,i),d(r,s));for(var f=0,l=this._objects.length;f1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t})),this.renderAll()},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var r=(e==="scaleX"||e==="scaleY")&&n1?this.strokeWidth:0,t=this.padding,n=o(this.angle);this.currentWidth=(this.width+e)*this.scaleX+t*2,this.currentHeight=(this.height+e)*this.scaleY+t*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var r=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),i=Math.atan(this.currentHeight/this.currentWidth),s=Math.cos(i+n)*r,u=Math.sin(i+n)*r,a=Math.sin(n),f=Math.cos(n),l={x:this.left-s,y:this.top-u},c={x:l.x+this.currentWidth*f,y:l.y+this.currentWidth*a},h={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},p={x:l.x-this.currentHeight*a,y:l.y+this.currentHeight*f},d={x:l.x-this.currentHeight/2*a,y:l.y+this.currentHeight/2*f},v={x:l.x+this.currentWidth/2*f,y:l.y+this.currentWidth/2*a},m={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},g={x:p.x+this.currentWidth/2*f,y:p.y+this.currentWidth/2*a},y={x:l.x+this.currentWidth/2*f,y:l.y+this.currentWidth/2*a};return this.oCoords={tl:l,tr:c,br:h,bl:p,ml:d,mt:v,mr:m,mb:g,mtr:y},this._setCornerCoords(),this},getBoundingRectWidth:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},getBoundingRectHeight:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},drawBorders:function(e){if(!this.hasBorders)return;var n=t.Object.MIN_SCALE_LIMIT,r=this.padding,i=r*2,s=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var o=1/(this.scaleXc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},drawCorners:function(e){if(!this.hasControls)return;var t=this.cornersize,n=t/2,r=this.strokeWidth/2,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),this.lockUniScaling||(o=i+g/2-p,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){if(t.Image){var n=new Image;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",!1).set("flipY",!1),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.setActive(!1),r.add(t);var i=r.toDataURL("png");r.dispose(),r=t=null,e&&e(i)}var n=t.document.createElement("canvas");!n.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(n),n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){this.originalState={},this.saveState()},intersectsWithRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y),u=new t.Point(r.br.x,r.br.y),a=t.Intersection.intersectPolygonRectangle([i,s,u,o],e,n);return a.status==="Intersection"},intersectsWithObject:function(e){function n(e){return{tl:new t.Point(e.tl.x,e.tl.y),tr:new t.Point(e.tr.x,e.tr.y),bl:new t.Point(e.bl.x,e.bl.y),br:new t.Point(e.br.x,e.br.y)}}var r=n(this.oCoords),i=n(e.oCoords),s=t.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[i.tl,i.tr,i.br,i.bl]);return s.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y);return i.x>e.x&&s.xe.y&&o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,t=o(this.angle),n=o(45-this.angle),r=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=r*Math.cos(n),s=r*Math.sin(n),u=Math.sin(t),a=Math.cos(t);e.tl.corner={tl:{x:e.tl.x-s,y:e.tl.y-i},tr:{x:e.tl.x+i,y:e.tl.y-s},bl:{x:e.tl.x-i,y:e.tl.y+s},br:{x:e.tl.x+s,y:e.tl.y+i}},e.tr.corner={tl:{x:e.tr.x-s,y:e.tr.y-i},tr:{x:e.tr.x+i,y:e.tr.y-s},br:{x:e.tr.x+s,y:e.tr.y+i},bl:{x:e.tr.x-i,y:e.tr.y+s}},e.bl.corner={tl:{x:e.bl.x-s,y:e.bl.y-i},bl:{x:e.bl.x-i,y:e.bl.y+s},br:{x:e.bl.x+s,y:e.bl.y+i},tr:{x:e.bl.x+i,y:e.bl.y-s}},e.br.corner={tr:{x:e.br.x+i,y:e.br.y-s},bl:{x:e.br.x-i,y:e.br.y+s},br:{x:e.br.x+s,y:e.br.y+i},tl:{x:e.br.x-s,y:e.br.y-i}},e.ml.corner={tl:{x:e.ml.x-s,y:e.ml.y-i},tr:{x:e.ml.x+i,y:e.ml.y-s},bl:{x:e.ml.x-i,y:e.ml.y+s},br:{x:e.ml.x+s,y:e.ml.y+i}},e.mt.corner={tl:{x:e.mt.x-s,y:e.mt.y-i},tr:{x:e.mt.x+i,y:e.mt.y-s},bl:{x:e.mt.x-i,y:e.mt.y+s},br:{x:e.mt.x+s,y:e.mt.y+i}},e.mr.corner={tl:{x:e.mr.x-s,y:e.mr.y-i},tr:{x:e.mr.x+i,y:e.mr.y-s},bl:{x:e.mr.x-i,y:e.mr.y+s},br:{x:e.mr.x+s,y:e.mr.y+i}},e.mb.corner={tl:{x:e.mb.x-s,y:e.mb.y-i},tr:{x:e.mb.x+i,y:e.mb.y-s},bl:{x:e.mb.x-i,y:e.mb.y+s},br:{x:e.mb.x+s,y:e.mb.y+i}},e.mtr.corner={tl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y-i-a*this.rotatingPointOffset},tr:{x:e.mtr.x+i+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},bl:{x:e.mtr.x-i+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset},br:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y+i-a*this.rotatingPointOffset}}},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradientFill:function(e){this.set("fill",t.Gradient.forObject(this,e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this;r||(r={}),"from"in r||(r.from=this.get(e)),/[+\-]/.test((n+"").charAt(0))&&(n=this.get(e)+parseFloat(n)),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.canvas.sendToBack(this),this},bringToFront:function(){return this.canvas.bringToFront(this),this},sendBackwards:function(){return this.canvas.sendBackwards(this),this},bringForward:function(){return this.canvas.bringForward(this),this}});var u=t.Object.prototype;for(var a=u.stateProperties.length;a--;){var f=u.stateProperties[a],l=f.charAt(0).toUpperCase()+f.slice(1),c="set"+l,h="get"+l;u[h]||(u[h]=function(e){return new Function('return this.get("'+e+'")')}(f)),u[c]||(u[c]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(f))}t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),n(t.Object,{NUM_FRACTION_DIGITS:2,MIN_SCALE_LIMIT:.1})}(typeof exports!="undefined"? -exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath(),this.group&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){return'"},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this.fill&&e.fill(),this.stroke&&e.stroke()},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");return"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0),new t.Circle(r(s,n))},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=this.width/2,t=this.height/2,n=[-e+" "+t,"0 "+ -t,e+" "+t].join(",");return'"}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.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(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this.stroke&&e.stroke(),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height;e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&this.group&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this.fill&&e.fill(),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return'"}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions()},_calcDimensions:function(){return t.Polygon.prototype._calcDimensions.call(this)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[];for(var t=0,r=this.points.length;t"].join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"].join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[];for(var t=0,n=this.path.length;t',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n,r,i;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke,o=t.util.removeFromArray;if(t.Group)return;t.Group=t.util.createClass(t.Object,{type:"group",initialize:function(e,t){t=t||{},this.objects=e||[],this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.hideCorners=!0},this)},toString:function(){return"#"},getObjects:function(){return this.objects},addWithUpdate:function(e){return this._restoreObjectsState(),this.objects.push(e),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this.objects,e),e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this.objects.push(e),this},remove:function(e){return o(this.objects,e),this},size:function(){return this.getObjects().length},_set:function(e,t){if(e==="fill"||e==="opacity"){var n=this.objects.length;this[e]=t;while(n--)this.objects[n].set(e,t)}else this[e]=t},contains:function(e){return this.objects.indexOf(e)>-1},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this.objects,"toObject",e)})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=this.objects.length;r>0;r--){var i=this.objects[r-1],s=i.borderScaleFactor,o=i.hasRotatingPoint;i.borderScaleFactor=n,i.hasRotatingPoint=!1,i.render(e),i.borderScaleFactor=s,i.hasRotatingPoint=o}!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this.objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hideCorners=!1,e.setActive(!1),e.setCoords(),this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this.objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this.objects.length;while(e--)this.objects[e].toGrayscale()},toSVG:function(){var e=[];for(var t=0,n=this.objects.length;t'+e.join("")+""}}),t.Group.fromObject=function(e,n){t.util.enlivenObjects(e.objects,function(r){delete e.objects,n&&n(new t.Group(r,e))})},t.Group.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=fabric.util.object.extend;e.fabric||(e.fabric={});if(e.fabric.Image){fabric.warn("fabric.Image is already defined.");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:!1,type:"image",initialize:function(e,t){t||(t={}),this.callSuper("initialize",t),this._initElement(e),this._originalImage=this.getElement(),this._initConfig(t),this.filters=[],t.filters&&(this.filters=t.filters,this.applyFilters())},getElement:function(){return this._element},setElement:function(e){return this._element=e,this._initConfig(),this},getOriginalSize:function(){var e=this.getElement();return{width:e.width,height:e.height}},render:function(e,t){e.save();var n=this.transformMatrix;this._resetWidthHeight(),this.group&&e.translate(-this.group.width/2+this.width/2,-this.group.height/2+this.height/2),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e),this._render(e),this.active&&!t&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(e){return t(this.callSuper("toObject",e),{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(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.document.createElement("canvas"),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;!r.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(r),r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").replace(/data:image\/png;base64,/,"");i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=null},n.src=r},fabric.Image.fromURL=function(e,t,n){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){r||(r={});var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(i,r))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.get("angle");return e>-225&&e<=-135?-180:e>-135&&e<=-45?-90:e>-45&&e<=45?0:e>45&&e<=135?90:e>135&&e<=225?180:e>225&&e<=315?270:e>315?360:0},straighten:function(){var e=this._getAngleValueForStraighten();return this.setAngle(e),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.setActive(!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters={},fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0],this.tmpCtx=fabric.document.createElement("canvas").getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{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=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),this._setTextStyles(e);var t=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,t),this.height=this._getTextHeight(e,t),this._renderTextBackground(e,t),this.textAlign!=="left"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this._renderTextFill(e,t),this.textShadow&&e.restore(),this._renderTextStroke(e,t),this.textAlign!=="left"&&e.restore(),this._renderTextDecoration(e,t),this._setBoundaries(e,t),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_renderTextFill:function(e,t){this._boundaries=[];for(var n=0,r=t.length;n-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e},render:function(e,t){e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{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,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},setFontsize:function(e){return this.set("fontSize",e),this._initDimensions(),this.setCoords(),this},getText:function(){return this.text},setText:function(e){return this.set("text",e),this._initDimensions(),this.setCoords(),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t)}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i}}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.createClient(r.port,r.hostname),s=i.request("GET",r.pathname,{host:r.hostname});i.addListener("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+i.host+":"+i.port):fabric.log(e.message)}),s.end(),s.on("response",function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})})}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;fabric.util.loadImage=function(e,t){request(e,"binary",function(n){var r=new Image;r.src=new Buffer(n,"binary"),r._src=e,t(r)})},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +/* build: `node build.js modules=ALL` *//*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"0.9.27"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(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 Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.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(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_r?n:i-t;s(u(l,a,c,n));if(i>r||o()){e.onComplete&&e.onComplete();return}f(h)}()}function l(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function c(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e){i[t]=e,r()}):(i[t]=s.fromObject(e),r())})}function h(e,t,n){var r=e.length>1?new fabric.PathGroup(e,t):e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}function p(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;r=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==1/0&&r!==-1/0&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),t},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName +("head")[0],r=fabric.document.createElement("script"),i=!0;r.type="text/javascript",r.setAttribute("runat","server"),r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementPosition=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function g(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function y(e){var t="";for(var n=0,r=e.length;n",'",""].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,p=f.length;c0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){arguments.length>0&&this.init(e)}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={init:function(e){this.status=e,this.points=[]},appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n("No Intersection")}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n("No Intersection"),s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n("No Intersection"),i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n("No Intersection");return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t=n.sourceFromHex(e);t||(t=n.sourceFromRgb(e)),t&&this.setSource(t)},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHex:function(){var e=this.getSource(),t=e[0].toString(16);t=t.length===1?"0"+t:t;var n=e[1].toString(16);n=n.length===1?"0"+n:n;var r=e[2].toString(16);return r=r.length===1?"0"+r:r,t.toUpperCase()+n.toUpperCase()+r.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((e[0]*.3+e[1]*.59+e[2]*.11).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),r=t[3];return e=e||127,n=Number(n)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];this.backgroundImage&&e.push(''),this.overlayImage&&e.push('');for(var t=0,n=this.getObjects(),r=n.length;t"),e.join("")},isEmpty:function(){return this._objects.length===0},remove:function(e){return n(this._objects,e),this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),this.renderAll(),e},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3;a0?0:-n),t.ey-(r>0?0:-r),i,s),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var o=t.ex+v-(n>0?0:i),u=t.ey+v-(r>0?0:s);e.beginPath(),this.drawDashedLine(e,o,u,o+i,u,this.selectionDashArray),this.drawDashedLine(e,o,u+s-1,o+i,u+s-1,this.selectionDashArray),this.drawDashedLine(e,o,u,o,u+s,this.selectionDashArray),this.drawDashedLine(e,o+i-1,u,o+i-1,u+s,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+v-(n>0?0:i),t.ey+v-(r>0?0:s),i,s)},drawDashedLine:function(e,t,n,r,i,s){var o=r-t,u=i-n,a=Math.sqrt(o*o+u*u),f=Math.atan2(u,o),l=s.length,c=0,h=!0;e.save(),e.translate(t,n),e.moveTo(0,0),e.rotate(f),t=0;while(a>t)t+=s[c++%l],t>a&&(t=a),e[h?"lineTo":"moveTo"](t,0),h=!h;e.restore()},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,o,u=new fabric.Point(p(n,i),p(r,s)),a=new fabric.Point(d(n,i),d(r,s));for(var f=0,l=this._objects.length;f1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t})),this.renderAll()},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var r=(e==="scaleX"||e==="scaleY")&&n1?this.strokeWidth:0,t=this.padding,n=o(this.angle);this.currentWidth=(this.width+e)*this.scaleX+t*2,this.currentHeight=(this.height+e)*this.scaleY+t*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var r=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),i=Math.atan(this.currentHeight/this.currentWidth),s=Math.cos(i+n)*r,u=Math.sin(i+n)*r,a=Math.sin(n),f=Math.cos(n),l={x:this.left-s,y:this.top-u},c={x:l.x+this.currentWidth*f,y:l.y+this.currentWidth*a},h={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},p={x:l.x-this.currentHeight*a,y:l.y+this.currentHeight*f},d={x:l.x-this.currentHeight/2*a,y:l.y+this.currentHeight/2*f},v={x:l.x+this.currentWidth/2*f,y:l.y+this.currentWidth/2*a},m={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},g={x:p.x+this.currentWidth/2*f,y:p.y+this.currentWidth/2*a},y={x:l.x+this.currentWidth/2*f,y:l.y+this.currentWidth/2*a};return this.oCoords={tl:l,tr:c,br:h,bl:p,ml:d,mt:v,mr:m,mb:g,mtr:y},this._setCornerCoords(),this},getBoundingRectWidth:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},getBoundingRectHeight:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},drawBorders:function(e){if(!this.hasBorders)return;var n=t.Object.MIN_SCALE_LIMIT,r=this.padding,i=r*2,s=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var o=1/(this.scaleXc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},drawCorners:function(e){if(!this.hasControls)return;var t=this.cornersize,n=t/2,r=this.strokeWidth/2,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),this.lockUniScaling||(o=i+g/2-p,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){if(t.Image){var n=new Image;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",!1).set("flipY",!1),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.setActive(!1),r.add(t);var i=r.toDataURL("png");r.dispose(),r=t=null,e&&e(i)}var n=t.document.createElement("canvas");!n.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(n),n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){this.originalState={},this.saveState()},intersectsWithRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y),u=new t.Point(r.br.x,r.br.y),a=t.Intersection.intersectPolygonRectangle([i,s,u,o],e,n);return a.status==="Intersection"},intersectsWithObject:function(e){function n(e){return{tl:new t.Point(e.tl.x,e.tl.y),tr:new t.Point(e.tr.x,e.tr.y),bl:new t.Point(e.bl.x,e.bl.y),br:new t.Point(e.br.x,e.br.y)}}var r=n(this.oCoords),i=n(e.oCoords),s=t.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[i.tl,i.tr,i.br,i.bl]);return s.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y);return i.x>e.x&&s.xe.y&&o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,t=o(this.angle),n=o(45-this.angle),r=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=r*Math.cos(n),s=r*Math.sin(n),u=Math.sin(t),a=Math.cos(t);e.tl.corner={tl:{x:e.tl.x-s,y:e.tl.y-i},tr:{x:e.tl.x+i,y:e.tl.y-s},bl:{x:e.tl.x-i,y:e.tl.y+s},br:{x:e.tl.x+s,y:e.tl.y+i}},e.tr.corner={tl:{x:e.tr.x-s,y:e.tr.y-i},tr:{x:e.tr.x+i,y:e.tr.y-s},br:{x:e.tr.x+s,y:e.tr.y+i},bl:{x:e.tr.x-i,y:e.tr.y+s}},e.bl.corner={tl:{x:e.bl.x-s,y:e.bl.y-i},bl:{x:e.bl.x-i,y:e.bl.y+s},br:{x:e.bl.x+s,y:e.bl.y+i},tr:{x:e.bl.x+i,y:e.bl.y-s}},e.br.corner={tr:{x:e.br.x+i,y:e.br.y-s},bl:{x:e.br.x-i,y:e.br.y+s},br:{x:e.br.x+s,y:e.br.y+i},tl:{x:e.br.x-s,y:e.br.y-i}},e.ml.corner={tl:{x:e.ml.x-s,y:e.ml.y-i},tr:{x:e.ml.x+i,y:e.ml.y-s},bl:{x:e.ml.x-i,y:e.ml.y+s},br:{x:e.ml.x+s,y:e.ml.y+i}},e.mt.corner={tl:{x:e.mt.x-s,y:e.mt.y-i},tr:{x:e.mt.x+i,y:e.mt.y-s},bl:{x:e.mt.x-i,y:e.mt.y+s},br:{x:e.mt.x+s,y:e.mt.y+i}},e.mr.corner={tl:{x:e.mr.x-s,y:e.mr.y-i},tr:{x:e.mr.x+i,y:e.mr.y-s},bl:{x:e.mr.x-i,y:e.mr.y+s},br:{x:e.mr.x+s,y:e.mr.y+i}},e.mb.corner={tl:{x:e.mb.x-s,y:e.mb.y-i},tr:{x:e.mb.x+i,y:e.mb.y-s},bl:{x:e.mb.x-i,y:e.mb.y+s},br:{x:e.mb.x+s,y:e.mb.y+i}},e.mtr.corner={tl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y-i-a*this.rotatingPointOffset},tr:{x:e.mtr.x+i+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},bl:{x:e.mtr.x-i+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset},br:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y+i-a*this.rotatingPointOffset}}},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradientFill:function(e){this.set("fill",t.Gradient.forObject(this,e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this;r||(r={}),"from"in r||(r.from=this.get(e)),/[+\-]/.test((n+"").charAt(0))&&(n=this.get(e)+parseFloat(n)),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.canvas.sendToBack(this),this},bringToFront:function(){return this.canvas.bringToFront(this),this},sendBackwards:function(){return this.canvas.sendBackwards(this),this},bringForward:function(){return this.canvas.bringForward(this),this}});var u=t.Object.prototype;for(var a=u.stateProperties.length;a--;){var f=u.stateProperties[a],l=f.charAt(0).toUpperCase()+f.slice(1),c="set"+l,h="get"+l;u[h]||(u[h]=function(e){return new Function('return this.get("'+e+'")')}(f)),u[c]||(u[c]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(f))}t.Object.prototype.rotate= +t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),n(t.Object,{NUM_FRACTION_DIGITS:2,MIN_SCALE_LIMIT:.1})}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath(),this.group&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){return'"},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this.fill&&e.fill(),this.stroke&&e.stroke()},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");return"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0),new t.Circle(r(s,n))},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=this.width/2,t=this.height/2,n=[-e+" "+t,"0 "+ -t,e+" "+t].join(",");return'"}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.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(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this.stroke&&e.stroke(),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height;e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&this.group&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this.fill&&e.fill(),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return'"}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions()},_calcDimensions:function(){return t.Polygon.prototype._calcDimensions.call(this)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[];for(var t=0,r=this.points.length;t"].join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"].join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[];for(var t=0,n=this.path.length;t',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n,r,i;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke,o=t.util.removeFromArray;if(t.Group)return;t.Group=t.util.createClass(t.Object,{type:"group",initialize:function(e,t){t=t||{},this.objects=e||[],this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.hideCorners=!0},this)},toString:function(){return"#"},getObjects:function(){return this.objects},addWithUpdate:function(e){return this._restoreObjectsState(),this.objects.push(e),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this.objects,e),e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this.objects.push(e),this},remove:function(e){return o(this.objects,e),this},size:function(){return this.getObjects().length},_set:function(e,t){if(e==="fill"||e==="opacity"){var n=this.objects.length;this[e]=t;while(n--)this.objects[n].set(e,t)}else this[e]=t},contains:function(e){return this.objects.indexOf(e)>-1},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this.objects,"toObject",e)})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=this.objects.length;r>0;r--){var i=this.objects[r-1],s=i.borderScaleFactor,o=i.hasRotatingPoint;i.borderScaleFactor=n,i.hasRotatingPoint=!1,i.render(e),i.borderScaleFactor=s,i.hasRotatingPoint=o}!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this.objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hideCorners=!1,e.setActive(!1),e.setCoords(),this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this.objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this.objects.length;while(e--)this.objects[e].toGrayscale()},toSVG:function(){var e=[];for(var t=0,n=this.objects.length;t'+e.join("")+""}}),t.Group.fromObject=function(e,n){t.util.enlivenObjects(e.objects,function(r){delete e.objects,n&&n(new t.Group(r,e))})},t.Group.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=fabric.util.object.extend;e.fabric||(e.fabric={});if(e.fabric.Image){fabric.warn("fabric.Image is already defined.");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:!1,type:"image",initialize:function(e,t){t||(t={}),this.callSuper("initialize",t),this._initElement(e),this._originalImage=this.getElement(),this._initConfig(t),this.filters=[],t.filters&&(this.filters=t.filters,this.applyFilters())},getElement:function(){return this._element},setElement:function(e){return this._element=e,this._initConfig(),this},getOriginalSize:function(){var e=this.getElement();return{width:e.width,height:e.height}},render:function(e,t){e.save();var n=this.transformMatrix;this._resetWidthHeight(),this.group&&e.translate(-this.group.width/2+this.width/2,-this.group.height/2+this.height/2),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e),this._render(e),this.active&&!t&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(e){return t(this.callSuper("toObject",e),{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(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.document.createElement("canvas"),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;!r.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(r),r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").replace(/data:image\/png;base64,/,"");i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=null},n.src=r},fabric.Image.fromURL=function(e,t,n){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){r||(r={});var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(i,r))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.get("angle");return e>-225&&e<=-135?-180:e>-135&&e<=-45?-90:e>-45&&e<=45?0:e>45&&e<=135?90:e>135&&e<=225?180:e>225&&e<=315?270:e>315?360:0},straighten:function(){var e=this._getAngleValueForStraighten();return this.setAngle(e),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.setActive(!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters={},fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0],this.tmpCtx=fabric.document.createElement("canvas").getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{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,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),this._setTextStyles(e);var t=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,t),this.height=this._getTextHeight(e,t),this._renderTextBackground(e,t),this.textAlign!=="left"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this._renderTextFill(e,t),this.textShadow&&e.restore(),this._renderTextStroke(e,t),this.textAlign!=="left"&&e.restore(),this._renderTextDecoration(e,t),this._setBoundaries(e,t),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_renderTextFill:function(e,t){this._boundaries=[];for(var n=0,r=t.length;n-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e},render:function(e,t){e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{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,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},setFontsize:function(e){return this.set("fontSize",e),this._initDimensions(),this.setCoords(),this},getText:function(){return this.text},setText:function(e){return this.set("text",e),this._initDimensions(),this.setCoords(),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t)}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i}}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.createClient(r.port,r.hostname),s=i.request("GET",r.pathname,{host:r.hostname});i.addListener("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+i.host+":"+i.port):fabric.log(e.message)}),s.end(),s.on("response",function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})})}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;fabric.util.loadImage=function(e,t){request(e,"binary",function(n){var r=new Image;r.src=new Buffer(n,"binary"),r._src=e,t(r)})},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this),this.nodeCanvas.height=e,this},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 9ca026e34e933419c199c79069ce3b73ae4fc3db..1c1993c53c1ced09c787a079bdcbd476fc9a4d72 100644 GIT binary patch delta 40156 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 ORD=r0$%I`t~CTGlG97ZTrbA%o@sWE0l0 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 delta 40204 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 diff --git a/package.json b/package.json index f01d0de6..525a987b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "0.9.26", + "version": "0.9.27", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/test/unit/text.js b/test/unit/text.js index a7bc5ab0..c50517d2 100644 --- a/test/unit/text.js +++ b/test/unit/text.js @@ -41,6 +41,7 @@ 'path': null, 'strokeStyle': '', 'backgroundColor': '', + 'textBackgroundColor': '', 'useNative': true };