public class FinderPatternFinder extends Object
This class attempts to find finder patterns in a QR Code. Finder patterns are the square markers at three corners of a QR Code.
This class is thread-safe but not reentrant. Each thread must allocate its own object.
| Modifier and Type | Field and Description |
|---|---|
protected static int |
MAX_MODULES
|
protected static int |
MIN_SKIP
|
| Constructor and Description |
|---|
FinderPatternFinder(BitMatrix
Creates a finder that will search the image for three finder patterns.
|
FinderPatternFinder(BitMatrix
|
| Modifier and Type | Method and Description |
|---|---|
protected static boolean |
foundPatternCross(int[] stateCount)
|
protected BitMatrix |
getImage()
|
protected List |
getPossibleCenters()
|
protected boolean |
handlePossibleCenter(int[] stateCount, int i, int j, boolean pureBarcode)
This is called when a horizontal scan finds a possible alignment pattern.
|
protected static final int MIN_SKIP
protected static final int MAX_MODULES
public FinderPatternFinder(BitMatriximage)
Creates a finder that will search the image for three finder patterns.
image - image to search
public FinderPatternFinder(BitMatriximage, ResultPointCallback resultPointCallback)
protected final BitMatrixgetImage()
protected final List<FinderPattern > getPossibleCenters()
protected static boolean foundPatternCross(int[] stateCount)
stateCount - count of black/white/black/white/black pixels just read
protected final boolean handlePossibleCenter(int[] stateCount,
int i,
int j,
boolean pureBarcode)
This is called when a horizontal scan finds a possible alignment pattern. It will cross check with a vertical scan, and if successful, will, ah, cross-cross-check with another horizontal scan. This is needed primarily to locate the real horizontal center of the pattern in cases of extreme skew. And then we cross-cross-cross check with another diagonal scan.
If that succeeds the finder pattern location is added to a list that tracks the number of times each location has been nearly-matched as a finder pattern. Each additional find is more evidence that the location is in fact a finder pattern center
stateCount - reading state module counts from horizontal scan
i - row where finder pattern may be found
j - end of possible finder pattern in row
pureBarcode - true if in "pure barcode" mode