From d3ee764bc918e734a59f98d3e8536b043858d5e0 Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 20 Oct 2012 20:13:21 +0200 Subject: [PATCH] Build distribution. Version 0.9.16. --- HEADER.js | 2 +- dist/all.js | 72 ++++++++++++++++++++++++++++++++------------- dist/all.min.js | 10 +++---- dist/all.min.js.gz | Bin 39329 -> 39333 bytes package.json | 2 +- 5 files changed, 58 insertions(+), 28 deletions(-) diff --git a/HEADER.js b/HEADER.js index bb612de3..9959d1b0 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.15" }; +var fabric = fabric || { version: "0.9.16" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index b63ba5da..3156b405 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.15" }; +var fabric = fabric || { version: "0.9.16" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -1784,7 +1784,12 @@ fabric.Observable = { this.__eventListeners = { }; } if (this.__eventListeners[eventName]) { - fabric.util.removeFromArray(this.__eventListeners[eventName], handler); + if (handler) { + fabric.util.removeFromArray(this.__eventListeners[eventName], handler); + } + else { + this.__eventListeners[eventName].length = 0; + } } }, @@ -4955,6 +4960,28 @@ fabric.util.string = { */ backgroundImageStretch: true, + /** + * Overlay image of canvas instance + * Should be set via `setOverlayImage` + * @property + * @type String + */ + overlayImage: '', + + /** + * Left offset of overlay image (if present) + * @property + * @type Number + */ + overlayImageLeft: 0, + + /** + * Top offset of overlay image (if present) + * @property + * @type Number + */ + overlayImageTop: 0, + /** * Indicates whether toObject/toDatalessObject should include default values * @property @@ -5000,13 +5027,6 @@ fabric.util.string = { /* NOOP */ }, - /** - * Callback; invoked on every redraw of canvas and is being passed a number indicating current fps - * @method onFpsUpdate - * @param {Number} fps - */ - onFpsUpdate: null, - _initStatic: function(el, options) { this._objects = []; @@ -5374,8 +5394,7 @@ fabric.util.string = { this.clearContext(canvasToDrawOn); } - var activeGroup = this.getActiveGroup(), - startTime = new Date(); + var activeGroup = this.getActiveGroup(); if (this.clipTo) { this._clipCanvas(canvasToDrawOn); @@ -5388,6 +5407,8 @@ fabric.util.string = { this._drawBackroundImage(canvasToDrawOn); } + this.fire('before:render'); + for (var i = 0, length = this._objects.length; i < length; ++i) { if (!activeGroup || (activeGroup && this._objects[i] && !activeGroup.contains(this._objects[i]))) { @@ -5405,18 +5426,13 @@ fabric.util.string = { } if (this.overlayImage) { - this.contextContainer.drawImage(this.overlayImage, 0, 0); + this.contextContainer.drawImage(this.overlayImage, this.overlayImageLeft, this.overlayImageTop); } if (this.controlsAboveOverlay) { this.drawControls(this.contextContainer); } - if (this.onFpsUpdate) { - var elapsedTime = new Date() - startTime; - this.onFpsUpdate(~~(1000 / elapsedTime)); - } - this.fire('after:render'); return this; @@ -5453,7 +5469,7 @@ fabric.util.string = { this.clearContext(this.contextTop || this.contextContainer); if (this.overlayImage) { - this.contextContainer.drawImage(this.overlayImage, 0, 0); + this.contextContainer.drawImage(this.overlayImage, this.overlayImageLeft, this.overlayImageTop); } // we render the top context - last object @@ -6156,10 +6172,24 @@ fabric.util.string = { */ containerClass: 'canvas-container', + /** + * When true, object detection happens on per-pixel basis rather than on per-bounding-box + * @property + * @type Boolean + */ perPixelTargetFind: false, + /** + * Number of pixels around target pixel to tolerate (consider active) during object detection + * @property + * @type Number + */ targetFindTolerance: 0, + /** + * @method _initInteractive + * @private + */ _initInteractive: function() { this._currentTransform = null; this._groupSelector = null; @@ -9612,7 +9642,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { _render: function(ctx, noTransform) { ctx.beginPath(); // multiply by currently set alpha (the one that was set by path group where this object is contained, for example) - ctx.globalAlpha *= this.opacity; + ctx.globalAlpha = this.group ? (ctx.globalAlpha * this.opacity) : this.opacity; ctx.arc(noTransform ? this.left : 0, noTransform ? this.top : 0, this.radius, 0, piBy2, false); ctx.closePath(); if (this.fill) { @@ -9908,7 +9938,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { _render: function(ctx, noTransform) { ctx.beginPath(); ctx.save(); - ctx.globalAlpha *= this.opacity; + ctx.globalAlpha = this.group ? (ctx.globalAlpha * this.opacity) : this.opacity; if (this.transformMatrix && this.group) { ctx.translate(this.cx, this.cy); } @@ -10071,7 +10101,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { h = this.height; ctx.beginPath(); - ctx.globalAlpha *= this.opacity; + ctx.globalAlpha = this.group ? (ctx.globalAlpha * this.opacity) : this.opacity; if (this.transformMatrix && this.group) { ctx.translate( diff --git a/dist/all.min.js b/dist/all.min.js index d66c4e32..56d014dc 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.15"};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,f,c,n));if(i>r||o()){e.onComplete&&e.onComplete();return}a(h)}()}function f(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 l(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 c(e,t,n){var r=e.length>1?new fabric.PathGroup(e,t):e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}fabric.util={};var n=Math.PI/180,u=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},a=function(){return u.apply(fabric.window,arguments)};fabric.util.removeFromArray=e,fabric.util.degreesToRadians=r,fabric.util.toFixed=i,fabric.util.getRandomInt=t,fabric.util.falseFunction=s,fabric.util.animate=o,fabric.util.requestAnimFrame=a,fabric.util.loadImage=f,fabric.util.enlivenObjects=l,fabric.util.groupSVGElements=c}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=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(){function o(){this.initialize.apply(this,arguments)}var n=null,s=e.call(arguments,0);typeof s[0]=="function"&&(n=s.shift()),o.superclass=n,o.subclasses=[],n&&(i.prototype=n.prototype,o.prototype=new i,n.subclasses.push(o));for(var u=0,a=s.length;u-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}),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}(),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('');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)if(e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])){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:-t),e.ey-(n>0?0:-n),r,i),this.contextTop.lineWidth=this.selectionLineWidth,this.contextTop.strokeStyle=this.selectionBorderColor,this.contextTop.strokeRect(e.ex+p-(t>0?0:r),e.ey+p-(n>0?0:i),r,i)},_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(c(n,i),c(r,s)),a=new fabric.Point(h(n,i),h(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),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;u1?t.apply(this,u.call(arguments,1)):t.call(this)},initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&typeof e.fill=="object"&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},setOptions:function(e){var t=this.stateProperties.length,n;while(t--)n=this.stateProperties[t],n in e&&this.set(n,e[n]);this._initGradient(e)},transform:function(e){e.globalAlpha=this.opacity,e.translate(this.left,this.top),e.rotate(this._theta),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var e=t.Object.NUM_FRACTION_DIGITS,n={type:this.type,left:r(this.left,e),top:r(this.top,e),width:r(this.width,e),height:r(this.height,e),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:r(this.scaleX,e),scaleY:r(this.scaleY,e),angle:r(this.getAngle(),e),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,e),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint,transparentCorners:this.transparentCorners,perPixelTargetFind:this.perPixelTargetFind};return this.includeDefaultValues||(n=this._removeDefaultValues(n)),n},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",this.stroke?this.stroke:"none","; ","stroke-width: ",this.strokeWidth?this.strokeWidth:"0","; ","stroke-dasharray: ",this.strokeDashArray?this.strokeDashArray.join(" "):"; ","fill: ",this.fill?this.fill:"none","; ","opacity: ",this.opacity?this.opacity:"1",";"].join("")},getSvgTransform:function(){var e=this.getAngle();return["translate(",r(this.left,2)," ",r(this.top,2),")",e!==0?" rotate("+r(e,2)+")":"",this.scaleX===1&&this.scaleY===1?"":" scale("+r(this.scaleX,2)+" "+r(this.scaleY,2)+")"].join("")},_removeDefaultValues:function(e){var n=t.Object.prototype.options;return n&&this.stateProperties.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},isActive:function(){return!!this.active},setActive:function(e){return this.active=!!e,this},toString:function(){return"#"},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;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)),this._hypotenuse=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),this._angle=Math.atan(this.currentHeight/this.currentWidth);var n=Math.cos(this._angle+this._theta)*this._hypotenuse,r=Math.sin(this._angle+this._theta)*this._hypotenuse,i=this._theta,s=Math.sin(i),o=Math.cos(i),u={x:this.left-n,y:this.top-r},a={x:u.x+this.currentWidth*o,y:u.y+this.currentWidth*s},f={x:a.x-this.currentHeight*s,y:a.y+this.currentHeight*o},l={x:u.x-this.currentHeight*s,y:u.y+this.currentHeight*o},c={x:u.x-this.currentHeight/2*s,y:u.y+this.currentHeight/2*o},h={x:u.x+this.currentWidth/2*o,y:u.y+this.currentWidth/2*s},p={x:a.x-this.currentHeight/2*s,y:a.y+this.currentHeight/2*o},d={x:l.x+this.currentWidth/2*o,y:l.y+this.currentWidth/2*s},v={x:u.x+this.currentWidth/2*o,y:u.y+this.currentWidth/2*s};return this.oCoords={tl:u,tr:a,br:f,bl:l,ml:c,mt:h,mr:p,mb:d,mtr:v},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){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(),e):new t.Object(this.toObject())},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(45-this.getAngle()),n=Math.sqrt(2*Math.pow(this.cornersize,2))/2,r=n*Math.cos(t),i=n*Math.sin(t),s=Math.sin(this._theta),u=Math.cos(this._theta);e.tl.corner={tl:{x:e.tl.x-i,y:e.tl.y-r},tr:{x:e.tl.x+r,y:e.tl.y-i},bl:{x:e.tl.x-r,y:e.tl.y+i},br:{x:e.tl.x+i,y:e.tl.y+r}},e.tr.corner={tl:{x:e.tr.x-i,y:e.tr.y-r},tr:{x:e.tr.x+r,y:e.tr.y-i},br:{x:e.tr.x+i,y:e.tr.y+r},bl:{x:e.tr.x-r,y:e.tr.y+i}},e.bl.corner={tl:{x:e.bl.x-i,y:e.bl.y-r},bl:{x:e.bl.x-r,y:e.bl.y+i},br:{x:e.bl.x+i,y:e.bl.y+r},tr:{x:e.bl.x+r,y:e.bl.y-i}},e.br.corner={tr:{x:e.br.x+r,y:e.br.y-i},bl:{x:e.br.x-r,y:e.br.y+i},br:{x:e.br.x+i,y:e.br.y+r},tl:{x:e.br.x-i,y:e.br.y-r}},e.ml.corner={tl:{x:e.ml.x-i,y:e.ml.y-r},tr:{x:e.ml.x+r,y:e.ml.y-i},bl:{x:e.ml.x-r,y:e.ml.y+i},br:{x:e.ml.x+i,y:e.ml.y+r}},e.mt.corner={tl:{x:e.mt.x-i,y:e.mt.y-r},tr:{x:e.mt.x+r,y:e.mt.y-i},bl:{x:e.mt.x-r,y:e.mt.y+i},br:{x:e.mt.x+i,y:e.mt.y+r}},e.mr.corner={tl:{x:e.mr.x-i,y:e.mr.y-r},tr:{x:e.mr.x+r,y:e.mr.y-i},bl:{x:e.mr.x-r,y:e.mr.y+i},br:{x:e.mr.x+i,y:e.mr.y+r}},e.mb.corner={tl:{x:e.mb.x-i,y:e.mb.y-r},tr:{x:e.mb.x+r,y:e.mb.y-i},bl:{x:e.mb.x-r,y:e.mb.y+i},br:{x:e.mb.x+i,y:e.mb.y+r}},e.mtr.corner={tl:{x:e.mtr.x-i+s*this.rotatingPointOffset,y:e.mtr.y-r-u*this.rotatingPointOffset},tr:{x:e.mtr.x+r+s*this.rotatingPointOffset,y:e.mtr.y-i-u*this.rotatingPointOffset},bl:{x:e.mtr.x-r+s*this.rotatingPointOffset,y:e.mtr.y+i-u*this.rotatingPointOffset},br:{x:e.mtr.x+i+s*this.rotatingPointOffset,y:e.mtr.y+r-u*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(){return this.toObject()},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}}),t.Object.prototype.rotate=t.Object.prototype.setAngle;var a=t.Object.prototype;for(var f=a.stateProperties.length;f--;){var l=a.stateProperties[f],c=l.charAt(0).toUpperCase()+l.slice(1),h="set"+c,p="get"+c;a[p]||(a[p]=function(e){return new Function('return this.get("'+e+'")')}(l)),a[h]||(a[h]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(l))}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(){return n(this.callSuper("toObject"),{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(){return r(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return'" -},_render:function(e,t){e.beginPath(),e.globalAlpha*=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(){return r(this.callSuper("toObject"),{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.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 n(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={});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.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(){return t.util.object.extend(this.callSuper("toObject"),{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,r){if(!e)return null;var i=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);i=n(i);var s=new t.Rect(t.util.object.extend(r?t.util.object.clone(r):{},i));return s._normalizeLeftTopProperties(i),s},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(){return t.Polygon.prototype.toObject.call(this)},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(){var e=h(this.callSuper("toObject"),{path:this.path});return this.sourcePath&&(e.sourcePath=this.sourcePath),this.transformMatrix&&(e.transformMatrix=this.transformMatrix),e},toDatalessObject:function(){var e=this.toObject();return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},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(){return n(this.callSuper("toObject"),{objects:s(this.objects,"toObject")})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=0,i=this.objects.length;re.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(){return t(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e){this.constructor.fromObject(this.toObject(),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)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed;if(t.Text){t.warn("fabric.Text is already defined");return}t.Text=t.util.createClass(t.Object,{fontSize:40,fontWeight:100,fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,strokeStyle:"",strokeWidth:1,backgroundColor:"",path:null,type:"text",useNative:!0,initialize:function(e,t){t=t||{},this._initStateProperties(),this.text=e,this.setOptions(t),this._theta=this.angle*Math.PI/180,this._initDimensions(),this.setCoords()},_initDimensions:function(){var e=t.document.createElement("canvas");!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),this._render(e.getContext("2d"))},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(),this.stateProperties.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","strokeStyle","strokeWidth","backgroundColor","useNative"),t.util.removeFromArray(this.stateProperties,"width")},toString:function(){return"#'},_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(){return n(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var 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;for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.backgroundColor||!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}}(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.16"};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,f,c,n));if(i>r||o()){e.onComplete&&e.onComplete();return}a(h)}()}function f(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 l(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 c(e,t,n){var r=e.length>1?new fabric.PathGroup(e,t):e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}fabric.util={};var n=Math.PI/180,u=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},a=function(){return u.apply(fabric.window,arguments)};fabric.util.removeFromArray=e,fabric.util.degreesToRadians=r,fabric.util.toFixed=i,fabric.util.getRandomInt=t,fabric.util.falseFunction=s,fabric.util.animate=o,fabric.util.requestAnimFrame=a,fabric.util.loadImage=f,fabric.util.enlivenObjects=l,fabric.util.groupSVGElements=c}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=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(){function o(){this.initialize.apply(this,arguments)}var n=null,s=e.call(arguments,0);typeof s[0]=="function"&&(n=s.shift()),o.superclass=n,o.subclasses=[],n&&(i.prototype=n.prototype,o.prototype=new i,n.subclasses.push(o));for(var u=0,a=s.length;u-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}),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}(),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('');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)if(e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])){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:-t),e.ey-(n>0?0:-n),r,i),this.contextTop.lineWidth=this.selectionLineWidth,this.contextTop.strokeStyle=this.selectionBorderColor,this.contextTop.strokeRect(e.ex+p-(t>0?0:r),e.ey+p-(n>0?0:i),r,i)},_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(c(n,i),c(r,s)),a=new fabric.Point(h(n,i),h(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),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;u1?t.apply(this,u.call(arguments,1)):t.call(this)},initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&typeof e.fill=="object"&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},setOptions:function(e){var t=this.stateProperties.length,n;while(t--)n=this.stateProperties[t],n in e&&this.set(n,e[n]);this._initGradient(e)},transform:function(e){e.globalAlpha=this.opacity,e.translate(this.left,this.top),e.rotate(this._theta),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var e=t.Object.NUM_FRACTION_DIGITS,n={type:this.type,left:r(this.left,e),top:r(this.top,e),width:r(this.width,e),height:r(this.height,e),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:r(this.scaleX,e),scaleY:r(this.scaleY,e),angle:r(this.getAngle(),e),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,e),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint,transparentCorners:this.transparentCorners,perPixelTargetFind:this.perPixelTargetFind};return this.includeDefaultValues||(n=this._removeDefaultValues(n)),n},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",this.stroke?this.stroke:"none","; ","stroke-width: ",this.strokeWidth?this.strokeWidth:"0","; ","stroke-dasharray: ",this.strokeDashArray?this.strokeDashArray.join(" "):"; ","fill: ",this.fill?this.fill:"none","; ","opacity: ",this.opacity?this.opacity:"1",";"].join("")},getSvgTransform:function(){var e=this.getAngle();return["translate(",r(this.left,2)," ",r(this.top,2),")",e!==0?" rotate("+r(e,2)+")":"",this.scaleX===1&&this.scaleY===1?"":" scale("+r(this.scaleX,2)+" "+r(this.scaleY,2)+")"].join("")},_removeDefaultValues:function(e){var n=t.Object.prototype.options;return n&&this.stateProperties.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},isActive:function(){return!!this.active},setActive:function(e){return this.active=!!e,this},toString:function(){return"#"},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;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)),this._hypotenuse=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),this._angle=Math.atan(this.currentHeight/this.currentWidth);var n=Math.cos(this._angle+this._theta)*this._hypotenuse,r=Math.sin(this._angle+this._theta)*this._hypotenuse,i=this._theta,s=Math.sin(i),o=Math.cos(i),u={x:this.left-n,y:this.top-r},a={x:u.x+this.currentWidth*o,y:u.y+this.currentWidth*s},f={x:a.x-this.currentHeight*s,y:a.y+this.currentHeight*o},l={x:u.x-this.currentHeight*s,y:u.y+this.currentHeight*o},c={x:u.x-this.currentHeight/2*s,y:u.y+this.currentHeight/2*o},h={x:u.x+this.currentWidth/2*o,y:u.y+this.currentWidth/2*s},p={x:a.x-this.currentHeight/2*s,y:a.y+this.currentHeight/2*o},d={x:l.x+this.currentWidth/2*o,y:l.y+this.currentWidth/2*s},v={x:u.x+this.currentWidth/2*o,y:u.y+this.currentWidth/2*s};return this.oCoords={tl:u,tr:a,br:f,bl:l,ml:c,mt:h,mr:p,mb:d,mtr:v},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){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(),e):new t.Object(this.toObject())},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(45-this.getAngle()),n=Math.sqrt(2*Math.pow(this.cornersize,2))/2,r=n*Math.cos(t),i=n*Math.sin(t),s=Math.sin(this._theta),u=Math.cos(this._theta);e.tl.corner={tl:{x:e.tl.x-i,y:e.tl.y-r},tr:{x:e.tl.x+r,y:e.tl.y-i},bl:{x:e.tl.x-r,y:e.tl.y+i},br:{x:e.tl.x+i,y:e.tl.y+r}},e.tr.corner={tl:{x:e.tr.x-i,y:e.tr.y-r},tr:{x:e.tr.x+r,y:e.tr.y-i},br:{x:e.tr.x+i,y:e.tr.y+r},bl:{x:e.tr.x-r,y:e.tr.y+i}},e.bl.corner={tl:{x:e.bl.x-i,y:e.bl.y-r},bl:{x:e.bl.x-r,y:e.bl.y+i},br:{x:e.bl.x+i,y:e.bl.y+r},tr:{x:e.bl.x+r,y:e.bl.y-i}},e.br.corner={tr:{x:e.br.x+r,y:e.br.y-i},bl:{x:e.br.x-r,y:e.br.y+i},br:{x:e.br.x+i,y:e.br.y+r},tl:{x:e.br.x-i,y:e.br.y-r}},e.ml.corner={tl:{x:e.ml.x-i,y:e.ml.y-r},tr:{x:e.ml.x+r,y:e.ml.y-i},bl:{x:e.ml.x-r,y:e.ml.y+i},br:{x:e.ml.x+i,y:e.ml.y+r}},e.mt.corner={tl:{x:e.mt.x-i,y:e.mt.y-r},tr:{x:e.mt.x+r,y:e.mt.y-i},bl:{x:e.mt.x-r,y:e.mt.y+i},br:{x:e.mt.x+i,y:e.mt.y+r}},e.mr.corner={tl:{x:e.mr.x-i,y:e.mr.y-r},tr:{x:e.mr.x+r,y:e.mr.y-i},bl:{x:e.mr.x-r,y:e.mr.y+i},br:{x:e.mr.x+i,y:e.mr.y+r}},e.mb.corner={tl:{x:e.mb.x-i,y:e.mb.y-r},tr:{x:e.mb.x+r,y:e.mb.y-i},bl:{x:e.mb.x-r,y:e.mb.y+i},br:{x:e.mb.x+i,y:e.mb.y+r}},e.mtr.corner={tl:{x:e.mtr.x-i+s*this.rotatingPointOffset,y:e.mtr.y-r-u*this.rotatingPointOffset},tr:{x:e.mtr.x+r+s*this.rotatingPointOffset,y:e.mtr.y-i-u*this.rotatingPointOffset},bl:{x:e.mtr.x-r+s*this.rotatingPointOffset,y:e.mtr.y+i-u*this.rotatingPointOffset},br:{x:e.mtr.x+i+s*this.rotatingPointOffset,y:e.mtr.y+r-u*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(){return this.toObject()},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}}),t.Object.prototype.rotate=t.Object.prototype.setAngle;var a=t.Object.prototype;for(var f=a.stateProperties.length;f--;){var l=a.stateProperties[f],c=l.charAt(0).toUpperCase()+l.slice(1),h="set"+c,p="get"+c;a[p]||(a[p]=function(e){return new Function('return this.get("'+e+'")')}(l)),a[h]||(a[h]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(l))}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(){return n(this.callSuper("toObject"),{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(){return r(this.callSuper("toObject"),{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(){return r(this.callSuper("toObject"),{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 n(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={});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(){return t.util.object.extend(this.callSuper("toObject"),{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,r){if(!e)return null;var i=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);i=n(i);var s=new t.Rect(t.util.object.extend(r?t.util.object.clone(r):{},i));return s._normalizeLeftTopProperties(i),s},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(){return t.Polygon.prototype.toObject.call(this)},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(){var e=h(this.callSuper("toObject"),{path:this.path});return this.sourcePath&&(e.sourcePath=this.sourcePath),this.transformMatrix&&(e.transformMatrix=this.transformMatrix),e},toDatalessObject:function(){var e=this.toObject();return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},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(){return n(this.callSuper("toObject"),{objects:s(this.objects,"toObject")})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=0,i=this.objects.length;re.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(){return t(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e){this.constructor.fromObject(this.toObject(),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)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed;if(t.Text){t.warn("fabric.Text is already defined");return}t.Text=t.util.createClass(t.Object,{fontSize:40,fontWeight:100,fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,strokeStyle:"",strokeWidth:1,backgroundColor:"",path:null,type:"text",useNative:!0,initialize:function(e,t){t=t||{},this._initStateProperties(),this.text=e,this.setOptions(t),this._theta=this.angle*Math.PI/180,this._initDimensions(),this.setCoords()},_initDimensions:function(){var e=t.document.createElement("canvas");!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),this._render(e.getContext("2d"))},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(),this.stateProperties.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","strokeStyle","strokeWidth","backgroundColor","useNative"),t.util.removeFromArray(this.stateProperties,"width")},toString:function(){return"#'},_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(){return n(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var 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;for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.backgroundColor||!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}}(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 be4e644efa99c7dc4e8b32637216b4c8382e5a0a..e2c1a5f292b5cae5fa72c4b25eb17618609d86c2 100644 GIT binary patch delta 36086 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 S6Kwrp{Qm-CAupVdCISGtLUaZI delta 36081 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 N{|iZ7W!<_Z0s!XAj0yk% diff --git a/package.json b/package.json index db57c323..d5d6d9ec 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.15", + "version": "0.9.16", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",