diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTestCase.java index d2673958..fc3a7803 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTestCase.java @@ -66,7 +66,7 @@ public class ImageServletResponseImplTestCase { when(context.getMimeType("file.txt")).thenReturn(CONTENT_TYPE_TEXT); } - private void fakeResponse(HttpServletRequest pRequest, DefaultImageServletResponse pImageResponse) throws IOException { + private void fakeResponse(HttpServletRequest pRequest, ImageServletResponseImpl pImageResponse) throws IOException { String uri = pRequest.getRequestURI(); int index = uri.lastIndexOf('/'); assertTrue(uri, index >= 0); diff --git a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterest.java b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterest.java index 63ba79db..f095536e 100644 --- a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterest.java +++ b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterest.java @@ -7,7 +7,14 @@ import java.awt.*; * @version $Revision: $ */ public interface AreaOfInterest { - Rectangle getAOI(int pX, int pY, int pWidth, int pHeight); - + Rectangle getAOI(Rectangle pCrop); + + Dimension getOriginalDimension(); + + int calculateX(Dimension pOriginalDimension, Rectangle pCrop); + + int calculateY(Dimension pOriginalDimension, Rectangle pCrop); + + Dimension getCrop(Dimension pOriginalDimension, Rectangle pCrop); } diff --git a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestWrapper.java b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestWrapper.java index a5564efc..af405eeb 100644 --- a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestWrapper.java +++ b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestWrapper.java @@ -15,11 +15,23 @@ public class AreaOfInterestWrapper implements AreaOfInterest { this.mDelegate = Validate.notNull(mDelegate); } - public Rectangle getAOI(int pX, int pY, int pWidth, int pHeight) { - return mDelegate.getAOI(pX, pY, pWidth, pHeight); - } - public Rectangle getAOI(Rectangle pCrop) { return mDelegate.getAOI(pCrop); } + + public Dimension getOriginalDimension() { + return mDelegate.getOriginalDimension(); + } + + public int calculateX(Dimension pOriginalDimension, Rectangle pCrop) { + return mDelegate.calculateX(pOriginalDimension, pCrop); + } + + public int calculateY(Dimension pOriginalDimension, Rectangle pCrop) { + return mDelegate.calculateY(pOriginalDimension, pCrop); + } + + public Dimension getCrop(Dimension pOriginalDimension, Rectangle pCrop) { + return mDelegate.getCrop(pOriginalDimension, pCrop); + } } diff --git a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/DefaultAreaOfInterest.java b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/DefaultAreaOfInterest.java index 56c06709..ac8e8142 100644 --- a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/DefaultAreaOfInterest.java +++ b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/DefaultAreaOfInterest.java @@ -8,76 +8,67 @@ import java.awt.*; * @version $Revision: $ */ public class DefaultAreaOfInterest implements AreaOfInterest { - protected final int mOriginalWidth; - protected final int mOriginalHeight; + private final int mOriginalWidth; + private final int mOriginalHeight; public DefaultAreaOfInterest(int pOriginalWidth, int pOriginalHeight) { this.mOriginalWidth = pOriginalWidth; this.mOriginalHeight = pOriginalHeight; } - public Rectangle getAOI(final int pX, final int pY, final int pWidth, final int pHeight) { + public DefaultAreaOfInterest(Dimension pOriginalDimension) { + this(pOriginalDimension.width, pOriginalDimension.height); + } + + Rectangle getAOI(final int pX, final int pY, final int pWidth, final int pHeight) { return getAOI(new Rectangle(pX, pY, pWidth, pHeight)); } public Rectangle getAOI(final Rectangle pCrop) { int y = pCrop.y; int x = pCrop.x; + Dimension dimension = getOriginalDimension(); - Dimension crop = getCrop(pCrop); + Dimension crop = getCrop(dimension, pCrop); // Center if (y < 0) { - y = calculateY(crop.height); + y = calculateY(dimension, new Rectangle(x, y, crop.width, crop.height)); } if (x < 0) { - x = calculateX(crop.width); + x = calculateX(dimension, new Rectangle(x, y, crop.width, crop.height)); } return new Rectangle(x, y, crop.width, crop.height); } - protected int calculateX(int pWidth) { - return (mOriginalWidth - pWidth) / 2; + public Dimension getOriginalDimension() { + return new Dimension(mOriginalWidth, mOriginalHeight); } - - protected int calculateY(int pHeight) { - return (mOriginalHeight - pHeight) / 2; + public int calculateX(Dimension pOriginalDimension, Rectangle pCrop) { + return (pOriginalDimension.width - pCrop.width) / 2; } - private int calculateRuleOfThirds(final int pY, final int pCropWidth, final int pCropHeight) { - int y = pY; - if (y < 0) { - float origRatio = (float) mOriginalWidth / (float) mOriginalHeight; - float cropRatio = (float) pCropWidth / (float) pCropHeight; - if (cropRatio > origRatio && origRatio < 1) { - y = (int) ((mOriginalHeight * 0.33f) - (pCropHeight / 2)); - if (y < 0) { - y = 0; - } - } - } - return y; + public int calculateY(Dimension pOriginalDimension, Rectangle pCrop) { + return (pOriginalDimension.height - pCrop.height) / 2; } - protected Dimension getCrop(final Rectangle pCrop) { - return getOriginalDimension(pCrop); - } - - private Dimension getOriginalDimension(Rectangle pCrop) { + public Dimension getCrop(Dimension pOriginalDimension, final Rectangle pCrop) { + int mOriginalWidth1 = pOriginalDimension.width; + int mOriginalHeight1 = pOriginalDimension.height; int x = pCrop.x; int y = pCrop.y; int cropWidth = pCrop.width; int cropHeight = pCrop.height; - if (cropWidth < 0 || (x < 0 && cropWidth > mOriginalWidth) - || (x >= 0 && (x + cropWidth) > mOriginalWidth)) { - cropWidth = (x >= 0 ? mOriginalWidth - x : mOriginalWidth); + if (cropWidth < 0 || (x < 0 && cropWidth > mOriginalWidth1) + || (x >= 0 && (x + cropWidth) > mOriginalWidth1)) { + cropWidth = (x >= 0 ? mOriginalWidth1 - x : mOriginalWidth1); } - if (cropHeight < 0 || (y < 0 && cropHeight > mOriginalHeight) - || (y >= 0 && (y + cropHeight) > mOriginalHeight)) { - cropHeight = (y >= 0 ? mOriginalHeight - y : mOriginalHeight); + if (cropHeight < 0 || (y < 0 && cropHeight > mOriginalHeight1) + || (y >= 0 && (y + cropHeight) > mOriginalHeight1)) { + cropHeight = (y >= 0 ? mOriginalHeight1 - y : mOriginalHeight1); } return new Dimension(cropWidth, cropHeight); } diff --git a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/PercentAreaOfInterest.java b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/PercentAreaOfInterest.java index e23bd7d9..3b53b9d8 100644 --- a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/PercentAreaOfInterest.java +++ b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/PercentAreaOfInterest.java @@ -8,32 +8,36 @@ import java.awt.*; */ public class PercentAreaOfInterest extends DefaultAreaOfInterest { + public PercentAreaOfInterest(Dimension pOriginalDimension) { + super(pOriginalDimension); + } + public PercentAreaOfInterest(int pOriginalWidth, int pOriginalHeight) { super(pOriginalWidth, pOriginalHeight); } - protected Dimension getCrop(final Rectangle pCrop) { + public Dimension getCrop(Dimension pOriginalDimension, final Rectangle pCrop) { int cropWidth = pCrop.width; int cropHeight = pCrop.height; float ratio; if (cropWidth >= 0 && cropHeight >= 0) { // Non-uniform - cropWidth = Math.round((float) mOriginalWidth * (float) pCrop.width / 100f); - cropHeight = Math.round((float) mOriginalHeight * (float) pCrop.height / 100f); + cropWidth = Math.round((float) pOriginalDimension.width * (float) pCrop.width / 100f); + cropHeight = Math.round((float) pOriginalDimension.height * (float) pCrop.height / 100f); } else if (cropWidth >= 0) { // Find ratio from pWidth ratio = (float) cropWidth / 100f; - cropWidth = Math.round((float) mOriginalWidth * ratio); - cropHeight = Math.round((float) mOriginalHeight * ratio); + cropWidth = Math.round((float) pOriginalDimension.width * ratio); + cropHeight = Math.round((float) pOriginalDimension.height * ratio); } else if (cropHeight >= 0) { // Find ratio from pHeight ratio = (float) cropHeight / 100f; - cropWidth = Math.round((float) mOriginalWidth * ratio); - cropHeight = Math.round((float) mOriginalHeight * ratio); + cropWidth = Math.round((float) pOriginalDimension.width * ratio); + cropHeight = Math.round((float) pOriginalDimension.height * ratio); } // Else: No crop diff --git a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/UniformAreaOfInterest.java b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/UniformAreaOfInterest.java index 3623d4c8..7d785307 100644 --- a/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/UniformAreaOfInterest.java +++ b/twelvemonkeys-servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/UniformAreaOfInterest.java @@ -7,39 +7,41 @@ import java.awt.*; * @version $Revision: $ */ public class UniformAreaOfInterest extends DefaultAreaOfInterest { - + + public UniformAreaOfInterest(Dimension pOriginalDimension) { + super(pOriginalDimension); + } + public UniformAreaOfInterest(int pOriginalWidth, int pOriginalHeight) { super(pOriginalWidth, pOriginalHeight); } - protected Dimension getCrop(final Rectangle pCrop) { + public Dimension getCrop(Dimension pOriginalDimension, final Rectangle pCrop) { float ratio; - if (pCrop.width >= 0 && pCrop.height >= 0) { // Compute both ratios ratio = (float) pCrop.width / (float) pCrop.height; - float originalRatio = (float) mOriginalWidth / (float) mOriginalHeight; + float originalRatio = (float) pOriginalDimension.width / (float) pOriginalDimension.height; if (ratio > originalRatio) { - pCrop.width = mOriginalWidth; - pCrop.height = Math.round((float) mOriginalWidth / ratio); + pCrop.width = pOriginalDimension.width; + pCrop.height = Math.round((float) pOriginalDimension.width / ratio); } else { - pCrop.height = mOriginalHeight; - pCrop.width = Math.round((float) mOriginalHeight * ratio); + pCrop.height = pOriginalDimension.height; + pCrop.width = Math.round((float) pOriginalDimension.height * ratio); } } else if (pCrop.width >= 0) { // Find ratio from pWidth - ratio = (float) pCrop.width / (float) mOriginalWidth; - pCrop.height = Math.round((float) mOriginalHeight * ratio); + ratio = (float) pCrop.width / (float) pOriginalDimension.width; + pCrop.height = Math.round((float) pOriginalDimension.height * ratio); } else if (pCrop.height >= 0) { // Find ratio from pHeight - ratio = (float) pCrop.height / (float) mOriginalHeight; - pCrop.width = Math.round((float) mOriginalWidth * ratio); + ratio = (float) pCrop.height / (float) pOriginalDimension.height; + pCrop.width = Math.round((float) pOriginalDimension.width * ratio); } // Else: No crop return new Dimension(pCrop.width, pCrop.height); } - } diff --git a/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/image/AreaOfInterestTestCase.java b/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestTestCase.java similarity index 61% rename from twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/image/AreaOfInterestTestCase.java rename to twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestTestCase.java index feab7f5c..e8d94133 100644 --- a/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/image/AreaOfInterestTestCase.java +++ b/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestTestCase.java @@ -1,4 +1,4 @@ -package com.twelvemonkeys.servlet.image; +package com.twelvemonkeys.servlet.image.aoi; import com.twelvemonkeys.servlet.image.aoi.DefaultAreaOfInterest; import com.twelvemonkeys.servlet.image.aoi.UniformAreaOfInterest; @@ -13,36 +13,40 @@ import static org.junit.Assert.assertEquals; * @version $Revision: $ */ public class AreaOfInterestTestCase { + private static final Dimension SQUARE_200_200 = new Dimension(200, 200); + private static final Dimension PORTRAIT_100_200 = new Dimension(100, 200); + private static final Dimension LANDSCAPE_200_100 = new Dimension(200, 100); + private static final Dimension SQUARE_100_100 = new Dimension(100, 100); // ----------------------------------------------------------------------------------------------------------------- // Absolute AOI // ----------------------------------------------------------------------------------------------------------------- @Test public void testGetAOIAbsolute() { - assertEquals(new Rectangle(10, 10, 100, 100), new DefaultAreaOfInterest(200, 200).getAOI(10, 10, 100, 100)); + assertEquals(new Rectangle(10, 10, 100, 100), new DefaultAreaOfInterest(SQUARE_200_200).getAOI(10, 10, 100, 100)); } @Test public void testGetAOIAbsoluteOverflowX() { - assertEquals(new Rectangle(10, 10, 90, 100), new DefaultAreaOfInterest(100, 200).getAOI(10, 10, 100, 100)); + assertEquals(new Rectangle(10, 10, 90, 100), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(10, 10, 100, 100)); } @Test public void testGetAOIAbsoluteOverflowW() { - assertEquals(new Rectangle(0, 10, 100, 100), new DefaultAreaOfInterest(100, 200).getAOI(0, 10, 110, 100)); + assertEquals(new Rectangle(0, 10, 100, 100), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(0, 10, 110, 100)); } @Test public void testGetAOIAbsoluteOverflowY() { - assertEquals(new Rectangle(10, 10, 100, 90), new DefaultAreaOfInterest(200, 100).getAOI(10, 10, 100, 100)); + assertEquals(new Rectangle(10, 10, 100, 90), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(10, 10, 100, 100)); } @Test public void testGetAOIAbsoluteOverflowH() { - assertEquals(new Rectangle(10, 0, 100, 100), new DefaultAreaOfInterest(200, 100).getAOI(10, 0, 100, 110)); + assertEquals(new Rectangle(10, 0, 100, 100), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(10, 0, 100, 110)); } // ----------------------------------------------------------------------------------------------------------------- @@ -51,127 +55,127 @@ public class AreaOfInterestTestCase { @Test public void testGetAOIUniformCenteredS2SUp() { - assertEquals(new Rectangle(0, 0, 100, 100), new UniformAreaOfInterest(100, 100).getAOI(-1, -1, 333, 333)); + assertEquals(new Rectangle(0, 0, 100, 100), new UniformAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 333, 333)); } @Test public void testGetAOIUniformCenteredS2SDown() { - assertEquals(new Rectangle(0, 0, 100, 100), new UniformAreaOfInterest(100, 100).getAOI(-1, -1, 33, 33)); + assertEquals(new Rectangle(0, 0, 100, 100), new UniformAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 33, 33)); } @Test public void testGetAOIUniformCenteredS2SNormalized() { - assertEquals(new Rectangle(0, 0, 100, 100), new UniformAreaOfInterest(100, 100).getAOI(-1, -1, 100, 100)); + assertEquals(new Rectangle(0, 0, 100, 100), new UniformAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 100, 100)); } @Test public void testGetAOIUniformCenteredS2W() { - assertEquals(new Rectangle(0, 25, 100, 50), new UniformAreaOfInterest(100, 100).getAOI(-1, -1, 200, 100)); + assertEquals(new Rectangle(0, 25, 100, 50), new UniformAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 200, 100)); } @Test public void testGetAOIUniformCenteredS2WNormalized() { - assertEquals(new Rectangle(0, 25, 100, 50), new UniformAreaOfInterest(100, 100).getAOI(-1, -1, 100, 50)); + assertEquals(new Rectangle(0, 25, 100, 50), new UniformAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 100, 50)); } @Test public void testGetAOIUniformCenteredS2N() { - assertEquals(new Rectangle(25, 0, 50, 100), new UniformAreaOfInterest(100, 100).getAOI(-1, -1, 100, 200)); + assertEquals(new Rectangle(25, 0, 50, 100), new UniformAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 100, 200)); } @Test public void testGetAOIUniformCenteredS2NNormalized() { - assertEquals(new Rectangle(25, 0, 50, 100), new UniformAreaOfInterest(100, 100).getAOI(-1, -1, 50, 100)); + assertEquals(new Rectangle(25, 0, 50, 100), new UniformAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 50, 100)); } @Test public void testGetAOIUniformCenteredW2S() { - assertEquals(new Rectangle(50, 0, 100, 100), new UniformAreaOfInterest(200, 100).getAOI(-1, -1, 333, 333)); + assertEquals(new Rectangle(50, 0, 100, 100), new UniformAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 333, 333)); } @Test public void testGetAOIUniformCenteredW2SNormalized() { - assertEquals(new Rectangle(50, 0, 100, 100), new UniformAreaOfInterest(200, 100).getAOI(-1, -1, 100, 100)); + assertEquals(new Rectangle(50, 0, 100, 100), new UniformAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 100, 100)); } @Test public void testGetAOIUniformCenteredW2W() { - assertEquals(new Rectangle(0, 0, 200, 100), new UniformAreaOfInterest(200, 100).getAOI(-1, -1, 100, 50)); + assertEquals(new Rectangle(0, 0, 200, 100), new UniformAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 100, 50)); } @Test public void testGetAOIUniformCenteredW2WW() { - assertEquals(new Rectangle(0, 25, 200, 50), new UniformAreaOfInterest(200, 100).getAOI(-1, -1, 200, 50)); + assertEquals(new Rectangle(0, 25, 200, 50), new UniformAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 200, 50)); } @Test public void testGetAOIUniformCenteredW2WN() { - assertEquals(new Rectangle(25, 0, 150, 100), new UniformAreaOfInterest(200, 100).getAOI(-1, -1, 75, 50)); + assertEquals(new Rectangle(25, 0, 150, 100), new UniformAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 75, 50)); } @Test public void testGetAOIUniformCenteredW2WNNormalized() { - assertEquals(new Rectangle(25, 0, 150, 100), new UniformAreaOfInterest(200, 100).getAOI(-1, -1, 150, 100)); + assertEquals(new Rectangle(25, 0, 150, 100), new UniformAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 150, 100)); } @Test public void testGetAOIUniformCenteredW2WNormalized() { - assertEquals(new Rectangle(0, 0, 200, 100), new UniformAreaOfInterest(200, 100).getAOI(-1, -1, 200, 100)); + assertEquals(new Rectangle(0, 0, 200, 100), new UniformAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 200, 100)); } @Test public void testGetAOIUniformCenteredW2N() { - assertEquals(new Rectangle(75, 0, 50, 100), new UniformAreaOfInterest(200, 100).getAOI(-1, -1, 100, 200)); + assertEquals(new Rectangle(75, 0, 50, 100), new UniformAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 100, 200)); } @Test public void testGetAOIUniformCenteredW2NNormalized() { - assertEquals(new Rectangle(75, 0, 50, 100), new UniformAreaOfInterest(200, 100).getAOI(-1, -1, 50, 100)); + assertEquals(new Rectangle(75, 0, 50, 100), new UniformAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 50, 100)); } @Test public void testGetAOIUniformCenteredN2S() { - assertEquals(new Rectangle(0, 50, 100, 100), new UniformAreaOfInterest(100, 200).getAOI(-1, -1, 333, 333)); + assertEquals(new Rectangle(0, 50, 100, 100), new UniformAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 333, 333)); } @Test public void testGetAOIUniformCenteredN2SNormalized() { - assertEquals(new Rectangle(0, 50, 100, 100), new UniformAreaOfInterest(100, 200).getAOI(-1, -1, 100, 100)); + assertEquals(new Rectangle(0, 50, 100, 100), new UniformAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 100, 100)); } @Test public void testGetAOIUniformCenteredN2W() { - assertEquals(new Rectangle(0, 75, 100, 50), new UniformAreaOfInterest(100, 200).getAOI(-1, -1, 200, 100)); + assertEquals(new Rectangle(0, 75, 100, 50), new UniformAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 200, 100)); } @Test public void testGetAOIUniformCenteredN2WNormalized() { - assertEquals(new Rectangle(0, 75, 100, 50), new UniformAreaOfInterest(100, 200).getAOI(-1, -1, 100, 50)); + assertEquals(new Rectangle(0, 75, 100, 50), new UniformAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 100, 50)); } @Test public void testGetAOIUniformCenteredN2N() { - assertEquals(new Rectangle(0, 0, 100, 200), new UniformAreaOfInterest(100, 200).getAOI(-1, -1, 50, 100)); + assertEquals(new Rectangle(0, 0, 100, 200), new UniformAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 50, 100)); } @Test public void testGetAOIUniformCenteredN2NN() { - assertEquals(new Rectangle(25, 0, 50, 200), new UniformAreaOfInterest(100, 200).getAOI(-1, -1, 25, 100)); + assertEquals(new Rectangle(25, 0, 50, 200), new UniformAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 25, 100)); } @Test public void testGetAOIUniformCenteredN2NW() { - assertEquals(new Rectangle(0, 33, 100, 133), new UniformAreaOfInterest(100, 200).getAOI(-1, -1, 75, 100)); + assertEquals(new Rectangle(0, 33, 100, 133), new UniformAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 75, 100)); } @Test public void testGetAOIUniformCenteredN2NWNormalized() { - assertEquals(new Rectangle(0, 37, 100, 125), new UniformAreaOfInterest(100, 200).getAOI(-1, -1, 100, 125)); + assertEquals(new Rectangle(0, 37, 100, 125), new UniformAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 100, 125)); } @Test public void testGetAOIUniformCenteredN2NNormalized() { - assertEquals(new Rectangle(0, 0, 100, 200), new UniformAreaOfInterest(100, 200).getAOI(-1, -1, 100, 200)); + assertEquals(new Rectangle(0, 0, 100, 200), new UniformAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 100, 200)); } // ----------------------------------------------------------------------------------------------------------------- @@ -180,226 +184,158 @@ public class AreaOfInterestTestCase { @Test public void testGetAOICenteredS2SUp() { - assertEquals(new Rectangle(0, 0, 100, 100), new DefaultAreaOfInterest(100, 100).getAOI(-1, -1, 333, 333)); + assertEquals(new Rectangle(0, 0, 100, 100), new DefaultAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 333, 333)); } @Test public void testGetAOICenteredS2SDown() { - assertEquals(new Rectangle(33, 33, 33, 33), new DefaultAreaOfInterest(100, 100).getAOI(-1, -1, 33, 33)); + assertEquals(new Rectangle(33, 33, 33, 33), new DefaultAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 33, 33)); } @Test public void testGetAOICenteredS2SSame() { - assertEquals(new Rectangle(0, 0, 100, 100), new DefaultAreaOfInterest(100, 100).getAOI(-1, -1, 100, 100)); + assertEquals(new Rectangle(0, 0, 100, 100), new DefaultAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 100, 100)); } @Test public void testGetAOICenteredS2WOverflow() { - assertEquals(new Rectangle(0, 0, 100, 100), new DefaultAreaOfInterest(100, 100).getAOI(-1, -1, 200, 100)); + assertEquals(new Rectangle(0, 0, 100, 100), new DefaultAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 200, 100)); } @Test public void testGetAOICenteredS2W() { - assertEquals(new Rectangle(40, 45, 20, 10), new DefaultAreaOfInterest(100, 100).getAOI(-1, -1, 20, 10)); + assertEquals(new Rectangle(40, 45, 20, 10), new DefaultAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 20, 10)); } @Test public void testGetAOICenteredS2WMax() { - assertEquals(new Rectangle(0, 25, 100, 50), new DefaultAreaOfInterest(100, 100).getAOI(-1, -1, 100, 50)); + assertEquals(new Rectangle(0, 25, 100, 50), new DefaultAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 100, 50)); } @Test public void testGetAOICenteredS2NOverflow() { - assertEquals(new Rectangle(0, 0, 100, 100), new DefaultAreaOfInterest(100, 100).getAOI(-1, -1, 100, 200)); + assertEquals(new Rectangle(0, 0, 100, 100), new DefaultAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 100, 200)); } @Test public void testGetAOICenteredS2N() { - assertEquals(new Rectangle(45, 40, 10, 20), new DefaultAreaOfInterest(100, 100).getAOI(-1, -1, 10, 20)); + assertEquals(new Rectangle(45, 40, 10, 20), new DefaultAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 10, 20)); } @Test public void testGetAOICenteredS2NMax() { - assertEquals(new Rectangle(25, 0, 50, 100), new DefaultAreaOfInterest(100, 100).getAOI(-1, -1, 50, 100)); + assertEquals(new Rectangle(25, 0, 50, 100), new DefaultAreaOfInterest(SQUARE_100_100).getAOI(-1, -1, 50, 100)); } @Test public void testGetAOICenteredW2SOverflow() { - assertEquals(new Rectangle(0, 0, 200, 100), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 333, 333)); + assertEquals(new Rectangle(0, 0, 200, 100), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 333, 333)); } @Test public void testGetAOICenteredW2S() { - assertEquals(new Rectangle(75, 25, 50, 50), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 50, 50)); + assertEquals(new Rectangle(75, 25, 50, 50), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 50, 50)); } @Test public void testGetAOICenteredW2SMax() { - assertEquals(new Rectangle(50, 0, 100, 100), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 100, 100)); + assertEquals(new Rectangle(50, 0, 100, 100), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 100, 100)); } @Test public void testGetAOICenteredW2WOverflow() { - assertEquals(new Rectangle(0, 0, 200, 100), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 300, 200)); + assertEquals(new Rectangle(0, 0, 200, 100), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 300, 200)); } @Test public void testGetAOICenteredW2W() { - assertEquals(new Rectangle(50, 25, 100, 50), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 100, 50)); + assertEquals(new Rectangle(50, 25, 100, 50), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 100, 50)); } @Test public void testGetAOICenteredW2WW() { - assertEquals(new Rectangle(10, 40, 180, 20), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 180, 20)); + assertEquals(new Rectangle(10, 40, 180, 20), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 180, 20)); } @Test public void testGetAOICenteredW2WN() { - assertEquals(new Rectangle(62, 25, 75, 50), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 75, 50)); + assertEquals(new Rectangle(62, 25, 75, 50), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 75, 50)); } @Test public void testGetAOICenteredW2WSame() { - assertEquals(new Rectangle(0, 0, 200, 100), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 200, 100)); + assertEquals(new Rectangle(0, 0, 200, 100), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 200, 100)); } @Test public void testGetAOICenteredW2NOverflow() { - assertEquals(new Rectangle(50, 0, 100, 100), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 100, 200)); + assertEquals(new Rectangle(50, 0, 100, 100), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 100, 200)); } @Test public void testGetAOICenteredW2N() { - assertEquals(new Rectangle(83, 25, 33, 50), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 33, 50)); + assertEquals(new Rectangle(83, 25, 33, 50), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 33, 50)); } @Test public void testGetAOICenteredW2NMax() { - assertEquals(new Rectangle(75, 0, 50, 100), new DefaultAreaOfInterest(200, 100).getAOI(-1, -1, 50, 100)); + assertEquals(new Rectangle(75, 0, 50, 100), new DefaultAreaOfInterest(LANDSCAPE_200_100).getAOI(-1, -1, 50, 100)); } @Test public void testGetAOICenteredN2S() { - assertEquals(new Rectangle(33, 83, 33, 33), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 33, 33)); + assertEquals(new Rectangle(33, 83, 33, 33), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 33, 33)); } @Test public void testGetAOICenteredN2SMax() { - assertEquals(new Rectangle(0, 50, 100, 100), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 100, 100)); + assertEquals(new Rectangle(0, 50, 100, 100), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 100, 100)); } @Test public void testGetAOICenteredN2WOverflow() { - assertEquals(new Rectangle(0, 50, 100, 100), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 200, 100)); + assertEquals(new Rectangle(0, 50, 100, 100), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 200, 100)); } @Test public void testGetAOICenteredN2W() { - assertEquals(new Rectangle(40, 95, 20, 10), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 20, 10)); + assertEquals(new Rectangle(40, 95, 20, 10), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 20, 10)); } @Test public void testGetAOICenteredN2WMax() { - assertEquals(new Rectangle(0, 75, 100, 50), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 100, 50)); + assertEquals(new Rectangle(0, 75, 100, 50), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 100, 50)); } @Test public void testGetAOICenteredN2N() { - assertEquals(new Rectangle(45, 90, 10, 20), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 10, 20)); + assertEquals(new Rectangle(45, 90, 10, 20), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 10, 20)); } @Test public void testGetAOICenteredN2NSame() { - assertEquals(new Rectangle(0, 0, 100, 200), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 100, 200)); + assertEquals(new Rectangle(0, 0, 100, 200), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 100, 200)); } @Test public void testGetAOICenteredN2NN() { - assertEquals(new Rectangle(37, 50, 25, 100), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 25, 100)); + assertEquals(new Rectangle(37, 50, 25, 100), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 25, 100)); } @Test public void testGetAOICenteredN2NW() { - assertEquals(new Rectangle(12, 50, 75, 100), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 75, 100)); + assertEquals(new Rectangle(12, 50, 75, 100), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 75, 100)); } @Test public void testGetAOICenteredN2NWMax() { - assertEquals(new Rectangle(0, 37, 100, 125), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 100, 125)); + assertEquals(new Rectangle(0, 37, 100, 125), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 100, 125)); } @Test public void testGetAOICenteredN2NMax() { - assertEquals(new Rectangle(0, 0, 100, 200), new DefaultAreaOfInterest(100, 200).getAOI(-1, -1, 100, 200)); + assertEquals(new Rectangle(0, 0, 100, 200), new DefaultAreaOfInterest(PORTRAIT_100_200).getAOI(-1, -1, 100, 200)); } - /* @Test - public void testGetAOIRuleOfThirdsN2N() { - enableRuleOfThirds(); - assertEquals(new Rectangle(45, 90, 10, 20), new AreaOfInterest(100, 200, false, false).getAOI(-1, -1, 10, 20)); - } - @Test - public void testGetAOIRuleOfThirdsN2NMax() { - enableRuleOfThirds(); - assertEquals(new Rectangle(0, 0, 100, 200), new AreaOfInterest(100, 200, false, false).getAOI(-1, -1, 100, 200)); - } - - @Test - public void testGetAOIUniformRuleOfThirdsN2S() { - enableRuleOfThirds(); - assertEquals(new Rectangle(0, 16, 100, 100), new AreaOfInterest(100, 200, false, true).getAOI(-1, -1, 333, 333)); - } - - @Test - public void testGetAOIUniformRuleOfThirdsN2SNormalized() { - enableRuleOfThirds(); - assertEquals(new Rectangle(0, 16, 100, 100), new AreaOfInterest(100, 200, false, true).getAOI(-1, -1, 100, 100)); - } - - @Test - public void testGetAOIUniformRuleOfThirdsN2W() { - enableRuleOfThirds(); - assertEquals(new Rectangle(0, 41, 100, 50), new AreaOfInterest(100, 200, false, true).getAOI(-1, -1, 200, 100)); - } - - @Test - public void testGetAOIUniformRuleOfThirdsN2WNormalized() { - enableRuleOfThirds(); - assertEquals(new Rectangle(0, 41, 100, 50), new AreaOfInterest(100, 200, false, true).getAOI(-1, -1, 100, 50)); - } - - @Test - public void testGetAOIRuleOfThirdsN2S() { - enableRuleOfThirds(); - assertEquals(new Rectangle(33, 50, 33, 33), new AreaOfInterest(100, 200, false, false).getAOI(-1, -1, 33, 33)); - } - - @Test - public void testGetAOIRuleOfThirdsN2SMax() { - enableRuleOfThirds(); - assertEquals(new Rectangle(0, 16, 100, 100), new AreaOfInterest(100, 200, false, false).getAOI(-1, -1, 100, 100)); - } - - @Test - public void testGetAOIRuleOfThirdsN2WOverflow() { - enableRuleOfThirds(); - assertEquals(new Rectangle(0, 16, 100, 100), new AreaOfInterest(100, 200, false, false).getAOI(-1, -1, 200, 100)); - } - - @Test - public void testGetAOIRuleOfThirdsN2W() { - enableRuleOfThirds(); - assertEquals(new Rectangle(40, 61, 20, 10), new AreaOfInterest(100, 200, false, false).getAOI(-1, -1, 20, 10)); - } - - @Test - public void testGetAOIRuleOfThirdsN2WMax() { - enableRuleOfThirds(); - assertEquals(new Rectangle(0, 41, 100, 50), new AreaOfInterest(100, 200, false, false).getAOI(-1, -1, 100, 50)); - } - - private void enableRuleOfThirds() { - System.setProperty("rule-of-thirds", "true"); - }*/ }