com.google.zxing.qrcode.detector

## Class FinderPatternFinder

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

-     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 and Description
    --- | ---
    `protected static int` | `MAX_MODULES`
    `protected static int` | `MIN_SKIP`

  - ### Constructor Summary

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

  - ### Method Summary

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

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

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

- - ### Field Detail

    - #### 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 Detail

    - #### 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 Detail

    - #### 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

          protected final void clearCounts(int[] counts)

    - #### shiftCounts2

          protected final void shiftCounts2(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

Copyright © 2007–2018. All rights reserved.