OneDReader (ZXing 3.5.2 API)
Description: declaration: package: com.google.zxing.oned, class: OneDReader

Package com.google.zxing.oned

# Class OneDReader

java.lang.Object
com.google.zxing.oned.OneDReader

All Implemented Interfaces:
  `Reader`

Direct Known Subclasses:
  `AbstractRSSReader`, `CodaBarReader`, `Code128Reader`, `Code39Reader`, `Code93Reader`, `ITFReader`, `MultiFormatOneDReader`, `MultiFormatUPCEANReader`, `UPCEANReader`

public abstract class OneDReader extends Object implements Reader
Encapsulates functionality and implementation that is common to all families of one-dimensional barcodes.

Author:
  dswitkin@google.com (Daniel Switkin), Sean Owen

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `OneDReader()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Result`
  `decode(BinaryBitmap image)`
  Locates and decodes a barcode in some format within an image.
  `Result`
  `decode(BinaryBitmap image, Map<DecodeHintType,?> hints)`
  Locates and decodes a barcode in some format within an image.
  `abstract Result`
  `decodeRow(int rowNumber, BitArray row, Map<DecodeHintType,?> hints)`
  Attempts to decode a one-dimensional barcode format given a single row of an image.
  `protected static float`
  `patternMatchVariance(int[] counters, int[] pattern, float maxIndividualVariance)`
  Determines how closely a set of observed counts of runs of black/white values matches a given target pattern.
  `protected static void`
  `recordPattern(BitArray row, int start, int[] counters)`
  Records the size of successive runs of white and black pixels in a row, starting at a given point.
  `protected static void`
  `recordPatternInReverse(BitArray row, int start, int[] counters)`
  `void`
  `reset()`
  Resets any internal state the implementation has after a decode, to prepare it for reuse.

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

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

- ## Constructor Details

  - ### OneDReader

    public OneDReader()

- ## Method Details

  - ### decode

    public Result decode(BinaryBitmap image) throws NotFoundException, FormatException
    Description copied from interface: `Reader`
    Locates and decodes a barcode in some format within an image.
    Specified by:
      `decode` in interface `Reader`
    Parameters:
      `image` - image of barcode to decode
    Returns:
      String which the barcode encodes
    Throws:
      `NotFoundException` - if no potential barcode is found
      `FormatException` - if a potential barcode is found but format is invalid

  - ### decode

    public Result decode(BinaryBitmap image, Map<DecodeHintType,?> hints) throws NotFoundException, FormatException
    Description copied from interface: `Reader`
    Locates and decodes a barcode in some format within an image. This method also accepts hints, each possibly associated to some data, which may help the implementation decode.
    Specified by:
      `decode` in interface `Reader`
    Parameters:
      `image` - image of barcode to decode
      `hints` - passed as a `Map` from `DecodeHintType` to arbitrary data. The meaning of the data depends upon the hint type. The implementation may or may not do anything with these hints.
    Returns:
      String which the barcode encodes
    Throws:
      `NotFoundException` - if no potential barcode is found
      `FormatException` - if a potential barcode is found but format is invalid

  - ### reset

    public void reset()
    Description copied from interface: `Reader`
    Resets any internal state the implementation has after a decode, to prepare it for reuse.
    Specified by:
      `reset` in interface `Reader`

  - ### recordPattern

    protected static void recordPattern(BitArray row, int start, int[] counters) throws NotFoundException
    Records the size of successive runs of white and black pixels in a row, starting at a given point. The values are recorded in the given array, and the number of runs recorded is equal to the size of the array. If the row starts on a white pixel at the given start point, then the first count recorded is the run of white pixels starting from that point; likewise it is the count of a run of black pixels if the row begin on a black pixels at that point.
    Parameters:
      `row` - row to count from
      `start` - offset into row to start at
      `counters` - array into which to record counts
    Throws:
      `NotFoundException` - if counters cannot be filled entirely from row before running out of pixels

  - ### recordPatternInReverse

    protected static void recordPatternInReverse(BitArray row, int start, int[] counters) throws NotFoundException
    Throws:
      `NotFoundException`

  - ### patternMatchVariance

    protected static float patternMatchVariance(int[] counters, int[] pattern, float maxIndividualVariance)
    Determines how closely a set of observed counts of runs of black/white values matches a given target pattern. This is reported as the ratio of the total variance from the expected pattern proportions across all pattern elements, to the length of the pattern.
    Parameters:
      `counters` - observed counters
      `pattern` - expected pattern
      `maxIndividualVariance` - The most any counter can differ before we give up
    Returns:
      ratio of total variance between counters and pattern compared to total pattern size

  - ### decodeRow

    public abstract Result decodeRow(int rowNumber, BitArray row, Map<DecodeHintType,?> hints) throws NotFoundException, ChecksumException, FormatException

    Attempts to decode a one-dimensional barcode format given a single row of an image.

    Parameters:
      `rowNumber` - row number from top of the row
      `row` - the black/white pixel data of the row
      `hints` - decode hints
    Returns:
      `Result` containing encoded string and start/end of barcode
    Throws:
      `NotFoundException` - if no potential barcode is found
      `ChecksumException` - if a potential barcode is found but does not pass its checksum
      `FormatException` - if a potential barcode is found but format is invalid