From 0be6a5d556ebff52312575d0a3c94ad1a3407ef9 Mon Sep 17 00:00:00 2001 From: kangax Date: Sun, 12 May 2013 20:30:24 -0400 Subject: [PATCH] Fix node text rendering. Version 1.1.14 --- HEADER.js | 2 +- dist/all.js | 14 ++------------ dist/all.min.js | 8 ++++---- dist/all.min.js.gz | Bin 48230 -> 48211 bytes package.json | 2 +- src/object_origin.mixin.js | 12 +----------- 6 files changed, 9 insertions(+), 29 deletions(-) diff --git a/HEADER.js b/HEADER.js index bf2af435..e06169b0 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.1.13" }; +var fabric = fabric || { version: "1.1.14" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 771190c0..af9ad368 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.1.13" }; +var fabric = fabric || { version: "1.1.14" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; @@ -10995,24 +10995,14 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati var hypotHalf = this.getWidth() / 2; var xHalf = Math.cos(angle) * hypotHalf; var yHalf = Math.sin(angle) * hypotHalf; - - var hypotFull = this.getWidth(); - var xFull = Math.cos(angle) * hypotFull; - var yFull = Math.sin(angle) * hypotFull; - var x = this.left; var y = this.top; - if (this.originX === 'center') { + if (this.originX === 'center' || this.originX === 'right') { // move half left x -= xHalf; y -= yHalf; } - else if (this.originX === 'right') { - // move full left - x -= xFull; - y -= yFull; - } return { x: x, y: y }; } diff --git a/dist/all.min.js b/dist/all.min.js index 10704a49..694fcba9 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,6 +1,6 @@ -/* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.1.13"};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;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function d(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,n){n||(i[t]=e),r()}):(i[t]=s.fromObject(e),r())})}function v(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}var e=Math.sqrt,t=Math.atan2;fabric.util={};var i=Math.PI/180,c=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},h=function(){return c.apply(fabric.window,arguments)};fabric.util.removeFromArray=n,fabric.util.degreesToRadians=s,fabric.util.radiansToDegrees=o,fabric.util.rotatePoint=u,fabric.util.toFixed=a,fabric.util.getRandomInt=r,fabric.util.falseFunction=f,fabric.util.animate=l,fabric.util.requestAnimFrame=h,fabric.util.loadImage=p,fabric.util.enlivenObjects=d,fabric.util.groupSVGElements=v,fabric.util.populateWithProperties=m,fabric.util.drawDashedLine=g,fabric.util.createCanvasElement=y,fabric.util.createImage=b,fabric.util.createAccessors=w,fabric.util.clipContext=E,fabric.util.multiplyTransformMatrices=S}(),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!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r"),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;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function d(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,n){n||(i[t]=e),r()}):(i[t]=s.fromObject(e),r())})}function v(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}var e=Math.sqrt,t=Math.atan2;fabric.util={};var i=Math.PI/180,c=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},h=function(){return c.apply(fabric.window,arguments)};fabric.util.removeFromArray=n,fabric.util.degreesToRadians=s,fabric.util.radiansToDegrees=o,fabric.util.rotatePoint=u,fabric.util.toFixed=a,fabric.util.getRandomInt=r,fabric.util.falseFunction=f,fabric.util.animate=l,fabric.util.requestAnimFrame=h,fabric.util.loadImage=p,fabric.util.enlivenObjects=d,fabric.util.groupSVGElements=v,fabric.util.populateWithProperties=m,fabric.util.drawDashedLine=g,fabric.util.createCanvasElement=y,fabric.util.createImage=b,fabric.util.createAccessors=w,fabric.util.clipContext=E,fabric.util.multiplyTransformMatrices=S}(),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!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e,null).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),t},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.type="text/javascript",r.setAttribute("runat","server"),r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementPosition=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){g.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),g.has(e,function(r){r?g.get(e,function(e){var t=b(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function b(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 w(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 E(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function S(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.multiplyTransformMatrices,o={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 n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),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,h=f.length;c']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2||e.canvas.width,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0;n0&&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)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},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;e in n.colorNameMap&&(e=n.colorNameMap[e]),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)',''),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');for(var n=0,r=this.getObjects(),i=r.length;n"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll&&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,f=u.data.length;a0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s));for(var c=0,h=this._objects.length;c1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},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,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e);if(this.stroke||this.strokeDashArray)e.lineWidth=this.strokeWidth,this.stroke&&this.stroke.toLive?e.strokeStyle=this.stroke.toLive(e):e.strokeStyle=this.stroke;this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke&&!this.strokeDashArray)return;this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e)},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;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",b=typeof G_vmlCanvasManager!="undefined";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,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,b||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,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),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},i=t.StaticCanvas.supports("setLineDash");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();var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):e.translate(this.left,this.top);if(!this.strokeDashArray||this.strokeDashArray&&i)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 n=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=n},_renderDashedStroke:function(e){var n=this.width===1?0:-this.width/2,r=this.height===1?0:-this.height/2;e.beginPath(),t.util.drawDashedLine(e,n,r,-n,-r,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_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._renderFill(e),this._renderStroke(e)},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");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},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._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),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",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.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._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=0,this.y=0},_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,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&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._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+ -s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),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'),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;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];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;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;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.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;ie.x&&i-ne.y},toSVG:function(){var e=[];for(var t=this._objects.length;t--;)e.push(this._objects[t].toSVG());return''+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-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=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},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){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),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.set("active",!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*n.height*4,s=0,o;while(so&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0];var t=fabric.util.createCanvasElement();this.tmpCtx=t.getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group -.width/2,-this.group.height/2),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,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),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)]]}},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?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){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?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},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in s&&(this._initDimensions(),this.setCoords())}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.indexOf("data")===0?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):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.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),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,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,t){if(!e)return;var n=typeof e=="string"?JSON.parse(e):e;if(!n)return;n.objects||(n.objects=[]),this.clear();var r=this;this._enlivenDatalessObjects(n.objects,function(){r._setBgOverlayImages(n,t)})},_enlivenDatalessObjects:function(e,t){function s(e,s){n.insertAt(e,s,!0),e.setCoords(),++r===i&&t&&t()}function o(e,t){var n=e.paths?"paths":"path",r=e[n];delete e[n];if(typeof r!="string")if(e.type==="image"||e.type==="group")fabric[fabric.util.string.capitalize(e.type)].fromObject(e,function(e){s(e,t)});else{var i=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e.type))];if(!i||!i.fromObject)return;r&&(e[n]=r),s(i.fromObject(e),t)}else if(e.type==="image")fabric.util.loadImage(r,function(n){var i=new fabric.Image(n);i.setSourcePath(r),fabric.util.object.extend(i,e),i.setAngle(e.angle),s(i,t)});else if(e.type==="text")if(e.useNative)s(fabric.Text.fromObject(e),t);else{e.path=r;var o=fabric.Text.fromObject(e),u=function(){Object.prototype.toString.call(fabric.window.opera)==="[object Opera]"?setTimeout(function(){s(o,t)},500):s(o,t)};fabric.util.getScript(r,u)}else fabric.loadSVGFromURL(r,function(n){var i=fabric.util.groupSVGElements(n,e,r);i instanceof fabric.PathGroup||(fabric.util.object.extend(i,e),typeof e.angle!="undefined"&&i.setAngle(e.angle)),s(i,t)})}var n=this,r=0,i=e.length;i===0&&t&&t();try{e.forEach(o,this)}catch(u){fabric.log(u)}},loadFromJSON:function(e,t){if(!e)return;var n=typeof e=="string"?JSON.parse(e):e,r=this;return this._enlivenObjects(n.objects,function(){r._setBgOverlayImages(n,t)}),this},_setBgOverlayImages:function(e,t){var n=this,r,i,s,o=function(){t&&i&&s&&r&&t()};e.backgroundImage?this.setBackgroundImage(e.backgroundImage,function(){n.backgroundImageOpacity=e.backgroundImageOpacity,n.backgroundImageStretch=e.backgroundImageStretch,n.renderAll(),i=!0,o()}):i=!0,e.overlayImage?this.setOverlayImage(e.overlayImage,function(){n.overlayImageLeft=e.overlayImageLeft||0,n.overlayImageTop=e.overlayImageTop||0,n.renderAll(),s=!0,o()}):s=!0,e.background?this.setBackgroundColor(e.background,function(){n.renderAll(),r=!0,o()}):r=!0,!e.backgroundImage&&!e.overlayImage&&!e.background&&t&&t()},_enlivenObjects:function(e,t){var n=this;fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){n.insertAt(e,t,!0)}),t&&t()})},_toDataURL:function(e,t){this.clone(function(n){t(n.toDataURL(e))})},_toDataURLWithMultiplier:function(e,t,n){this.clone(function(r){n(r.toDataURLWithMultiplier(e,t))})},clone:function(e){var t=JSON.stringify(this);this.cloneWithoutData(function(n){n.loadFromJSON(t,function(){e&&e(n)})})},cloneWithoutData:function(e){var t=fabric.document.createElement("canvas");t.width=this.getWidth(),t.height=this.getHeight();var n=new fabric.Canvas(t);n.clipTo=this.clipTo,this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,function(){n.renderAll(),e&&e(n)}),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.toFixed,i=t.util.string.capitalize,s=t.util.degreesToRadians,o=t.StaticCanvas.supports("setLineDash");if(t.Object)return;t.Object=t.util.createClass({type:"object",originX:"center",originY:"center",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,strokeDashArray:null,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,stateProperties:"top left width height scaleX scaleY flipX flipY angle opacity cornerSize fill overlayFill originX originY stroke strokeWidth strokeDashArray fillRule borderScaleFactor transformMatrix selectable shadow visible".split(" "),initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&e.fill.colorStops&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},_initPattern:function(e){e.fill&&e.fill.source&&!(e.fill instanceof t.Pattern)&&this.set("fill",new t.Pattern(e.fill)),e.stroke&&e.stroke.source&&!(e.stroke instanceof t.Pattern)&&this.set("stroke",new t.Pattern(e.stroke))},_initShadow:function(e){e.shadow&&!(e.shadow instanceof t.Shadow)&&this.setShadow(e.shadow)},setOptions:function(e){for(var t in e)this.set(t,e[t]);this._initGradient(e),this._initPattern(e),this._initShadow(e)},transform:function(e,t){e.globalAlpha=this.opacity;var n=t?this._getLeftTopCoords():this.getCenterPoint();e.translate(n.x,n.y),e.rotate(s(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this.top,n),width:r(this.width,n),height:r(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.getAngle(),n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint,transparentCorners:this.transparentCorners,perPixelTargetFind:this.perPixelTargetFind,shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)},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&&this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none","; ","opacity: ",typeof this.opacity!="undefined"?this.opacity:"1",";",this.visible?"":" visibility: hidden;"].join("")},getSvgTransform:function(){var e=this.getAngle(),n=this.getCenterPoint(),i=t.Object.NUM_FRACTION_DIGITS,s="translate("+r(n.x,i)+" "+r(n.y,i)+")",o=e!==0?" rotate("+r(e,i)+")":"",u=this.scaleX===1&&this.scaleY===1?"":" scale("+r(this.scaleX,i)+" "+r(this.scaleY,i)+")",a=this.flipX?"matrix(-1 0 0 1 0 0) ":"",f=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[s,o,u,a,f].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},toString:function(){return"#"},get:function(e){return this[e]},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,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e);if(this.stroke||this.strokeDashArray)e.lineWidth=this.strokeWidth,this.stroke&&this.stroke.toLive?e.strokeStyle=this.stroke.toLive(e):e.strokeStyle=this.stroke;this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke&&!this.strokeDashArray)return;this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e)},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;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",b=typeof G_vmlCanvasManager!="undefined";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,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,b||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,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),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},i=t.StaticCanvas.supports("setLineDash");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();var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):e.translate(this.left,this.top);if(!this.strokeDashArray||this.strokeDashArray&&i)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 n=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=n},_renderDashedStroke:function(e){var n=this.width===1?0:-this.width/2,r=this.height===1?0:-this.height/2;e.beginPath(),t.util.drawDashedLine(e,n,r,-n,-r,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_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._renderFill(e),this._renderStroke(e)},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");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},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._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),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",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.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._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=0,this.y=0},_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,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&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._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s +,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),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'),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;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];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;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;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.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;ie.x&&i-ne.y},toSVG:function(){var e=[];for(var t=this._objects.length;t--;)e.push(this._objects[t].toSVG());return''+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-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=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},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){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),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.set("active",!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*n.height*4,s=0,o;while(so&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0];var t=fabric.util.createCanvasElement();this.tmpCtx=t.getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),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,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),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)]]}},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?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){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?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},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in s&&(this._initDimensions(),this.setCoords())}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.indexOf("data")===0?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):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.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),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,e),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 4d3697f09f0f46e81b53ad48e5b3d9b68b44e963..7fabbcb70d3a32784faf5a83160ecf37c6269ddb 100644 GIT binary patch delta 47818 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 delta 47837 zcmV(*K;FO8_yXqm0tX+92na>UkC6u-1Jk?PktwhN(XrY?0)M^NFQ-#k>t!a^{Xw7q{PTe3{jJ}F%q3zp<~a}iObAiwF~Bwx=@ab4cq+tC zy&hUpL3Mwgq^?Hu7LX-`a@V>zFSkF)H=Fr!&T=u=)d1Be0Siz~yj7kp+&SA8C-7+4I z5~$XATgyde1Cp{AZb@$n4G+Q?J5)u;z<_E?98*3okn>HFg@u3|_W!e9JT3t)24On<72a4D1A;tX5UPOAtQ>MDLk z@`s^bvZCIM9{>+DC>Y^ZDwr;6`IIy}iI+*9NgPY2wiFEA0PJyeX98pGfNE|v<%(Kh z7wa~?h6ACu#ziu?mej_qTS)9%&~(&ykk7*zshTN?c3ZKnrO7@2zMd(=^;A%?gg>d3 z!=)cmR)1^vytYGF5~{V`vu0e;L@Ik=@rCLG(&t*`wNct9t*vyVfrEZTEN=kHG}bLA zf)Wg7#Y*y4$#~YdpHkmq(l^OyZ;d78DQTW{G~&C$wcuWXWG}99Bd1}8RV9?;UK1oH z<_CR}a3dPJ_wcY$b>UDrZMX@$W&vlJ22q3^8-I?ACutVjTGBf=EHRpKRh+vvQ-!b& zoXN9bDVx@Ne0X?QkV=fKRuYO!Yx~H)?{eFH7ws*A?Db9j zCQaZ@s5^Aw>I}=hV6}?S0x; l4yyfEsu_&+r#RWuJ4mPCWh1qfh%A)?;rJOM7y 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 REN?XV{{T(>rdW=!0ss?Y!}kCH diff --git a/package.json b/package.json index c2af4bb8..bfb53e46 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": "1.1.13", + "version": "1.1.14", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/object_origin.mixin.js b/src/object_origin.mixin.js index e8ab8a59..5126a8cd 100644 --- a/src/object_origin.mixin.js +++ b/src/object_origin.mixin.js @@ -203,24 +203,14 @@ var hypotHalf = this.getWidth() / 2; var xHalf = Math.cos(angle) * hypotHalf; var yHalf = Math.sin(angle) * hypotHalf; - - var hypotFull = this.getWidth(); - var xFull = Math.cos(angle) * hypotFull; - var yFull = Math.sin(angle) * hypotFull; - var x = this.left; var y = this.top; - if (this.originX === 'center') { + if (this.originX === 'center' || this.originX === 'right') { // move half left x -= xHalf; y -= yHalf; } - else if (this.originX === 'right') { - // move full left - x -= xFull; - y -= yFull; - } return { x: x, y: y }; }