package io.prime.web.thumbnailator.core.filter;

import org.apache.commons.lang3.BooleanUtils;

import net.coobird.thumbnailator.Thumbnails.Builder;
import net.coobird.thumbnailator.geometry.Position;
import net.coobird.thumbnailator.geometry.Positions;

public class CropFilter implements ThumbnailatorFilter
{
    private int width;

    private int height;

    private Position position;

    @Override
    public <T> void filter(final Builder<T> builder)
    {
        if (BooleanUtils.isFalse((width > 0) || (height > 0))) {

        }
        if ((width > 0) && (height > 0)) {
            builder.size(width, height);
        } else {
            if (width > 0) {
                builder.width(width);
            } else {
                builder.height(height);
            }
        }

        if (null == position) {
            position = Positions.CENTER;
        }

        builder.crop(position);
    }

    public int getWidth()
    {
        return width;
    }

    public void setWidth(final int width)
    {
        this.width = width;
    }

    public int getHeight()
    {
        return height;
    }

    public void setHeight(final int height)
    {
        this.height = height;
    }

}

@@ -444,16 +444,17 @@
  filter(
+ 
 final Bu
@@ -469,16 +469,17 @@
  builder
+ 
 )%0D%0A    %7B
@@ -492,16 +492,17 @@
     if (
+ 
 BooleanU
@@ -514,17 +514,19 @@
 isFalse(
-(
+ ( 
 width %3E 
@@ -530,14 +530,16 @@
  %3E 0
+ 
 ) %7C%7C (
+ 
 heig
@@ -544,18 +544,21 @@
 ight %3E 0
-))
+ ) ) 
 ) %7B%0D%0A%0D%0A 
@@ -579,17 +579,19 @@
     if (
-(
+ ( 
 width %3E 
@@ -595,14 +595,16 @@
  %3E 0
+ 
 ) && (
+ 
 heig
@@ -609,17 +609,19 @@
 ight %3E 0
-)
+ ) 
 ) %7B%0D%0A   
@@ -642,16 +642,17 @@
 er.size(
+ 
 width, h
@@ -652,24 +652,25 @@
 idth, height
+ 
 );%0D%0A        
@@ -662,32 +662,41 @@
 ht );%0D%0A        %7D
+%0D%0A       
  else %7B%0D%0A       
@@ -704,16 +704,17 @@
     if (
+ 
 width %3E 
@@ -714,16 +714,17 @@
 idth %3E 0
+ 
 ) %7B%0D%0A   
@@ -750,21 +750,23 @@
 r.width(
+ 
 width
+ 
 );%0D%0A    
@@ -774,16 +774,29 @@
        %7D
+%0D%0A           
  else %7B%0D
@@ -827,22 +827,24 @@
 .height(
+ 
 height
+ 
 );%0D%0A    
@@ -879,16 +879,17 @@
     if (
+ 
 null == 
@@ -896,16 +896,17 @@
 position
+ 
 ) %7B%0D%0A   
@@ -978,24 +978,25 @@
 er.crop(
+ 
 position
 );%0D%0A    
@@ -987,16 +987,17 @@
 position
+ 
 );%0D%0A    
@@ -1092,16 +1092,17 @@
 etWidth(
+ 
 final in
@@ -1108,16 +1108,17 @@
 nt width
+ 
 )%0D%0A    %7B
@@ -1251,16 +1251,17 @@
 tHeight(
+ 
 final in
@@ -1268,16 +1268,17 @@
 t height
+ 
 )%0D%0A    %7B
@@ -1319,11 +1319,195 @@
    %7D%0D%0A%0D%0A
+    public Position getPosition()%0D%0A    %7B%0D%0A        return position;%0D%0A    %7D%0D%0A%0D%0A    public void setPosition( final Position position )%0D%0A    %7B%0D%0A        this.position = position;%0D%0A    %7D%0D%0A%0D%0A
 %7D%0D%0A

fix position