From 77e507622cd84abaabd531d5d0450e1cd47e19f7 Mon Sep 17 00:00:00 2001 From: Allan Bishop Date: Sun, 17 May 2015 23:03:30 +1000 Subject: [PATCH] Forgot to run grunt to update the min.js --- dist/angular-img-cropper.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/angular-img-cropper.min.js b/dist/angular-img-cropper.min.js index 9ce1a39..6a6bfe5 100644 --- a/dist/angular-img-cropper.min.js +++ b/dist/angular-img-cropper.min.js @@ -1,2 +1,2 @@ /*! angular-img-cropper 17-05-2015 */ -angular.module("angular-img-cropper",[]).directive("imageCropper",["$document","$window",function(){return{scope:{image:"=",croppedImage:"=",cropWidth:"=",cropHeight:"=",keepAspect:"=",touchRadius:"=",cropAreaBounds:"="},restrict:"A",link:function(a,b){var c,d=d||function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);c.prototype=b.prototype,a.prototype=new c},e=function(){function a(a,b,c){this.over=!1,this.drag=!1,this.position=new k(a,b),this.offset=new k(0,0),this.radius=c}return a.prototype.setDrag=function(a){this.drag=a,this.setOver(a)},a.prototype.draw=function(){},a.prototype.setOver=function(a){this.over=a},a.prototype.touchInBounds=function(a,b){return a>this.position.x-this.radius&&athis.position.y-this.radius&&bd;d++)if(0===d)this.firstAvailable=new k,c=this.firstAvailable;else{var e=new k;c.setNext(e),c=e}}return a.prototype.borrow=function(a,b){if(null==this.firstAvailable)throw"Pool exhausted";this.borrowed++;var c=this.firstAvailable;return this.firstAvailable=c.getNext(),c.x=a,c.y=b,c},a.prototype.returnPoint=function(a){this.borrowed--,a.x=0,a.y=0,a.setNext(this.firstAvailable),this.firstAvailable=a},a}(),g=function(){function a(){}return a.init=function(a){this.canvas=a,this.ctx=this.canvas.getContext("2d")},a.DEG2RAD=.0174532925,a}(),h=function(a){function b(b,c,d){a.call(this,b,c,d),this.iconPoints=new Array,this.scaledIconPoints=new Array,this.getDragIconPoints(this.iconPoints,1),this.getDragIconPoints(this.scaledIconPoints,1.2)}return d(b,a),b.prototype.draw=function(a){this.over||this.drag?this.drawIcon(a,this.scaledIconPoints):this.drawIcon(a,this.iconPoints)},b.prototype.getDragIconPoints=function(a,b){var c=17*b,d=14*b,e=8*b,g=4*b;a.push(f.instance.borrow(-g/2,c-e)),a.push(f.instance.borrow(-d/2,c-e)),a.push(f.instance.borrow(0,c)),a.push(f.instance.borrow(d/2,c-e)),a.push(f.instance.borrow(g/2,c-e)),a.push(f.instance.borrow(g/2,g/2)),a.push(f.instance.borrow(c-e,g/2)),a.push(f.instance.borrow(c-e,d/2)),a.push(f.instance.borrow(c,0)),a.push(f.instance.borrow(c-e,-d/2)),a.push(f.instance.borrow(c-e,-g/2)),a.push(f.instance.borrow(g/2,-g/2)),a.push(f.instance.borrow(g/2,-c+e)),a.push(f.instance.borrow(d/2,-c+e)),a.push(f.instance.borrow(0,-c)),a.push(f.instance.borrow(-d/2,-c+e)),a.push(f.instance.borrow(-g/2,-c+e)),a.push(f.instance.borrow(-g/2,-g/2)),a.push(f.instance.borrow(-c+e,-g/2)),a.push(f.instance.borrow(-c+e,-d/2)),a.push(f.instance.borrow(-c,0)),a.push(f.instance.borrow(-c+e,d/2)),a.push(f.instance.borrow(-c+e,g/2)),a.push(f.instance.borrow(-g/2,g/2))},b.prototype.drawIcon=function(a,b){a.beginPath(),a.moveTo(b[0].x+this.position.x,b[0].y+this.position.y);for(var c=0;cc?(e=this.canvasWidth,f=this.canvasWidth*c):(f=this.canvasHeight,e=this.canvasHeight/c),this.ratioW=e/this.srcImage.width,this.ratioH=f/this.srcImage.height,c>d?this.drawImageIOSFix(a,this.srcImage,0,0,this.srcImage.width,this.srcImage.height,this.buffer.width/2-e/2,0,e,f):this.drawImageIOSFix(a,this.srcImage,0,0,this.srcImage.width,this.srcImage.height,0,this.buffer.height/2-f/2,e,f),this.buffer.getContext("2d").drawImage(this.canvas,0,0,this.canvasWidth,this.canvasHeight),a.fillStyle="rgba(0, 0, 0, 0.7)",a.fillRect(0,0,this.canvasWidth,this.canvasHeight),a.drawImage(this.buffer,b.left,b.top,Math.max(b.getWidth(),1),Math.max(b.getHeight(),1),b.left,b.top,b.getWidth(),b.getHeight());for(var g,h=0;h=this.maxXClamp&&(a=this.maxXClamp-d.getWidth()/2),e<=this.minXClamp&&(a=d.getWidth()/2+this.minXClamp),g=this.maxYClamp&&(b=this.maxYClamp-d.getHeight()/2),this.tl.moveX(a-d.getWidth()/2),this.tl.moveY(b-d.getHeight()/2),this.tr.moveX(a+d.getWidth()/2),this.tr.moveY(b-d.getHeight()/2),this.bl.moveX(a-d.getWidth()/2),this.bl.moveY(b+d.getHeight()/2),this.br.moveX(a+d.getWidth()/2),this.br.moveY(b+d.getHeight()/2),c.setPosition(a,b)},b.prototype.dragCorner=function(b,c,d){var e,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;a.keepAspect?(e=d.getHorizontalNeighbour().getVerticalNeighbour(),i=e.getPosition().x,j=e.getPosition().y,b<=e.getPosition().x?c<=e.getPosition().y?(g=i-100/this.aspectRatio,h=j-100/this.aspectRatio*this.aspectRatio,o=this.getSide(f.instance.borrow(g,h),e.getPosition(),f.instance.borrow(b,c)),o>0?(k=Math.abs(e.getPosition().y-c),l=k/this.aspectRatio,m=e.getPosition().y-k,n=e.getPosition().x-l,d.move(n,m)):0>o&&(l=Math.abs(e.getPosition().x-b),k=l*this.aspectRatio,m=e.getPosition().y-k,n=e.getPosition().x-l,d.move(n,m))):(g=i-100/this.aspectRatio,h=j+100/this.aspectRatio*this.aspectRatio,o=this.getSide(f.instance.borrow(g,h),e.getPosition(),f.instance.borrow(b,c)),o>0?(l=Math.abs(e.getPosition().x-b),k=l*this.aspectRatio,m=e.getPosition().y+k,n=e.getPosition().x-l,d.move(n,m)):0>o&&(k=Math.abs(e.getPosition().y-c),l=k/this.aspectRatio,m=e.getPosition().y+k,n=e.getPosition().x-l,d.move(n,m))):c<=e.getPosition().y?(g=i+100/this.aspectRatio,h=j-100/this.aspectRatio*this.aspectRatio,o=this.getSide(f.instance.borrow(g,h),e.getPosition(),f.instance.borrow(b,c)),0>o?(k=Math.abs(e.getPosition().y-c),l=k/this.aspectRatio,m=e.getPosition().y-k,n=e.getPosition().x+l,d.move(n,m)):o>0&&(l=Math.abs(e.getPosition().x-b),k=l*this.aspectRatio,m=e.getPosition().y-k,n=e.getPosition().x+l,d.move(n,m))):(g=i+100/this.aspectRatio,h=j+100/this.aspectRatio*this.aspectRatio,o=this.getSide(f.instance.borrow(g,h),e.getPosition(),f.instance.borrow(b,c)),0>o?(l=Math.abs(e.getPosition().x-b),k=l*this.aspectRatio,m=e.getPosition().y+k,n=e.getPosition().x+l,d.move(n,m)):o>0&&(k=Math.abs(e.getPosition().y-c),l=k/this.aspectRatio,m=e.getPosition().y+k,n=e.getPosition().x+l,d.move(n,m)))):d.move(b,c),this.center.recalculatePosition(this.getBounds())},b.prototype.getSide=function(a,b,c){var d=this.sign((b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x));return f.instance.returnPoint(a),f.instance.returnPoint(c),d},b.prototype.sign=function(a){return+a===a?0===a?a:a>0?1:-1:0/0},b.prototype.handleRelease=function(a){if(null!=a){for(var b=0,c=0;ca?(c=this.canvas.width,d=this.canvas.width*a):(d=this.canvas.height,c=this.canvas.height/a),this.minXClamp=this.canvas.width/2-c/2,this.minYClamp=this.canvas.height/2-d/2,this.maxXClamp=this.canvas.width/2+c/2,this.maxYClamp=this.canvas.height/2+d/2},b.prototype.getCropBounds=function(){var a=this.canvas.height-2*this.minYClamp,b=this.getBounds();return b.top=Math.round(a-b.top+this.minYClamp),b.bottom=Math.round(a-b.bottom+this.minYClamp),b.left=Math.round(b.left-this.minXClamp),b.right=Math.round(b.right-this.minXClamp),b},b.prototype.clampPosition=function(a,b){return athis.maxXClamp&&(a=this.maxXClamp),bthis.maxYClamp&&(b=this.maxYClamp),f.instance.borrow(a,b)},b.prototype.isImageSet=function(){return this.imageSet},b.prototype.setImage=function(b){if(!b)throw"Image is null";this.imageSet=!0,this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);var c=this.buffer.getContext("2d");c.clearRect(0,0,this.buffer.width,this.buffer.height);var d=b.src.split("."),e=d[1];("png"==e||"jpg"==e)&&(this.fileType=e),this.srcImage=b,this.updateClampBounds();var g=this.srcImage.height/this.srcImage.width,h=this.getBounds(),i=h.getHeight()/h.getWidth(),j=this.canvas.width,k=this.canvas.height;this.canvasWidth=j,this.canvasHeight=k;var l=this.canvas.width/2,m=this.canvas.height/2,n=f.instance.borrow(l-h.getWidth()/2,m+h.getHeight()/2),o=f.instance.borrow(l+h.getWidth()/2,m+h.getHeight()/2),p=f.instance.borrow(l-h.getWidth()/2,m-h.getHeight()/2),q=f.instance.borrow(l+h.getWidth()/2,m-h.getHeight()/2);if(this.tl.setPosition(n.x,n.y),this.tr.setPosition(o.x,o.y),this.bl.setPosition(p.x,p.y),this.br.setPosition(q.x,q.y),f.instance.returnPoint(n),f.instance.returnPoint(o),f.instance.returnPoint(p),f.instance.returnPoint(q),this.center.setPosition(l,m),i>g){var r=Math.min(j*g,k);if(h.getHeight()>r){var s=r/i;n=f.instance.borrow(l-s/2,m+r/2),o=f.instance.borrow(l+s/2,m+r/2),p=f.instance.borrow(l-s/2,m-r/2),q=f.instance.borrow(l+s/2,m-r/2),this.tl.setPosition(n.x,n.y),this.tr.setPosition(o.x,o.y),this.bl.setPosition(p.x,p.y),this.br.setPosition(q.x,q.y),f.instance.returnPoint(n),f.instance.returnPoint(o),f.instance.returnPoint(p),f.instance.returnPoint(q)}}else if(g>i){var t=Math.min(k/g,j);if(h.getWidth()>t){var u=t*i;n=f.instance.borrow(l-t/2,m+u/2),o=f.instance.borrow(l+t/2,m+u/2),p=f.instance.borrow(l-t/2,m-u/2),q=f.instance.borrow(l+t/2,m-u/2),this.tl.setPosition(n.x,n.y),this.tr.setPosition(o.x,o.y),this.bl.setPosition(p.x,p.y),this.br.setPosition(q.x,q.y),f.instance.returnPoint(n),f.instance.returnPoint(o),f.instance.returnPoint(p),f.instance.returnPoint(q)}}this.vertSquashRatio=this.detectVerticalSquash(b),this.draw(this.ctx);var v=this.getCroppedImage(a.cropWidth,a.cropHeight);a.croppedImage=v.src,a.cropAreaBounds&&this.imageSet&&(a.cropAreaBounds=this.getCropBounds(),a.$apply())},b.prototype.getCroppedImage=function(a,b){var c=this.getBounds();if(!this.srcImage)throw"Source image not set.";if(a&&b){var d=this.srcImage.height/this.srcImage.width,e=this.canvas.height/this.canvas.width,f=this.canvas.width,g=this.canvas.height;e>d?(f=this.canvas.width,g=this.canvas.width*d):d>e?(g=this.canvas.height,f=this.canvas.height/d):(g=this.canvas.height,f=this.canvas.width),this.ratioW=f/this.srcImage.width,this.ratioH=g/this.srcImage.height,this.cropCanvas.width=a,this.cropCanvas.height=b;var h=(this.buffer.height-g)/2/this.ratioH,i=(this.buffer.width-f)/2/this.ratioW,j=1,k=1;this.ratioW<1&&(j=this.ratioW),this.ratioH<1&&(k=this.ratioH),this.drawImageIOSFix(this.cropCanvas.getContext("2d"),this.srcImage,Math.max(Math.round(c.left/this.ratioW-i),0),Math.max(Math.round(c.top/this.ratioH-h),0),Math.max(Math.round(c.getWidth()/j),1),Math.max(Math.round(c.getHeight()/k),1),0,0,a,b),this.croppedImage.width=a,this.croppedImage.height=b}else this.cropCanvas.width=Math.max(c.getWidth(),1),this.cropCanvas.height=Math.max(c.getHeight(),1),this.cropCanvas.getContext("2d").drawImage(this.buffer,c.left,c.top,Math.max(c.getWidth(),1),Math.max(c.getHeight(),1),0,0,c.getWidth(),c.getHeight()),this.croppedImage.width=this.cropCanvas.width,this.croppedImage.height=this.cropCanvas.height;return this.croppedImage.src=this.cropCanvas.toDataURL("image/"+this.fileType),this.croppedImage},b.prototype.getBounds=function(){for(var a=Number.MAX_VALUE,b=Number.MAX_VALUE,c=-Number.MAX_VALUE,d=-Number.MAX_VALUE,e=0;ec&&(c=f.getPosition().x),f.getPosition().yd&&(d=f.getPosition().y)}var g=new j;return g.left=a,g.right=c,g.top=b,g.bottom=d,g},b.prototype.getMousePos=function(a,b){var c=a.getBoundingClientRect();return f.instance.borrow(b.clientX-c.left,b.clientY-c.top)},b.prototype.getTouchPos=function(a,b){var c=a.getBoundingClientRect();return f.instance.borrow(b.clientX-c.left,b.clientY-c.top)},b.prototype.onTouchMove=function(a){if(a.preventDefault(),a.touches.length>=1)for(var b=0;ba.getPosition().x?a.getVerticalNeighbour().getPosition().y>a.getPosition().y?(e=d.target,e.style.cursor="nwse-resize"):(e=d.target,e.style.cursor="nesw-resize"):a.getVerticalNeighbour().getPosition().y>a.getPosition().y?(e=d.target,e.style.cursor="nesw-resize"):(e=d.target,e.style.cursor="nwse-resize"),!0):(a.setOver(!1),!1)},b.prototype.onMouseDown=function(){this.isMouseDown=!0},b.prototype.onTouchStart=function(){this.isMouseDown=!0},b.prototype.onTouchEnd=function(b){for(var d=0;df;){var i=e[4*(h-1)+3];0===i?g=h:f=h,h=g+f>>1}var j=h/b;return 0===j?1:j},b.prototype.onMouseDown=function(){this.isMouseDown=!0},b.prototype.onMouseUp=function(){if(c.isImageSet()){this.isMouseDown=!1,this.handleRelease(new l(0,0,0));var b=this.getCroppedImage(a.cropWidth,a.cropHeight);a.croppedImage=b.src,a.$apply()}},b}();angular.element(document).ready(function(){var d=angular.element(b[0]),e=d[0],f=a.cropWidth,g=a.cropHeight,h=a.keepAspect,i=a.touchRadius;c=new m(e,e.width/2-f/2,e.height/2-g/2,f,g,h,i)}),a.$watch("image",function(b){if(null!=b){var d=new Image;d.addEventListener("load",function(){c.setImage(d);var b=c.getCroppedImage(a.cropWidth,a.cropHeight);a.croppedImage=b.src,a.$apply()},!1),d.src=b}})}}}]),angular.module("angular-img-cropper").directive("imgCropperFileread",["$timeout",function(a){return{scope:{image:"="},link:function(b,c){c.bind("change",function(c){var d=new FileReader;d.onload=function(c){a(function(){b.image=c.target.result},0)},c.target.files[0]&&d.readAsDataURL(c.target.files[0])})}}}]); \ No newline at end of file +angular.module("angular-img-cropper",[]).directive("imageCropper",["$document","$window",function(){return{scope:{image:"=",croppedImage:"=",cropWidth:"=",cropHeight:"=",keepAspect:"=",touchRadius:"=",cropAreaBounds:"="},restrict:"A",link:function(a,b){var c,d=d||function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);c.prototype=b.prototype,a.prototype=new c},e=function(){function a(a,b,c){this.over=!1,this.drag=!1,this.position=new k(a,b),this.offset=new k(0,0),this.radius=c}return a.prototype.setDrag=function(a){this.drag=a,this.setOver(a)},a.prototype.draw=function(){},a.prototype.setOver=function(a){this.over=a},a.prototype.touchInBounds=function(a,b){return a>this.position.x-this.radius&&athis.position.y-this.radius&&bd;d++)if(0===d)this.firstAvailable=new k,c=this.firstAvailable;else{var e=new k;c.setNext(e),c=e}}return a.prototype.borrow=function(a,b){if(null==this.firstAvailable)throw"Pool exhausted";this.borrowed++;var c=this.firstAvailable;return this.firstAvailable=c.getNext(),c.x=a,c.y=b,c},a.prototype.returnPoint=function(a){this.borrowed--,a.x=0,a.y=0,a.setNext(this.firstAvailable),this.firstAvailable=a},a}(),g=function(){function a(){}return a.init=function(a){this.canvas=a,this.ctx=this.canvas.getContext("2d")},a.DEG2RAD=.0174532925,a}(),h=function(a){function b(b,c,d){a.call(this,b,c,d),this.iconPoints=new Array,this.scaledIconPoints=new Array,this.getDragIconPoints(this.iconPoints,1),this.getDragIconPoints(this.scaledIconPoints,1.2)}return d(b,a),b.prototype.draw=function(a){this.over||this.drag?this.drawIcon(a,this.scaledIconPoints):this.drawIcon(a,this.iconPoints)},b.prototype.getDragIconPoints=function(a,b){var c=17*b,d=14*b,e=8*b,g=4*b;a.push(f.instance.borrow(-g/2,c-e)),a.push(f.instance.borrow(-d/2,c-e)),a.push(f.instance.borrow(0,c)),a.push(f.instance.borrow(d/2,c-e)),a.push(f.instance.borrow(g/2,c-e)),a.push(f.instance.borrow(g/2,g/2)),a.push(f.instance.borrow(c-e,g/2)),a.push(f.instance.borrow(c-e,d/2)),a.push(f.instance.borrow(c,0)),a.push(f.instance.borrow(c-e,-d/2)),a.push(f.instance.borrow(c-e,-g/2)),a.push(f.instance.borrow(g/2,-g/2)),a.push(f.instance.borrow(g/2,-c+e)),a.push(f.instance.borrow(d/2,-c+e)),a.push(f.instance.borrow(0,-c)),a.push(f.instance.borrow(-d/2,-c+e)),a.push(f.instance.borrow(-g/2,-c+e)),a.push(f.instance.borrow(-g/2,-g/2)),a.push(f.instance.borrow(-c+e,-g/2)),a.push(f.instance.borrow(-c+e,-d/2)),a.push(f.instance.borrow(-c,0)),a.push(f.instance.borrow(-c+e,d/2)),a.push(f.instance.borrow(-c+e,g/2)),a.push(f.instance.borrow(-g/2,g/2))},b.prototype.drawIcon=function(a,b){a.beginPath(),a.moveTo(b[0].x+this.position.x,b[0].y+this.position.y);for(var c=0;cc?(e=this.canvasWidth,f=this.canvasWidth*c):(f=this.canvasHeight,e=this.canvasHeight/c),this.ratioW=e/this.srcImage.width,this.ratioH=f/this.srcImage.height,c>d?this.drawImageIOSFix(a,this.srcImage,0,0,this.srcImage.width,this.srcImage.height,this.buffer.width/2-e/2,0,e,f):this.drawImageIOSFix(a,this.srcImage,0,0,this.srcImage.width,this.srcImage.height,0,this.buffer.height/2-f/2,e,f),this.buffer.getContext("2d").drawImage(this.canvas,0,0,this.canvasWidth,this.canvasHeight),a.fillStyle="rgba(0, 0, 0, 0.7)",a.fillRect(0,0,this.canvasWidth,this.canvasHeight),a.drawImage(this.buffer,b.left,b.top,Math.max(b.getWidth(),1),Math.max(b.getHeight(),1),b.left,b.top,b.getWidth(),b.getHeight());for(var g,h=0;h=this.maxXClamp&&(a=this.maxXClamp-d.getWidth()/2),e<=this.minXClamp&&(a=d.getWidth()/2+this.minXClamp),g=this.maxYClamp&&(b=this.maxYClamp-d.getHeight()/2),this.tl.moveX(a-d.getWidth()/2),this.tl.moveY(b-d.getHeight()/2),this.tr.moveX(a+d.getWidth()/2),this.tr.moveY(b-d.getHeight()/2),this.bl.moveX(a-d.getWidth()/2),this.bl.moveY(b+d.getHeight()/2),this.br.moveX(a+d.getWidth()/2),this.br.moveY(b+d.getHeight()/2),c.setPosition(a,b)},b.prototype.dragCorner=function(b,c,d){var e,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;a.keepAspect?(e=d.getHorizontalNeighbour().getVerticalNeighbour(),i=e.getPosition().x,j=e.getPosition().y,b<=e.getPosition().x?c<=e.getPosition().y?(g=i-100/this.aspectRatio,h=j-100/this.aspectRatio*this.aspectRatio,o=this.getSide(f.instance.borrow(g,h),e.getPosition(),f.instance.borrow(b,c)),o>0?(k=Math.abs(e.getPosition().y-c),l=k/this.aspectRatio,m=e.getPosition().y-k,n=e.getPosition().x-l,d.move(n,m)):0>o&&(l=Math.abs(e.getPosition().x-b),k=l*this.aspectRatio,m=e.getPosition().y-k,n=e.getPosition().x-l,d.move(n,m))):(g=i-100/this.aspectRatio,h=j+100/this.aspectRatio*this.aspectRatio,o=this.getSide(f.instance.borrow(g,h),e.getPosition(),f.instance.borrow(b,c)),o>0?(l=Math.abs(e.getPosition().x-b),k=l*this.aspectRatio,m=e.getPosition().y+k,n=e.getPosition().x-l,d.move(n,m)):0>o&&(k=Math.abs(e.getPosition().y-c),l=k/this.aspectRatio,m=e.getPosition().y+k,n=e.getPosition().x-l,d.move(n,m))):c<=e.getPosition().y?(g=i+100/this.aspectRatio,h=j-100/this.aspectRatio*this.aspectRatio,o=this.getSide(f.instance.borrow(g,h),e.getPosition(),f.instance.borrow(b,c)),0>o?(k=Math.abs(e.getPosition().y-c),l=k/this.aspectRatio,m=e.getPosition().y-k,n=e.getPosition().x+l,d.move(n,m)):o>0&&(l=Math.abs(e.getPosition().x-b),k=l*this.aspectRatio,m=e.getPosition().y-k,n=e.getPosition().x+l,d.move(n,m))):(g=i+100/this.aspectRatio,h=j+100/this.aspectRatio*this.aspectRatio,o=this.getSide(f.instance.borrow(g,h),e.getPosition(),f.instance.borrow(b,c)),0>o?(l=Math.abs(e.getPosition().x-b),k=l*this.aspectRatio,m=e.getPosition().y+k,n=e.getPosition().x+l,d.move(n,m)):o>0&&(k=Math.abs(e.getPosition().y-c),l=k/this.aspectRatio,m=e.getPosition().y+k,n=e.getPosition().x+l,d.move(n,m)))):d.move(b,c),this.center.recalculatePosition(this.getBounds())},b.prototype.getSide=function(a,b,c){var d=this.sign((b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x));return f.instance.returnPoint(a),f.instance.returnPoint(c),d},b.prototype.sign=function(a){return+a===a?0===a?a:a>0?1:-1:0/0},b.prototype.handleRelease=function(a){if(null!=a){for(var b=0,c=0;ca?(c=this.canvas.width,d=this.canvas.width*a):(d=this.canvas.height,c=this.canvas.height/a),this.minXClamp=this.canvas.width/2-c/2,this.minYClamp=this.canvas.height/2-d/2,this.maxXClamp=this.canvas.width/2+c/2,this.maxYClamp=this.canvas.height/2+d/2},b.prototype.getCropBounds=function(){var a=this.canvas.height-2*this.minYClamp,b=this.getBounds();return b.top=Math.round((a-b.top+this.minYClamp)/this.ratioH),b.bottom=Math.round((a-b.bottom+this.minYClamp)/this.ratioH),b.left=Math.round((b.left-this.minXClamp)/this.ratioW),b.right=Math.round((b.right-this.minXClamp)/this.ratioW),b},b.prototype.clampPosition=function(a,b){return athis.maxXClamp&&(a=this.maxXClamp),bthis.maxYClamp&&(b=this.maxYClamp),f.instance.borrow(a,b)},b.prototype.isImageSet=function(){return this.imageSet},b.prototype.setImage=function(b){if(!b)throw"Image is null";this.imageSet=!0,this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);var c=this.buffer.getContext("2d");c.clearRect(0,0,this.buffer.width,this.buffer.height);var d=b.src.split("."),e=d[1];("png"==e||"jpg"==e)&&(this.fileType=e),this.srcImage=b,this.updateClampBounds();var g=this.srcImage.height/this.srcImage.width,h=this.getBounds(),i=h.getHeight()/h.getWidth(),j=this.canvas.width,k=this.canvas.height;this.canvasWidth=j,this.canvasHeight=k;var l=this.canvas.width/2,m=this.canvas.height/2,n=f.instance.borrow(l-h.getWidth()/2,m+h.getHeight()/2),o=f.instance.borrow(l+h.getWidth()/2,m+h.getHeight()/2),p=f.instance.borrow(l-h.getWidth()/2,m-h.getHeight()/2),q=f.instance.borrow(l+h.getWidth()/2,m-h.getHeight()/2);if(this.tl.setPosition(n.x,n.y),this.tr.setPosition(o.x,o.y),this.bl.setPosition(p.x,p.y),this.br.setPosition(q.x,q.y),f.instance.returnPoint(n),f.instance.returnPoint(o),f.instance.returnPoint(p),f.instance.returnPoint(q),this.center.setPosition(l,m),i>g){var r=Math.min(j*g,k);if(h.getHeight()>r){var s=r/i;n=f.instance.borrow(l-s/2,m+r/2),o=f.instance.borrow(l+s/2,m+r/2),p=f.instance.borrow(l-s/2,m-r/2),q=f.instance.borrow(l+s/2,m-r/2),this.tl.setPosition(n.x,n.y),this.tr.setPosition(o.x,o.y),this.bl.setPosition(p.x,p.y),this.br.setPosition(q.x,q.y),f.instance.returnPoint(n),f.instance.returnPoint(o),f.instance.returnPoint(p),f.instance.returnPoint(q)}}else if(g>i){var t=Math.min(k/g,j);if(h.getWidth()>t){var u=t*i;n=f.instance.borrow(l-t/2,m+u/2),o=f.instance.borrow(l+t/2,m+u/2),p=f.instance.borrow(l-t/2,m-u/2),q=f.instance.borrow(l+t/2,m-u/2),this.tl.setPosition(n.x,n.y),this.tr.setPosition(o.x,o.y),this.bl.setPosition(p.x,p.y),this.br.setPosition(q.x,q.y),f.instance.returnPoint(n),f.instance.returnPoint(o),f.instance.returnPoint(p),f.instance.returnPoint(q)}}this.vertSquashRatio=this.detectVerticalSquash(b),this.draw(this.ctx);var v=this.getCroppedImage(a.cropWidth,a.cropHeight);a.croppedImage=v.src,a.cropAreaBounds&&this.imageSet&&(a.cropAreaBounds=this.getCropBounds(),a.$apply())},b.prototype.getCroppedImage=function(a,b){var c=this.getBounds();if(!this.srcImage)throw"Source image not set.";if(a&&b){var d=this.srcImage.height/this.srcImage.width,e=this.canvas.height/this.canvas.width,f=this.canvas.width,g=this.canvas.height;e>d?(f=this.canvas.width,g=this.canvas.width*d):d>e?(g=this.canvas.height,f=this.canvas.height/d):(g=this.canvas.height,f=this.canvas.width),this.ratioW=f/this.srcImage.width,this.ratioH=g/this.srcImage.height,this.cropCanvas.width=a,this.cropCanvas.height=b;var h=(this.buffer.height-g)/2/this.ratioH,i=(this.buffer.width-f)/2/this.ratioW,j=1,k=1;this.ratioW<1&&(j=this.ratioW),this.ratioH<1&&(k=this.ratioH),this.drawImageIOSFix(this.cropCanvas.getContext("2d"),this.srcImage,Math.max(Math.round(c.left/this.ratioW-i),0),Math.max(Math.round(c.top/this.ratioH-h),0),Math.max(Math.round(c.getWidth()/j),1),Math.max(Math.round(c.getHeight()/k),1),0,0,a,b),this.croppedImage.width=a,this.croppedImage.height=b}else this.cropCanvas.width=Math.max(c.getWidth(),1),this.cropCanvas.height=Math.max(c.getHeight(),1),this.cropCanvas.getContext("2d").drawImage(this.buffer,c.left,c.top,Math.max(c.getWidth(),1),Math.max(c.getHeight(),1),0,0,c.getWidth(),c.getHeight()),this.croppedImage.width=this.cropCanvas.width,this.croppedImage.height=this.cropCanvas.height;return this.croppedImage.src=this.cropCanvas.toDataURL("image/"+this.fileType),this.croppedImage},b.prototype.getBounds=function(){for(var a=Number.MAX_VALUE,b=Number.MAX_VALUE,c=-Number.MAX_VALUE,d=-Number.MAX_VALUE,e=0;ec&&(c=f.getPosition().x),f.getPosition().yd&&(d=f.getPosition().y)}var g=new j;return g.left=a,g.right=c,g.top=b,g.bottom=d,g},b.prototype.getMousePos=function(a,b){var c=a.getBoundingClientRect();return f.instance.borrow(b.clientX-c.left,b.clientY-c.top)},b.prototype.getTouchPos=function(a,b){var c=a.getBoundingClientRect();return f.instance.borrow(b.clientX-c.left,b.clientY-c.top)},b.prototype.onTouchMove=function(a){if(a.preventDefault(),a.touches.length>=1)for(var b=0;ba.getPosition().x?a.getVerticalNeighbour().getPosition().y>a.getPosition().y?(e=d.target,e.style.cursor="nwse-resize"):(e=d.target,e.style.cursor="nesw-resize"):a.getVerticalNeighbour().getPosition().y>a.getPosition().y?(e=d.target,e.style.cursor="nesw-resize"):(e=d.target,e.style.cursor="nwse-resize"),!0):(a.setOver(!1),!1)},b.prototype.onMouseDown=function(){this.isMouseDown=!0},b.prototype.onTouchStart=function(){this.isMouseDown=!0},b.prototype.onTouchEnd=function(b){for(var d=0;df;){var i=e[4*(h-1)+3];0===i?g=h:f=h,h=g+f>>1}var j=h/b;return 0===j?1:j},b.prototype.onMouseDown=function(){this.isMouseDown=!0},b.prototype.onMouseUp=function(){if(c.isImageSet()){this.isMouseDown=!1,this.handleRelease(new l(0,0,0));var b=this.getCroppedImage(a.cropWidth,a.cropHeight);a.croppedImage=b.src,a.$apply()}},b}();angular.element(document).ready(function(){var d=angular.element(b[0]),e=d[0],f=a.cropWidth,g=a.cropHeight,h=a.keepAspect,i=a.touchRadius;c=new m(e,e.width/2-f/2,e.height/2-g/2,f,g,h,i)}),a.$watch("image",function(b){if(null!=b){var d=new Image;d.addEventListener("load",function(){c.setImage(d);var b=c.getCroppedImage(a.cropWidth,a.cropHeight);a.croppedImage=b.src,a.$apply()},!1),d.src=b}})}}}]),angular.module("angular-img-cropper").directive("imgCropperFileread",["$timeout",function(a){return{scope:{image:"="},link:function(b,c){c.bind("change",function(c){var d=new FileReader;d.onload=function(c){a(function(){b.image=c.target.result},0)},c.target.files[0]&&d.readAsDataURL(c.target.files[0])})}}}]); \ No newline at end of file