diff --git a/core/src/com/google/zxing/qrcode/detector/FinderPatternFinder.java b/core/src/com/google/zxing/qrcode/detector/FinderPatternFinder.java index 9d3855809..902c4bbbc 100755 --- a/core/src/com/google/zxing/qrcode/detector/FinderPatternFinder.java +++ b/core/src/com/google/zxing/qrcode/detector/FinderPatternFinder.java @@ -480,34 +480,25 @@ public class FinderPatternFinder { * @throws ReaderException if 3 such finder patterns do not exist */ private FinderPattern[] selectBestPatterns() throws ReaderException { - Collections.insertionSort(possibleCenters, new CenterComparator()); - int size = 0; - int max = possibleCenters.size(); - while (size < max) { - if (((FinderPattern) possibleCenters.elementAt(size)).getCount() < CENTER_QUORUM) { - break; - } - size++; - } - - if (size < 3) { + if (possibleCenters.size() < 3) { // Couldn't find enough finder patterns throw ReaderException.getInstance(); } + Collections.insertionSort(possibleCenters, new CenterComparator()); - if (size > 3) { + if (possibleCenters.size() > 3) { // Throw away all but those first size candidate points we found. - possibleCenters.setSize(size); - // We need to pick the best three. Find the most - // popular ones whose module size is nearest the average - float averageModuleSize = 0.0f; - for (int i = 0; i < size; i++) { - averageModuleSize += ((FinderPattern) possibleCenters.elementAt(i)).getEstimatedModuleSize(); - } - averageModuleSize /= (float) size; - // We don't have java.util.Collections in J2ME - Collections.insertionSort(possibleCenters, new ClosestToAverageComparator(averageModuleSize)); + possibleCenters.setSize(3); } + // We need to pick the best three. Find the most + // popular ones whose module size is nearest the average + float averageModuleSize = 0.0f; + for (int i = 0; i < 3; i++) { + averageModuleSize += ((FinderPattern) possibleCenters.elementAt(i)).getEstimatedModuleSize(); + } + averageModuleSize /= 3.0f; + // We don't have java.util.Collections in J2ME + Collections.insertionSort(possibleCenters, new ClosestToAverageComparator(averageModuleSize)); return new FinderPattern[]{ (FinderPattern) possibleCenters.elementAt(0), diff --git a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox1TestCase.java b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox1TestCase.java index f6b83eaa7..7d45588d4 100644 --- a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox1TestCase.java +++ b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox1TestCase.java @@ -29,8 +29,8 @@ public final class QRCodeBlackBox1TestCase extends AbstractBlackBoxTestCase { super("test/data/blackbox/qrcode-1", new MultiFormatReader(), BarcodeFormat.QR_CODE); addTest(19, 19, 0.0f); addTest(15, 15, 90.0f); - addTest(16, 16, 180.0f); - addTest(13, 14, 270.0f); + addTest(17, 17, 180.0f); + addTest(14, 14, 270.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox2TestCase.java b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox2TestCase.java index 085cbf309..2f88b46cb 100644 --- a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox2TestCase.java +++ b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox2TestCase.java @@ -27,10 +27,10 @@ public final class QRCodeBlackBox2TestCase extends AbstractBlackBoxTestCase { public QRCodeBlackBox2TestCase() { super("test/data/blackbox/qrcode-2", new MultiFormatReader(), BarcodeFormat.QR_CODE); - addTest(24, 24, 0.0f); - addTest(21, 21, 90.0f); - addTest(22, 22, 180.0f); - addTest(17, 18, 270.0f); + addTest(23, 23, 0.0f); + addTest(20, 20, 90.0f); + addTest(21, 21, 180.0f); + addTest(19, 19, 270.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java index 9440d4054..6888c9453 100644 --- a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java +++ b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java @@ -29,8 +29,8 @@ public final class QRCodeBlackBox3TestCase extends AbstractBlackBoxTestCase { super("test/data/blackbox/qrcode-3", new MultiFormatReader(), BarcodeFormat.QR_CODE); addTest(33, 33, 0.0f); addTest(33, 33, 90.0f); - addTest(32, 32, 180.0f); - addTest(34, 34, 270.0f); + addTest(33, 33, 180.0f); + addTest(35, 35, 270.0f); } } \ No newline at end of file