From 76495a3874f88dcb9f41d5975828663e5854447d Mon Sep 17 00:00:00 2001 From: kangax Date: Sun, 13 May 2012 18:47:45 +0400 Subject: [PATCH] Remove garbage from build.js. Build distribution. --- build.js | 46 +++--- dist/all.js | 402 ++++++++++++++++++++++++++++++++++++++++++++- dist/all.min.js | 2 +- dist/all.min.js.gz | Bin 37457 -> 38490 bytes 4 files changed, 421 insertions(+), 29 deletions(-) diff --git a/build.js b/build.js index 6511c19c..91ff5ce9 100644 --- a/build.js +++ b/build.js @@ -20,25 +20,25 @@ var includeAllModules = modules.length === 1 && modules[0] === 'ALL'; var distFileContents = ''; function appendFileContents(fileNames, callback) { - + (function readNextFile() { - + if (fileNames.length <= 0) { return callback(); } - + var fileName = fileNames.shift(); - + if (!fileName) { return readNextFile(); } - + fs.readFile(__dirname + '/' + fileName, function (err, data) { if (err) throw err; distFileContents += (data + '\n'); readNextFile(); }); - + })(); } @@ -49,13 +49,13 @@ function ifSpecifiedInclude(moduleName, fileName) { var filesToInclude = [ 'HEADER.js', - + ifSpecifiedInclude('serialization', 'lib/json2.js'), ifSpecifiedInclude('text', 'lib/cufon.js'), - + 'src/log.js', 'src/observable.js', - + 'src/util/misc.js', 'src/util/anim_ease.js', 'src/util/lang_array.js', @@ -67,27 +67,23 @@ var filesToInclude = [ 'src/util/dom_style.js', 'src/util/dom_misc.js', 'src/util/dom_request.js', -<<<<<<< HEAD -======= - ->>>>>>> 383665d2363f00dd1a577207837b7dc326e04ed8 - + ifSpecifiedInclude('easing', 'src/util/anim_ease.js'), ifSpecifiedInclude('parser', 'src/parser.js'), - + 'src/gradient.js', 'src/point.class.js', 'src/intersection.class.js', 'src/color.class.js', - + 'src/static_canvas.class.js', ifSpecifiedInclude('interaction', 'src/canvas.class.js'), - + 'src/canvas.animation.js', - + ifSpecifiedInclude('serialization', 'src/canvas.serialization.js'), - + 'src/object.class.js', 'src/line.class.js', 'src/circle.class.js', @@ -100,13 +96,13 @@ var filesToInclude = [ 'src/path_group.class.js', 'src/group.class.js', 'src/image.class.js', - + ifSpecifiedInclude('object_straightening', 'src/object_straightening.js'), - + ifSpecifiedInclude('image_filters', 'src/image_filters.js'), - + ifSpecifiedInclude('text', 'src/text.class.js'), - + ifSpecifiedInclude('node', 'src/fabric_node.js') ]; @@ -116,7 +112,7 @@ appendFileContents(filesToInclude, function() { console.log(err); throw err; } - + console.log('Built distribution to dist/all.js'); exec(mininfierCmd, function (error, output) { @@ -125,7 +121,7 @@ appendFileContents(filesToInclude, function() { } exec('gzip -c dist/all.min.js > dist/all.min.js.gz', function (error, output) { console.log('Gzipped to dist/all.min.js.gz'); - + exec('ls -l dist', function (error, output) { console.log(output.replace(/^.*/, '')); }); diff --git a/dist/all.js b/dist/all.js index 0abd7ff4..e4cb327f 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1877,6 +1877,7 @@ fabric.Observable = { * @param {Function} [options.onComplete] Callback; invoked when value change is completed * @param {Number} [options.startValue=0] Starting value * @param {Number} [options.endValue=100] Ending value + * @param {Number} [options.byValue=100] Value to modify the property by * @param {Function} [options.easing] Easing function * @param {Number} [options.duration=500] Duration of change */ @@ -1889,16 +1890,17 @@ fabric.Observable = { finish = start + duration, time, pos, onChange = options.onChange || function() { }, abort = options.abort || function() { return false; }, - easing = options.easing || function(pos) { return (-Math.cos(pos * Math.PI) / 2) + 0.5; }, + easing = options.easing || function(t, b, c, d) {return -c * Math.cos(t/d * (Math.PI/2)) + c + b;}, startValue = 'startValue' in options ? options.startValue : 0, endValue = 'endValue' in options ? options.endValue : 100; + byValue = options.byValue || endValue - startValue; options.onStart && options.onStart(); (function tick() { time = +new Date(); - pos = time > finish ? 1 : (time - start) / duration; - onChange(startValue + (endValue - startValue) * easing(pos)); + currentTime = time > finish ? duration : (time - start); + onChange(easing(currentTime, startValue, byValue, duration)); if (time > finish || abort()) { options.onComplete && options.onComplete(); return; @@ -1957,6 +1959,202 @@ fabric.Observable = { fabric.util.requestAnimFrame = requestAnimFrame; fabric.util.loadImage = loadImage; })(); +(function(){ + + /** + * @namespace + */ + fabric.util.ease = { }; + + function easeInQuad(t, b, c, d) { + return c*(t/=d)*t + b; + } + + function easeOutQuad(t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + } + + function easeInOutQuad(t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return -c/2 * ((--t)*(t-2) - 1) + b; + } + + function easeInCubic(t, b, c, d) { + return c*(t/=d)*t*t + b; + } + + function easeOutCubic(t, b, c, d) { + return c*((t=t/d-1)*t*t + 1) + b; + } + + function easeInOutCubic(t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t + b; + return c/2*((t-=2)*t*t + 2) + b; + } + + function easeInQuart(t, b, c, d) { + return c*(t/=d)*t*t*t + b; + } + + function easeOutQuart(t, b, c, d) { + return -c * ((t=t/d-1)*t*t*t - 1) + b; + } + + function easeInOutQuart(t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t + b; + return -c/2 * ((t-=2)*t*t*t - 2) + b; + } + + function easeInQuint(t, b, c, d) { + return c*(t/=d)*t*t*t*t + b; + } + + function easeOutQuint(t, b, c, d) { + return c*((t=t/d-1)*t*t*t*t + 1) + b; + } + + function easeInOutQuint(t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; + return c/2*((t-=2)*t*t*t*t + 2) + b; + } + + function easeInSine(t, b, c, d) { + return -c * Math.cos(t/d * (Math.PI/2)) + c + b; + } + + function easeOutSine(t, b, c, d) { + return c * Math.sin(t/d * (Math.PI/2)) + b; + } + + function easeInOutSine(t, b, c, d) { + return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; + } + + function easeInExpo(t, b, c, d) { + return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; + } + + function easeOutExpo(t, b, c, d) { + return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; + } + + function easeInOutExpo(t, b, c, d) { + if (t==0) return b; + if (t==d) return b+c; + if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; + return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; + } + + function easeInCirc(t, b, c, d) { + return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; + } + + function easeOutCirc(t, b, c, d) { + return c * Math.sqrt(1 - (t=t/d-1)*t) + b; + } + + function easeInOutCirc(t, b, c, d) { + if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; + return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; + } + + function easeInElastic(t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + } + + function easeOutElastic(t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; + } + + function easeInOutElastic(t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; + } + + function easeInBack(t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*(t/=d)*t*((s+1)*t - s) + b; + } + + function easeOutBack(t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; + } + + function easeInOutBack(t, b, c, d, s) { + if (s == undefined) s = 1.70158; + if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; + return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; + } + + function easeInBounce(t, b, c, d) { + return c - easeOutBounce (d-t, 0, c, d) + b; + } + + function easeOutBounce(t, b, c, d) { + if ((t/=d) < (1/2.75)) { + return c*(7.5625*t*t) + b; + } else if (t < (2/2.75)) { + return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; + } else if (t < (2.5/2.75)) { + return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; + } else { + return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; + } + } + + function easeInOutBounce(t, b, c, d) { + if (t < d/2) return easeInBounce (t*2, 0, c, d) * .5 + b; + return easeOutBounce (t*2-d, 0, c, d) * .5 + c*.5 + b; + } + + /** @namespace */ + fabric.util.ease = { + easeInQuad: easeInQuad, + easeOutQuad: easeOutQuad, + easeInOutQuad: easeInOutQuad, + easeInCubic: easeInCubic, + easeOutCubic: easeOutCubic, + easeInOutCubic: easeInOutCubic, + easeInQuart: easeInQuart, + easeOutQuart: easeOutQuart, + easeInOutQuart: easeInOutQuart, + easeInQuint: easeInQuint, + easeOutQuint: easeOutQuint, + easeInOutQuint: easeInOutQuint, + easeInSine: easeInSine, + easeOutSine: easeOutSine, + easeInOutSine: easeInOutSine, + easeInExpo: easeInExpo, + easeOutExpo: easeOutExpo, + easeInOutExpo: easeInOutExpo, + easeInCirc: easeInCirc, + easeOutCirc: easeOutCirc, + easeInOutCirc: easeInOutCirc, + easeInElastic: easeInElastic, + easeOutElastic: easeOutElastic, + easeInOutElastic: easeInOutElastic, + easeInBack: easeInBack, + easeOutBack: easeOutBack, + easeInOutBack: easeInOutBack, + easeInBounce: easeInBounce, + easeOutBounce: easeOutBounce, + easeInOutBounce: easeInOutBounce + }; + +}()); (function() { var slice = Array.prototype.slice; @@ -2942,6 +3140,202 @@ fabric.util.string = { fabric.util.request = request; })(); +(function(){ + + /** + * @namespace + */ + fabric.util.ease = { }; + + function easeInQuad(t, b, c, d) { + return c*(t/=d)*t + b; + } + + function easeOutQuad(t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + } + + function easeInOutQuad(t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return -c/2 * ((--t)*(t-2) - 1) + b; + } + + function easeInCubic(t, b, c, d) { + return c*(t/=d)*t*t + b; + } + + function easeOutCubic(t, b, c, d) { + return c*((t=t/d-1)*t*t + 1) + b; + } + + function easeInOutCubic(t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t + b; + return c/2*((t-=2)*t*t + 2) + b; + } + + function easeInQuart(t, b, c, d) { + return c*(t/=d)*t*t*t + b; + } + + function easeOutQuart(t, b, c, d) { + return -c * ((t=t/d-1)*t*t*t - 1) + b; + } + + function easeInOutQuart(t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t + b; + return -c/2 * ((t-=2)*t*t*t - 2) + b; + } + + function easeInQuint(t, b, c, d) { + return c*(t/=d)*t*t*t*t + b; + } + + function easeOutQuint(t, b, c, d) { + return c*((t=t/d-1)*t*t*t*t + 1) + b; + } + + function easeInOutQuint(t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; + return c/2*((t-=2)*t*t*t*t + 2) + b; + } + + function easeInSine(t, b, c, d) { + return -c * Math.cos(t/d * (Math.PI/2)) + c + b; + } + + function easeOutSine(t, b, c, d) { + return c * Math.sin(t/d * (Math.PI/2)) + b; + } + + function easeInOutSine(t, b, c, d) { + return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; + } + + function easeInExpo(t, b, c, d) { + return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; + } + + function easeOutExpo(t, b, c, d) { + return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; + } + + function easeInOutExpo(t, b, c, d) { + if (t==0) return b; + if (t==d) return b+c; + if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; + return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; + } + + function easeInCirc(t, b, c, d) { + return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; + } + + function easeOutCirc(t, b, c, d) { + return c * Math.sqrt(1 - (t=t/d-1)*t) + b; + } + + function easeInOutCirc(t, b, c, d) { + if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; + return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; + } + + function easeInElastic(t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + } + + function easeOutElastic(t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; + } + + function easeInOutElastic(t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; + } + + function easeInBack(t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*(t/=d)*t*((s+1)*t - s) + b; + } + + function easeOutBack(t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; + } + + function easeInOutBack(t, b, c, d, s) { + if (s == undefined) s = 1.70158; + if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; + return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; + } + + function easeInBounce(t, b, c, d) { + return c - easeOutBounce (d-t, 0, c, d) + b; + } + + function easeOutBounce(t, b, c, d) { + if ((t/=d) < (1/2.75)) { + return c*(7.5625*t*t) + b; + } else if (t < (2/2.75)) { + return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; + } else if (t < (2.5/2.75)) { + return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; + } else { + return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; + } + } + + function easeInOutBounce(t, b, c, d) { + if (t < d/2) return easeInBounce (t*2, 0, c, d) * .5 + b; + return easeOutBounce (t*2-d, 0, c, d) * .5 + c*.5 + b; + } + + /** @namespace */ + fabric.util.ease = { + easeInQuad: easeInQuad, + easeOutQuad: easeOutQuad, + easeInOutQuad: easeInOutQuad, + easeInCubic: easeInCubic, + easeOutCubic: easeOutCubic, + easeInOutCubic: easeInOutCubic, + easeInQuart: easeInQuart, + easeOutQuart: easeOutQuart, + easeInOutQuart: easeInOutQuart, + easeInQuint: easeInQuint, + easeOutQuint: easeOutQuint, + easeInOutQuint: easeInOutQuint, + easeInSine: easeInSine, + easeOutSine: easeOutSine, + easeInOutSine: easeInOutSine, + easeInExpo: easeInExpo, + easeOutExpo: easeOutExpo, + easeInOutExpo: easeInOutExpo, + easeInCirc: easeInCirc, + easeOutCirc: easeOutCirc, + easeInOutCirc: easeInOutCirc, + easeInElastic: easeInElastic, + easeOutElastic: easeOutElastic, + easeInOutElastic: easeInOutElastic, + easeInBack: easeInBack, + easeOutBack: easeOutBack, + easeInOutBack: easeInOutBack, + easeInBounce: easeInBounce, + easeOutBounce: easeOutBounce, + easeInOutBounce: easeInOutBounce + }; + +}()); (function(global) { "use strict"; @@ -8150,6 +8544,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { fabric.util.animate({ startValue: options.from, endValue: to, + byValue: options.by, + easing: options.easing, duration: options.duration, onChange: function(value) { obj.set(property, value); diff --git a/dist/all.min.js b/dist/all.min.js index a2f81a9f..1641402a 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -4,4 +4,4 @@ var fabric=fabric||{version:"0.8.5"};if(typeof exports!="undefined"){exports.fab * Copyright (c) 2009 Simo Kinnunen. * Licensed under the MIT license. */ -var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:JV){V=Q}if(P>T){T=P}if(Qz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-(Cufon.textOptions.height/K)/2);ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?1:(l-k)/m;p(j+(r-j)*q(s));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}else{m&&m.call(l,k)}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]",">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b;if(c){b=function(g,i){if(i.toString!==Object.prototype.toString){g.prototype.toString=i.toString}if(i.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=i.valueOf}for(var h in i){g.prototype[h]=i[h]}}}else{b=function(g,i){for(var h in i){g.prototype[h]=i[h]}}}function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(i){var g=i.fabric||(i.fabric={}),o=g.util.object.extend,e=g.util.string.capitalize,p=g.util.object.clone;var k={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};function d(v,u){if(!v){return}var x,t,s={};if(v.parentNode&&/^g$/i.test(v.parentNode.nodeName)){s=g.parseAttributes(v.parentNode,u)}var w=u.reduce(function(z,y){x=v.getAttribute(y);t=parseFloat(x);if(x){if((y==="fill"||y==="stroke")&&x==="none"){x=""}if(y==="fill-rule"){x=(x==="evenodd")?"destination-over":x}if(y==="transform"){x=g.parseTransformAttribute(x)}if(y in k){y=k[y]}z[y]=isNaN(t)?x:t}return z},{});w=o(w,o(n(v),g.parseStyleAttribute(v)));return o(s,w)}g.parseTransformAttribute=(function(){function s(L,M){var N=M[0];L[0]=Math.cos(N);L[1]=Math.sin(N);L[2]=-Math.sin(N);L[3]=Math.cos(N)}function x(N,O){var M=O[0],L=(O.length===2)?O[1]:O[0];N[0]=M;N[3]=L}function I(L,M){L[2]=M[0]}function u(L,M){L[1]=M[0]}function F(L,M){L[4]=M[0];if(M.length===2){L[5]=M[1]}}var z=[1,0,0,1,0,0],t="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",J="(?:\\s+,?\\s*|,\\s*)",A="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",y="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+")"+J+"("+t+"))?\\s*\\))",K="(?:(scale)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",D="(?:(translate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",G="(?:(matrix)\\s*\\(\\s*("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")\\s*\\))",E="(?:"+G+"|"+D+"|"+K+"|"+H+"|"+A+"|"+y+")",B="(?:"+E+"(?:"+J+E+")*)",v="^\\s*(?:"+B+"?)\\s*$",C=new RegExp(v),w=new RegExp(E);return function(M){var L=z.concat();if(!M||(M&&!C.test(M))){return L}M.replace(w,function(Q){var N=new RegExp(E).exec(Q).filter(function(R){return(R!==""&&R!=null)}),O=N[1],P=N.slice(2).map(parseFloat);switch(O){case"translate":F(L,P);break;case"rotate":s(L,P);break;case"scale":x(L,P);break;case"skewX":I(L,P);break;case"skewY":u(L,P);break;case"matrix":L=P;break}});return L}})();function r(v){if(!v){return null}v=v.trim();var x=v.indexOf(",")>-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u/i,""))}if(!v.documentElement){return}g.parseSVGDocument(v.documentElement,function(y,x){j.set(s,{objects:g.util.array.invoke(y,"toObject"),options:x});u(y,x)})}}function a(u){var t=u.objects,s=u.options;t=t.map(function(v){return g[e(v.type)].fromObject(v)});return({objects:t,options:s})}function m(s,v){s=s.trim();var t;if(typeof DOMParser!=="undefined"){var u=new DOMParser();if(u&&u.parseFromString){t=u.parseFromString(s,"text/xml")}}else{if(g.window.ActiveXObject){var t=new ActiveXObject("Microsoft.XMLDOM");t.async="false";t.loadXML(s.replace(//i,""))}}g.parseSVGDocument(t.documentElement,function(x,w){v(x,w)})}function l(v){var t="";for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(b){var a=JSON.stringify(this);this.cloneWithoutData(function(c){c.loadFromJSON(a,function(){if(b){b(c)}})})},cloneWithoutData:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;if(c){c(b)}}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,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 selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.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(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_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},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElement();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_initDummyElement:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var i=this.text.split(/\r?\n/),j=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),g=-(this.width/2),f=(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=((this._fontAscent/5)*this.lineHeight);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file +var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:JV){V=Q}if(P>T){T=P}if(Qz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-(Cufon.textOptions.height/K)/2);ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?m:(l-k);p(q(currentTime,j,byValue,m));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}else{m&&m.call(l,k)}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){fabric.util.ease={};function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]",">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b;if(c){b=function(g,i){if(i.toString!==Object.prototype.toString){g.prototype.toString=i.toString}if(i.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=i.valueOf}for(var h in i){g.prototype[h]=i[h]}}}else{b=function(g,i){for(var h in i){g.prototype[h]=i[h]}}}function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(){fabric.util.ease={};function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u/i,""))}if(!v.documentElement){return}g.parseSVGDocument(v.documentElement,function(y,x){j.set(s,{objects:g.util.array.invoke(y,"toObject"),options:x});u(y,x)})}}function a(u){var t=u.objects,s=u.options;t=t.map(function(v){return g[e(v.type)].fromObject(v)});return({objects:t,options:s})}function m(s,v){s=s.trim();var t;if(typeof DOMParser!=="undefined"){var u=new DOMParser();if(u&&u.parseFromString){t=u.parseFromString(s,"text/xml")}}else{if(g.window.ActiveXObject){var t=new ActiveXObject("Microsoft.XMLDOM");t.async="false";t.loadXML(s.replace(//i,""))}}g.parseSVGDocument(t.documentElement,function(x,w){v(x,w)})}function l(v){var t="";for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(b){var a=JSON.stringify(this);this.cloneWithoutData(function(c){c.loadFromJSON(a,function(){if(b){b(c)}})})},cloneWithoutData:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;if(c){c(b)}}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,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 selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.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(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_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},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElement();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_initDummyElement:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var i=this.text.split(/\r?\n/),j=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),g=-(this.width/2),f=(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=((this._fontAscent/5)*this.lineHeight);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 18a0a7419a113745688556f3738754b93e7948b8..9fd8818a2aa3dd8b7012531eacf2a556b49bae1f 100644 GIT binary patch delta 33452 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 delta 32411 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