mirror of
https://github.com/Hopiu/fabric.js.git
synced 2026-05-05 20:34:45 +00:00
Update distribution and minified files.
This commit is contained in:
parent
313cffa57f
commit
ef93d70c52
2 changed files with 190 additions and 180 deletions
86
dist/all.js
vendored
86
dist/all.js
vendored
|
|
@ -3309,24 +3309,27 @@ fabric.util.animate = animate;
|
|||
* @chainable
|
||||
*/
|
||||
fxCenterObjectH: function (object) {
|
||||
var _this = this,
|
||||
fx = new APE.anim.Animation(),
|
||||
startValue = object.get('left'),
|
||||
endValue = _this.getCenter().left,
|
||||
step = endValue - startValue;
|
||||
callbacks = callbacks || { };
|
||||
|
||||
fx.run = function (percent) {
|
||||
object.set('left', startValue + step * percent);
|
||||
_this.renderAll();
|
||||
};
|
||||
var empty = function() { },
|
||||
onComplete = callbacks.onComplete || empty,
|
||||
onChange = callbacks.onChange || empty,
|
||||
_this = this;
|
||||
|
||||
fx.onend = function () {
|
||||
object.setCoords();
|
||||
};
|
||||
|
||||
fx.duration = FX_DURATION;
|
||||
fx.transition = APE.anim.Transitions[FX_TRANSITION];
|
||||
fx.start();
|
||||
fabric.util.animate({
|
||||
startValue: object.get('left'),
|
||||
endValue: this.getCenter().left,
|
||||
duration: this.FX_DURATION,
|
||||
onChange: function(value) {
|
||||
object.set('left', value);
|
||||
_this.renderAll();
|
||||
onChange();
|
||||
},
|
||||
onComplete: function() {
|
||||
object.setCoords();
|
||||
onComplete();
|
||||
}
|
||||
});
|
||||
|
||||
return this;
|
||||
},
|
||||
|
|
@ -3352,25 +3355,29 @@ fabric.util.animate = animate;
|
|||
* @chainable
|
||||
*/
|
||||
fxCenterObjectV: function (object) {
|
||||
var _this = this,
|
||||
fx = new APE.anim.Animation(),
|
||||
startValue = object.get('top'),
|
||||
endValue = _this.getCenter().top,
|
||||
step = endValue - startValue;
|
||||
callbacks = callbacks || { };
|
||||
|
||||
fx.run = function (percent) {
|
||||
object.set('top', startValue + step * percent).setCoords();
|
||||
_this.renderAll();
|
||||
};
|
||||
var empty = function() { },
|
||||
onComplete = callbacks.onComplete || empty,
|
||||
onChange = callbacks.onChange || empty,
|
||||
_this = this;
|
||||
|
||||
fx.onend = function () {
|
||||
object.setCoords();
|
||||
};
|
||||
fabric.util.animate({
|
||||
startValue: object.get('top'),
|
||||
endValue: this.getCenter().top,
|
||||
duration: this.FX_DURATION,
|
||||
onChange: function(value) {
|
||||
object.set('top', value);
|
||||
_this.renderAll();
|
||||
onChange();
|
||||
},
|
||||
onComplete: function() {
|
||||
object.setCoords();
|
||||
onComplete();
|
||||
}
|
||||
});
|
||||
|
||||
fx.duration = FX_DURATION;
|
||||
fx.transition = APE.anim.Transitions[FX_TRANSITION];
|
||||
|
||||
fx.start();
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
@ -6584,7 +6591,11 @@ fabric.util.animate = animate;
|
|||
|
||||
var fabric = this.fabric || (this.fabric = { }),
|
||||
extend = fabric.util.object.extend,
|
||||
invoke = fabric.util.array.invoke;
|
||||
invoke = fabric.util.array.invoke,
|
||||
parentSet = fabric.Object.prototype.set,
|
||||
parentToObject = fabric.Object.prototype.toObject,
|
||||
camelize = fabric.util.string.camelize,
|
||||
capitalize = fabric.util.string.capitalize;
|
||||
|
||||
if (fabric.PathGroup) {
|
||||
console.warn('fabric.PathGroup is already defined');
|
||||
|
|
@ -6674,7 +6685,7 @@ fabric.util.animate = animate;
|
|||
}
|
||||
}
|
||||
else {
|
||||
fabric.Object.prototype.set.call(this, prop, value);
|
||||
parentSet.call(this, prop, value);
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
|
@ -6684,8 +6695,7 @@ fabric.util.animate = animate;
|
|||
* @return {Object} object representation of an instance
|
||||
*/
|
||||
toObject: function() {
|
||||
var _super = fabric.Object.prototype.toObject;
|
||||
return extend(_super.call(this), {
|
||||
return extend(toObject.call(this), {
|
||||
paths: invoke(this.getObjects(), 'clone'),
|
||||
sourcePath: this.sourcePath
|
||||
});
|
||||
|
|
@ -6764,8 +6774,8 @@ fabric.util.animate = animate;
|
|||
function instantiatePaths(paths) {
|
||||
for (var i = 0, len = paths.length; i < len; i++) {
|
||||
if (!(paths[i] instanceof fabric.Object)) {
|
||||
var klassName = paths[i].type.camelize().capitalize();
|
||||
paths[i] = Canvas[klassName].fromObject(paths[i]);
|
||||
var klassName = capitalize(camelize(paths[i].type));
|
||||
paths[i] = fabric[klassName].fromObject(paths[i]);
|
||||
}
|
||||
}
|
||||
return paths;
|
||||
|
|
|
|||
284
dist/all.min.js
vendored
284
dist/all.min.js
vendored
|
|
@ -1,66 +1,66 @@
|
|||
if(typeof console=="undefined")var console={log:function(){},warn:function(){}};if(!this.JSON)this.JSON={};
|
||||
(function(){function l(k){return k<10?"0"+k:k}function q(k){o.lastIndex=0;return o.test(k)?'"'+k.replace(o,function(p){var r=a[p];return typeof r==="string"?r:"\\u"+("0000"+p.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+k+'"'}function f(k,p){var r,s,t,b,g=e,m,n=p[k];if(n&&typeof n==="object"&&typeof n.toJSON==="function")n=n.toJSON(k);if(typeof c==="function")n=c.call(p,k,n);switch(typeof n){case "string":return q(n);case "number":return isFinite(n)?String(n):"null";case "boolean":case "null":return String(n);
|
||||
case "object":if(!n)return"null";e+=d;m=[];if(Object.prototype.toString.apply(n)==="[object Array]"){b=n.length;for(r=0;r<b;r+=1)m[r]=f(r,n)||"null";t=m.length===0?"[]":e?"[\n"+e+m.join(",\n"+e)+"\n"+g+"]":"["+m.join(",")+"]";e=g;return t}if(c&&typeof c==="object"){b=c.length;for(r=0;r<b;r+=1){s=c[r];if(typeof s==="string")if(t=f(s,n))m.push(q(s)+(e?": ":":")+t)}}else for(s in n)if(Object.hasOwnProperty.call(n,s))if(t=f(s,n))m.push(q(s)+(e?": ":":")+t);t=m.length===0?"{}":e?"{\n"+e+m.join(",\n"+e)+
|
||||
"\n"+g+"}":"{"+m.join(",")+"}";e=g;return t}}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+l(this.getUTCMonth()+1)+"-"+l(this.getUTCDate())+"T"+l(this.getUTCHours())+":"+l(this.getUTCMinutes())+":"+l(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}}var h=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
||||
o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e,d,a={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},c;if(typeof JSON.stringify!=="function")JSON.stringify=function(k,p,r){var s;d=e="";if(typeof r==="number")for(s=0;s<r;s+=1)d+=" ";else if(typeof r==="string")d=r;if((c=p)&&typeof p!=="function"&&(typeof p!=="object"||typeof p.length!=="number"))throw Error("JSON.stringify");return f("",
|
||||
{"":k})};if(typeof JSON.parse!=="function")JSON.parse=function(k,p){function r(t,b){var g,m,n=t[b];if(n&&typeof n==="object")for(g in n)if(Object.hasOwnProperty.call(n,g)){m=r(n,g);if(m!==undefined)n[g]=m;else delete n[g]}return p.call(t,b,n)}var s;k=String(k);h.lastIndex=0;if(h.test(k))k=k.replace(h,function(t){return"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)});if(/^[\],:{}\s]*$/.test(k.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
|
||||
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){s=eval("("+k+")");return typeof p==="function"?r({"":s},""):s}throw new SyntaxError("JSON.parse");}})();
|
||||
(function(){function l(e,d){for(var a in d)e[a]=d[a];return e}function q(e,d){var a=document.createElement(e);for(var c in d)if(c==="class")a.className=d[c];else if(c==="for")a.htmlFor=d[c];else a.setAttribute(c,d[c]);return a}function f(){return false}var h=this.fabric||(this.fabric={}),o=Array.prototype.slice;h.util={};if(!Array.prototype.indexOf)Array.prototype.indexOf=function(e,d){var a=this.length>>>0;d=Number(d)||0;d=Math[d<0?"ceil":"floor"](d);if(d<0)d+=a;for(;d<a;d++)if(d in this&&this[d]===
|
||||
e)return d;return-1};if(!Array.prototype.forEach)Array.prototype.forEach=function(e,d){for(var a=0,c=this.length>>>0;a<c;a++)a in this&&e.call(d,this[a],a,this)};if(!Array.prototype.map)Array.prototype.map=function(e,d){for(var a=[],c=0,k=this.length>>>0;c<k;c++)if(c in this)a[c]=e.call(d,this[c],c,this);return a};if(!Array.prototype.every)Array.prototype.every=function(e,d){for(var a=0,c=this.length>>>0;a<c;a++)if(a in this&&!e.call(d,this[a],a,this))return false;return true};if(!Array.prototype.some)Array.prototype.some=
|
||||
function(e,d){for(var a=0,c=this.length>>>0;a<c;a++)if(a in this&&e.call(d,this[a],a,this))return true;return false};if(!Array.prototype.filter)Array.prototype.filter=function(e,d){for(var a=[],c,k=0,p=this.length>>>0;k<p;k++)if(k in this){c=this[k];e.call(d,c,k,this)&&a.push(c)}return res};if(!Array.prototype.reduce)Array.prototype.reduce=function(e){var d=this.length>>>0,a=0,c;if(arguments.length>1)c=arguments[1];else{do{if(a in this){c=this[a++];break}if(++a>=d)throw new TypeError;}while(1)}for(;a<
|
||||
d;a++)if(a in this)c=e.call(null,c,this[a],a,this);return c};h.util.array={invoke:function(e,d){for(var a=o.call(arguments,2),c=[],k=0,p=e.length;k<p;k++)c[k]=a.length?e[k][d].apply(e[k],a):e[k][d].call(e[k]);return c},min:function(e,d){var a=e.length-1,c=d?e[a][d]:e[a];if(d)for(;a--;){if(e[a][d]<c)c=e[a][d]}else for(;a--;)if(e[a]<c)c=e[a];return c},max:function(e,d){var a=e.length-1,c=d?e[a][d]:e[a];if(d)for(;a--;){if(e[a][d]>=c)c=e[a][d]}else for(;a--;)if(e[a]>=c)c=e[a];return c}};h.util.object=
|
||||
{extend:l,clone:function(e){return l({},e)}};if(!String.prototype.trim)String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")};h.util.string={camelize:function(e){return e.replace(/-+(.)?/g,function(d,a){return a?a.toUpperCase():""})},capitalize:function(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}};if(!Function.prototype.bind)Function.prototype.bind=function(e){var d=this,a=Array.prototype.slice.call(arguments,1);return function(){return d.apply(e,a.concat(Array.prototype.slice.call(arguments)))}};
|
||||
(function(){function e(){}var d;d=function(){for(var a in{toString:1})if(a==="toString")return false;return true}()?function(a,c){if(c.toString!==Object.prototype.toString)a.prototype.toString=c.toString;if(c.valueOf!==Object.prototype.valueOf)a.prototype.valueOf=c.valueOf;for(var k in c)a.prototype[k]=c[k]}:function(a,c){for(var k in c)a.prototype[k]=c[k]};h.util.createClass=function(){function a(){this.initialize.apply(this,arguments)}var c=null,k=o.call(arguments,0);if(typeof k[0]==="function")c=
|
||||
k.shift();a.superclass=c;a.subclasses=[];if(c){e.prototype=c.prototype;a.prototype=new e;c.subclasses.push(a)}c=0;for(var p=k.length;c<p;c++)d(a,k[c]);if(!a.prototype.initialize)a.prototype.initialize=emptyFunction;return a.prototype.constructor=a}})();(function(){function e(m){var n=Array.prototype.slice.call(arguments,1),v,u,w=n.length;for(u=0;u<w;u++){v=typeof m[n[u]];if(!/^(?:function|object|unknown)$/.test(v))return false}return true}function d(m,n){return function(v){n.call(k(m),v||window.event)}}
|
||||
function a(m,n){return function(v){if(b[m]&&b[m][n])for(var u=b[m][n],w=0,x=u.length;w<x;w++)u[w].call(this,v||window.event)}}var c=function(){if(typeof document.documentElement.uniqueID!=="undefined")return function(n){return n.uniqueID};var m=0;return function(n){return n.__uniqueID||(n.__uniqueID="uniqueID__"+m++)}}(),k,p;(function(){var m={};k=function(n){return m[n]};p=function(n,v){m[n]=v}})();var r=e(document.documentElement,"addEventListener","removeEventListener")&&e(window,"addEventListener",
|
||||
"removeEventListener"),s=e(document.documentElement,"attachEvent","detachEvent")&&e(window,"attachEvent","detachEvent"),t={},b={};if(r){addListener=function(m,n,v){m.addEventListener(n,v,false)};removeListener=function(m,n,v){m.removeEventListener(n,v,false)}}else if(s){addListener=function(m,n,v){var u=c(m);p(u,m);t[u]||(t[u]={});t[u][n]||(t[u][n]=[]);v={handler:v,wrappedHandler:d(u,v)};t[u][n].push(v);m.attachEvent("on"+n,v.wrappedHandler)};removeListener=function(m,n,v){var u=c(m),w;if(t[u]&&t[u][n])for(var x=
|
||||
0,z=t[u][n].length;x<z;x++)if((w=t[u][n][x])&&w.handler===v){m.detachEvent("on"+n,w.wrappedHandler);t[u][n][x]=null}}}else{addListener=function(m,n,v){var u=c(m);b[u]||(b[u]={});if(!b[u][n]){b[u][n]=[];var w=m["on"+n];w&&b[u][n].push(w);m["on"+n]=a(u,n)}b[u][n].push(v)};removeListener=function(m,n,v){m=c(m);if(b[m]&&b[m][n]){n=b[m][n];m=0;for(var u=n.length;m<u;m++)n[m]===v&&n.splice(m,1)}}}h.util.addListener=addListener;h.util.removeListener=removeListener;var g={};h.util.observeEvent=function(m,
|
||||
n){g[m]||(g[m]=[]);g[m].push(n)};h.util.fireEvent=function(m,n){var v=g[m];if(v)for(var u=0,w=v.length;u<w;u++)v[u]({memo:n})};h.util.getPointer=function(m){var n=document.documentElement,v=document.body||{scrollLeft:0},u=document.documentElement,w=document.body||{scrollTop:0};return{x:m.pageX||m.clientX+(n.scrollLeft||v.scrollLeft)-(n.clientLeft||0),y:m.pageY||m.clientY+(u.scrollTop||w.scrollTop)-(u.clientTop||0)}}})(this);(function(){var e=document.createElement("div"),d=typeof e.style.filter===
|
||||
"string",a=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(k){return k};if(typeof e.style.opacity==="string")c=function(k,p){k.style.opacity=p;return k};else if(d)c=function(k,p){var r=k.style;if(k.currentStyle&&!k.currentStyle.hasLayout)r.zoom=1;if(a.test(r.filter)){p=p>=0.9999?"":"alpha(opacity="+p*100+")";r.filter=r.filter.replace(a,p)}else r.filter+=" alpha(opacity="+p*100+")";return k};h.util.setStyle=function(k,p){var r=k.style;if(typeof p==="string"){k.style.cssText+=";"+p;return p.indexOf("opacity")>
|
||||
-1?c(k,p.match(/opacity:\s*(\d?\.?\d*)/)[1]):k}for(var s in p)if(s==="opacity")c(k,p[s]);else r[s==="float"||s==="cssFloat"?typeof r.styleFloat==="undefined"?"cssFloat":"styleFloat":s]=p[s];return k}})();(function(){var e=document.documentElement.style,d="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";h.util.makeElementUnselectable=function(a){if(typeof a.onselectstart!=="undefined")a.onselectstart=
|
||||
f;if(d)a.style[d]="none";else if(typeof a.unselectable=="string")a.unselectable="on";return a}})();(function(){function e(a,c){d.load(a);c()}h.util.getScript=function(a,c){var k=document.getElementsByTagName("head")[0],p=document.createElement("script"),r=true;p.type="text/javascript";p.setAttribute("runat","server");p.onload=p.onreadystatechange=function(s){if(r)if(!(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")){r=false;c(s||window.event);p=p.onload=
|
||||
p.onreadystatechange=null}};p.src=a;k.appendChild(p)};var d=this.Jaxer;if(d&&d.load)h.util.getScript=e})();h.util.getById=function(e){return typeof e==="string"?document.getElementById(e):e};h.util.toArray=function(e){for(var d=[],a=e.length;a--;)d[a]=e[a];return d};h.util.makeElement=q;h.util.addClass=function(e,d){if((" "+e.className+" ").indexOf(" "+d+" ")===-1)e.className+=(e.className?" ":"")+d};h.util.wrapElement=function(e,d,a){if(typeof d==="string")d=q(d,a);e.parentNode&&e.parentNode.replaceChild(d,
|
||||
e);d.appendChild(e);return d};h.util.getElementOffset=function(e){var d=0,a=0;do{d+=e.offsetTop||0;a+=e.offsetLeft||0;e=e.offsetParent}while(e);return{left:a,top:d}};h.util.animate=function(e){e||(e={});var d=+new Date,a=e.duration||500,c=d+a,k,p,r=e.onChange||function(){},s=e.easing||function(n){return-Math.cos(n*Math.PI)/2+0.5},t="startValue"in e?e.startValue:0,b="endValue"in e?e.endValue:100,g=t>b;e.onStart&&e.onStart();var m=setInterval(function(){k=+new Date;p=k>c?1:(k-d)/a;r(g?t-(t-b)*s(p):
|
||||
t+(b-t)*s(p));if(k>c){clearInterval(m);e.onComplete&&e.onComplete()}},10)};(function(){function e(){}var d=function(){for(var a=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],c=a.length;c--;)try{if(a[c]())return a[c]}catch(k){}}();h.util.request=function(a,c){c||(c={});var k=c.method?c.method.toUpperCase():"GET",p=c.onComplete||function(){},
|
||||
r=d(),s;r.onreadystatechange=function(){if(r.readyState===4){p(r);r.onreadystatechange=e}};if(k==="GET"){s=null;if(typeof c.parameters=="string")a=a+(/\?/.test(a)?"&":"?")+c.parameters}r.open(k,a,true);if(k==="POST"||k==="PUT")r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");r.send(s);return r}})();(function(){var e=Math.PI/180;h.util.removeFromArray=function(d,a){var c=d.indexOf(a);c!==-1&&d.splice(c,1);return d};h.util.degreesToRadians=function(d){return d*e};h.util.toFixed=
|
||||
function(d,a){return parseFloat(Number(d).toFixed(a))};h.util.getRandomInt=function(d,a){return Math.floor(Math.random()*(a-d+1))+d}})()})(this);
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=l.util.object.extend,f=l.util.string.capitalize,h=l.util.object.clone,o={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};l.parseTransformAttribute=function(){function e(r,s){var t=s[0];r[0]=Math.cos(t);r[1]=Math.sin(t);r[2]=-Math.sin(t);r[3]=Math.cos(t)}function d(r,s){var t=s.length===2?s[1]:s[0];r[0]=s[0];r[3]=t}function a(r,s){r[4]=s[0];if(s.length===
|
||||
2)r[5]=s[1]}var c=[1,0,0,1,0,0],k=RegExp("^\\s*(?:(?:(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\)))(?:(?:\\s+,?\\s*|,\\s*)(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))))*)?)\\s*$"),
|
||||
p=RegExp("(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\)))");
|
||||
return function(r){var s=c.concat();if(!r||r&&!k.test(r))return s;r.replace(p,function(t){var b=RegExp("(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\)))").exec(t).filter(function(g){return g!==
|
||||
""&&g!=null});t=b[1];b=b.slice(2).map(parseFloat);switch(t){case "translate":a(s,b);break;case "rotate":e(s,b);break;case "scale":d(s,b);break;case "skewX":s[2]=b[0];break;case "skewY":s[1]=b[0];break;case "matrix":s=b;break}});return s}}();l.parseSVGDocument=function(){var e=/^(path|circle|polygon|polyline|ellipse|rect|line)$/,d=RegExp("^\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*,?\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*,?\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*,?\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*$");
|
||||
return function(a,c){if(a){var k=l.util.toArray(a.getElementsByTagName("*")).filter(function(g){var m;if(m=e.test(g.tagName)){a:{for(g=g;g&&(g=g.parentNode);)if(g.nodeName==="pattern"){g=true;break a}g=false}m=!g}return m});if(!(!k||k&&!k.length)){var p=a.getAttribute("viewBox"),r=a.getAttribute("width"),s=a.getAttribute("height"),t=null,b=null;if(p&&(p=p.match(d))){parseInt(p[1],10);parseInt(p[2],10);t=parseInt(p[3],10);b=parseInt(p[4],10)}t=r?parseFloat(r):t;b=s?parseFloat(s):b;p={width:t,height:b};
|
||||
k=l.parseElements(k,h(p));!k||k&&!k.length||c&&c(k,p)}}}}();q(l,{parseAttributes:function(e,d){if(e){var a,c,k={};if(e.parentNode&&/^g$/i.test(e.parentNode.nodeName))k=l.parseAttributes(e.parentNode,d);var p=d.reduce(function(r,s){a=e.getAttribute(s);c=parseFloat(a);if(a){if((s==="fill"||s==="stroke")&&a==="none")a="";if(s==="fill-rule")a=a==="evenodd"?"destination-over":a;if(s==="transform")a=l.parseTransformAttribute(a);if(s in o)s=o[s];r[s]=isNaN(c)?a:c}return r},{});p=q(l.parseStyleAttribute(e),
|
||||
p);return q(k,p)}},parseElements:function(e,d){var a=e.map(function(c){var k=l[f(c.tagName)];if(k&&k.fromElement)try{return k.fromElement(c,d)}catch(p){console.log(p.message||p)}});return a=a.filter(function(c){return c!=null})},parseStyleAttribute:function(e){var d={};if(e=e.getAttribute("style"))if(typeof e=="string"){e=e.split(";");e.pop();d=e.reduce(function(c,k){var p=k.split(":"),r=p[0].trim();p=p[1].trim();c[r]=p;return c},{})}else for(var a in e)if(typeof e[a]!=="undefined")d[a]=e[a];return d},
|
||||
parsePointsAttribute:function(e){if(!e)return null;e=e.trim().split(/\s+/);e=e.reduce(function(d,a){a=a.split(",");d.push({x:parseFloat(a[0]),y:parseFloat(a[1])});return d},[]);if(e.length%2!==0)return null;return e}})})();
|
||||
(function(){function l(f,h){arguments.length>0&&this.init(f,h)}var q=this.fabric||(this.fabric={});if(q.Point)console.warn("fabric.Point is already defined");else{l.prototype={constructor:l,init:function(f,h){this.x=f;this.y=h},add:function(f){return new l(this.x+f.x,this.y+f.y)},addEquals:function(f){this.x+=f.x;this.y+=f.y;return this},scalarAdd:function(f){return new l(this.x+f,this.y+f)},scalarAddEquals:function(f){this.x+=f;this.y+=f;return this},subtract:function(f){return new l(this.x-f.x,
|
||||
this.y-f.y)},subtractEquals:function(f){this.x-=f.x;this.y-=f.y;return this},scalarSubtract:function(f){return new l(this.x-f,this.y-f)},scalarSubtractEquals:function(f){this.x-=f;this.y-=f;return this},multiply:function(f){return new l(this.x*f,this.y*f)},multiplyEquals:function(f){this.x*=f;this.y*=f;return this},divide:function(f){return new l(this.x/f,this.y/f)},divideEquals:function(f){this.x/=f;this.y/=f;return this},eq:function(f){return this.x==f.x&&this.y==f.y},lt:function(f){return this.x<
|
||||
f.x&&this.y<f.y},lte:function(f){return this.x<=f.x&&this.y<=f.y},gt:function(f){return this.x>f.x&&this.y>f.y},gte:function(f){return this.x>=f.x&&this.y>=f.y},lerp:function(f,h){return new l(this.x+(f.x-this.x)*h,this.y+(f.y-this.y)*h)},distanceFrom:function(f){var h=this.x-f.x;f=this.y-f.y;return Math.sqrt(h*h+f*f)},min:function(f){return new l(Math.min(this.x,f.x),Math.min(this.y,f.y))},max:function(f){return new l(Math.max(this.x,f.x),Math.max(this.y,f.y))},toString:function(){return this.x+
|
||||
","+this.y},setXY:function(f,h){this.x=f;this.y=h},setFromPoint:function(f){this.x=f.x;this.y=f.y},swap:function(f){var h=this.x,o=this.y;this.x=f.x;this.y=f.y;f.x=h;f.y=o}};q.Point=l}})();
|
||||
(function(){function l(f){arguments.length>0&&this.init(f)}var q=this.fabric||(this.fabric={});if(q.Intersection)console.warn("fabric.Intersection is already defined");else{l.prototype.init=function(f){this.status=f;this.points=[]};l.prototype.appendPoint=function(f){this.points.push(f)};l.prototype.appendPoints=function(f){this.points=this.points.concat(f)};l.intersectLineLine=function(f,h,o,e){var d,a=(e.x-o.x)*(f.y-o.y)-(e.y-o.y)*(f.x-o.x);d=(h.x-f.x)*(f.y-o.y)-(h.y-f.y)*(f.x-o.x);o=(e.y-o.y)*
|
||||
(h.x-f.x)-(e.x-o.x)*(h.y-f.y);if(o!=0){a=a/o;d=d/o;if(0<=a&&a<=1&&0<=d&&d<=1){d=new l("Intersection");d.points.push(new q.Point(f.x+a*(h.x-f.x),f.y+a*(h.y-f.y)))}else d=new l("No Intersection")}else d=a==0||d==0?new l("Coincident"):new l("Parallel");return d};l.intersectLinePolygon=function(f,h,o){for(var e=new l("No Intersection"),d=o.length,a=0;a<d;a++){var c=l.intersectLineLine(f,h,o[a],o[(a+1)%d]);e.appendPoints(c.points)}if(e.points.length>0)e.status="Intersection";return e};l.intersectPolygonPolygon=
|
||||
function(f,h){for(var o=new l("No Intersection"),e=f.length,d=0;d<e;d++){var a=l.intersectLinePolygon(f[d],f[(d+1)%e],h);o.appendPoints(a.points)}if(o.points.length>0)o.status="Intersection";return o};l.intersectPolygonRectangle=function(f,h,o){var e=h.min(o),d=h.max(o);o=new q.Point(d.x,e.y);var a=new q.Point(e.x,d.y);h=l.intersectLinePolygon(e,o,f);o=l.intersectLinePolygon(o,d,f);d=l.intersectLinePolygon(d,a,f);f=l.intersectLinePolygon(a,e,f);e=new l("No Intersection");e.appendPoints(h.points);
|
||||
e.appendPoints(o.points);e.appendPoints(d.points);e.appendPoints(f.points);if(e.points.length>0)e.status="Intersection";return e};q.Intersection=l}})();
|
||||
(function(){function l(f){f?this._tryParsingColor(f):this.setSource([0,0,0,1])}var q=this.fabric||(this.fabric={});if(q.Color)console.warn("fabric.Color is already defined.");else{q.Color=l;l.prototype._tryParsingColor=function(f){var h=l.sourceFromHex(f);h||(h=l.sourceFromRgb(f));h&&this.setSource(h)};l.prototype.getSource=function(){return this._source};l.prototype.setSource=function(f){this._source=f};l.prototype.toRgb=function(){var f=this.getSource();return"rgb("+f[0]+","+f[1]+","+f[2]+")"};
|
||||
l.prototype.toRgba=function(){var f=this.getSource();return"rgba("+f[0]+","+f[1]+","+f[2]+","+f[3]+")"};l.prototype.toHex=function(){var f=this.getSource(),h=f[0].toString(16);h=h.length==1?"0"+h:h;var o=f[1].toString(16);o=o.length==1?"0"+o:o;f=f[2].toString(16);f=f.length==1?"0"+f:f;return h.toUpperCase()+o.toUpperCase()+f.toUpperCase()};l.prototype.getAlpha=function(){return this.getSource()[3]};l.prototype.setAlpha=function(f){var h=this.getSource();h[3]=f;this.setSource(h);return this};l.prototype.toGrayscale=
|
||||
function(){var f=this.getSource(),h=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10);this.setSource([h,h,h,f[3]]);return this};l.prototype.toBlackWhite=function(f){var h=this.getSource(),o=(h[0]*0.3+h[1]*0.59+h[2]*0.11).toFixed(0);h=h[3];f=f||127;o=Number(o)<Number(f)?0:255;this.setSource([o,o,o,h]);return this};l.prototype.overlayWith=function(f){f=new l(f);var h=[],o=this.getAlpha(),e=this.getSource();f=f.getSource();for(var d=0;d<3;d++)h.push(Math.round(e[d]*0.5+f[d]*0.5));h[4]=o;this.setSource(h);
|
||||
return this};l.reRGBa=/^rgba?\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})(?:\s*,\s*(\d+(?:\.\d+)?))?\)$/;l.reHex=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/i;l.fromRgb=function(f){return l.fromSource(l.sourceFromRgb(f))};l.sourceFromRgb=function(f){if(f=f.match(l.reRGBa))return[parseInt(f[1],10),parseInt(f[2],10),parseInt(f[3],10),f[4]?parseFloat(f[4]):1]};l.fromRgba=l.fromRgb;l.fromHex=function(f){return l.fromSource(l.sourceFromHex(f))};l.sourceFromHex=function(f){if(f.match(l.reHex)){var h=f.slice(f.indexOf("#")+
|
||||
1),o=h.length===3;f=o?h.charAt(0)+h.charAt(0):h.substring(0,2);var e=o?h.charAt(1)+h.charAt(1):h.substring(2,4);h=o?h.charAt(2)+h.charAt(2):h.substring(4,6);return[parseInt(f,16),parseInt(e,16),parseInt(h,16),1]}};l.fromSource=function(f){var h=new l;h.setSource(f);return h}}})();
|
||||
(function(){if(fabric.Element)console.warn("fabric.Element is already defined.");else{var l=this.window,q=l.document,f=fabric.util.object.extend,h=fabric.util.string.capitalize,o=fabric.util.string.camelize,e=fabric.util.fireEvent,d=fabric.util.getPointer,a=fabric.util.getElementOffset,c=fabric.util.removeFromArray,k=fabric.util.addListener,p=fabric.util.removeListener,r=Error("Could not initialize `canvas` element"),s={tr:"ne-resize",br:"se-resize",bl:"sw-resize",tl:"nw-resize",ml:"w-resize",mt:"n-resize",
|
||||
mr:"e-resize",mb:"s-resize"};(function(){var b=q.createElement("canvas"),g,m,n;b.width=b.height=300;if(b.getContext)if(m=b.getContext("2d")){g=new Date;for(n=200;n--;)m.clearRect(0,0,300,300);m=new Date-g;g=new Date;for(n=200;n--;)b.width=b.height;if(new Date-g<m)return"width"}})();var t=function(){var b=q.createElement("canvas");if(b&&b.getContext)if(b=b.getContext("2d")){try{b.fillStyle="transparent";return true}catch(g){}return false}}();fabric.Element=function(b,g){this._groupSelector=null;this._aObjects=
|
||||
(function(){function k(h){return h<10?"0"+h:h}function p(h){q.lastIndex=0;return q.test(h)?'"'+h.replace(q,function(o){var r=a[o];return typeof r==="string"?r:"\\u"+("0000"+o.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+h+'"'}function f(h,o){var r,s,t,b,g=e,m,n=o[h];if(n&&typeof n==="object"&&typeof n.toJSON==="function")n=n.toJSON(h);if(typeof d==="function")n=d.call(o,h,n);switch(typeof n){case "string":return p(n);case "number":return isFinite(n)?String(n):"null";case "boolean":case "null":return String(n);
|
||||
case "object":if(!n)return"null";e+=c;m=[];if(Object.prototype.toString.apply(n)==="[object Array]"){b=n.length;for(r=0;r<b;r+=1)m[r]=f(r,n)||"null";t=m.length===0?"[]":e?"[\n"+e+m.join(",\n"+e)+"\n"+g+"]":"["+m.join(",")+"]";e=g;return t}if(d&&typeof d==="object"){b=d.length;for(r=0;r<b;r+=1){s=d[r];if(typeof s==="string")if(t=f(s,n))m.push(p(s)+(e?": ":":")+t)}}else for(s in n)if(Object.hasOwnProperty.call(n,s))if(t=f(s,n))m.push(p(s)+(e?": ":":")+t);t=m.length===0?"{}":e?"{\n"+e+m.join(",\n"+e)+
|
||||
"\n"+g+"}":"{"+m.join(",")+"}";e=g;return t}}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+k(this.getUTCMonth()+1)+"-"+k(this.getUTCDate())+"T"+k(this.getUTCHours())+":"+k(this.getUTCMinutes())+":"+k(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}}var l=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
||||
q=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e,c,a={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},d;if(typeof JSON.stringify!=="function")JSON.stringify=function(h,o,r){var s;c=e="";if(typeof r==="number")for(s=0;s<r;s+=1)c+=" ";else if(typeof r==="string")c=r;if((d=o)&&typeof o!=="function"&&(typeof o!=="object"||typeof o.length!=="number"))throw Error("JSON.stringify");return f("",
|
||||
{"":h})};if(typeof JSON.parse!=="function")JSON.parse=function(h,o){function r(t,b){var g,m,n=t[b];if(n&&typeof n==="object")for(g in n)if(Object.hasOwnProperty.call(n,g)){m=r(n,g);if(m!==undefined)n[g]=m;else delete n[g]}return o.call(t,b,n)}var s;h=String(h);l.lastIndex=0;if(l.test(h))h=h.replace(l,function(t){return"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)});if(/^[\],:{}\s]*$/.test(h.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
|
||||
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){s=eval("("+h+")");return typeof o==="function"?r({"":s},""):s}throw new SyntaxError("JSON.parse");}})();
|
||||
(function(){function k(e,c){for(var a in c)e[a]=c[a];return e}function p(e,c){var a=document.createElement(e);for(var d in c)if(d==="class")a.className=c[d];else if(d==="for")a.htmlFor=c[d];else a.setAttribute(d,c[d]);return a}function f(){return false}var l=this.fabric||(this.fabric={}),q=Array.prototype.slice;l.util={};if(!Array.prototype.indexOf)Array.prototype.indexOf=function(e,c){var a=this.length>>>0;c=Number(c)||0;c=Math[c<0?"ceil":"floor"](c);if(c<0)c+=a;for(;c<a;c++)if(c in this&&this[c]===
|
||||
e)return c;return-1};if(!Array.prototype.forEach)Array.prototype.forEach=function(e,c){for(var a=0,d=this.length>>>0;a<d;a++)a in this&&e.call(c,this[a],a,this)};if(!Array.prototype.map)Array.prototype.map=function(e,c){for(var a=[],d=0,h=this.length>>>0;d<h;d++)if(d in this)a[d]=e.call(c,this[d],d,this);return a};if(!Array.prototype.every)Array.prototype.every=function(e,c){for(var a=0,d=this.length>>>0;a<d;a++)if(a in this&&!e.call(c,this[a],a,this))return false;return true};if(!Array.prototype.some)Array.prototype.some=
|
||||
function(e,c){for(var a=0,d=this.length>>>0;a<d;a++)if(a in this&&e.call(c,this[a],a,this))return true;return false};if(!Array.prototype.filter)Array.prototype.filter=function(e,c){for(var a=[],d,h=0,o=this.length>>>0;h<o;h++)if(h in this){d=this[h];e.call(c,d,h,this)&&a.push(d)}return res};if(!Array.prototype.reduce)Array.prototype.reduce=function(e){var c=this.length>>>0,a=0,d;if(arguments.length>1)d=arguments[1];else{do{if(a in this){d=this[a++];break}if(++a>=c)throw new TypeError;}while(1)}for(;a<
|
||||
c;a++)if(a in this)d=e.call(null,d,this[a],a,this);return d};l.util.array={invoke:function(e,c){for(var a=q.call(arguments,2),d=[],h=0,o=e.length;h<o;h++)d[h]=a.length?e[h][c].apply(e[h],a):e[h][c].call(e[h]);return d},min:function(e,c){var a=e.length-1,d=c?e[a][c]:e[a];if(c)for(;a--;){if(e[a][c]<d)d=e[a][c]}else for(;a--;)if(e[a]<d)d=e[a];return d},max:function(e,c){var a=e.length-1,d=c?e[a][c]:e[a];if(c)for(;a--;){if(e[a][c]>=d)d=e[a][c]}else for(;a--;)if(e[a]>=d)d=e[a];return d}};l.util.object=
|
||||
{extend:k,clone:function(e){return k({},e)}};if(!String.prototype.trim)String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")};l.util.string={camelize:function(e){return e.replace(/-+(.)?/g,function(c,a){return a?a.toUpperCase():""})},capitalize:function(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}};if(!Function.prototype.bind)Function.prototype.bind=function(e){var c=this,a=Array.prototype.slice.call(arguments,1);return function(){return c.apply(e,a.concat(Array.prototype.slice.call(arguments)))}};
|
||||
(function(){function e(){}var c;c=function(){for(var a in{toString:1})if(a==="toString")return false;return true}()?function(a,d){if(d.toString!==Object.prototype.toString)a.prototype.toString=d.toString;if(d.valueOf!==Object.prototype.valueOf)a.prototype.valueOf=d.valueOf;for(var h in d)a.prototype[h]=d[h]}:function(a,d){for(var h in d)a.prototype[h]=d[h]};l.util.createClass=function(){function a(){this.initialize.apply(this,arguments)}var d=null,h=q.call(arguments,0);if(typeof h[0]==="function")d=
|
||||
h.shift();a.superclass=d;a.subclasses=[];if(d){e.prototype=d.prototype;a.prototype=new e;d.subclasses.push(a)}d=0;for(var o=h.length;d<o;d++)c(a,h[d]);if(!a.prototype.initialize)a.prototype.initialize=emptyFunction;return a.prototype.constructor=a}})();(function(){function e(m){var n=Array.prototype.slice.call(arguments,1),v,u,w=n.length;for(u=0;u<w;u++){v=typeof m[n[u]];if(!/^(?:function|object|unknown)$/.test(v))return false}return true}function c(m,n){return function(v){n.call(h(m),v||window.event)}}
|
||||
function a(m,n){return function(v){if(b[m]&&b[m][n])for(var u=b[m][n],w=0,x=u.length;w<x;w++)u[w].call(this,v||window.event)}}var d=function(){if(typeof document.documentElement.uniqueID!=="undefined")return function(n){return n.uniqueID};var m=0;return function(n){return n.__uniqueID||(n.__uniqueID="uniqueID__"+m++)}}(),h,o;(function(){var m={};h=function(n){return m[n]};o=function(n,v){m[n]=v}})();var r=e(document.documentElement,"addEventListener","removeEventListener")&&e(window,"addEventListener",
|
||||
"removeEventListener"),s=e(document.documentElement,"attachEvent","detachEvent")&&e(window,"attachEvent","detachEvent"),t={},b={};if(r){addListener=function(m,n,v){m.addEventListener(n,v,false)};removeListener=function(m,n,v){m.removeEventListener(n,v,false)}}else if(s){addListener=function(m,n,v){var u=d(m);o(u,m);t[u]||(t[u]={});t[u][n]||(t[u][n]=[]);v={handler:v,wrappedHandler:c(u,v)};t[u][n].push(v);m.attachEvent("on"+n,v.wrappedHandler)};removeListener=function(m,n,v){var u=d(m),w;if(t[u]&&t[u][n])for(var x=
|
||||
0,z=t[u][n].length;x<z;x++)if((w=t[u][n][x])&&w.handler===v){m.detachEvent("on"+n,w.wrappedHandler);t[u][n][x]=null}}}else{addListener=function(m,n,v){var u=d(m);b[u]||(b[u]={});if(!b[u][n]){b[u][n]=[];var w=m["on"+n];w&&b[u][n].push(w);m["on"+n]=a(u,n)}b[u][n].push(v)};removeListener=function(m,n,v){m=d(m);if(b[m]&&b[m][n]){n=b[m][n];m=0;for(var u=n.length;m<u;m++)n[m]===v&&n.splice(m,1)}}}l.util.addListener=addListener;l.util.removeListener=removeListener;var g={};l.util.observeEvent=function(m,
|
||||
n){g[m]||(g[m]=[]);g[m].push(n)};l.util.fireEvent=function(m,n){var v=g[m];if(v)for(var u=0,w=v.length;u<w;u++)v[u]({memo:n})};l.util.getPointer=function(m){var n=document.documentElement,v=document.body||{scrollLeft:0},u=document.documentElement,w=document.body||{scrollTop:0};return{x:m.pageX||m.clientX+(n.scrollLeft||v.scrollLeft)-(n.clientLeft||0),y:m.pageY||m.clientY+(u.scrollTop||w.scrollTop)-(u.clientTop||0)}}})(this);(function(){var e=document.createElement("div"),c=typeof e.style.filter===
|
||||
"string",a=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,d=function(h){return h};if(typeof e.style.opacity==="string")d=function(h,o){h.style.opacity=o;return h};else if(c)d=function(h,o){var r=h.style;if(h.currentStyle&&!h.currentStyle.hasLayout)r.zoom=1;if(a.test(r.filter)){o=o>=0.9999?"":"alpha(opacity="+o*100+")";r.filter=r.filter.replace(a,o)}else r.filter+=" alpha(opacity="+o*100+")";return h};l.util.setStyle=function(h,o){var r=h.style;if(typeof o==="string"){h.style.cssText+=";"+o;return o.indexOf("opacity")>
|
||||
-1?d(h,o.match(/opacity:\s*(\d?\.?\d*)/)[1]):h}for(var s in o)if(s==="opacity")d(h,o[s]);else r[s==="float"||s==="cssFloat"?typeof r.styleFloat==="undefined"?"cssFloat":"styleFloat":s]=o[s];return h}})();(function(){var e=document.documentElement.style,c="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";l.util.makeElementUnselectable=function(a){if(typeof a.onselectstart!=="undefined")a.onselectstart=
|
||||
f;if(c)a.style[c]="none";else if(typeof a.unselectable=="string")a.unselectable="on";return a}})();(function(){function e(a,d){c.load(a);d()}l.util.getScript=function(a,d){var h=document.getElementsByTagName("head")[0],o=document.createElement("script"),r=true;o.type="text/javascript";o.setAttribute("runat","server");o.onload=o.onreadystatechange=function(s){if(r)if(!(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")){r=false;d(s||window.event);o=o.onload=
|
||||
o.onreadystatechange=null}};o.src=a;h.appendChild(o)};var c=this.Jaxer;if(c&&c.load)l.util.getScript=e})();l.util.getById=function(e){return typeof e==="string"?document.getElementById(e):e};l.util.toArray=function(e){for(var c=[],a=e.length;a--;)c[a]=e[a];return c};l.util.makeElement=p;l.util.addClass=function(e,c){if((" "+e.className+" ").indexOf(" "+c+" ")===-1)e.className+=(e.className?" ":"")+c};l.util.wrapElement=function(e,c,a){if(typeof c==="string")c=p(c,a);e.parentNode&&e.parentNode.replaceChild(c,
|
||||
e);c.appendChild(e);return c};l.util.getElementOffset=function(e){var c=0,a=0;do{c+=e.offsetTop||0;a+=e.offsetLeft||0;e=e.offsetParent}while(e);return{left:a,top:c}};l.util.animate=function(e){e||(e={});var c=+new Date,a=e.duration||500,d=c+a,h,o,r=e.onChange||function(){},s=e.easing||function(n){return-Math.cos(n*Math.PI)/2+0.5},t="startValue"in e?e.startValue:0,b="endValue"in e?e.endValue:100,g=t>b;e.onStart&&e.onStart();var m=setInterval(function(){h=+new Date;o=h>d?1:(h-c)/a;r(g?t-(t-b)*s(o):
|
||||
t+(b-t)*s(o));if(h>d){clearInterval(m);e.onComplete&&e.onComplete()}},10)};(function(){function e(){}var c=function(){for(var a=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],d=a.length;d--;)try{if(a[d]())return a[d]}catch(h){}}();l.util.request=function(a,d){d||(d={});var h=d.method?d.method.toUpperCase():"GET",o=d.onComplete||function(){},
|
||||
r=c(),s;r.onreadystatechange=function(){if(r.readyState===4){o(r);r.onreadystatechange=e}};if(h==="GET"){s=null;if(typeof d.parameters=="string")a=a+(/\?/.test(a)?"&":"?")+d.parameters}r.open(h,a,true);if(h==="POST"||h==="PUT")r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");r.send(s);return r}})();(function(){var e=Math.PI/180;l.util.removeFromArray=function(c,a){var d=c.indexOf(a);d!==-1&&c.splice(d,1);return c};l.util.degreesToRadians=function(c){return c*e};l.util.toFixed=
|
||||
function(c,a){return parseFloat(Number(c).toFixed(a))};l.util.getRandomInt=function(c,a){return Math.floor(Math.random()*(a-c+1))+c}})()})(this);
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=k.util.object.extend,f=k.util.string.capitalize,l=k.util.object.clone,q={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};k.parseTransformAttribute=function(){function e(r,s){var t=s[0];r[0]=Math.cos(t);r[1]=Math.sin(t);r[2]=-Math.sin(t);r[3]=Math.cos(t)}function c(r,s){var t=s.length===2?s[1]:s[0];r[0]=s[0];r[3]=t}function a(r,s){r[4]=s[0];if(s.length===
|
||||
2)r[5]=s[1]}var d=[1,0,0,1,0,0],h=RegExp("^\\s*(?:(?:(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\)))(?:(?:\\s+,?\\s*|,\\s*)(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))))*)?)\\s*$"),
|
||||
o=RegExp("(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\)))");
|
||||
return function(r){var s=d.concat();if(!r||r&&!h.test(r))return s;r.replace(o,function(t){var b=RegExp("(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\)))").exec(t).filter(function(g){return g!==
|
||||
""&&g!=null});t=b[1];b=b.slice(2).map(parseFloat);switch(t){case "translate":a(s,b);break;case "rotate":e(s,b);break;case "scale":c(s,b);break;case "skewX":s[2]=b[0];break;case "skewY":s[1]=b[0];break;case "matrix":s=b;break}});return s}}();k.parseSVGDocument=function(){var e=/^(path|circle|polygon|polyline|ellipse|rect|line)$/,c=RegExp("^\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*,?\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*,?\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*,?\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*$");
|
||||
return function(a,d){if(a){var h=k.util.toArray(a.getElementsByTagName("*")).filter(function(g){var m;if(m=e.test(g.tagName)){a:{for(g=g;g&&(g=g.parentNode);)if(g.nodeName==="pattern"){g=true;break a}g=false}m=!g}return m});if(!(!h||h&&!h.length)){var o=a.getAttribute("viewBox"),r=a.getAttribute("width"),s=a.getAttribute("height"),t=null,b=null;if(o&&(o=o.match(c))){parseInt(o[1],10);parseInt(o[2],10);t=parseInt(o[3],10);b=parseInt(o[4],10)}t=r?parseFloat(r):t;b=s?parseFloat(s):b;o={width:t,height:b};
|
||||
h=k.parseElements(h,l(o));!h||h&&!h.length||d&&d(h,o)}}}}();p(k,{parseAttributes:function(e,c){if(e){var a,d,h={};if(e.parentNode&&/^g$/i.test(e.parentNode.nodeName))h=k.parseAttributes(e.parentNode,c);var o=c.reduce(function(r,s){a=e.getAttribute(s);d=parseFloat(a);if(a){if((s==="fill"||s==="stroke")&&a==="none")a="";if(s==="fill-rule")a=a==="evenodd"?"destination-over":a;if(s==="transform")a=k.parseTransformAttribute(a);if(s in q)s=q[s];r[s]=isNaN(d)?a:d}return r},{});o=p(k.parseStyleAttribute(e),
|
||||
o);return p(h,o)}},parseElements:function(e,c){var a=e.map(function(d){var h=k[f(d.tagName)];if(h&&h.fromElement)try{return h.fromElement(d,c)}catch(o){console.log(o.message||o)}});return a=a.filter(function(d){return d!=null})},parseStyleAttribute:function(e){var c={};if(e=e.getAttribute("style"))if(typeof e=="string"){e=e.split(";");e.pop();c=e.reduce(function(d,h){var o=h.split(":"),r=o[0].trim();o=o[1].trim();d[r]=o;return d},{})}else for(var a in e)if(typeof e[a]!=="undefined")c[a]=e[a];return c},
|
||||
parsePointsAttribute:function(e){if(!e)return null;e=e.trim().split(/\s+/);e=e.reduce(function(c,a){a=a.split(",");c.push({x:parseFloat(a[0]),y:parseFloat(a[1])});return c},[]);if(e.length%2!==0)return null;return e}})})();
|
||||
(function(){function k(f,l){arguments.length>0&&this.init(f,l)}var p=this.fabric||(this.fabric={});if(p.Point)console.warn("fabric.Point is already defined");else{k.prototype={constructor:k,init:function(f,l){this.x=f;this.y=l},add:function(f){return new k(this.x+f.x,this.y+f.y)},addEquals:function(f){this.x+=f.x;this.y+=f.y;return this},scalarAdd:function(f){return new k(this.x+f,this.y+f)},scalarAddEquals:function(f){this.x+=f;this.y+=f;return this},subtract:function(f){return new k(this.x-f.x,
|
||||
this.y-f.y)},subtractEquals:function(f){this.x-=f.x;this.y-=f.y;return this},scalarSubtract:function(f){return new k(this.x-f,this.y-f)},scalarSubtractEquals:function(f){this.x-=f;this.y-=f;return this},multiply:function(f){return new k(this.x*f,this.y*f)},multiplyEquals:function(f){this.x*=f;this.y*=f;return this},divide:function(f){return new k(this.x/f,this.y/f)},divideEquals:function(f){this.x/=f;this.y/=f;return this},eq:function(f){return this.x==f.x&&this.y==f.y},lt:function(f){return this.x<
|
||||
f.x&&this.y<f.y},lte:function(f){return this.x<=f.x&&this.y<=f.y},gt:function(f){return this.x>f.x&&this.y>f.y},gte:function(f){return this.x>=f.x&&this.y>=f.y},lerp:function(f,l){return new k(this.x+(f.x-this.x)*l,this.y+(f.y-this.y)*l)},distanceFrom:function(f){var l=this.x-f.x;f=this.y-f.y;return Math.sqrt(l*l+f*f)},min:function(f){return new k(Math.min(this.x,f.x),Math.min(this.y,f.y))},max:function(f){return new k(Math.max(this.x,f.x),Math.max(this.y,f.y))},toString:function(){return this.x+
|
||||
","+this.y},setXY:function(f,l){this.x=f;this.y=l},setFromPoint:function(f){this.x=f.x;this.y=f.y},swap:function(f){var l=this.x,q=this.y;this.x=f.x;this.y=f.y;f.x=l;f.y=q}};p.Point=k}})();
|
||||
(function(){function k(f){arguments.length>0&&this.init(f)}var p=this.fabric||(this.fabric={});if(p.Intersection)console.warn("fabric.Intersection is already defined");else{k.prototype.init=function(f){this.status=f;this.points=[]};k.prototype.appendPoint=function(f){this.points.push(f)};k.prototype.appendPoints=function(f){this.points=this.points.concat(f)};k.intersectLineLine=function(f,l,q,e){var c,a=(e.x-q.x)*(f.y-q.y)-(e.y-q.y)*(f.x-q.x);c=(l.x-f.x)*(f.y-q.y)-(l.y-f.y)*(f.x-q.x);q=(e.y-q.y)*
|
||||
(l.x-f.x)-(e.x-q.x)*(l.y-f.y);if(q!=0){a=a/q;c=c/q;if(0<=a&&a<=1&&0<=c&&c<=1){c=new k("Intersection");c.points.push(new p.Point(f.x+a*(l.x-f.x),f.y+a*(l.y-f.y)))}else c=new k("No Intersection")}else c=a==0||c==0?new k("Coincident"):new k("Parallel");return c};k.intersectLinePolygon=function(f,l,q){for(var e=new k("No Intersection"),c=q.length,a=0;a<c;a++){var d=k.intersectLineLine(f,l,q[a],q[(a+1)%c]);e.appendPoints(d.points)}if(e.points.length>0)e.status="Intersection";return e};k.intersectPolygonPolygon=
|
||||
function(f,l){for(var q=new k("No Intersection"),e=f.length,c=0;c<e;c++){var a=k.intersectLinePolygon(f[c],f[(c+1)%e],l);q.appendPoints(a.points)}if(q.points.length>0)q.status="Intersection";return q};k.intersectPolygonRectangle=function(f,l,q){var e=l.min(q),c=l.max(q);q=new p.Point(c.x,e.y);var a=new p.Point(e.x,c.y);l=k.intersectLinePolygon(e,q,f);q=k.intersectLinePolygon(q,c,f);c=k.intersectLinePolygon(c,a,f);f=k.intersectLinePolygon(a,e,f);e=new k("No Intersection");e.appendPoints(l.points);
|
||||
e.appendPoints(q.points);e.appendPoints(c.points);e.appendPoints(f.points);if(e.points.length>0)e.status="Intersection";return e};p.Intersection=k}})();
|
||||
(function(){function k(f){f?this._tryParsingColor(f):this.setSource([0,0,0,1])}var p=this.fabric||(this.fabric={});if(p.Color)console.warn("fabric.Color is already defined.");else{p.Color=k;k.prototype._tryParsingColor=function(f){var l=k.sourceFromHex(f);l||(l=k.sourceFromRgb(f));l&&this.setSource(l)};k.prototype.getSource=function(){return this._source};k.prototype.setSource=function(f){this._source=f};k.prototype.toRgb=function(){var f=this.getSource();return"rgb("+f[0]+","+f[1]+","+f[2]+")"};
|
||||
k.prototype.toRgba=function(){var f=this.getSource();return"rgba("+f[0]+","+f[1]+","+f[2]+","+f[3]+")"};k.prototype.toHex=function(){var f=this.getSource(),l=f[0].toString(16);l=l.length==1?"0"+l:l;var q=f[1].toString(16);q=q.length==1?"0"+q:q;f=f[2].toString(16);f=f.length==1?"0"+f:f;return l.toUpperCase()+q.toUpperCase()+f.toUpperCase()};k.prototype.getAlpha=function(){return this.getSource()[3]};k.prototype.setAlpha=function(f){var l=this.getSource();l[3]=f;this.setSource(l);return this};k.prototype.toGrayscale=
|
||||
function(){var f=this.getSource(),l=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10);this.setSource([l,l,l,f[3]]);return this};k.prototype.toBlackWhite=function(f){var l=this.getSource(),q=(l[0]*0.3+l[1]*0.59+l[2]*0.11).toFixed(0);l=l[3];f=f||127;q=Number(q)<Number(f)?0:255;this.setSource([q,q,q,l]);return this};k.prototype.overlayWith=function(f){f=new k(f);var l=[],q=this.getAlpha(),e=this.getSource();f=f.getSource();for(var c=0;c<3;c++)l.push(Math.round(e[c]*0.5+f[c]*0.5));l[4]=q;this.setSource(l);
|
||||
return this};k.reRGBa=/^rgba?\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})(?:\s*,\s*(\d+(?:\.\d+)?))?\)$/;k.reHex=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/i;k.fromRgb=function(f){return k.fromSource(k.sourceFromRgb(f))};k.sourceFromRgb=function(f){if(f=f.match(k.reRGBa))return[parseInt(f[1],10),parseInt(f[2],10),parseInt(f[3],10),f[4]?parseFloat(f[4]):1]};k.fromRgba=k.fromRgb;k.fromHex=function(f){return k.fromSource(k.sourceFromHex(f))};k.sourceFromHex=function(f){if(f.match(k.reHex)){var l=f.slice(f.indexOf("#")+
|
||||
1),q=l.length===3;f=q?l.charAt(0)+l.charAt(0):l.substring(0,2);var e=q?l.charAt(1)+l.charAt(1):l.substring(2,4);l=q?l.charAt(2)+l.charAt(2):l.substring(4,6);return[parseInt(f,16),parseInt(e,16),parseInt(l,16),1]}};k.fromSource=function(f){var l=new k;l.setSource(f);return l}}})();
|
||||
(function(){if(fabric.Element)console.warn("fabric.Element is already defined.");else{var k=this.window,p=k.document,f=fabric.util.object.extend,l=fabric.util.string.capitalize,q=fabric.util.string.camelize,e=fabric.util.fireEvent,c=fabric.util.getPointer,a=fabric.util.getElementOffset,d=fabric.util.removeFromArray,h=fabric.util.addListener,o=fabric.util.removeListener,r=Error("Could not initialize `canvas` element"),s={tr:"ne-resize",br:"se-resize",bl:"sw-resize",tl:"nw-resize",ml:"w-resize",mt:"n-resize",
|
||||
mr:"e-resize",mb:"s-resize"};(function(){var b=p.createElement("canvas"),g,m,n;b.width=b.height=300;if(b.getContext)if(m=b.getContext("2d")){g=new Date;for(n=200;n--;)m.clearRect(0,0,300,300);m=new Date-g;g=new Date;for(n=200;n--;)b.width=b.height;if(new Date-g<m)return"width"}})();var t=function(){var b=p.createElement("canvas");if(b&&b.getContext)if(b=b.getContext("2d")){try{b.fillStyle="transparent";return true}catch(g){}return false}}();fabric.Element=function(b,g){this._groupSelector=null;this._aObjects=
|
||||
[];this._activeGroup=this._currentTransform=this._oElement=this._oContext=null;this._oConfig={width:300,height:150};g=g||{};this._initElement(b);this._initConfig(g);g.overlayImage&&this.setOverlayImage(g.overlayImage);if(g.afterRender)this.afterRender=g.afterRender;this._createCanvasBackground();this._createCanvasContainer();this._initEvents();this.calcOffset()};f(fabric.Element.prototype,{selectionColor:"rgba(100,100,255,0.3)",selectionBorderColor:"rgba(255,255,255,0.3)",selectionLineWidth:1,backgroundColor:"rgba(255,255,255,1)",
|
||||
includeDefaultValues:true,shouldCacheImages:false,CANVAS_WIDTH:600,CANVAS_HEIGHT:600,onBeforeScaleRotate:function(){},calcOffset:function(){this._offset=a(this.getElement());return this},setOverlayImage:function(b,g){if(b){var m=this,n=new Image;n.onload=function(){m.overlayImage=n;g&&g();n=n.onload=null};n.src=b}return this},_initElement:function(b){this._oElement=fabric.util.getById(b)||q.createElement("canvas");typeof this._oElement.getContext==="undefined"&&G_vmlCanvasManager.initElement(this._oElement);
|
||||
includeDefaultValues:true,shouldCacheImages:false,CANVAS_WIDTH:600,CANVAS_HEIGHT:600,onBeforeScaleRotate:function(){},calcOffset:function(){this._offset=a(this.getElement());return this},setOverlayImage:function(b,g){if(b){var m=this,n=new Image;n.onload=function(){m.overlayImage=n;g&&g();n=n.onload=null};n.src=b}return this},_initElement:function(b){this._oElement=fabric.util.getById(b)||p.createElement("canvas");typeof this._oElement.getContext==="undefined"&&G_vmlCanvasManager.initElement(this._oElement);
|
||||
if(typeof this._oElement.getContext==="undefined")throw r;if(!(this._oContextTop=this._oElement.getContext("2d")))throw r;b=this._oElement.width||0;var g=this._oElement.height||0;this._initWrapperElement(b,g);this._setElementStyle(b,g)},_initWrapperElement:function(b,g){var m=fabric.util.wrapElement(this.getElement(),"div",{"class":"canvas_container"});fabric.util.setStyle(m,{width:b+"px",height:g+"px"});fabric.util.makeElementUnselectable(m);this.wrapper=m},_setElementStyle:function(b,g){fabric.util.setStyle(this.getElement(),
|
||||
{position:"absolute",width:b+"px",height:g+"px",left:0,top:0})},_initConfig:function(b){f(this._oConfig,b||{});this._oConfig.width=parseInt(this._oElement.width,10)||0;this._oConfig.height=parseInt(this._oElement.height,10)||0;this._oElement.style.width=this._oConfig.width+"px";this._oElement.style.height=this._oConfig.height+"px"},_initEvents:function(){var b=this;this._onMouseDown=function(g){b.__onMouseDown(g)};this._onMouseUp=function(g){b.__onMouseUp(g)};this._onMouseMove=function(g){b.__onMouseMove(g)};
|
||||
this._onResize=function(){b.calcOffset()};k(this._oElement,"mousedown",this._onMouseDown);k(q,"mousemove",this._onMouseMove);k(q,"mouseup",this._onMouseUp);k(l,"resize",this._onResize)},_createCanvasElement:function(b){var g=q.createElement("canvas");if(g){g.className=b;b=this._oElement.parentNode.insertBefore(g,this._oElement);b.width=this.getWidth();b.height=this.getHeight();b.style.width=this.getWidth()+"px";b.style.height=this.getHeight()+"px";b.style.position="absolute";b.style.left=0;b.style.top=
|
||||
this._onResize=function(){b.calcOffset()};h(this._oElement,"mousedown",this._onMouseDown);h(p,"mousemove",this._onMouseMove);h(p,"mouseup",this._onMouseUp);h(k,"resize",this._onResize)},_createCanvasElement:function(b){var g=p.createElement("canvas");if(g){g.className=b;b=this._oElement.parentNode.insertBefore(g,this._oElement);b.width=this.getWidth();b.height=this.getHeight();b.style.width=this.getWidth()+"px";b.style.height=this.getHeight()+"px";b.style.position="absolute";b.style.left=0;b.style.top=
|
||||
0;typeof g.getContext==="undefined"&&G_vmlCanvasManager.initElement(g);if(typeof g.getContext==="undefined")throw r;fabric.util.makeElementUnselectable(b);return b}},_createCanvasContainer:function(){var b=this._createCanvasElement("canvas-container");this._oContextContainerEl=b;this._oContextContainer=b.getContext("2d")},_createCanvasBackground:function(){var b=this._createCanvasElement("canvas-container");this._oContextBackgroundEl=b;this._oContextBackground=b.getContext("2d")},getWidth:function(){return this._oConfig.width},
|
||||
getHeight:function(){return this._oConfig.height},setWidth:function(b){return this._setDimension("width",b)},setHeight:function(b){return this._setDimension("height",b)},setDimensions:function(b){for(var g in b)this._setDimension(g,b[g]);return this},_setDimension:function(b,g){this._oContextContainerEl[b]=g;this._oContextContainerEl.style[b]=g+"px";this._oContextBackgroundEl[b]=g;this._oContextBackgroundEl.style[b]=g+"px";this._oElement[b]=g;this._oElement.style[b]=g+"px";this._oElement.parentNode.style[b]=
|
||||
g+"px";this._oConfig[b]=g;this.calcOffset();this.renderAll();return this},__onMouseUp:function(b){if(this._currentTransform){var g=this._currentTransform.target;if(g.__scaling){e("object:scaled",{target:g});g.__scaling=false}for(var m=0,n=this._aObjects.length;m<n;++m)this._aObjects[m].setCoords();if(g.hasStateChanged()){g.isMoving=false;e("object:modified",{target:g})}}this._currentTransform=null;this._groupSelector&&this._findSelectedObjects(b);if(m=this.getActiveGroup()){m.hasStateChanged()&&m.containsPoint(this.getPointer(b))&&
|
||||
e("group:modified",{target:m});m.setObjectsCoords();m.set("isMoving",false);this._setCursor("default")}this._groupSelector=null;this.renderAll();this._setCursorFromEvent(b,g);this._setCursor("");var v=this;setTimeout(function(){v._setCursorFromEvent(b,g)},50)},shouldClearSelection:function(b){var g=this.findTarget(b),m=this.getActiveGroup();return!g||g&&m&&!m.contains(g)&&m!==g&&!b.shiftKey},__onMouseDown:function(b){if(!this._currentTransform){var g=this.findTarget(b),m=this.getPointer(b),n=this.getActiveGroup();
|
||||
if(this.shouldClearSelection(b)){this._groupSelector={ex:m.x,ey:m.y,top:0,left:0};this.deactivateAllWithDispatch()}else{g.saveState();g._findTargetCorner(b,this._offset)&&this.onBeforeScaleRotate(g);this._setupCurrentTransform(b,g);if(b.shiftKey&&(n||this.getActiveObject()))this._handleGroupLogic(b,g);else{g!==this.getActiveGroup()&&this.deactivateAll();this.setActiveObject(g)}}this.renderAll()}},getElement:function(){return this._oElement},deactivateAllWithDispatch:function(){var b=this.getActiveGroup();
|
||||
b&&e("before:group:destroyed",{target:b});this.deactivateAll();b&&e("after:group:destroyed");e("selection:cleared");return this},_setupCurrentTransform:function(b,g){var m="drag",n,v=d(b);if(n=g._findTargetCorner(b,this._offset))m=/ml|mr/.test(n)?"scaleX":/mt|mb/.test(n)?"scaleY":"rotate";this._currentTransform={target:g,action:m,scaleX:g.scaleX,scaleY:g.scaleY,offsetX:v.x-g.left,offsetY:v.y-g.top,ex:v.x,ey:v.y,left:g.left,top:g.top,theta:g.theta,width:g.width*g.scaleX};this._currentTransform.original=
|
||||
b&&e("before:group:destroyed",{target:b});this.deactivateAll();b&&e("after:group:destroyed");e("selection:cleared");return this},_setupCurrentTransform:function(b,g){var m="drag",n,v=c(b);if(n=g._findTargetCorner(b,this._offset))m=/ml|mr/.test(n)?"scaleX":/mt|mb/.test(n)?"scaleY":"rotate";this._currentTransform={target:g,action:m,scaleX:g.scaleX,scaleY:g.scaleY,offsetX:v.x-g.left,offsetY:v.y-g.top,ex:v.x,ey:v.y,left:g.left,top:g.top,theta:g.theta,width:g.width*g.scaleX};this._currentTransform.original=
|
||||
{left:g.left,top:g.top}},_handleGroupLogic:function(b,g){if(g.isType("group")){g=this.findTarget(b,true);if(!g||g.isType("group"))return}var m=this.getActiveGroup();if(m){if(m.contains(g)){m.remove(g);g.setActive(false);m.size()===1&&this.removeActiveGroup()}else m.add(g);e("group:selected",{target:m});m.setActive(true)}else{if(this._activeObject)if(g!==this._activeObject){this.setActiveGroup(new fabric.Group([this._activeObject,g]));m=this.getActiveGroup()}g.setActive(true)}m&&m.saveCoords()},__onMouseMove:function(b){if(this._groupSelector!==
|
||||
null){var g=d(b);this._groupSelector.left=g.x-this._offset.left-this._groupSelector.ex;this._groupSelector.top=g.y-this._offset.top-this._groupSelector.ey;this.renderTop()}else if(this._currentTransform){g=d(b);var m=g.x;g=g.y;this._currentTransform.target.isMoving=true;if(this._currentTransform.action==="rotate"){b.shiftKey||this._rotateObject(m,g);this._scaleObject(m,g)}else if(this._currentTransform.action==="scaleX")this._scaleObject(m,g,"x");else this._currentTransform.action==="scaleY"?this._scaleObject(m,
|
||||
null){var g=c(b);this._groupSelector.left=g.x-this._offset.left-this._groupSelector.ex;this._groupSelector.top=g.y-this._offset.top-this._groupSelector.ey;this.renderTop()}else if(this._currentTransform){g=c(b);var m=g.x;g=g.y;this._currentTransform.target.isMoving=true;if(this._currentTransform.action==="rotate"){b.shiftKey||this._rotateObject(m,g);this._scaleObject(m,g)}else if(this._currentTransform.action==="scaleX")this._scaleObject(m,g,"x");else this._currentTransform.action==="scaleY"?this._scaleObject(m,
|
||||
g,"y"):this._translateObject(m,g);this.renderAll()}else{m=this._oElement.style;if(g=this.findTarget(b)){this._setCursorFromEvent(b,g);g.isActive()&&g.setCornersVisibility&&g.setCornersVisibility(true)}else{for(b=this._aObjects.length;b--;)this._aObjects[b].active||this._aObjects[b].setActive(false);m.cursor="default"}}},_translateObject:function(b,g){var m=this._currentTransform.target;m.set("left",b-this._currentTransform.offsetX);m.set("top",g-this._currentTransform.offsetY)},_scaleObject:function(b,
|
||||
g,m){var n=Math.sqrt(Math.pow(this._currentTransform.ey-this._currentTransform.top-this._offset.top,2)+Math.pow(this._currentTransform.ex-this._currentTransform.left-this._offset.left,2));b=Math.sqrt(Math.pow(g-this._currentTransform.top-this._offset.top,2)+Math.pow(b-this._currentTransform.left-this._offset.left,2));g=this._currentTransform.target;g.__scaling=true;if(m)if(m==="x")g.set("scaleX",this._currentTransform.scaleX*b/n);else m==="y"&&g.set("scaleY",this._currentTransform.scaleY*b/n);else{g.set("scaleX",
|
||||
this._currentTransform.scaleX*b/n);g.set("scaleY",this._currentTransform.scaleY*b/n)}},_rotateObject:function(b,g){var m=Math.atan2(this._currentTransform.ey-this._currentTransform.top-this._offset.top,this._currentTransform.ex-this._currentTransform.left-this._offset.left);this._currentTransform.target.set("theta",Math.atan2(g-this._currentTransform.top-this._offset.top,b-this._currentTransform.left-this._offset.left)-m+this._currentTransform.theta)},_setCursor:function(b){this._oElement.style.cursor=
|
||||
|
|
@ -71,94 +71,94 @@ insertAt:function(b,g){this._aObjects.splice(g,0,b);this.renderAll();return this
|
|||
this._oContextContainer;this.clearContext(this._oContextTop);n!==this._oContextTop&&this.clearContext(n);if(b){if(!t&&this.backgroundColor==="transparent")var v=true;if(!v)n.fillStyle=this.backgroundColor;n.fillRect(0,0,g,m)}b=this._aObjects.length;g=this.getActiveGroup();if(b)for(m=0;m<b;++m)if(!g||g&&!g.contains(this._aObjects[m]))this._draw(n,this._aObjects[m]);g&&this._draw(this._oContextTop,g);this.overlayImage&&this._oContextTop.drawImage(this.overlayImage,0,0);this.afterRender&&this.afterRender();
|
||||
return this},renderTop:function(){this.clearContext(this._oContextTop);this.overlayImage&&this._oContextTop.drawImage(this.overlayImage,0,0);this._groupSelector&&this._drawSelection();var b=this.getActiveGroup();b&&b.render(this._oContextTop);this.afterRender&&this.afterRender();return this},containsPoint:function(b,g){var m=this.getPointer(b),n=this._normalizePointer(g,m);m=n.x;n=n.y;var v=g._getImageLines(g.oCoords);if((m=g._findCrossPoints(m,n,v))&&m%2===1||g._findTargetCorner(b,this._offset))return true;
|
||||
return false},_normalizePointer:function(b,g){var m=this.getActiveGroup(),n=g.x,v=g.y;if(m&&b.type!=="group"&&m.contains(b)){n-=m.left;v-=m.top}return{x:n,y:v}},findTarget:function(b,g){var m;this.getPointer(b);var n=this.getActiveGroup();if(n&&!g&&this.containsPoint(b,n))return m=n;for(n=this._aObjects.length;n--;)if(this.containsPoint(b,this._aObjects[n])){this.relatedTarget=m=this._aObjects[n];break}return m},toDataURL:function(b){var g;b||(b="png");if(b==="jpeg"||b==="png"){this.renderAll(true);
|
||||
g=this.getElement().toDataURL("image/"+b)}return g},toDataURLWithMultiplier:function(b,g){var m=this.getWidth(),n=this.getHeight(),v=m*g,u=n*g,w=this.getActiveObject();this.setWidth(v).setHeight(u);this._oContextTop.scale(g,g);w&&this.deactivateAll().renderAll();v=this.toDataURL(b);this._oContextTop.scale(1/g,1/g);this.setWidth(m).setHeight(n);w&&this.setActiveObject(w);this.renderAll();return v},getPointer:function(b){b=d(b);return{x:b.x-this._offset.left,y:b.y-this._offset.top}},getCenter:function(){return{top:this.getHeight()/
|
||||
2,left:this.getWidth()/2}},centerObjectH:function(b){b.set("left",this.getCenter().left);this.renderAll();return this},fxCenterObjectH:function(b){var g=this,m=new APE.anim.Animation,n=b.get("left"),v=g.getCenter().left-n;m.run=function(u){b.set("left",n+v*u);g.renderAll()};m.onend=function(){b.setCoords()};m.duration=500;m.transition=APE.anim.Transitions.decel;m.start();return this},centerObjectV:function(b){b.set("top",this.getCenter().top);this.renderAll();return this},fxCenterObjectV:function(b){var g=
|
||||
this,m=new APE.anim.Animation,n=b.get("top"),v=g.getCenter().top-n;m.run=function(u){b.set("top",n+v*u).setCoords();g.renderAll()};m.onend=function(){b.setCoords()};m.duration=500;m.transition=APE.anim.Transitions.decel;m.start()},straightenObject:function(b){b.straighten();this.renderAll();return this},fxStraightenObject:function(b){b.fxStraighten({onChange:this.renderAll.bind(this)});return this},toJSON:function(){return JSON.stringify(this.toObject())},toDatalessJSON:function(){return JSON.stringify(this.toDatalessObject())},
|
||||
toObject:function(){return this._toObjectMethod("toObject")},toDatalessObject:function(){return this._toObjectMethod("toDatalessObject")},_toObjectMethod:function(b){return{objects:this._aObjects.map(function(g){if(!this.includeDefaultValues){var m=g.includeDefaultValues;g.includeDefaultValues=false}var n=g[b]();if(!this.includeDefaultValues)g.includeDefaultValues=m;return n},this),background:this.backgroundColor}},isEmpty:function(){return this._aObjects.length===0},loadFromJSON:function(b,g){if(b){var m=
|
||||
JSON.parse(b);if(!(!m||m&&!m.objects)){this.clear();var n=this;this._enlivenObjects(m.objects,function(){n.backgroundColor=m.background;g&&g()});return this}}},_enlivenObjects:function(b,g){var m=0,n=b.filter(function(u){return u.type==="image"}).length,v=this;b.forEach(function(u){if(u.type)switch(u.type){case "image":case "font":fabric[h(u.type)].fromObject(u,function(x){v.add(x);++m===n&&g&&g()});break;default:var w=fabric[o(h(u.type))];w&&w.fromObject&&v.add(w.fromObject(u));break}});n===0&&g&&
|
||||
g()},loadFromDatalessJSON:function(b,g){if(b){var m=typeof b==="string"?b.evalJSON():b;if(!(!m||m&&!m.objects)){this.clear();this._enlivenDatalessObjects(m.objects,g)}}},_enlivenDatalessObjects:function(b,g){function m(x,z){n.insertAt(x,z);x.setCoords();++v===u&&g&&g()}var n=this,v=0,u=b.length;try{b.forEach(function(x,z){var B=x.paths?"paths":"path",A=x[B];delete x[B];if(typeof A!=="string")switch(x.type){case "image":case "text":Canvas[h(x.type)].fromObject(x,function(y){m(y,z)});break;default:(B=
|
||||
Canvas[o(h(x.type))])&&B.fromObject&&m(B.fromObject(x),z);break}else if(x.type==="image")n.loadImageFromURL(A,function(y){y.setSourcePath(A);f(y,x);y.setAngle(x.angle);m(y,z)});else if(x.type==="text"){x.path=A;var C=fabric.Text.fromObject(x);l.__context=n;fabric.util.getScript(A,function(){Prototype.Browser.Opera?setTimeout(function(){m(C,z)},500):m(C,z)})}else n.loadSVGFromURL(A,function(y){y=y.length>1?new fabric.PathGroup(y,x):y[0];y.setSourcePath(A);if(!(y instanceof fabric.PathGroup)){f(y,x);
|
||||
typeof x.angle!=="undefined"&&y.setAngle(x.angle)}m(y,z)})},this)}catch(w){console.log(w.message)}},loadImageFromURL:function(){var b={};return function(g,m){function n(){var w=q.getElementById(b[g]);w.width&&w.height?m(new fabric.Image(w)):setTimeout(n,50)}var v=this;if(b[g])n();else{var u=new Image;u.onload=function(){u.onload=null;v._resizeImageToFit(u);var w=new fabric.Image(u);m(w)};u.className="canvas-img-clone";u.src=g;if(this.shouldCacheImages)b[g]=Element.identify(u);q.body.appendChild(u)}}}(),
|
||||
loadSVGFromURL:function(b,g){function m(u){if(u=u.responseXML)(u=u.documentElement)&&fabric.parseSVGDocument(u,function(w,x){v.cache.set(b,{objects:w.invoke("toObject"),options:x});g(w,x)})}function n(){console.log("ERROR!")}var v=this;b=b.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();this.cache.has(b,function(u){if(u)v.cache.get(b,function(w){w=v._enlivenCachedObject(w);g(w.objects,w.options)});else new Ajax.Request(b,{method:"get",onComplete:m,onFailure:n})})},_enlivenCachedObject:function(b){var g=
|
||||
b.objects;b=b.options;g=g.map(function(m){return fabric[h(m.type)].fromObject(m)});return{objects:g,options:b}},remove:function(b){c(this._aObjects,b);this.renderAll();return b},fxRemove:function(b,g){var m=this;b.fxRemove({onChange:this.renderAll.bind(this),onComplete:function(){m.remove(b);typeof g==="function"&&g()}});return this},sendToBack:function(b){c(this._aObjects,b);this._aObjects.unshift(b);return this.renderAll()},bringToFront:function(b){c(this._aObjects,b);this._aObjects.push(b);return this.renderAll()},
|
||||
sendBackwards:function(b){var g=this._aObjects.indexOf(b),m=g;if(g!==0){for(g=g-1;g>=0;--g)if(b.intersectsWithObject(this._aObjects[g])){m=g;break}c(this._aObjects,b);this._aObjects.splice(m,0,b)}return this.renderAll()},bringForward:function(b){var g=this.getObjects(),m=g.indexOf(b),n=m;if(m!==g.length-1){m=m+1;for(var v=this._aObjects.length;m<v;++m)if(b.intersectsWithObject(g[m])){n=m;break}c(g,b);g.splice(n,0,b)}this.renderAll()},setActiveObject:function(b){this._activeObject&&this._activeObject.setActive(false);
|
||||
this._activeObject=b;b.setActive(true);this.renderAll();e("object:selected",{target:b});return this},getActiveObject:function(){return this._activeObject},removeActiveObject:function(){this._activeObject&&this._activeObject.setActive(false);this._activeObject=null;return this},setActiveGroup:function(b){this._activeGroup=b;return this},getActiveGroup:function(){return this._activeGroup},removeActiveGroup:function(){var b=this.getActiveGroup();b&&b.destroy();return this.setActiveGroup(null)},item:function(b){return this.getObjects()[b]},
|
||||
deactivateAll:function(){for(var b=this.getObjects(),g=0,m=b.length;g<m;g++)b[g].setActive(false);this.removeActiveGroup();this.removeActiveObject();return this},complexity:function(){return this.getObjects().reduce(function(b,g){b+=g.complexity?g.complexity():0;return b},0)},dispose:function(){this.clear();p(this.getElement(),"mousedown",this._onMouseDown);p(q,"mouseup",this._onMouseUp);p(q,"mousemove",this._onMouseMove);p(l,"resize",this._onResize);return this},clone:function(b){var g=q.createElement("canvas");
|
||||
g.width=this.getWidth();g.height=this.getHeight();var m=this.__clone||(this.__clone=new fabric.Element(g));return m.loadFromJSON(this.toJSON(),function(){b&&b(m)})},_toDataURL:function(b,g){this.clone(function(m){g(m.toDataURL(b))})},_toDataURLWithMultiplier:function(b,g,m){this.clone(function(n){m(n.toDataURLWithMultiplier(b,g))})},_resizeImageToFit:function(b){var g=b.width||b.offsetWidth,m=b.height||b.offsetHeight,n=this.getWidth()/g,v=this.getHeight()/m;if(g&&m){b.width=g*n;b.height=m*v}},cache:{has:function(b,
|
||||
g){g(false)},get:function(){},set:function(){}}});fabric.Element.prototype.toString=function(){return"#<fabric.Element ("+this.complexity()+"): { objects: "+this.getObjects().length+" }>"};f(fabric.Element,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(b){var g=b.getContext("2d");b=g.getImageData(0,0,b.width,b.height);var m=b.data,n=b.width,v=b.height,u,w;for(i=0;i<n;i++)for(j=0;j<v;j++){u=i*4*v+j*4;w=(m[u]+m[u+1]+m[u+2])/3;m[u]=w;m[u+1]=w;m[u+2]=w}g.putImageData(b,0,0)},
|
||||
supports:function(b){var g=q.createElement("canvas");if(!g||!g.getContext)return null;var m=g.getContext("2d");if(!m)return null;switch(b){case "getImageData":return typeof m.getImageData!=="undefined";case "toDataURL":return typeof g.toDataURL!=="undefined";default:return null}}})}})();
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=l.util.object.extend,f=l.util.object.clone,h=l.util.toFixed,o=l.util.string.capitalize,e=l.util.getPointer,d=Array.prototype.slice;if(!l.Object){l.Object=l.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,FX_DURATION:500,FX_TRANSITION:"decel",MIN_SCALE_LIMIT:0.1,stateProperties:"top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix".split(" "),
|
||||
options:{top:0,left:0,width:100,height:100,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:10,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",overlayFill:null,stroke:null,strokeWidth:1,fillRule:"source-over",borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null},callSuper:function(a){var c=this.constructor.superclass.prototype[a];return arguments.length>1?c.apply(this,d.call(arguments,1)):c.call(this)},
|
||||
initialize:function(a){this.setOptions(a);this._importProperties();this.originalState={};this.setCoords();this.saveState()},setOptions:function(a){this.options=q(this._getOptions(),a)},_getOptions:function(){return q(f(this._getSuperOptions()),this.options)},_getSuperOptions:function(){var a=this.constructor;if(a)if(a=a.superclass)if((a=a.prototype)&&typeof a._getOptions=="function")return a._getOptions();return{}},_importProperties:function(){this.stateProperties.forEach(function(a){a==="angle"?
|
||||
this.setAngle(this.options[a]):this[a]=this.options[a]},this)},transform:function(a){a.globalAlpha=this.opacity;a.translate(this.left,this.top);a.rotate(this.theta);a.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toJSON:function(){return JSON.stringify(this.toObject())},toObject:function(){var a={type:this.type,left:h(this.left,this.NUM_FRACTION_DIGITS),top:h(this.top,this.NUM_FRACTION_DIGITS),width:h(this.width,this.NUM_FRACTION_DIGITS),height:h(this.height,this.NUM_FRACTION_DIGITS),
|
||||
fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:h(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:h(this.scaleY,this.NUM_FRACTION_DIGITS),angle:h(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:h(this.opacity,this.NUM_FRACTION_DIGITS)};this.includeDefaultValues||(a=this._removeDefaultValues(a));return a},toDatalessObject:function(){return this.toObject()},_removeDefaultValues:function(a){var c=l.Object.prototype.options;
|
||||
this.stateProperties.forEach(function(k){a[k]===c[k]&&delete a[k]});return a},isActive:function(){return!!this.active},setActive:function(a){this.active=!!a;return this},toString:function(){return"#<fabric."+o(this.type)+">"},set:function(a,c){if((a==="scaleX"||a==="scaleY")&&c<this.MIN_SCALE_LIMIT)c=this.MIN_SCALE_LIMIT;if(a==="angle")this.setAngle(c);else this[a]=c;return this},toggle:function(a){var c=this.get(a);typeof c==="boolean"&&this.set(a,!c);return this},setSourcePath:function(a){this.sourcePath=
|
||||
a;return this},get:function(a){return a==="angle"?this.getAngle():this[a]},render:function(a,c){if(!(this.width===0||this.height===0)){a.save();var k=this.transformMatrix;k&&a.setTransform(k[0],k[1],k[2],k[3],k[4],k[5]);c||this.transform(a);if(this.stroke){a.lineWidth=this.strokeWidth;a.strokeStyle=this.stroke}if(this.overlayFill)a.fillStyle=this.overlayFill;else if(this.fill)a.fillStyle=this.fill;this._render(a);if(this.active&&!c){this.drawBorders(a);this.drawCorners(a)}a.restore()}},getWidth:function(){return this.width*
|
||||
g=this.getElement().toDataURL("image/"+b)}return g},toDataURLWithMultiplier:function(b,g){var m=this.getWidth(),n=this.getHeight(),v=m*g,u=n*g,w=this.getActiveObject();this.setWidth(v).setHeight(u);this._oContextTop.scale(g,g);w&&this.deactivateAll().renderAll();v=this.toDataURL(b);this._oContextTop.scale(1/g,1/g);this.setWidth(m).setHeight(n);w&&this.setActiveObject(w);this.renderAll();return v},getPointer:function(b){b=c(b);return{x:b.x-this._offset.left,y:b.y-this._offset.top}},getCenter:function(){return{top:this.getHeight()/
|
||||
2,left:this.getWidth()/2}},centerObjectH:function(b){b.set("left",this.getCenter().left);this.renderAll();return this},fxCenterObjectH:function(b){callbacks=callbacks||{};var g=function(){},m=callbacks.onComplete||g,n=callbacks.onChange||g,v=this;fabric.util.animate({startValue:b.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(u){b.set("left",u);v.renderAll();n()},onComplete:function(){b.setCoords();m()}});return this},centerObjectV:function(b){b.set("top",this.getCenter().top);
|
||||
this.renderAll();return this},fxCenterObjectV:function(b){callbacks=callbacks||{};var g=function(){},m=callbacks.onComplete||g,n=callbacks.onChange||g,v=this;fabric.util.animate({startValue:b.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(u){b.set("top",u);v.renderAll();n()},onComplete:function(){b.setCoords();m()}});return this},straightenObject:function(b){b.straighten();this.renderAll();return this},fxStraightenObject:function(b){b.fxStraighten({onChange:this.renderAll.bind(this)});
|
||||
return this},toJSON:function(){return JSON.stringify(this.toObject())},toDatalessJSON:function(){return JSON.stringify(this.toDatalessObject())},toObject:function(){return this._toObjectMethod("toObject")},toDatalessObject:function(){return this._toObjectMethod("toDatalessObject")},_toObjectMethod:function(b){return{objects:this._aObjects.map(function(g){if(!this.includeDefaultValues){var m=g.includeDefaultValues;g.includeDefaultValues=false}var n=g[b]();if(!this.includeDefaultValues)g.includeDefaultValues=
|
||||
m;return n},this),background:this.backgroundColor}},isEmpty:function(){return this._aObjects.length===0},loadFromJSON:function(b,g){if(b){var m=JSON.parse(b);if(!(!m||m&&!m.objects)){this.clear();var n=this;this._enlivenObjects(m.objects,function(){n.backgroundColor=m.background;g&&g()});return this}}},_enlivenObjects:function(b,g){var m=0,n=b.filter(function(u){return u.type==="image"}).length,v=this;b.forEach(function(u){if(u.type)switch(u.type){case "image":case "font":fabric[l(u.type)].fromObject(u,
|
||||
function(x){v.add(x);++m===n&&g&&g()});break;default:var w=fabric[q(l(u.type))];w&&w.fromObject&&v.add(w.fromObject(u));break}});n===0&&g&&g()},loadFromDatalessJSON:function(b,g){if(b){var m=typeof b==="string"?b.evalJSON():b;if(!(!m||m&&!m.objects)){this.clear();this._enlivenDatalessObjects(m.objects,g)}}},_enlivenDatalessObjects:function(b,g){function m(x,z){n.insertAt(x,z);x.setCoords();++v===u&&g&&g()}var n=this,v=0,u=b.length;try{b.forEach(function(x,z){var B=x.paths?"paths":"path",A=x[B];delete x[B];
|
||||
if(typeof A!=="string")switch(x.type){case "image":case "text":Canvas[l(x.type)].fromObject(x,function(y){m(y,z)});break;default:(B=Canvas[q(l(x.type))])&&B.fromObject&&m(B.fromObject(x),z);break}else if(x.type==="image")n.loadImageFromURL(A,function(y){y.setSourcePath(A);f(y,x);y.setAngle(x.angle);m(y,z)});else if(x.type==="text"){x.path=A;var C=fabric.Text.fromObject(x);k.__context=n;fabric.util.getScript(A,function(){Prototype.Browser.Opera?setTimeout(function(){m(C,z)},500):m(C,z)})}else n.loadSVGFromURL(A,
|
||||
function(y){y=y.length>1?new fabric.PathGroup(y,x):y[0];y.setSourcePath(A);if(!(y instanceof fabric.PathGroup)){f(y,x);typeof x.angle!=="undefined"&&y.setAngle(x.angle)}m(y,z)})},this)}catch(w){console.log(w.message)}},loadImageFromURL:function(){var b={};return function(g,m){function n(){var w=p.getElementById(b[g]);w.width&&w.height?m(new fabric.Image(w)):setTimeout(n,50)}var v=this;if(b[g])n();else{var u=new Image;u.onload=function(){u.onload=null;v._resizeImageToFit(u);var w=new fabric.Image(u);
|
||||
m(w)};u.className="canvas-img-clone";u.src=g;if(this.shouldCacheImages)b[g]=Element.identify(u);p.body.appendChild(u)}}}(),loadSVGFromURL:function(b,g){function m(u){if(u=u.responseXML)(u=u.documentElement)&&fabric.parseSVGDocument(u,function(w,x){v.cache.set(b,{objects:w.invoke("toObject"),options:x});g(w,x)})}function n(){console.log("ERROR!")}var v=this;b=b.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();this.cache.has(b,function(u){if(u)v.cache.get(b,function(w){w=v._enlivenCachedObject(w);g(w.objects,
|
||||
w.options)});else new Ajax.Request(b,{method:"get",onComplete:m,onFailure:n})})},_enlivenCachedObject:function(b){var g=b.objects;b=b.options;g=g.map(function(m){return fabric[l(m.type)].fromObject(m)});return{objects:g,options:b}},remove:function(b){d(this._aObjects,b);this.renderAll();return b},fxRemove:function(b,g){var m=this;b.fxRemove({onChange:this.renderAll.bind(this),onComplete:function(){m.remove(b);typeof g==="function"&&g()}});return this},sendToBack:function(b){d(this._aObjects,b);this._aObjects.unshift(b);
|
||||
return this.renderAll()},bringToFront:function(b){d(this._aObjects,b);this._aObjects.push(b);return this.renderAll()},sendBackwards:function(b){var g=this._aObjects.indexOf(b),m=g;if(g!==0){for(g=g-1;g>=0;--g)if(b.intersectsWithObject(this._aObjects[g])){m=g;break}d(this._aObjects,b);this._aObjects.splice(m,0,b)}return this.renderAll()},bringForward:function(b){var g=this.getObjects(),m=g.indexOf(b),n=m;if(m!==g.length-1){m=m+1;for(var v=this._aObjects.length;m<v;++m)if(b.intersectsWithObject(g[m])){n=
|
||||
m;break}d(g,b);g.splice(n,0,b)}this.renderAll()},setActiveObject:function(b){this._activeObject&&this._activeObject.setActive(false);this._activeObject=b;b.setActive(true);this.renderAll();e("object:selected",{target:b});return this},getActiveObject:function(){return this._activeObject},removeActiveObject:function(){this._activeObject&&this._activeObject.setActive(false);this._activeObject=null;return this},setActiveGroup:function(b){this._activeGroup=b;return this},getActiveGroup:function(){return this._activeGroup},
|
||||
removeActiveGroup:function(){var b=this.getActiveGroup();b&&b.destroy();return this.setActiveGroup(null)},item:function(b){return this.getObjects()[b]},deactivateAll:function(){for(var b=this.getObjects(),g=0,m=b.length;g<m;g++)b[g].setActive(false);this.removeActiveGroup();this.removeActiveObject();return this},complexity:function(){return this.getObjects().reduce(function(b,g){b+=g.complexity?g.complexity():0;return b},0)},dispose:function(){this.clear();o(this.getElement(),"mousedown",this._onMouseDown);
|
||||
o(p,"mouseup",this._onMouseUp);o(p,"mousemove",this._onMouseMove);o(k,"resize",this._onResize);return this},clone:function(b){var g=p.createElement("canvas");g.width=this.getWidth();g.height=this.getHeight();var m=this.__clone||(this.__clone=new fabric.Element(g));return m.loadFromJSON(this.toJSON(),function(){b&&b(m)})},_toDataURL:function(b,g){this.clone(function(m){g(m.toDataURL(b))})},_toDataURLWithMultiplier:function(b,g,m){this.clone(function(n){m(n.toDataURLWithMultiplier(b,g))})},_resizeImageToFit:function(b){var g=
|
||||
b.width||b.offsetWidth,m=b.height||b.offsetHeight,n=this.getWidth()/g,v=this.getHeight()/m;if(g&&m){b.width=g*n;b.height=m*v}},cache:{has:function(b,g){g(false)},get:function(){},set:function(){}}});fabric.Element.prototype.toString=function(){return"#<fabric.Element ("+this.complexity()+"): { objects: "+this.getObjects().length+" }>"};f(fabric.Element,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(b){var g=b.getContext("2d");b=g.getImageData(0,0,b.width,b.height);var m=
|
||||
b.data,n=b.width,v=b.height,u,w;for(i=0;i<n;i++)for(j=0;j<v;j++){u=i*4*v+j*4;w=(m[u]+m[u+1]+m[u+2])/3;m[u]=w;m[u+1]=w;m[u+2]=w}g.putImageData(b,0,0)},supports:function(b){var g=p.createElement("canvas");if(!g||!g.getContext)return null;var m=g.getContext("2d");if(!m)return null;switch(b){case "getImageData":return typeof m.getImageData!=="undefined";case "toDataURL":return typeof g.toDataURL!=="undefined";default:return null}}})}})();
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=k.util.object.extend,f=k.util.object.clone,l=k.util.toFixed,q=k.util.string.capitalize,e=k.util.getPointer,c=Array.prototype.slice;if(!k.Object){k.Object=k.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,FX_DURATION:500,FX_TRANSITION:"decel",MIN_SCALE_LIMIT:0.1,stateProperties:"top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix".split(" "),
|
||||
options:{top:0,left:0,width:100,height:100,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:10,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",overlayFill:null,stroke:null,strokeWidth:1,fillRule:"source-over",borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null},callSuper:function(a){var d=this.constructor.superclass.prototype[a];return arguments.length>1?d.apply(this,c.call(arguments,1)):d.call(this)},
|
||||
initialize:function(a){this.setOptions(a);this._importProperties();this.originalState={};this.setCoords();this.saveState()},setOptions:function(a){this.options=p(this._getOptions(),a)},_getOptions:function(){return p(f(this._getSuperOptions()),this.options)},_getSuperOptions:function(){var a=this.constructor;if(a)if(a=a.superclass)if((a=a.prototype)&&typeof a._getOptions=="function")return a._getOptions();return{}},_importProperties:function(){this.stateProperties.forEach(function(a){a==="angle"?
|
||||
this.setAngle(this.options[a]):this[a]=this.options[a]},this)},transform:function(a){a.globalAlpha=this.opacity;a.translate(this.left,this.top);a.rotate(this.theta);a.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toJSON:function(){return JSON.stringify(this.toObject())},toObject:function(){var a={type:this.type,left:l(this.left,this.NUM_FRACTION_DIGITS),top:l(this.top,this.NUM_FRACTION_DIGITS),width:l(this.width,this.NUM_FRACTION_DIGITS),height:l(this.height,this.NUM_FRACTION_DIGITS),
|
||||
fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:l(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:l(this.scaleY,this.NUM_FRACTION_DIGITS),angle:l(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:l(this.opacity,this.NUM_FRACTION_DIGITS)};this.includeDefaultValues||(a=this._removeDefaultValues(a));return a},toDatalessObject:function(){return this.toObject()},_removeDefaultValues:function(a){var d=k.Object.prototype.options;
|
||||
this.stateProperties.forEach(function(h){a[h]===d[h]&&delete a[h]});return a},isActive:function(){return!!this.active},setActive:function(a){this.active=!!a;return this},toString:function(){return"#<fabric."+q(this.type)+">"},set:function(a,d){if((a==="scaleX"||a==="scaleY")&&d<this.MIN_SCALE_LIMIT)d=this.MIN_SCALE_LIMIT;if(a==="angle")this.setAngle(d);else this[a]=d;return this},toggle:function(a){var d=this.get(a);typeof d==="boolean"&&this.set(a,!d);return this},setSourcePath:function(a){this.sourcePath=
|
||||
a;return this},get:function(a){return a==="angle"?this.getAngle():this[a]},render:function(a,d){if(!(this.width===0||this.height===0)){a.save();var h=this.transformMatrix;h&&a.setTransform(h[0],h[1],h[2],h[3],h[4],h[5]);d||this.transform(a);if(this.stroke){a.lineWidth=this.strokeWidth;a.strokeStyle=this.stroke}if(this.overlayFill)a.fillStyle=this.overlayFill;else if(this.fill)a.fillStyle=this.fill;this._render(a);if(this.active&&!d){this.drawBorders(a);this.drawCorners(a)}a.restore()}},getWidth:function(){return this.width*
|
||||
this.scaleX},getHeight:function(){return this.height*this.scaleY},scale:function(a){this.scaleY=this.scaleX=a;return this},scaleToWidth:function(a){return this.scale(a/this.width)},scaleToHeight:function(a){return this.scale(a/this.height)},setOpacity:function(a){this.set("opacity",a);return this},getAngle:function(){return this.theta*180/Math.PI},setAngle:function(a){this.theta=a/180*Math.PI;this.angle=a;return this},setCoords:function(){this.currentWidth=this.width*this.scaleX;this.currentHeight=
|
||||
this.height*this.scaleY;this._hypotenuse=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2));this._angle=Math.atan(this.currentHeight/this.currentWidth);var a=Math.cos(this._angle+this.theta)*this._hypotenuse,c=Math.sin(this._angle+this.theta)*this._hypotenuse,k=this.theta,p=Math.sin(k);k=Math.cos(k);a={x:this.left-a,y:this.top-c};c={x:a.x+this.currentWidth*k,y:a.y+this.currentWidth*p};var r={x:a.x-this.currentHeight*p,y:a.y+this.currentHeight*k};this.oCoords={tl:a,tr:c,br:{x:c.x-
|
||||
this.currentHeight*p,y:c.y+this.currentHeight*k},bl:r,ml:{x:a.x-this.currentHeight/2*p,y:a.y+this.currentHeight/2*k},mt:{x:a.x+this.currentWidth/2*k,y:a.y+this.currentWidth/2*p},mr:{x:c.x-this.currentHeight/2*p,y:c.y+this.currentHeight/2*k},mb:{x:r.x+this.currentWidth/2*k,y:r.y+this.currentWidth/2*p}};this._setCornerCoords();return this},drawBorders:function(a){var c=this.options,k=c.padding,p=k*2;a.save();a.globalAlpha=this.isMoving?c.borderOpacityWhenMoving:1;a.strokeStyle=c.borderColor;c=1/(this.scaleX<
|
||||
this.MIN_SCALE_LIMIT?this.MIN_SCALE_LIMIT:this.scaleX);var r=1/(this.scaleY<this.MIN_SCALE_LIMIT?this.MIN_SCALE_LIMIT:this.scaleY);a.lineWidth=1/this.borderScaleFactor;a.scale(c,r);c=this.getWidth();r=this.getHeight();a.strokeRect(Math.floor(-(c/2)-k)+0.5,Math.floor(-(r/2)-k)+0.5,Math.floor(c+p),Math.floor(r+p));a.restore();return this},drawCorners:function(a){var c=this.options.cornersize,k=c/2,p=this.options.padding,r=-(this.width/2),s=-(this.height/2),t=c/this.scaleX,b=c/this.scaleY,g=(p+k)/this.scaleY,
|
||||
m=(p+k)/this.scaleX,n=(p+k-c)/this.scaleX;p=(p+k-c)/this.scaleY;a.save();a.globalAlpha=this.isMoving?this.options.borderOpacityWhenMoving:1;a.fillStyle=this.options.cornerColor;c=r-m;k=s-g;a.fillRect(c,k,t,b);c=r+this.width-m;k=s-g;a.fillRect(c,k,t,b);c=r-m;k=s+this.height+p;a.fillRect(c,k,t,b);c=r+this.width+n;k=s+this.height+p;a.fillRect(c,k,t,b);c=r+this.width/2-m;k=s-g;a.fillRect(c,k,t,b);c=r+this.width/2-m;k=s+this.height+p;a.fillRect(c,k,t,b);c=r+this.width+n;k=s+this.height/2-g;a.fillRect(c,
|
||||
k,t,b);c=r-m;k=s+this.height/2-g;a.fillRect(c,k,t,b);a.restore();return this},clone:function(a){if(this.constructor.fromObject)return this.constructor.fromObject(this.toObject(),a);return new l.Object(this.toObject())},cloneAsImage:function(a){if(l.Image){var c=new Image;c.onload=function(){a&&a(new l.Image(c),k);c=c.onload=null};var k={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",false).set("flipY",false);c.src=this.toDataURL()}return this},
|
||||
toDataURL:function(){var a=document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();l.util.wrapElement(a,"div");var c=new l.Element(a);c.backgroundColor="transparent";c.renderAll();var k=this.clone();k.left=a.width/2;k.top=a.height/2;k.setActive(false);c.add(k);a=c.toDataURL("png");c.dispose();return a},hasStateChanged:function(){return this.stateProperties.some(function(a){return this[a]!==this.originalState[a]},this)},saveState:function(){this.stateProperties.forEach(function(a){this.originalState[a]=
|
||||
this.get(a)},this);return this},intersectsWithRect:function(a,c){var k=this.oCoords,p=new l.Point(k.tl.x,k.tl.y),r=new l.Point(k.tr.x,k.tr.y),s=new l.Point(k.bl.x,k.bl.y);k=new l.Point(k.br.x,k.br.y);return l.Intersection.intersectPolygonRectangle([p,r,k,s],a,c).status==="Intersection"},intersectsWithObject:function(a){function c(p){return{tl:new l.Point(p.tl.x,p.tl.y),tr:new l.Point(p.tr.x,p.tr.y),bl:new l.Point(p.bl.x,p.bl.y),br:new l.Point(p.br.x,p.br.y)}}var k=c(this.oCoords);a=c(a.oCoords);return l.Intersection.intersectPolygonPolygon([k.tl,
|
||||
k.tr,k.br,k.bl],[a.tl,a.tr,a.br,a.bl]).status==="Intersection"},isContainedWithinRect:function(a,c){var k=this.oCoords,p=new l.Point(k.tl.x,k.tl.y),r=new l.Point(k.tr.x,k.tr.y),s=new l.Point(k.bl.x,k.bl.y);new l.Point(k.br.x,k.br.y);return p.x>a.x&&r.x<c.x&&p.y>a.y&&s.y<c.y},isType:function(a){return this.type===a},_findTargetCorner:function(a,c){var k=e(a),p=k.x-c.left;k=k.y-c.top;var r;for(var s in this.oCoords){r=this._getImageLines(this.oCoords[s].corner,s);r=this._findCrossPoints(p,k,r);if(r%
|
||||
2==1&&r!=0)return this.__corner=s}return false},_findCrossPoints:function(a,c,k){var p,r,s,t=0;for(var b in k){s=k[b];if(!(s.o.y<c&&s.d.y<c))if(!(s.o.y>=c&&s.d.y>=c)){if(s.o.x==s.d.x&&s.o.x>=a)p=s.o.x;else{p=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=c-0*a;s=s.o.y-p*s.o.x;p=-(r-s)/(0-p)}if(p>=a)t+=1;if(t==2)break}}return t},_getImageLines:function(a){return{topline:{o:a.tl,d:a.tr},rightline:{o:a.tr,d:a.br},bottomline:{o:a.br,d:a.bl},leftline:{o:a.bl,d:a.tl}}},_setCornerCoords:function(){var a=this.oCoords,c=this.theta,
|
||||
k=this.cornersize*Math.cos(c),p=this.cornersize*Math.sin(c);c=this.cornersize/2;var r=c-p;a.tl.x-=r;a.tl.y-=c;a.tl.corner={tl:{x:a.tl.x,y:a.tl.y},tr:{x:a.tl.x+k,y:a.tl.y+p},bl:{x:a.tl.x-p,y:a.tl.y+k}};a.tl.corner.br={x:a.tl.corner.tr.x-p,y:a.tl.corner.tr.y+k};a.tl.x+=r;a.tl.y+=c;a.tr.x+=c;a.tr.y-=c;a.tr.corner={tl:{x:a.tr.x-k,y:a.tr.y-p},tr:{x:a.tr.x,y:a.tr.y},br:{x:a.tr.x-p,y:a.tr.y+k}};a.tr.corner.bl={x:a.tr.corner.tl.x-p,y:a.tr.corner.tl.y+k};a.tr.x-=c;a.tr.y+=c;a.bl.x-=c;a.bl.y+=c;a.bl.corner=
|
||||
{tl:{x:a.bl.x+p,y:a.bl.y-k},bl:{x:a.bl.x,y:a.bl.y},br:{x:a.bl.x+k,y:a.bl.y+p}};a.bl.corner.tr={x:a.bl.corner.br.x+p,y:a.bl.corner.br.y-k};a.bl.x+=c;a.bl.y-=c;a.br.x+=c;a.br.y+=c;a.br.corner={tr:{x:a.br.x+p,y:a.br.y-k},bl:{x:a.br.x-k,y:a.br.y-p},br:{x:a.br.x,y:a.br.y}};a.br.corner.tl={x:a.br.corner.bl.x+p,y:a.br.corner.bl.y-k};a.br.x-=c;a.br.y-=c;a.ml.x-=c;a.ml.y-=c;a.ml.corner={tl:{x:a.ml.x,y:a.ml.y},tr:{x:a.ml.x+k,y:a.ml.y+p},bl:{x:a.ml.x-p,y:a.ml.y+k}};a.ml.corner.br={x:a.ml.corner.tr.x-p,y:a.ml.corner.tr.y+
|
||||
k};a.ml.x+=c;a.ml.y+=c;a.mt.x-=c;a.mt.y-=c;a.mt.corner={tl:{x:a.mt.x,y:a.mt.y},tr:{x:a.mt.x+k,y:a.mt.y+p},bl:{x:a.mt.x-p,y:a.mt.y+k}};a.mt.corner.br={x:a.mt.corner.tr.x-p,y:a.mt.corner.tr.y+k};a.mt.x+=c;a.mt.y+=c;a.mr.x-=c;a.mr.y-=c;a.mr.corner={tl:{x:a.mr.x,y:a.mr.y},tr:{x:a.mr.x+k,y:a.mr.y+p},bl:{x:a.mr.x-p,y:a.mr.y+k}};a.mr.corner.br={x:a.mr.corner.tr.x-p,y:a.mr.corner.tr.y+k};a.mr.x+=c;a.mr.y+=c;a.mb.x-=c;a.mb.y-=c;a.mb.corner={tl:{x:a.mb.x,y:a.mb.y},tr:{x:a.mb.x+k,y:a.mb.y+p},bl:{x:a.mb.x-p,
|
||||
y:a.mb.y+k}};a.mb.corner.br={x:a.mb.corner.tr.x-p,y:a.mb.corner.tr.y+k};a.mb.x+=c;a.mb.y+=c;a=a.mb.corner;a.tl.x-=c;a.tl.y-=c;a.tr.x-=c;a.tr.y-=c;a.br.x-=c;a.br.y-=c;a.bl.x-=c;a.bl.y-=c},toGrayscale:function(){var a=this.get("fill");a&&this.set("overlayFill",(new l.Color(a)).toGrayscale().toRgb());return this},complexity:function(){return 0},getCenter:function(){return{x:this.get("left")+this.width/2,y:this.get("top")+this.height/2}},straighten:function(){this.setAngle(this._getAngleValueForStraighten());
|
||||
return this},fxStraighten:function(a){a=a||{};var c=function(){},k=a.onComplete||c,p=a.onChange||c,r=this;l.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(s){r.setAngle(s);p()},onComplete:function(){r.setCoords();k()},onStart:function(){r.setActive(false)}});return this},fxRemove:function(a){a||(a={});var c=function(){},k=a.onComplete||c,p=a.onChange||c,r=this;l.util.animate({startValue:this.get("opacity"),endValue:0,
|
||||
duration:this.FX_DURATION,onChange:function(s){r.set("opacity",s);p()},onComplete:k,onStart:function(){r.setActive(false)}});return this},_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135)return-180;else if(a>-135&&a<=-45)return-90;else if(a>-45&&a<=45)return 0;else if(a>45&&a<=135)return 90;else if(a>135&&a<=225)return 180;else if(a>225&&a<=315)return 270;else if(a>315)return 360;return 0}});l.Object.prototype.rotate=l.Object.prototype.setAngle}})();
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=l.util.object.extend;if(!l.Line){l.Line=l.util.createClass(l.Object,{type:"line",initialize:function(f,h){f||(f=[0,0,0,0]);this.callSuper("initialize",h);this.set("x1",f[0]);this.set("y1",f[1]);this.set("x2",f[2]);this.set("y2",f[3]);this.set("width",this.x2-this.x1);this.set("height",this.y2-this.y1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},_render:function(f){f.beginPath();f.moveTo(-this.width/2,-this.height/2);
|
||||
f.lineTo(this.width/2,this.height/2);var h=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=h},complexity:function(){return 1},toObject:function(){return q(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})}});l.Element.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");l.Line.fromElement=function(f,h){var o=l.parseAttributes(f,l.Element.ATTRIBUTE_NAMES);return new l.Line([o.x1||0,o.y1||0,o.x2||0,o.y2||0],q(o,h))};
|
||||
l.Line.fromObject=function(f){return new l.Line([f.x1,f.y1,f.x2,f.y2],f)}}})();
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=Math.PI*2,f=l.util.object.extend;if(l.Circle)console.warn("fabric.Circle is already defined.");else{l.Circle=l.util.createClass(l.Object,{type:"circle",initialize:function(h){h=h||{};this.set("radius",h.radius||0);this.callSuper("initialize",h);h=this.get("radius")*2*this.get("scaleX");this.set("width",h).set("height",h)},toObject:function(){return f(this.callSuper("toObject"),{radius:this.get("radius")})},_render:function(h){h.beginPath();h.arc(0,
|
||||
0,this.radius,0,q,false);this.fill&&h.fill();this.stroke&&h.stroke()},complexity:function(){return 1}});l.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity stroke stroke-width transform".split(" ");l.Circle.fromElement=function(h,o){var e=l.parseAttributes(h,l.Circle.ATTRIBUTE_NAMES);if(!("radius"in e&&e.radius>0))throw Error("value of `r` attribute is required and can not be negative");return new l.Circle(f(e,o))};l.Circle.fromObject=function(h){return new l.Circle(h)}}})();
|
||||
(function(){var l=this.fabric||(this.fabric={});if(!l.Triangle){l.Triangle=l.util.createClass(l.Object,{type:"triangle",initialize:function(q){q=q||{};this.callSuper("initialize",q);this.set("width",q.width||100).set("height",q.height||100)},_render:function(q){q.beginPath();q.moveTo(-this.width/2,this.height/2);q.lineTo(0,-this.height/2);q.lineTo(this.width/2,this.height/2);this.fill&&q.fill();this.stroke&&q.stroke()},complexity:function(){return 1}});l.Triangle.fromObject=function(q){return new l.Triangle(q)}}})();
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=l.util.object.extend;if(l.Ellipse)console.warn("fabric.Ellipse is already defined.");else{l.Ellipse=l.util.createClass(l.Object,{type:"ellipse",initialize:function(f){f=f||{};this.callSuper("initialize",f);this.set("rx",f.rx||0);this.set("ry",f.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return q(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},render:function(f,h){if(!(this.rx===
|
||||
0||this.ry===0))return this.callSuper("render",f,h)},_render:function(f){f.beginPath();f.save();f.transform(1,0,0,this.ry/this.rx,0,0);f.arc(0,0,this.rx,0,Math.PI*2,false);f.restore();this.stroke&&f.stroke();this.fill&&f.fill()},complexity:function(){return 1}});l.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity stroke stroke-width transform".split(" ");l.Ellipse.fromElement=function(f,h){var o=l.parseAttributes(f,l.Ellipse.ATTRIBUTE_NAMES);return new l.Ellipse(q(o,h))};l.Ellipse.fromObject=
|
||||
function(f){return new l.Ellipse(f)}}})();
|
||||
(function(){var l=this.fabric||(this.fabric={});if(!l.Rect){l.Rect=l.util.createClass(l.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(q){this.callSuper("initialize",q);this._initRxRy()},_initRxRy:function(){if(this.options.rx&&!this.options.ry)this.options.ry=this.options.rx;else if(this.options.ry&&!this.options.rx)this.options.rx=this.options.ry},_render:function(q){var f=this.options.rx||0,h=this.options.ry||0,o=-this.width/2,e=-this.height/2,d=this.width,a=this.height;q.beginPath();
|
||||
q.moveTo(o+f,e);q.lineTo(o+d-f,e);q.bezierCurveTo(o+d,e,o+d,e+h,o+d,e+h);q.lineTo(o+d,e+a-h);q.bezierCurveTo(o+d,e+a,o+d-f,e+a,o+d-f,e+a);q.lineTo(o+f,e+a);q.bezierCurveTo(o,e+a,o,e+a-h,o,e+a-h);q.lineTo(o,e+h);q.bezierCurveTo(o,e,o+f,e,o+f,e);q.closePath();this.fill&&q.fill();this.stroke&&q.stroke()},_normalizeLeftTopProperties:function(q){q.left&&this.set("left",q.left+this.getWidth()/2);q.top&&this.set("top",q.top+this.getHeight()/2);return this},complexity:function(){return 1}});l.Rect.ATTRIBUTE_NAMES=
|
||||
"x y width height rx ry fill fill-opacity stroke stroke-width transform".split(" ");l.Rect.fromElement=function(q,f){if(!q)return null;var h=l.parseAttributes(q,l.Rect.ATTRIBUTE_NAMES);h=h;h.left=h.left||0;h.top=h.top||0;h=h;var o=new l.Rect(l.util.object.extend(f||{},h));o._normalizeLeftTopProperties(h);return o};l.Rect.fromObject=function(q){return new l.Rect(q)}}})();
|
||||
(function(){var l=this.fabric||(this.fabric={});if(l.Polyline)console.warn("fabric.Polyline is already defined");else{l.Polyline=l.util.createClass(l.Object,{type:"polyline",initialize:function(f,h){h=h||{};this.set("points",f);this.callSuper("initialize",h);this._calcDimensions()},_calcDimensions:function(){return l.Polygon.prototype._calcDimensions.call(this)},_toOrigin:function(){return l.Polygon.prototype._toOrigin.call(this)},toObject:function(){return l.Polygon.prototype.toObject.call(this)},
|
||||
_render:function(f){var h;f.beginPath();for(var o=0,e=this.points.length;o<e;o++){h=this.points[o];f.lineTo(h.x,h.y)}this.fill&&f.fill();this.stroke&&f.stroke()},complexity:function(){return this.get("points").length}});var q="fill fill-opacity stroke stroke-width transform".split(" ");l.Polyline.fromElement=function(f,h){if(!f)return null;var o=l.parsePointsAttribute(f.getAttribute("points")),e=l.parseAttributes(f,q);return new l.Polyline(o,l.util.object.extend(e,h))};l.Polyline.fromObject=function(f){return new l.Polyline(f.points,
|
||||
this.height*this.scaleY;this._hypotenuse=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2));this._angle=Math.atan(this.currentHeight/this.currentWidth);var a=Math.cos(this._angle+this.theta)*this._hypotenuse,d=Math.sin(this._angle+this.theta)*this._hypotenuse,h=this.theta,o=Math.sin(h);h=Math.cos(h);a={x:this.left-a,y:this.top-d};d={x:a.x+this.currentWidth*h,y:a.y+this.currentWidth*o};var r={x:a.x-this.currentHeight*o,y:a.y+this.currentHeight*h};this.oCoords={tl:a,tr:d,br:{x:d.x-
|
||||
this.currentHeight*o,y:d.y+this.currentHeight*h},bl:r,ml:{x:a.x-this.currentHeight/2*o,y:a.y+this.currentHeight/2*h},mt:{x:a.x+this.currentWidth/2*h,y:a.y+this.currentWidth/2*o},mr:{x:d.x-this.currentHeight/2*o,y:d.y+this.currentHeight/2*h},mb:{x:r.x+this.currentWidth/2*h,y:r.y+this.currentWidth/2*o}};this._setCornerCoords();return this},drawBorders:function(a){var d=this.options,h=d.padding,o=h*2;a.save();a.globalAlpha=this.isMoving?d.borderOpacityWhenMoving:1;a.strokeStyle=d.borderColor;d=1/(this.scaleX<
|
||||
this.MIN_SCALE_LIMIT?this.MIN_SCALE_LIMIT:this.scaleX);var r=1/(this.scaleY<this.MIN_SCALE_LIMIT?this.MIN_SCALE_LIMIT:this.scaleY);a.lineWidth=1/this.borderScaleFactor;a.scale(d,r);d=this.getWidth();r=this.getHeight();a.strokeRect(Math.floor(-(d/2)-h)+0.5,Math.floor(-(r/2)-h)+0.5,Math.floor(d+o),Math.floor(r+o));a.restore();return this},drawCorners:function(a){var d=this.options.cornersize,h=d/2,o=this.options.padding,r=-(this.width/2),s=-(this.height/2),t=d/this.scaleX,b=d/this.scaleY,g=(o+h)/this.scaleY,
|
||||
m=(o+h)/this.scaleX,n=(o+h-d)/this.scaleX;o=(o+h-d)/this.scaleY;a.save();a.globalAlpha=this.isMoving?this.options.borderOpacityWhenMoving:1;a.fillStyle=this.options.cornerColor;d=r-m;h=s-g;a.fillRect(d,h,t,b);d=r+this.width-m;h=s-g;a.fillRect(d,h,t,b);d=r-m;h=s+this.height+o;a.fillRect(d,h,t,b);d=r+this.width+n;h=s+this.height+o;a.fillRect(d,h,t,b);d=r+this.width/2-m;h=s-g;a.fillRect(d,h,t,b);d=r+this.width/2-m;h=s+this.height+o;a.fillRect(d,h,t,b);d=r+this.width+n;h=s+this.height/2-g;a.fillRect(d,
|
||||
h,t,b);d=r-m;h=s+this.height/2-g;a.fillRect(d,h,t,b);a.restore();return this},clone:function(a){if(this.constructor.fromObject)return this.constructor.fromObject(this.toObject(),a);return new k.Object(this.toObject())},cloneAsImage:function(a){if(k.Image){var d=new Image;d.onload=function(){a&&a(new k.Image(d),h);d=d.onload=null};var h={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",false).set("flipY",false);d.src=this.toDataURL()}return this},
|
||||
toDataURL:function(){var a=document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();k.util.wrapElement(a,"div");var d=new k.Element(a);d.backgroundColor="transparent";d.renderAll();var h=this.clone();h.left=a.width/2;h.top=a.height/2;h.setActive(false);d.add(h);a=d.toDataURL("png");d.dispose();return a},hasStateChanged:function(){return this.stateProperties.some(function(a){return this[a]!==this.originalState[a]},this)},saveState:function(){this.stateProperties.forEach(function(a){this.originalState[a]=
|
||||
this.get(a)},this);return this},intersectsWithRect:function(a,d){var h=this.oCoords,o=new k.Point(h.tl.x,h.tl.y),r=new k.Point(h.tr.x,h.tr.y),s=new k.Point(h.bl.x,h.bl.y);h=new k.Point(h.br.x,h.br.y);return k.Intersection.intersectPolygonRectangle([o,r,h,s],a,d).status==="Intersection"},intersectsWithObject:function(a){function d(o){return{tl:new k.Point(o.tl.x,o.tl.y),tr:new k.Point(o.tr.x,o.tr.y),bl:new k.Point(o.bl.x,o.bl.y),br:new k.Point(o.br.x,o.br.y)}}var h=d(this.oCoords);a=d(a.oCoords);return k.Intersection.intersectPolygonPolygon([h.tl,
|
||||
h.tr,h.br,h.bl],[a.tl,a.tr,a.br,a.bl]).status==="Intersection"},isContainedWithinRect:function(a,d){var h=this.oCoords,o=new k.Point(h.tl.x,h.tl.y),r=new k.Point(h.tr.x,h.tr.y),s=new k.Point(h.bl.x,h.bl.y);new k.Point(h.br.x,h.br.y);return o.x>a.x&&r.x<d.x&&o.y>a.y&&s.y<d.y},isType:function(a){return this.type===a},_findTargetCorner:function(a,d){var h=e(a),o=h.x-d.left;h=h.y-d.top;var r;for(var s in this.oCoords){r=this._getImageLines(this.oCoords[s].corner,s);r=this._findCrossPoints(o,h,r);if(r%
|
||||
2==1&&r!=0)return this.__corner=s}return false},_findCrossPoints:function(a,d,h){var o,r,s,t=0;for(var b in h){s=h[b];if(!(s.o.y<d&&s.d.y<d))if(!(s.o.y>=d&&s.d.y>=d)){if(s.o.x==s.d.x&&s.o.x>=a)o=s.o.x;else{o=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=d-0*a;s=s.o.y-o*s.o.x;o=-(r-s)/(0-o)}if(o>=a)t+=1;if(t==2)break}}return t},_getImageLines:function(a){return{topline:{o:a.tl,d:a.tr},rightline:{o:a.tr,d:a.br},bottomline:{o:a.br,d:a.bl},leftline:{o:a.bl,d:a.tl}}},_setCornerCoords:function(){var a=this.oCoords,d=this.theta,
|
||||
h=this.cornersize*Math.cos(d),o=this.cornersize*Math.sin(d);d=this.cornersize/2;var r=d-o;a.tl.x-=r;a.tl.y-=d;a.tl.corner={tl:{x:a.tl.x,y:a.tl.y},tr:{x:a.tl.x+h,y:a.tl.y+o},bl:{x:a.tl.x-o,y:a.tl.y+h}};a.tl.corner.br={x:a.tl.corner.tr.x-o,y:a.tl.corner.tr.y+h};a.tl.x+=r;a.tl.y+=d;a.tr.x+=d;a.tr.y-=d;a.tr.corner={tl:{x:a.tr.x-h,y:a.tr.y-o},tr:{x:a.tr.x,y:a.tr.y},br:{x:a.tr.x-o,y:a.tr.y+h}};a.tr.corner.bl={x:a.tr.corner.tl.x-o,y:a.tr.corner.tl.y+h};a.tr.x-=d;a.tr.y+=d;a.bl.x-=d;a.bl.y+=d;a.bl.corner=
|
||||
{tl:{x:a.bl.x+o,y:a.bl.y-h},bl:{x:a.bl.x,y:a.bl.y},br:{x:a.bl.x+h,y:a.bl.y+o}};a.bl.corner.tr={x:a.bl.corner.br.x+o,y:a.bl.corner.br.y-h};a.bl.x+=d;a.bl.y-=d;a.br.x+=d;a.br.y+=d;a.br.corner={tr:{x:a.br.x+o,y:a.br.y-h},bl:{x:a.br.x-h,y:a.br.y-o},br:{x:a.br.x,y:a.br.y}};a.br.corner.tl={x:a.br.corner.bl.x+o,y:a.br.corner.bl.y-h};a.br.x-=d;a.br.y-=d;a.ml.x-=d;a.ml.y-=d;a.ml.corner={tl:{x:a.ml.x,y:a.ml.y},tr:{x:a.ml.x+h,y:a.ml.y+o},bl:{x:a.ml.x-o,y:a.ml.y+h}};a.ml.corner.br={x:a.ml.corner.tr.x-o,y:a.ml.corner.tr.y+
|
||||
h};a.ml.x+=d;a.ml.y+=d;a.mt.x-=d;a.mt.y-=d;a.mt.corner={tl:{x:a.mt.x,y:a.mt.y},tr:{x:a.mt.x+h,y:a.mt.y+o},bl:{x:a.mt.x-o,y:a.mt.y+h}};a.mt.corner.br={x:a.mt.corner.tr.x-o,y:a.mt.corner.tr.y+h};a.mt.x+=d;a.mt.y+=d;a.mr.x-=d;a.mr.y-=d;a.mr.corner={tl:{x:a.mr.x,y:a.mr.y},tr:{x:a.mr.x+h,y:a.mr.y+o},bl:{x:a.mr.x-o,y:a.mr.y+h}};a.mr.corner.br={x:a.mr.corner.tr.x-o,y:a.mr.corner.tr.y+h};a.mr.x+=d;a.mr.y+=d;a.mb.x-=d;a.mb.y-=d;a.mb.corner={tl:{x:a.mb.x,y:a.mb.y},tr:{x:a.mb.x+h,y:a.mb.y+o},bl:{x:a.mb.x-o,
|
||||
y:a.mb.y+h}};a.mb.corner.br={x:a.mb.corner.tr.x-o,y:a.mb.corner.tr.y+h};a.mb.x+=d;a.mb.y+=d;a=a.mb.corner;a.tl.x-=d;a.tl.y-=d;a.tr.x-=d;a.tr.y-=d;a.br.x-=d;a.br.y-=d;a.bl.x-=d;a.bl.y-=d},toGrayscale:function(){var a=this.get("fill");a&&this.set("overlayFill",(new k.Color(a)).toGrayscale().toRgb());return this},complexity:function(){return 0},getCenter:function(){return{x:this.get("left")+this.width/2,y:this.get("top")+this.height/2}},straighten:function(){this.setAngle(this._getAngleValueForStraighten());
|
||||
return this},fxStraighten:function(a){a=a||{};var d=function(){},h=a.onComplete||d,o=a.onChange||d,r=this;k.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(s){r.setAngle(s);o()},onComplete:function(){r.setCoords();h()},onStart:function(){r.setActive(false)}});return this},fxRemove:function(a){a||(a={});var d=function(){},h=a.onComplete||d,o=a.onChange||d,r=this;k.util.animate({startValue:this.get("opacity"),endValue:0,
|
||||
duration:this.FX_DURATION,onChange:function(s){r.set("opacity",s);o()},onComplete:h,onStart:function(){r.setActive(false)}});return this},_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135)return-180;else if(a>-135&&a<=-45)return-90;else if(a>-45&&a<=45)return 0;else if(a>45&&a<=135)return 90;else if(a>135&&a<=225)return 180;else if(a>225&&a<=315)return 270;else if(a>315)return 360;return 0}});k.Object.prototype.rotate=k.Object.prototype.setAngle}})();
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=k.util.object.extend;if(!k.Line){k.Line=k.util.createClass(k.Object,{type:"line",initialize:function(f,l){f||(f=[0,0,0,0]);this.callSuper("initialize",l);this.set("x1",f[0]);this.set("y1",f[1]);this.set("x2",f[2]);this.set("y2",f[3]);this.set("width",this.x2-this.x1);this.set("height",this.y2-this.y1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},_render:function(f){f.beginPath();f.moveTo(-this.width/2,-this.height/2);
|
||||
f.lineTo(this.width/2,this.height/2);var l=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=l},complexity:function(){return 1},toObject:function(){return p(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})}});k.Element.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");k.Line.fromElement=function(f,l){var q=k.parseAttributes(f,k.Element.ATTRIBUTE_NAMES);return new k.Line([q.x1||0,q.y1||0,q.x2||0,q.y2||0],p(q,l))};
|
||||
k.Line.fromObject=function(f){return new k.Line([f.x1,f.y1,f.x2,f.y2],f)}}})();
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=Math.PI*2,f=k.util.object.extend;if(k.Circle)console.warn("fabric.Circle is already defined.");else{k.Circle=k.util.createClass(k.Object,{type:"circle",initialize:function(l){l=l||{};this.set("radius",l.radius||0);this.callSuper("initialize",l);l=this.get("radius")*2*this.get("scaleX");this.set("width",l).set("height",l)},toObject:function(){return f(this.callSuper("toObject"),{radius:this.get("radius")})},_render:function(l){l.beginPath();l.arc(0,
|
||||
0,this.radius,0,p,false);this.fill&&l.fill();this.stroke&&l.stroke()},complexity:function(){return 1}});k.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity stroke stroke-width transform".split(" ");k.Circle.fromElement=function(l,q){var e=k.parseAttributes(l,k.Circle.ATTRIBUTE_NAMES);if(!("radius"in e&&e.radius>0))throw Error("value of `r` attribute is required and can not be negative");return new k.Circle(f(e,q))};k.Circle.fromObject=function(l){return new k.Circle(l)}}})();
|
||||
(function(){var k=this.fabric||(this.fabric={});if(!k.Triangle){k.Triangle=k.util.createClass(k.Object,{type:"triangle",initialize:function(p){p=p||{};this.callSuper("initialize",p);this.set("width",p.width||100).set("height",p.height||100)},_render:function(p){p.beginPath();p.moveTo(-this.width/2,this.height/2);p.lineTo(0,-this.height/2);p.lineTo(this.width/2,this.height/2);this.fill&&p.fill();this.stroke&&p.stroke()},complexity:function(){return 1}});k.Triangle.fromObject=function(p){return new k.Triangle(p)}}})();
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=k.util.object.extend;if(k.Ellipse)console.warn("fabric.Ellipse is already defined.");else{k.Ellipse=k.util.createClass(k.Object,{type:"ellipse",initialize:function(f){f=f||{};this.callSuper("initialize",f);this.set("rx",f.rx||0);this.set("ry",f.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return p(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},render:function(f,l){if(!(this.rx===
|
||||
0||this.ry===0))return this.callSuper("render",f,l)},_render:function(f){f.beginPath();f.save();f.transform(1,0,0,this.ry/this.rx,0,0);f.arc(0,0,this.rx,0,Math.PI*2,false);f.restore();this.stroke&&f.stroke();this.fill&&f.fill()},complexity:function(){return 1}});k.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity stroke stroke-width transform".split(" ");k.Ellipse.fromElement=function(f,l){var q=k.parseAttributes(f,k.Ellipse.ATTRIBUTE_NAMES);return new k.Ellipse(p(q,l))};k.Ellipse.fromObject=
|
||||
function(f){return new k.Ellipse(f)}}})();
|
||||
(function(){var k=this.fabric||(this.fabric={});if(!k.Rect){k.Rect=k.util.createClass(k.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(p){this.callSuper("initialize",p);this._initRxRy()},_initRxRy:function(){if(this.options.rx&&!this.options.ry)this.options.ry=this.options.rx;else if(this.options.ry&&!this.options.rx)this.options.rx=this.options.ry},_render:function(p){var f=this.options.rx||0,l=this.options.ry||0,q=-this.width/2,e=-this.height/2,c=this.width,a=this.height;p.beginPath();
|
||||
p.moveTo(q+f,e);p.lineTo(q+c-f,e);p.bezierCurveTo(q+c,e,q+c,e+l,q+c,e+l);p.lineTo(q+c,e+a-l);p.bezierCurveTo(q+c,e+a,q+c-f,e+a,q+c-f,e+a);p.lineTo(q+f,e+a);p.bezierCurveTo(q,e+a,q,e+a-l,q,e+a-l);p.lineTo(q,e+l);p.bezierCurveTo(q,e,q+f,e,q+f,e);p.closePath();this.fill&&p.fill();this.stroke&&p.stroke()},_normalizeLeftTopProperties:function(p){p.left&&this.set("left",p.left+this.getWidth()/2);p.top&&this.set("top",p.top+this.getHeight()/2);return this},complexity:function(){return 1}});k.Rect.ATTRIBUTE_NAMES=
|
||||
"x y width height rx ry fill fill-opacity stroke stroke-width transform".split(" ");k.Rect.fromElement=function(p,f){if(!p)return null;var l=k.parseAttributes(p,k.Rect.ATTRIBUTE_NAMES);l=l;l.left=l.left||0;l.top=l.top||0;l=l;var q=new k.Rect(k.util.object.extend(f||{},l));q._normalizeLeftTopProperties(l);return q};k.Rect.fromObject=function(p){return new k.Rect(p)}}})();
|
||||
(function(){var k=this.fabric||(this.fabric={});if(k.Polyline)console.warn("fabric.Polyline is already defined");else{k.Polyline=k.util.createClass(k.Object,{type:"polyline",initialize:function(f,l){l=l||{};this.set("points",f);this.callSuper("initialize",l);this._calcDimensions()},_calcDimensions:function(){return k.Polygon.prototype._calcDimensions.call(this)},_toOrigin:function(){return k.Polygon.prototype._toOrigin.call(this)},toObject:function(){return k.Polygon.prototype.toObject.call(this)},
|
||||
_render:function(f){var l;f.beginPath();for(var q=0,e=this.points.length;q<e;q++){l=this.points[q];f.lineTo(l.x,l.y)}this.fill&&f.fill();this.stroke&&f.stroke()},complexity:function(){return this.get("points").length}});var p="fill fill-opacity stroke stroke-width transform".split(" ");k.Polyline.fromElement=function(f,l){if(!f)return null;var q=k.parsePointsAttribute(f.getAttribute("points")),e=k.parseAttributes(f,p);return new k.Polyline(q,k.util.object.extend(e,l))};k.Polyline.fromObject=function(f){return new k.Polyline(f.points,
|
||||
f)}}})();
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=l.util.object.extend,f=l.util.array.min,h=l.util.array.max;if(l.Polygon)console.warn("fabric.Polygon is already defined");else{l.Polygon=l.util.createClass(l.Object,{type:"polygon",initialize:function(o,e){e=e||{};this.points=o;this.callSuper("initialize",e);this._calcDimensions()},_calcDimensions:function(){var o=this.points,e=f(o,"x"),d=f(o,"y"),a=h(o,"x");o=h(o,"y");this.width=a-e;this.height=o-d;this.minX=e;this.minY=d},_toOrigin:function(){this.points=this.points.map(function(o){return{x:o.x-
|
||||
this.minX,y:o.y-this.minY}},this)},toObject:function(){return q(this.callSuper("toObject"),{points:this.points.concat()})},_render:function(o){var e;o.beginPath();for(var d=0,a=this.points.length;d<a;d++){e=this.points[d];o.lineTo(e.x,e.y)}this.fill&&o.fill();if(this.stroke){o.closePath();o.stroke()}},complexity:function(){return this.points.length}});l.Polygon.ATTRIBUTE_NAMES="fill fill-opacity stroke stroke-width transform".split(" ");l.Polygon.fromElement=function(o,e){if(!o)return null;var d=
|
||||
l.parsePointsAttribute(o.getAttribute("points")),a=l.parseAttributes(o,l.Polygon.ATTRIBUTE_NAMES);return new l.Polygon(d,q(a,e))};l.Polygon.fromObject=function(o){return new l.Polygon(o.points,o)}}})();
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=l.util.array.min,f=l.util.array.max,h=l.util.object.extend;if(l.Path)console.warn("fabric.Path is already defined");else if(l.Object){l.Path=l.util.createClass(l.Object,{type:"path",initialize:function(e,d){d=d||{};this.setOptions(d);this._importProperties();this.originalState={};if(!e)throw Error("`path` argument is required");var a=Object.prototype.toString.call(e)==="[object Array]";if(this.path=a?e:e.match&&e.match(/[a-zA-Z][^a-zA-Z]*/g)){a||this._initializeFromArray(d);
|
||||
this.setCoords();d.sourcePath&&this.setSourcePath(d.sourcePath)}},_initializeFromArray:function(e){var d="width"in e;e="height"in e;this.path=this._parsePath();if(!d||!e){h(this,this._parseDimensions());if(d)this.width=this.options.width;if(e)this.height=this.options.height}},_render:function(e){for(var d,a=0,c=0,k=0,p=0,r,s,t=-(this.width/2),b=-(this.height/2),g=0,m=this.path.length;g<m;++g){d=this.path[g];switch(d[0]){case "l":a+=d[1];c+=d[2];e.lineTo(a+t,c+b);break;case "L":a=d[1];c=d[2];e.lineTo(a+
|
||||
t,c+b);break;case "h":a+=d[1];e.lineTo(a+t,c+b);break;case "H":a=d[1];e.lineTo(a+t,c+b);break;case "v":c+=d[1];e.lineTo(a+t,c+b);break;case "V":c=d[1];e.lineTo(a+t,c+b);break;case "m":a+=d[1];c+=d[2];e.moveTo(a+t,c+b);break;case "M":a=d[1];c=d[2];e.moveTo(a+t,c+b);break;case "c":r=a+d[5];s=c+d[6];k=a+d[3];p=c+d[4];e.bezierCurveTo(a+d[1]+t,c+d[2]+b,k+t,p+b,r+t,s+b);a=r;c=s;break;case "C":a=d[5];c=d[6];k=d[3];p=d[4];e.bezierCurveTo(d[1]+t,d[2]+b,k+t,p+b,a+t,c+b);break;case "s":r=a+d[3];s=c+d[4];k=2*
|
||||
a-k;p=2*c-p;e.bezierCurveTo(k+t,p+b,a+d[1]+t,c+d[2]+b,r+t,s+b);a=r;c=s;break;case "S":r=d[3];s=d[4];k=2*a-k;p=2*c-p;e.bezierCurveTo(k+t,p+b,d[1]+t,d[2]+b,r+t,s+b);a=r;c=s;break;case "q":a+=d[3];c+=d[4];e.quadraticCurveTo(d[1]+t,d[2]+b,a+t,c+b);break;case "Q":a=d[3];c=d[4];k=d[1];p=d[2];e.quadraticCurveTo(k+t,p+b,a+t,c+b);break;case "T":r=a;s=c;a=d[1];c=d[2];k=-k+2*r;p=-p+2*s;e.quadraticCurveTo(k+t,p+b,a+t,c+b);break;case "a":break;case "A":break;case "z":case "Z":e.closePath();break}}},render:function(e,
|
||||
d){e.save();var a=this.transformMatrix;a&&e.transform(a[0],a[1],a[2],a[3],a[4],a[5]);d||this.transform(e);if(this.overlayFill)e.fillStyle=this.overlayFill;else if(this.fill)e.fillStyle=this.fill;if(this.stroke)e.strokeStyle=this.stroke;e.beginPath();this._render(e);this.fill&&e.fill();if(this.options.stroke){e.strokeStyle=this.options.stroke;e.lineWidth=this.options.strokeWidth;e.stroke()}if(!d&&this.active){this.drawBorders(e);this.hideCorners||this.drawCorners(e)}e.restore()},toString:function(){return"#<fabric.Path ("+
|
||||
this.complexity()+"): "+JSON.stringify({top:this.top,left:this.left})+">"},toObject:function(){var e=h(this.callSuper("toObject"),{path:this.path});if(this.sourcePath)e.sourcePath=this.sourcePath;if(this.transformMatrix)e.transformMatrix=this.transformMatrix;return e},toDatalessObject:function(){var e=this.toObject();if(this.sourcePath)e.path=this.sourcePath;delete e.sourcePath;return e},complexity:function(){return this.path.length},set:function(e,d){return this.callSuper("set",e,d)},_parsePath:function(){for(var e=
|
||||
[],d,a,c=0,k=this.path.length;c<k;c++){d=this.path[c];a=d.slice(1).trim().replace(/(\d)-/g,"$1###-").split(/\s|,|###/);e.push([d.charAt(0)].concat(a.map(parseFloat)))}return e},_parseDimensions:function(){function e(n){if(n[0]==="H")return n[1];return n[n.length-2]}function d(n){if(n[0]==="V")return n[1];return n[n.length-1]}var a=[],c=[],k,p,r=false,s,t;this.path.forEach(function(n,v){if(n[0]!=="H")k=v===0?e(n):e(this.path[v-1]);if(n[0]!=="V")p=v===0?d(n):d(this.path[v-1]);if(n[0]===n[0].toLowerCase())r=
|
||||
true;s=r?k+e(n):n[0]==="V"?k:e(n);t=r?p+d(n):n[0]==="H"?p:d(n);var u=parseInt(s,10);isNaN(u)||a.push(u);u=parseInt(t,10);isNaN(u)||c.push(u)},this);var b=q(a),g=q(c),m=deltaY=0;b={top:g-deltaY,left:b-m,bottom:f(c)-deltaY,right:f(a)-m};b.width=b.right-b.left;b.height=b.bottom-b.top;return b}});l.Path.fromObject=function(e){return new l.Path(e.path,e)};var o=l.Path.ATTRIBUTE_NAMES="d fill fill-opacity fill-rule stroke stroke-width transform".split(" ");l.Path.fromElement=function(e,d){var a=l.parseAttributes(e,
|
||||
o),c=a.d;delete a.d;return new l.Path(c,h(a,d))}}else console.warn("fabric.Path requires fabric.Object")})();
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=l.util.object.extend,f=l.util.array.invoke;if(l.PathGroup)console.warn("fabric.PathGroup is already defined");else{l.PathGroup=l.util.createClass(l.Path,{type:"path-group",forceFillOverwrite:false,initialize:function(h,o){o=o||{};this.originalState={};this.paths=h;this.setOptions(o);this.initProperties();this.setCoords();o.sourcePath&&this.setSourcePath(o.sourcePath)},initProperties:function(){this.stateProperties.forEach(function(h){if(h==="fill")this.set(h,
|
||||
this.options[h]);else if(h==="angle")this.setAngle(this.options[h]);else this[h]=this.options[h]},this)},render:function(h){if(this.stub){h.save();this.transform(h);this.stub.render(h,false);if(this.active){this.drawBorders(h);this.drawCorners(h)}}else{h.save();var o=this.transformMatrix;o&&h.transform(o[0],o[1],o[2],o[3],o[4],o[5]);this.transform(h);o=0;for(var e=this.paths.length;o<e;++o)this.paths[o].render(h,true);if(this.active){this.drawBorders(h);this.hideCorners||this.drawCorners(h)}}h.restore()},
|
||||
set:function(h,o){if((h==="fill"||h==="overlayFill")&&this.isSameColor()){this[h]=o;for(var e=this.paths.length;e--;)this.paths[e].set(h,o)}else l.Object.prototype.set.call(this,h,o);return this},toObject:function(){return q(l.Object.prototype.toObject.call(this),{paths:f(this.getObjects(),"clone"),sourcePath:this.sourcePath})},toDatalessObject:function(){var h=this.toObject();if(this.sourcePath)h.paths=this.sourcePath;return h},toString:function(){return"#<fabric.PathGroup ("+this.complexity()+"): { top: "+
|
||||
this.top+", left: "+this.left+" }>"},isSameColor:function(){var h=this.getObjects()[0].get("fill");return this.getObjects().every(function(o){return o.get("fill")===h})},complexity:function(){return this.paths.reduce(function(h,o){return h+(o&&o.complexity?o.complexity():0)},0)},toGrayscale:function(){for(var h=this.paths.length;h--;)this.paths[h].toGrayscale();return this},getObjects:function(){return this.paths}});l.PathGroup.fromObject=function(h){for(var o=h.paths,e=0,d=o.length;e<d;e++)if(!(o[e]instanceof
|
||||
l.Object)){var a=o[e].type.camelize().capitalize();o[e]=Canvas[a].fromObject(o[e])}return new l.PathGroup(o,h)}}})();
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=l.util.object.extend,f=l.util.array.min,h=l.util.array.max,o=l.util.array.invoke,e=l.util.removeFromArray;if(!l.Group){l.Group=l.util.createClass(l.Object,{type:"group",initialize:function(d,a){this.objects=d||[];this.originalState={};this.callSuper("initialize");this._calcBounds();this._updateObjectsCoords();a&&q(this,a);this._setOpacityIfSame();this.setCoords(true);this.saveCoords();this.activateAllObjects()},_updateObjectsCoords:function(){var d=
|
||||
this.left,a=this.top;this.forEachObject(function(c){var k=c.get("left"),p=c.get("top");c.set("originalLeft",k);c.set("originalTop",p);c.set("left",k-d);c.set("top",p-a);c.setCoords();c.hideCorners=true},this)},toString:function(){return"#<fabric.Group: ("+this.complexity()+")>"},getObjects:function(){return this.objects},add:function(d){this._restoreObjectsState();this.objects.push(d);d.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(d){this._restoreObjectsState();
|
||||
e(this.objects,d);d.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(d,a){if(typeof a=="function")this.set(d,a(this[d]));else if(d==="fill"||d==="opacity"){var c=this.objects.length;for(this[d]=a;c--;)this.objects[c].set(d,a)}else this[d]=a;return this},contains:function(d){return this.objects.indexOf(d)>-1},toObject:function(){return q(this.callSuper("toObject"),{objects:o(this.objects,"clone")})},render:function(d){d.save();
|
||||
this.transform(d);for(var a=Math.max(this.scaleX,this.scaleY),c=0,k=this.objects.length;c<k;c++){var p=this.objects[c].borderScaleFactor;this.objects[c].borderScaleFactor=a;this.objects[c].render(d);this.objects[c].borderScaleFactor=p}this.hideBorders||this.drawBorders(d);this.hideCorners||this.drawCorners(d);d.restore();this.setCoords()},item:function(d){return this.getObjects()[d]},complexity:function(){return this.getObjects().reduce(function(d,a){d+=typeof a.complexity=="function"?a.complexity():
|
||||
0;return d},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(d){var a=this.get("left"),c=this.get("top"),k=this.getAngle()*(Math.PI/180);d.get("originalLeft");d.get("originalTop");var p=Math.cos(k)*d.get("top")+Math.sin(k)*d.get("left");k=-Math.sin(k)*d.get("top")+Math.cos(k)*d.get("left");d.setAngle(d.getAngle()+this.getAngle());d.set("left",a+k*this.get("scaleX"));d.set("top",c+p*this.get("scaleY"));d.set("scaleX",
|
||||
d.get("scaleX")*this.get("scaleX"));d.set("scaleY",d.get("scaleY")*this.get("scaleY"));d.setCoords();d.hideCorners=false;d.setActive(false);d.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(d){d.setCoords()});
|
||||
return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(d){this.forEachObject(function(a){a.setActive(d)});return this},forEachObject:function(d,a){for(var c=this.getObjects(),k=c.length;k--;)d.call(a,c[k],k,c);return this},_setOpacityIfSame:function(){var d=this.getObjects(),a=d[0]?d[0].get("opacity"):1;if(d.every(function(c){return c.get("opacity")===a}))this.opacity=a},_calcBounds:function(){var d=[],a=[],c,k;k=0;for(var p=this.objects.length;k<p;++k){c=this.objects[k];
|
||||
c.setCoords();for(var r in c.oCoords){d.push(c.oCoords[r].x);a.push(c.oCoords[r].y)}}c=f(d);k=h(d);d=f(a);a=h(a);k=k-c;a=a-d;this.width=k;this.height=a;this.left=c+k/2;this.top=d+a/2},containsPoint:function(d){var a=this.get("width")/2,c=this.get("height")/2,k=this.get("left"),p=this.get("top");return k-a<d.x&&k+a>d.x&&p-c<d.y&&p+c>d.y},toGrayscale:function(){for(var d=this.objects.length;d--;)this.objects[d].toGrayscale()}});l.Group.fromObject=function(d){return new l.Group(d.objects,d)}}})();
|
||||
(function(){var l=this.fabric||(this.fabric={}),q=l.util.object.extend,f=l.util.object.clone;if(l.Text)console.warn("fabric.Text is already defined");else if(l.Object){l.Text=l.util.createClass(l.Object,{options:{top:10,left:10,fontsize:20,fontweight:100,fontfamily:"Modernist_One_400",path:null},type:"text",initialize:function(h,o){this.originalState={};this.initStateProperties();this.text=h;this.setOptions(o);q(this,this.options);this.theta=this.angle*(Math.PI/180);this.width=this.getWidth();this.setCoords()},
|
||||
initStateProperties:function(){var h;if((h=this.constructor)&&(h=h.superclass)&&(h=h.prototype)&&(h=h.stateProperties)&&h.clone){this.stateProperties=h.clone();this.stateProperties.push("fontfamily","fontweight","path")}},toString:function(){return"#<fabric.Text ("+this.complexity()+"): "+JSON.stringify({text:this.text,fontfamily:this.fontfamily})+">"},_render:function(h){var o=Cufon.textOptions||(Cufon.textOptions={});o.left=this.left;o.top=this.top;o.context=h;o.color=this.fill;var e=this._initDummyElement();
|
||||
this.transform(h);Cufon.replaceElement(e,{separate:"none",fontFamily:this.fontfamily});this.width=o.width;this.height=o.height},_initDummyElement:function(){var h=document.createElement("div");h.innerHTML=this.text;h.style.fontSize="40px";h.style.fontWeight="400";h.style.fontStyle="normal";h.style.letterSpacing="normal";h.style.color="#000000";h.style.fontWeight="600";h.style.fontFamily="Verdana";return h},render:function(h){h.save();this._render(h);if(this.active){this.drawBorders(h);this.drawCorners(h)}h.restore()},
|
||||
toObject:function(){return q(this.callSuper("toObject"),{text:this.text,fontsize:this.fontsize,fontweight:this.fontweight,fontfamily:this.fontfamily,path:this.path})},setColor:function(h){this.set("fill",h);return this},setFontsize:function(h){this.set("fontsize",h);this.setCoords();return this},getText:function(){return this.text},setText:function(h){this.set("text",h);this.setCoords();return this},set:function(h,o){this[h]=o;if(h==="fontfamily")this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,
|
||||
"$1"+o+"$3");return this}});l.Text.fromObject=function(h){return new l.Text(h.text,f(h))};l.Text.fromElement=function(){}}else console.warn("fabric.Text requires fabric.Object")})();
|
||||
(function(){var l=fabric.util.object.extend;if(!this.fabric)this.fabric={};if(this.fabric.Image)console.warn("fabric.Image is already defined.");else if(fabric.Object){fabric.Image=fabric.util.createClass(fabric.Object,{maxwidth:null,maxheight:null,active:false,bordervisibility:false,cornervisibility:false,type:"image",__isGrayscaled:false,initialize:function(q,f){this.callSuper("initialize",f);this._initElement(q);this._initConfig(f||{})},getElement:function(){return this._element},setElement:function(q){this._element=
|
||||
q;return this},getNormalizedSize:function(q,f,h){if(h&&f&&q.width>q.height&&q.width/q.height<f/h){normalizedWidth=Math.floor(q.width*h/q.height);normalizedHeight=h}else if(h&&(q.height==q.width||q.height>q.width||q.height>h)){normalizedWidth=Math.floor(q.width*h/q.height);normalizedHeight=h}else if(f&&f<q.width){normalizedHeight=Math.floor(q.height*f/q.width);normalizedWidth=f}else{normalizedWidth=q.width;normalizedHeight=q.height}return{width:normalizedWidth,height:normalizedHeight}},getOriginalSize:function(){var q=
|
||||
this.getElement();return{width:q.width,height:q.height}},setBorderVisibility:function(q){this._resetWidthHeight();this._adjustWidthHeightToBorders(q);this.setCoords()},setCornersVisibility:function(q){this.cornervisibility=!!q},render:function(q,f){q.save();f||this.transform(q);this._render(q);if(this.active&&!f){this.drawBorders(q);this.hideCorners||this.drawCorners(q)}q.restore()},toObject:function(){return l(this.callSuper("toObject"),{src:this.getSrc()})},getSrc:function(){return this.getElement().src},
|
||||
toString:function(){return'#<fabric.Image: { src: "'+this.getSrc()+'" }>'},clone:function(q){this.constructor.fromObject(this.toObject(),q)},toGrayscale:function(q){if(!this.__isGrayscaled){var f=this.getElement(),h=document.createElement("canvas"),o=document.createElement("img"),e=this;h.width=f.width;h.height=f.height;h.getContext("2d").drawImage(f,0,0);fabric.Element.toGrayscale(h);o.onload=function(){e.setElement(o);q&&q();o.onload=h=f=imageData=null};o.width=f.width;o.height=f.height;o.src=h.toDataURL("image/png");
|
||||
this.__isGrayscaled=true;return this}},_render:function(q){var f=this.getOriginalSize();q.drawImage(this.getElement(),-f.width/2,-f.height/2,f.width,f.height)},_adjustWidthHeightToBorders:function(q){if(q){this.currentBorder=this.borderwidth;this.width+=2*this.currentBorder;this.height+=2*this.currentBorder}else this.currentBorder=0},_resetWidthHeight:function(){var q=this.getElement();this.set("width",q.width);this.set("height",q.height)},_initElement:function(q){this.setElement(fabric.util.getById(q));
|
||||
fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(q){this.setOptions(q);this._setBorder();this._setWidthHeight(q)},_setBorder:function(){this.currentBorder=this.bordervisibility?this.borderwidth:0},_setWidthHeight:function(){var q=2*this.currentBorder;this.width=(this.getElement().width||0)+q;this.height=(this.getElement().height||0)+q}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.fromObject=function(q,f){var h=document.createElement("img"),o=q.src;if(q.width)h.width=
|
||||
q.width;if(q.height)h.height=q.height;h.onload=function(){f&&f(new fabric.Image(h,q));h=h.onload=null};h.src=o};fabric.Image.fromURL=function(q,f,h){var o=document.createElement("img");o.onload=function(){f&&f(new fabric.Image(o,h));o=o.onload=null};o.src=q}}else console.warn("fabric.Object is required for fabric.Image initialization")})();
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=k.util.object.extend,f=k.util.array.min,l=k.util.array.max;if(k.Polygon)console.warn("fabric.Polygon is already defined");else{k.Polygon=k.util.createClass(k.Object,{type:"polygon",initialize:function(q,e){e=e||{};this.points=q;this.callSuper("initialize",e);this._calcDimensions()},_calcDimensions:function(){var q=this.points,e=f(q,"x"),c=f(q,"y"),a=l(q,"x");q=l(q,"y");this.width=a-e;this.height=q-c;this.minX=e;this.minY=c},_toOrigin:function(){this.points=this.points.map(function(q){return{x:q.x-
|
||||
this.minX,y:q.y-this.minY}},this)},toObject:function(){return p(this.callSuper("toObject"),{points:this.points.concat()})},_render:function(q){var e;q.beginPath();for(var c=0,a=this.points.length;c<a;c++){e=this.points[c];q.lineTo(e.x,e.y)}this.fill&&q.fill();if(this.stroke){q.closePath();q.stroke()}},complexity:function(){return this.points.length}});k.Polygon.ATTRIBUTE_NAMES="fill fill-opacity stroke stroke-width transform".split(" ");k.Polygon.fromElement=function(q,e){if(!q)return null;var c=
|
||||
k.parsePointsAttribute(q.getAttribute("points")),a=k.parseAttributes(q,k.Polygon.ATTRIBUTE_NAMES);return new k.Polygon(c,p(a,e))};k.Polygon.fromObject=function(q){return new k.Polygon(q.points,q)}}})();
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=k.util.array.min,f=k.util.array.max,l=k.util.object.extend;if(k.Path)console.warn("fabric.Path is already defined");else if(k.Object){k.Path=k.util.createClass(k.Object,{type:"path",initialize:function(e,c){c=c||{};this.setOptions(c);this._importProperties();this.originalState={};if(!e)throw Error("`path` argument is required");var a=Object.prototype.toString.call(e)==="[object Array]";if(this.path=a?e:e.match&&e.match(/[a-zA-Z][^a-zA-Z]*/g)){a||this._initializeFromArray(c);
|
||||
this.setCoords();c.sourcePath&&this.setSourcePath(c.sourcePath)}},_initializeFromArray:function(e){var c="width"in e;e="height"in e;this.path=this._parsePath();if(!c||!e){l(this,this._parseDimensions());if(c)this.width=this.options.width;if(e)this.height=this.options.height}},_render:function(e){for(var c,a=0,d=0,h=0,o=0,r,s,t=-(this.width/2),b=-(this.height/2),g=0,m=this.path.length;g<m;++g){c=this.path[g];switch(c[0]){case "l":a+=c[1];d+=c[2];e.lineTo(a+t,d+b);break;case "L":a=c[1];d=c[2];e.lineTo(a+
|
||||
t,d+b);break;case "h":a+=c[1];e.lineTo(a+t,d+b);break;case "H":a=c[1];e.lineTo(a+t,d+b);break;case "v":d+=c[1];e.lineTo(a+t,d+b);break;case "V":d=c[1];e.lineTo(a+t,d+b);break;case "m":a+=c[1];d+=c[2];e.moveTo(a+t,d+b);break;case "M":a=c[1];d=c[2];e.moveTo(a+t,d+b);break;case "c":r=a+c[5];s=d+c[6];h=a+c[3];o=d+c[4];e.bezierCurveTo(a+c[1]+t,d+c[2]+b,h+t,o+b,r+t,s+b);a=r;d=s;break;case "C":a=c[5];d=c[6];h=c[3];o=c[4];e.bezierCurveTo(c[1]+t,c[2]+b,h+t,o+b,a+t,d+b);break;case "s":r=a+c[3];s=d+c[4];h=2*
|
||||
a-h;o=2*d-o;e.bezierCurveTo(h+t,o+b,a+c[1]+t,d+c[2]+b,r+t,s+b);a=r;d=s;break;case "S":r=c[3];s=c[4];h=2*a-h;o=2*d-o;e.bezierCurveTo(h+t,o+b,c[1]+t,c[2]+b,r+t,s+b);a=r;d=s;break;case "q":a+=c[3];d+=c[4];e.quadraticCurveTo(c[1]+t,c[2]+b,a+t,d+b);break;case "Q":a=c[3];d=c[4];h=c[1];o=c[2];e.quadraticCurveTo(h+t,o+b,a+t,d+b);break;case "T":r=a;s=d;a=c[1];d=c[2];h=-h+2*r;o=-o+2*s;e.quadraticCurveTo(h+t,o+b,a+t,d+b);break;case "a":break;case "A":break;case "z":case "Z":e.closePath();break}}},render:function(e,
|
||||
c){e.save();var a=this.transformMatrix;a&&e.transform(a[0],a[1],a[2],a[3],a[4],a[5]);c||this.transform(e);if(this.overlayFill)e.fillStyle=this.overlayFill;else if(this.fill)e.fillStyle=this.fill;if(this.stroke)e.strokeStyle=this.stroke;e.beginPath();this._render(e);this.fill&&e.fill();if(this.options.stroke){e.strokeStyle=this.options.stroke;e.lineWidth=this.options.strokeWidth;e.stroke()}if(!c&&this.active){this.drawBorders(e);this.hideCorners||this.drawCorners(e)}e.restore()},toString:function(){return"#<fabric.Path ("+
|
||||
this.complexity()+"): "+JSON.stringify({top:this.top,left:this.left})+">"},toObject:function(){var e=l(this.callSuper("toObject"),{path:this.path});if(this.sourcePath)e.sourcePath=this.sourcePath;if(this.transformMatrix)e.transformMatrix=this.transformMatrix;return e},toDatalessObject:function(){var e=this.toObject();if(this.sourcePath)e.path=this.sourcePath;delete e.sourcePath;return e},complexity:function(){return this.path.length},set:function(e,c){return this.callSuper("set",e,c)},_parsePath:function(){for(var e=
|
||||
[],c,a,d=0,h=this.path.length;d<h;d++){c=this.path[d];a=c.slice(1).trim().replace(/(\d)-/g,"$1###-").split(/\s|,|###/);e.push([c.charAt(0)].concat(a.map(parseFloat)))}return e},_parseDimensions:function(){function e(n){if(n[0]==="H")return n[1];return n[n.length-2]}function c(n){if(n[0]==="V")return n[1];return n[n.length-1]}var a=[],d=[],h,o,r=false,s,t;this.path.forEach(function(n,v){if(n[0]!=="H")h=v===0?e(n):e(this.path[v-1]);if(n[0]!=="V")o=v===0?c(n):c(this.path[v-1]);if(n[0]===n[0].toLowerCase())r=
|
||||
true;s=r?h+e(n):n[0]==="V"?h:e(n);t=r?o+c(n):n[0]==="H"?o:c(n);var u=parseInt(s,10);isNaN(u)||a.push(u);u=parseInt(t,10);isNaN(u)||d.push(u)},this);var b=p(a),g=p(d),m=deltaY=0;b={top:g-deltaY,left:b-m,bottom:f(d)-deltaY,right:f(a)-m};b.width=b.right-b.left;b.height=b.bottom-b.top;return b}});k.Path.fromObject=function(e){return new k.Path(e.path,e)};var q=k.Path.ATTRIBUTE_NAMES="d fill fill-opacity fill-rule stroke stroke-width transform".split(" ");k.Path.fromElement=function(e,c){var a=k.parseAttributes(e,
|
||||
q),d=a.d;delete a.d;return new k.Path(d,l(a,c))}}else console.warn("fabric.Path requires fabric.Object")})();
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=k.util.object.extend,f=k.util.array.invoke,l=k.Object.prototype.set,q=k.util.string.camelize,e=k.util.string.capitalize;if(k.PathGroup)console.warn("fabric.PathGroup is already defined");else{k.PathGroup=k.util.createClass(k.Path,{type:"path-group",forceFillOverwrite:false,initialize:function(c,a){a=a||{};this.originalState={};this.paths=c;this.setOptions(a);this.initProperties();this.setCoords();a.sourcePath&&this.setSourcePath(a.sourcePath)},initProperties:function(){this.stateProperties.forEach(function(c){if(c===
|
||||
"fill")this.set(c,this.options[c]);else if(c==="angle")this.setAngle(this.options[c]);else this[c]=this.options[c]},this)},render:function(c){if(this.stub){c.save();this.transform(c);this.stub.render(c,false);if(this.active){this.drawBorders(c);this.drawCorners(c)}}else{c.save();var a=this.transformMatrix;a&&c.transform(a[0],a[1],a[2],a[3],a[4],a[5]);this.transform(c);a=0;for(var d=this.paths.length;a<d;++a)this.paths[a].render(c,true);if(this.active){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}}c.restore()},
|
||||
set:function(c,a){if((c==="fill"||c==="overlayFill")&&this.isSameColor()){this[c]=a;for(var d=this.paths.length;d--;)this.paths[d].set(c,a)}else l.call(this,c,a);return this},toObject:function(){return p(toObject.call(this),{paths:f(this.getObjects(),"clone"),sourcePath:this.sourcePath})},toDatalessObject:function(){var c=this.toObject();if(this.sourcePath)c.paths=this.sourcePath;return c},toString:function(){return"#<fabric.PathGroup ("+this.complexity()+"): { top: "+this.top+", left: "+this.left+
|
||||
" }>"},isSameColor:function(){var c=this.getObjects()[0].get("fill");return this.getObjects().every(function(a){return a.get("fill")===c})},complexity:function(){return this.paths.reduce(function(c,a){return c+(a&&a.complexity?a.complexity():0)},0)},toGrayscale:function(){for(var c=this.paths.length;c--;)this.paths[c].toGrayscale();return this},getObjects:function(){return this.paths}});k.PathGroup.fromObject=function(c){for(var a=c.paths,d=0,h=a.length;d<h;d++)if(!(a[d]instanceof k.Object)){var o=
|
||||
e(q(a[d].type));a[d]=k[o].fromObject(a[d])}return new k.PathGroup(a,c)}}})();
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=k.util.object.extend,f=k.util.array.min,l=k.util.array.max,q=k.util.array.invoke,e=k.util.removeFromArray;if(!k.Group){k.Group=k.util.createClass(k.Object,{type:"group",initialize:function(c,a){this.objects=c||[];this.originalState={};this.callSuper("initialize");this._calcBounds();this._updateObjectsCoords();a&&p(this,a);this._setOpacityIfSame();this.setCoords(true);this.saveCoords();this.activateAllObjects()},_updateObjectsCoords:function(){var c=
|
||||
this.left,a=this.top;this.forEachObject(function(d){var h=d.get("left"),o=d.get("top");d.set("originalLeft",h);d.set("originalTop",o);d.set("left",h-c);d.set("top",o-a);d.setCoords();d.hideCorners=true},this)},toString:function(){return"#<fabric.Group: ("+this.complexity()+")>"},getObjects:function(){return this.objects},add:function(c){this._restoreObjectsState();this.objects.push(c);c.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(c){this._restoreObjectsState();
|
||||
e(this.objects,c);c.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(c,a){if(typeof a=="function")this.set(c,a(this[c]));else if(c==="fill"||c==="opacity"){var d=this.objects.length;for(this[c]=a;d--;)this.objects[d].set(c,a)}else this[c]=a;return this},contains:function(c){return this.objects.indexOf(c)>-1},toObject:function(){return p(this.callSuper("toObject"),{objects:q(this.objects,"clone")})},render:function(c){c.save();
|
||||
this.transform(c);for(var a=Math.max(this.scaleX,this.scaleY),d=0,h=this.objects.length;d<h;d++){var o=this.objects[d].borderScaleFactor;this.objects[d].borderScaleFactor=a;this.objects[d].render(c);this.objects[d].borderScaleFactor=o}this.hideBorders||this.drawBorders(c);this.hideCorners||this.drawCorners(c);c.restore();this.setCoords()},item:function(c){return this.getObjects()[c]},complexity:function(){return this.getObjects().reduce(function(c,a){c+=typeof a.complexity=="function"?a.complexity():
|
||||
0;return c},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(c){var a=this.get("left"),d=this.get("top"),h=this.getAngle()*(Math.PI/180);c.get("originalLeft");c.get("originalTop");var o=Math.cos(h)*c.get("top")+Math.sin(h)*c.get("left");h=-Math.sin(h)*c.get("top")+Math.cos(h)*c.get("left");c.setAngle(c.getAngle()+this.getAngle());c.set("left",a+h*this.get("scaleX"));c.set("top",d+o*this.get("scaleY"));c.set("scaleX",
|
||||
c.get("scaleX")*this.get("scaleX"));c.set("scaleY",c.get("scaleY")*this.get("scaleY"));c.setCoords();c.hideCorners=false;c.setActive(false);c.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(c){c.setCoords()});
|
||||
return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(c){this.forEachObject(function(a){a.setActive(c)});return this},forEachObject:function(c,a){for(var d=this.getObjects(),h=d.length;h--;)c.call(a,d[h],h,d);return this},_setOpacityIfSame:function(){var c=this.getObjects(),a=c[0]?c[0].get("opacity"):1;if(c.every(function(d){return d.get("opacity")===a}))this.opacity=a},_calcBounds:function(){var c=[],a=[],d,h;h=0;for(var o=this.objects.length;h<o;++h){d=this.objects[h];
|
||||
d.setCoords();for(var r in d.oCoords){c.push(d.oCoords[r].x);a.push(d.oCoords[r].y)}}d=f(c);h=l(c);c=f(a);a=l(a);h=h-d;a=a-c;this.width=h;this.height=a;this.left=d+h/2;this.top=c+a/2},containsPoint:function(c){var a=this.get("width")/2,d=this.get("height")/2,h=this.get("left"),o=this.get("top");return h-a<c.x&&h+a>c.x&&o-d<c.y&&o+d>c.y},toGrayscale:function(){for(var c=this.objects.length;c--;)this.objects[c].toGrayscale()}});k.Group.fromObject=function(c){return new k.Group(c.objects,c)}}})();
|
||||
(function(){var k=this.fabric||(this.fabric={}),p=k.util.object.extend,f=k.util.object.clone;if(k.Text)console.warn("fabric.Text is already defined");else if(k.Object){k.Text=k.util.createClass(k.Object,{options:{top:10,left:10,fontsize:20,fontweight:100,fontfamily:"Modernist_One_400",path:null},type:"text",initialize:function(l,q){this.originalState={};this.initStateProperties();this.text=l;this.setOptions(q);p(this,this.options);this.theta=this.angle*(Math.PI/180);this.width=this.getWidth();this.setCoords()},
|
||||
initStateProperties:function(){var l;if((l=this.constructor)&&(l=l.superclass)&&(l=l.prototype)&&(l=l.stateProperties)&&l.clone){this.stateProperties=l.clone();this.stateProperties.push("fontfamily","fontweight","path")}},toString:function(){return"#<fabric.Text ("+this.complexity()+"): "+JSON.stringify({text:this.text,fontfamily:this.fontfamily})+">"},_render:function(l){var q=Cufon.textOptions||(Cufon.textOptions={});q.left=this.left;q.top=this.top;q.context=l;q.color=this.fill;var e=this._initDummyElement();
|
||||
this.transform(l);Cufon.replaceElement(e,{separate:"none",fontFamily:this.fontfamily});this.width=q.width;this.height=q.height},_initDummyElement:function(){var l=document.createElement("div");l.innerHTML=this.text;l.style.fontSize="40px";l.style.fontWeight="400";l.style.fontStyle="normal";l.style.letterSpacing="normal";l.style.color="#000000";l.style.fontWeight="600";l.style.fontFamily="Verdana";return l},render:function(l){l.save();this._render(l);if(this.active){this.drawBorders(l);this.drawCorners(l)}l.restore()},
|
||||
toObject:function(){return p(this.callSuper("toObject"),{text:this.text,fontsize:this.fontsize,fontweight:this.fontweight,fontfamily:this.fontfamily,path:this.path})},setColor:function(l){this.set("fill",l);return this},setFontsize:function(l){this.set("fontsize",l);this.setCoords();return this},getText:function(){return this.text},setText:function(l){this.set("text",l);this.setCoords();return this},set:function(l,q){this[l]=q;if(l==="fontfamily")this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,
|
||||
"$1"+q+"$3");return this}});k.Text.fromObject=function(l){return new k.Text(l.text,f(l))};k.Text.fromElement=function(){}}else console.warn("fabric.Text requires fabric.Object")})();
|
||||
(function(){var k=fabric.util.object.extend;if(!this.fabric)this.fabric={};if(this.fabric.Image)console.warn("fabric.Image is already defined.");else if(fabric.Object){fabric.Image=fabric.util.createClass(fabric.Object,{maxwidth:null,maxheight:null,active:false,bordervisibility:false,cornervisibility:false,type:"image",__isGrayscaled:false,initialize:function(p,f){this.callSuper("initialize",f);this._initElement(p);this._initConfig(f||{})},getElement:function(){return this._element},setElement:function(p){this._element=
|
||||
p;return this},getNormalizedSize:function(p,f,l){if(l&&f&&p.width>p.height&&p.width/p.height<f/l){normalizedWidth=Math.floor(p.width*l/p.height);normalizedHeight=l}else if(l&&(p.height==p.width||p.height>p.width||p.height>l)){normalizedWidth=Math.floor(p.width*l/p.height);normalizedHeight=l}else if(f&&f<p.width){normalizedHeight=Math.floor(p.height*f/p.width);normalizedWidth=f}else{normalizedWidth=p.width;normalizedHeight=p.height}return{width:normalizedWidth,height:normalizedHeight}},getOriginalSize:function(){var p=
|
||||
this.getElement();return{width:p.width,height:p.height}},setBorderVisibility:function(p){this._resetWidthHeight();this._adjustWidthHeightToBorders(p);this.setCoords()},setCornersVisibility:function(p){this.cornervisibility=!!p},render:function(p,f){p.save();f||this.transform(p);this._render(p);if(this.active&&!f){this.drawBorders(p);this.hideCorners||this.drawCorners(p)}p.restore()},toObject:function(){return k(this.callSuper("toObject"),{src:this.getSrc()})},getSrc:function(){return this.getElement().src},
|
||||
toString:function(){return'#<fabric.Image: { src: "'+this.getSrc()+'" }>'},clone:function(p){this.constructor.fromObject(this.toObject(),p)},toGrayscale:function(p){if(!this.__isGrayscaled){var f=this.getElement(),l=document.createElement("canvas"),q=document.createElement("img"),e=this;l.width=f.width;l.height=f.height;l.getContext("2d").drawImage(f,0,0);fabric.Element.toGrayscale(l);q.onload=function(){e.setElement(q);p&&p();q.onload=l=f=imageData=null};q.width=f.width;q.height=f.height;q.src=l.toDataURL("image/png");
|
||||
this.__isGrayscaled=true;return this}},_render:function(p){var f=this.getOriginalSize();p.drawImage(this.getElement(),-f.width/2,-f.height/2,f.width,f.height)},_adjustWidthHeightToBorders:function(p){if(p){this.currentBorder=this.borderwidth;this.width+=2*this.currentBorder;this.height+=2*this.currentBorder}else this.currentBorder=0},_resetWidthHeight:function(){var p=this.getElement();this.set("width",p.width);this.set("height",p.height)},_initElement:function(p){this.setElement(fabric.util.getById(p));
|
||||
fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(p){this.setOptions(p);this._setBorder();this._setWidthHeight(p)},_setBorder:function(){this.currentBorder=this.bordervisibility?this.borderwidth:0},_setWidthHeight:function(){var p=2*this.currentBorder;this.width=(this.getElement().width||0)+p;this.height=(this.getElement().height||0)+p}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.fromObject=function(p,f){var l=document.createElement("img"),q=p.src;if(p.width)l.width=
|
||||
p.width;if(p.height)l.height=p.height;l.onload=function(){f&&f(new fabric.Image(l,p));l=l.onload=null};l.src=q};fabric.Image.fromURL=function(p,f,l){var q=document.createElement("img");q.onload=function(){f&&f(new fabric.Image(q,l));q=q.onload=null};q.src=p}}else console.warn("fabric.Object is required for fabric.Image initialization")})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue