Take small advantage of "TRY_HARDER" in QR code decoder
[zxing.git] / core / src / com / google / zxing / qrcode / detector / FinderPatternFinder.java
index 91f8473..4bc33d4 100755 (executable)
@@ -16,6 +16,7 @@
 \r
 package com.google.zxing.qrcode.detector;\r
 \r
+import com.google.zxing.DecodeHintType;\r
 import com.google.zxing.MonochromeBitmapSource;\r
 import com.google.zxing.ReaderException;\r
 import com.google.zxing.ResultPoint;\r
@@ -23,6 +24,7 @@ import com.google.zxing.common.BitArray;
 import com.google.zxing.common.Collections;\r
 import com.google.zxing.common.Comparator;\r
 \r
+import java.util.Hashtable;\r
 import java.util.Vector;\r
 \r
 /**\r
@@ -52,7 +54,8 @@ final class FinderPatternFinder {
     this.possibleCenters = new Vector();\r
   }\r
 \r
-  FinderPatternInfo find() throws ReaderException {\r
+  FinderPatternInfo find(Hashtable hints) throws ReaderException {\r
+    boolean tryHarder = hints != null && hints.containsKey(DecodeHintType.TRY_HARDER);\r
     int maxI = image.getHeight();\r
     int maxJ = image.getWidth();\r
     // We are looking for black/white/black/white/black modules in\r
@@ -61,7 +64,7 @@ final class FinderPatternFinder {
     boolean done = false;\r
     // We can afford to examine every few lines until we've started finding\r
     // the patterns\r
-    int iSkip = BIG_SKIP;\r
+    int iSkip = tryHarder ? 1 : BIG_SKIP;\r
     for (int i = iSkip - 1; i < maxI && !done; i += iSkip) {\r
       // Get a row of black/white values\r
       BitArray blackRow = image.getBlackRow(i, null, 0, maxJ);\r