FinderPatternFinder (ZXing 3.5.2 API)
Description: declaration: package: com.google.zxing.qrcode.detector, class: FinderPatternFinder

Package com.google.zxing.qrcode.detector

# Class FinderPatternFinder

java.lang.Object
com.google.zxing.qrcode.detector.FinderPatternFinder

Direct Known Subclasses:
  `MultiFinderPatternFinder`

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.

Author:
  Sean Owen

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static final int`
  `MAX_MODULES`
  `protected static final int`
  `MIN_SKIP`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FinderPatternFinder(BitMatrix image)`
  Creates a finder that will search the image for three finder patterns.
  `FinderPatternFinder(BitMatrix image, ResultPointCallback resultPointCallback)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected final void`
  `clearCounts(int[] counts)`
  Deprecated.
  `protected static void`
  `doClearCounts(int[] counts)`
  `protected static void`
  `doShiftCounts2(int[] stateCount)`
  `protected static boolean`
  `foundPatternCross(int[] stateCount)`
  `protected static boolean`
  `foundPatternDiagonal(int[] stateCount)`
  `protected final BitMatrix`
  `getImage()`
  `protected final List<FinderPattern>`
  `getPossibleCenters()`
  `protected final boolean`
  `handlePossibleCenter(int[] stateCount, int i, int j)`
  This is called when a horizontal scan finds a possible alignment pattern.
  `protected final boolean`
  `handlePossibleCenter(int[] stateCount, int i, int j, boolean pureBarcode)`
  Deprecated.
  only exists for backwards compatibility
  `protected final void`
  `shiftCounts2(int[] stateCount)`
  Deprecated.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### MIN_SKIP

    protected static final int MIN_SKIP
    See Also:
      - Constant Field Values

  - ### MAX_MODULES

    protected static final int MAX_MODULES
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### FinderPatternFinder

    public FinderPatternFinder(BitMatrix image)

    Creates a finder that will search the image for three finder patterns.

    Parameters:
      `image` - image to search

  - ### FinderPatternFinder

    public FinderPatternFinder(BitMatrix image, ResultPointCallback resultPointCallback)

- ## Method Details

  - ### getImage

    protected final BitMatrix getImage()

  - ### getPossibleCenters

    protected final List<FinderPattern> getPossibleCenters()

  - ### foundPatternCross

    protected static boolean foundPatternCross(int[] stateCount)
    Parameters:
      `stateCount` - count of black/white/black/white/black pixels just read
    Returns:
      true iff the proportions of the counts is close enough to the 1/1/3/1/1 ratios used by finder patterns to be considered a match

  - ### foundPatternDiagonal

    protected static boolean foundPatternDiagonal(int[] stateCount)
    Parameters:
      `stateCount` - count of black/white/black/white/black pixels just read
    Returns:
      true iff the proportions of the counts is close enough to the 1/1/3/1/1 ratios used by finder patterns to be considered a match

  - ### clearCounts

    @Deprecated protected final void clearCounts(int[] counts)
    Deprecated.

  - ### shiftCounts2

    @Deprecated protected final void shiftCounts2(int[] stateCount)
    Deprecated.

  - ### doClearCounts

    protected static void doClearCounts(int[] counts)

  - ### doShiftCounts2

    protected static void doShiftCounts2(int[] stateCount)

  - ### handlePossibleCenter

    @Deprecated protected final boolean handlePossibleCenter(int[] stateCount, int i, int j, boolean pureBarcode)
    Deprecated.
    only exists for backwards compatibility
    Parameters:
      `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` - ignored
    Returns:
      true if a finder pattern candidate was found this time
    See Also:
      - `handlePossibleCenter(int[], int, int)`

  - ### handlePossibleCenter

    protected final boolean handlePossibleCenter(int[] stateCount, int i, int j)

    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

    Parameters:
      `stateCount` - reading state module counts from horizontal scan
      `i` - row where finder pattern may be found
      `j` - end of possible finder pattern in row
    Returns:
      true if a finder pattern candidate was found this time