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
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 -
Method Summary
Modifier and TypeMethodDescriptiondecode
(BinaryBitmap image) Locates and decodes a barcode in some format within an image.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.
-
Constructor Details
-
OneDReader
public OneDReader()
-
-
Method Details
-
decode
Description copied from interface:Reader
Locates and decodes a barcode in some format within an image.- Specified by:
decode
in interfaceReader
- Parameters:
image
- image of barcode to decode- Returns:
- String which the barcode encodes
- Throws:
NotFoundException
- if no potential barcode is foundFormatException
- if a potential barcode is found but format is invalid
-
decode
public Result decode(BinaryBitmap image, Map<DecodeHintType, ?> hints) throws NotFoundException, FormatExceptionDescription 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 interfaceReader
- Parameters:
image
- image of barcode to decodehints
- passed as aMap
fromDecodeHintType
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 foundFormatException
- 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. -
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 fromstart
- offset into row to start atcounters
- 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 counterspattern
- expected patternmaxIndividualVariance
- 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, FormatExceptionAttempts to decode a one-dimensional barcode format given a single row of an image.
- Parameters:
rowNumber
- row number from top of the rowrow
- the black/white pixel data of the rowhints
- decode hints- Returns:
Result
containing encoded string and start/end of barcode- Throws:
NotFoundException
- if no potential barcode is foundChecksumException
- if a potential barcode is found but does not pass its checksumFormatException
- if a potential barcode is found but format is invalid
-