From a77cbfe2beb50e5cdf50f41ef8fcd56e6641c3ff Mon Sep 17 00:00:00 2001 From: kangax Date: Wed, 13 Feb 2013 20:20:57 +0100 Subject: [PATCH] Text fixes for node-canvas. Version 1.0.9 --- HEADER.js | 2 +- dist/all.js | 10 ++++++---- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 44146 -> 44164 bytes package.json | 2 +- src/node.js | 1 + src/text.class.js | 7 ++++--- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/HEADER.js b/HEADER.js index 4cb8341f..c7a791ff 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.0.7" }; +var fabric = fabric || { version: "1.0.9" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 205b0a6d..370bbc21 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.0.7" }; +var fabric = fabric || { version: "1.0.9" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; @@ -15356,7 +15356,7 @@ fabric.Image.filters.Pixelate.fromObject = function(object) { * @property * @type Number */ - fontWeight: 400, + fontWeight: 'normal', /** * Font family @@ -15914,8 +15914,9 @@ fabric.Image.filters.Pixelate.fromObject = function(object) { */ _getFontDeclaration: function() { return [ - this.fontStyle, - this.fontWeight, + // node-canvas needs "weight style", while browsers need "style weight" + (fabric.isLikelyNode ? this.fontWeight : this.fontStyle), + (fabric.isLikelyNode ? this.fontStyle : this.fontWeight), this.fontSize + 'px', (fabric.isLikelyNode ? ('"' + this.fontFamily + '"') : this.fontFamily) ].join(' '); @@ -16382,6 +16383,7 @@ fabric.Image.filters.Pixelate.fromObject = function(object) { var fabricCanvas = new FabricCanvas(canvasEl); fabricCanvas.contextContainer = nodeCanvas.getContext('2d'); fabricCanvas.nodeCanvas = nodeCanvas; + fabricCanvas.Font = Canvas.Font; return fabricCanvas; }; diff --git a/dist/all.min.js b/dist/all.min.js index 0a9e25ca..5280891c 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,5 +1,5 @@ -/* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.0.7"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function 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;if(e.length>1){var i=e.some(function(e){return e.type==="text"});i?(r=new fabric.Group([],t),e.reverse().forEach(function(e){e.cx&&(e.left=e.cx),e.cy&&(e.top=e.cy),r.addWithUpdate(e)})):r=new fabric.PathGroup(e,t)}else r=e[0];return 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(){var e=fabric.document.createElement("canvas");return!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}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}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==1/0&&r!==-1/0&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(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 +/* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.0.9"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function 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;if(e.length>1){var i=e.some(function(e){return e.type==="text"});i?(r=new fabric.Group([],t),e.reverse().forEach(function(e){e.cx&&(e.left=e.cx),e.cy&&(e.top=e.cy),r.addWithUpdate(e)})):r=new fabric.PathGroup(e,t)}else r=e[0];return 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(){var e=fabric.document.createElement("canvas");return!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}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}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==1/0&&r!==-1/0&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(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){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function g(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function y(e){var t="";for(var n=0,r=e.length;n",'",""].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,p=f.length;c0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},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=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())),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');for(var n=0,r=this.getObjects(),i=r.length;n"),t.join("")},isEmpty:function(){return this._objects.length===0},remove:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared"));var t=this._objects,n=t.indexOf(e);return n!==-1&&(t.splice(n,1),this.fire("object:removed",{target:e})),this.renderAll(),e},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3;a0?0:-n),t.ey-(r>0?0:-r),i,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.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.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,t){if(this.width===0||this.height===0)return;e.save();var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||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),n&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(n[0],n[1],n[2],n[3],n[4],n[5])),this._setShadow(e),this._render(e,t),this._removeShadow(e),this.active&&!t&&(this.drawBorders(e),this.hideCorners||this.drawCorners(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},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){if(t.Image){var n=new o;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",!1).set("flipY",!1),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.setActive(!1),r.add(t);var i=r.toDataURL("png");r.dispose(),r=t=null,e&&e(i)}var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){this.originalState={},this.saveState()},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)},setGradientFill:function(e){this.set("fill",t.Gradient.forObject(this,e))},setPatternFill:function(e){this.set("fill",new t.Pattern(e))},setShadow:function(e){this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this,s;n=n.toString(),r?r=t.util.object.clone(r):r={},~e.indexOf(".")&&(s=e.split("."));var o=s?this .get(s[0])[s[1]]:this.get(e);"from"in r||(r.from=o),~n.indexOf("=")?n=o+parseFloat(n.replace("=","")):n=parseFloat(n),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){s?i[s[0]][s[1]]=t:i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.canvas.sendToBack(this),this},bringToFront:function(){return this.canvas.bringToFront(this),this},sendBackwards:function(){return this.canvas.sendBackwards(this),this},bringForward:function(){return this.canvas.bringForward(this),this}});var f=t.Object.prototype;for(var l=f.stateProperties.length;l--;){var c=f.stateProperties[l],h=c.charAt(0).toUpperCase()+c.slice(1),p="set"+h,d="get"+h;f[d]||(f[d]=function(e){return new Function('return this.get("'+e+'")')}(c)),f[p]||(f[p]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(c))}t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+this.getWidth()/2:n==="right"&&(i=t.x-this.getWidth()/2),r==="top"?s=t.y+this.getHeight()/2:r==="bottom"&&(s=t.y-this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-this.getWidth()/2:n==="right"&&(i=t.x+this.getWidth()/2),r==="top"?s=t.y-this.getHeight()/2:r==="bottom"&&(s=t.y+this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-this.getWidth()/2:n==="right"?s=i.x+this.getWidth()/2:s=i.x,r==="top"?o=i.y-this.getHeight()/2:r==="bottom"?o=i.y+this.getHeight()/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y);return r.x>e.x&&i.xe.y&&s.y1?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(this.currentHeight/this.currentWidth),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:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords(),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,a),o=this._findCrossPoints(i,s,u);if(o%2===1&&o!==0)return this.__corner=a,a}return!1},_findCrossPoints:function(e,t,n){var r,i,s,o,u,a,f=0,l;for(var c in n){l=n[c];if(l.o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,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;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},drawCorners:function(e){if(!this.hasControls)return;var t=this.cornerSize,n=t/2,r=this.strokeWidth/2,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",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};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath(),this.group&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){return'"},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this.fill&&e.fill(),this._removeShadow(e),this.stroke&&e.stroke()},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"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.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=this.width/2,t=this.height/2,n=[-e+" "+t,"0 "+ -t,e+" "+t].join(",");return'"}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this.stroke&&e.stroke(),this._removeShadow(e),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),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;e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&this.group&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this.fill&&e.fill(),this._removeShadow(e),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_renderDashedStroke:function(e){function u(u,a){var f=0,l=0,c=(a?i.height:i.width)+s*2;while(fc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return'"}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,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=[];for(var t=0,r=this.points.length;t"].join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"].join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[];for(var t=0,n=this.path.length;t',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n,r,i;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke,o=t.util.removeFromArray;if(t.Group)return;var u={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,{type:"group",initialize:function(e,t){t=t||{},this.objects=e||[],this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n. -get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.hideCorners=!0},this)},toString:function(){return"#"},getObjects:function(){return this.objects},addWithUpdate:function(e){return this._restoreObjectsState(),this.objects.push(e),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this.objects,e),e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this.objects.push(e),this},remove:function(e){return o(this.objects,e),this},size:function(){return this.getObjects().length},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,lineHeight:!0,textDecoration:!0,textShadow:!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},contains:function(e){return this.objects.indexOf(e)>-1},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this.objects,"toObject",e)})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=this.objects.length;r>0;r--){var i=this.objects[r-1],s=i.borderScaleFactor,o=i.hasRotatingPoint;i.borderScaleFactor=n,i.hasRotatingPoint=!1,i.render(e),i.borderScaleFactor=s,i.hasRotatingPoint=o}!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this.objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hideCorners=!1,e.setActive(!1),e.setCoords(),this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this.objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this.objects.length;while(e--)this.objects[e].toGrayscale();return this},toSVG:function(){var e=[];for(var t=0,n=this.objects.length;t'+e.join("")+""},get:function(e){if(e in u){if(this[e])return this[e];for(var t=0,n=this.objects.length;t'+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.util.createCanvasElement(),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").substring(22);i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._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){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){r||(r={});var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(i,r))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.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.setActive(!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters={},fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0];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){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),this._setTextStyles(e);var t=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,t),this.height=this._getTextHeight(e,t),this._renderTextBackground(e,t),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this._renderTextFill(e,t),this.textShadow&&e.restore(),this._renderTextStroke(e,t),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,t),this._setBoundaries(e,t),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_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[this.fontStyle,this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e},render:function(e,t){e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},setFontsize:function(e){return this.set("fontSize",e),this._initDimensions(),this.setCoords(),this},getText:function(){return this.text},setText:function(e){return this.set("text",e),this._initDimensions(),this.setCoords(),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t)}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i}}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.createClient(r.port,r.hostname),s=i.request("GET",r.pathname,{host:r.hostname});i.addListener("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+i.host+":"+i.port):fabric.log(e.message)}),s.end(),s.on("response",function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=new Image;e&&e.indexOf("data")===0?(r.src=r._src=e,t&&t.call(n,r)):e&&request(e,"binary",function(i){r.src=new Buffer(i,"binary"),r._src=e,t&&t.call(n,r)})},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},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),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.hideCorners=!0},this)},toString:function(){return"#"},getObjects:function(){return this.objects},addWithUpdate:function(e){return this._restoreObjectsState(),this.objects.push(e),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this.objects,e),e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this.objects.push(e),this},remove:function(e){return o(this.objects,e),this},size:function(){return this.getObjects().length},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,lineHeight:!0,textDecoration:!0,textShadow:!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},contains:function(e){return this.objects.indexOf(e)>-1},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this.objects,"toObject",e)})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=this.objects.length;r>0;r--){var i=this.objects[r-1],s=i.borderScaleFactor,o=i.hasRotatingPoint;i.borderScaleFactor=n,i.hasRotatingPoint=!1,i.render(e),i.borderScaleFactor=s,i.hasRotatingPoint=o}!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this.objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hideCorners=!1,e.setActive(!1),e.setCoords(),this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this.objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this.objects.length;while(e--)this.objects[e].toGrayscale();return this},toSVG:function(){var e=[];for(var t=0,n=this.objects.length;t'+e.join("")+""},get:function(e){if(e in u){if(this[e])return this[e];for(var t=0,n=this.objects.length;t'+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.util.createCanvasElement(),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").substring(22);i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._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){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){r||(r={});var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(i,r))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.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.setActive(!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters={},fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0];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){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),this._setTextStyles(e);var t=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,t),this.height=this._getTextHeight(e,t),this._renderTextBackground(e,t),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this._renderTextFill(e,t),this.textShadow&&e.restore(),this._renderTextStroke(e,t),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,t),this._setBoundaries(e,t),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_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){e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},setFontsize:function(e){return this.set("fontSize",e),this._initDimensions(),this.setCoords(),this},getText:function(){return this.text},setText:function(e){return this.set("text",e),this._initDimensions(),this.setCoords(),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t)}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i}}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.createClient(r.port,r.hostname),s=i.request("GET",r.pathname,{host:r.hostname});i.addListener("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+i.host+":"+i.port):fabric.log(e.message)}),s.end(),s.on("response",function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=new Image;e&&e.indexOf("data")===0?(r.src=r._src=e,t&&t.call(n,r)):e&&request(e,"binary",function(i){r.src=new Buffer(i,"binary"),r._src=e,t&&t.call(n,r)})},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.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),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index edb92235c1384d0fc3f8f8ce3bc6ccf70211e829..9d86b624e4e5083e63533a6f6b9dcfe7648b92aa 100644 GIT binary patch literal 44164 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 Si8f(0{(k|*T)9QQZ2|y-L4~jY diff --git a/package.json b/package.json index c394c798..85084448 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.0.7", + "version": "1.0.9", "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/node.js b/src/node.js index 0cfaa7c9..7e09af0f 100644 --- a/src/node.js +++ b/src/node.js @@ -112,6 +112,7 @@ var fabricCanvas = new FabricCanvas(canvasEl); fabricCanvas.contextContainer = nodeCanvas.getContext('2d'); fabricCanvas.nodeCanvas = nodeCanvas; + fabricCanvas.Font = Canvas.Font; return fabricCanvas; }; diff --git a/src/text.class.js b/src/text.class.js index b012a34a..950cd2de 100644 --- a/src/text.class.js +++ b/src/text.class.js @@ -31,7 +31,7 @@ * @property * @type Number */ - fontWeight: 400, + fontWeight: 'normal', /** * Font family @@ -589,8 +589,9 @@ */ _getFontDeclaration: function() { return [ - this.fontStyle, - this.fontWeight, + // node-canvas needs "weight style", while browsers need "style weight" + (fabric.isLikelyNode ? this.fontWeight : this.fontStyle), + (fabric.isLikelyNode ? this.fontStyle : this.fontWeight), this.fontSize + 'px', (fabric.isLikelyNode ? ('"' + this.fontFamily + '"') : this.fontFamily) ].join(' ');