Guard against exception case discovered in new DM code, clean up its formatting a bit

git-svn-id: https://zxing.googlecode.com/svn/trunk@1620 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen 2010-10-10 21:26:44 +00:00
parent 2cb813b088
commit 345a55c6c7
2 changed files with 25 additions and 13 deletions

View file

@ -46,6 +46,9 @@ public final class DefaultGridSampler extends GridSampler {
int dimensionX, int dimensionX,
int dimensionY, int dimensionY,
PerspectiveTransform transform) throws NotFoundException { PerspectiveTransform transform) throws NotFoundException {
if (dimensionX <= 0 || dimensionY <= 0) {
throw NotFoundException.getNotFoundInstance();
}
BitMatrix bits = new BitMatrix(dimensionX, dimensionY); BitMatrix bits = new BitMatrix(dimensionX, dimensionY);
float[] points = new float[dimensionX << 1]; float[] points = new float[dimensionX << 1];
for (int y = 0; y < dimensionY; y++) { for (int y = 0; y < dimensionY; y++) {

View file

@ -158,13 +158,14 @@ public final class Detector {
} }
dimensionRight += 2; dimensionRight += 2;
BitMatrix bits = null; BitMatrix bits;
ResultPoint correctedTopRight = null; ResultPoint correctedTopRight;
if (dimensionTop >= dimensionRight * 2 || dimensionRight >= dimensionTop * 2){ if (dimensionTop >= dimensionRight * 2 || dimensionRight >= dimensionTop * 2){
//The matrix is rectangular //The matrix is rectangular
correctedTopRight = correctTopRightRectangular(bottomLeft, bottomRight, topLeft, topRight, dimensionTop, dimensionRight); correctedTopRight =
correctTopRightRectangular(bottomLeft, bottomRight, topLeft, topRight, dimensionTop, dimensionRight);
if (correctedTopRight == null){ if (correctedTopRight == null){
correctedTopRight = topRight; correctedTopRight = topRight;
} }
@ -178,11 +179,11 @@ public final class Detector {
} }
if ((dimensionRight & 0x01) == 1) { if ((dimensionRight & 0x01) == 1) {
// it can't be odd, so, round... up? // it can't be odd, so, round... up?
dimensionRight++; dimensionRight++;
} }
bits = sampleGrid(image, topLeft, bottomLeft, bottomRight, correctedTopRight, dimensionTop, dimensionRight); bits = sampleGrid(image, topLeft, bottomLeft, bottomRight, correctedTopRight, dimensionTop, dimensionRight);
} else { } else {
//The matrix is square //The matrix is square
@ -202,7 +203,13 @@ public final class Detector {
dimensionCorrected++; dimensionCorrected++;
} }
bits = sampleGrid(image, topLeft, bottomLeft, bottomRight, correctedTopRight, dimensionCorrected, dimensionCorrected); bits = sampleGrid(image,
topLeft,
bottomLeft,
bottomRight,
correctedTopRight,
dimensionCorrected,
dimensionCorrected);
} }
@ -210,7 +217,8 @@ public final class Detector {
} }
/** /**
* Calculates the position of the white top right module using the output of the rectangle detector for a rectangular matrix * Calculates the position of the white top right module using the output of the rectangle detector
* for a rectangular matrix
*/ */
private ResultPoint correctTopRightRectangular(ResultPoint bottomLeft, private ResultPoint correctTopRightRectangular(ResultPoint bottomLeft,
ResultPoint bottomRight, ResultPoint topLeft, ResultPoint topRight, ResultPoint bottomRight, ResultPoint topLeft, ResultPoint topRight,
@ -249,10 +257,11 @@ public final class Detector {
} }
return c2; return c2;
} }
/** /**
* Calculates the position of the white top right module using the output of the rectangle detector for a square matrix * Calculates the position of the white top right module using the output of the rectangle detector
* for a square matrix
*/ */
private ResultPoint correctTopRight(ResultPoint bottomLeft, private ResultPoint correctTopRight(ResultPoint bottomLeft,
ResultPoint bottomRight, ResultPoint bottomRight,