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 image)
Creates a finder that will search the image for three finder patterns.
|
FinderPatternFinder(BitMatrix image,
ResultPointCallback resultPointCallback) |
Modifier and Type | Method and Description |
---|---|
protected static boolean |
foundPatternCross(int[] stateCount) |
protected BitMatrix |
getImage() |
protected List<FinderPattern> |
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(BitMatrix image)
Creates a finder that will search the image for three finder patterns.
image
- image to searchpublic FinderPatternFinder(BitMatrix image, ResultPointCallback resultPointCallback)
protected final BitMatrix getImage()
protected final List<FinderPattern> getPossibleCenters()
protected static boolean foundPatternCross(int[] stateCount)
stateCount
- count of black/white/black/white/black pixels just readprotected 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 scani
- row where finder pattern may be foundj
- end of possible finder pattern in rowpureBarcode
- true if in "pure barcode" modeCopyright © 2007–2014. All rights reserved.