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