+
|
+
<MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+
+
|
+
<MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+
+
|
+
<MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+
+
|
+
<MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+
+ public MyClass()
+ {
+ this.submitCommand = new DelegateCommand<int?>(this.Submit, this.CanSubmit);
+ }
+
+ private bool CanSubmit(int? customerId)
+ {
+ return (customerId.HasValue && customers.Contains(customerId.Value));
+ }
+
+
+ public MyClass()
+ {
+ this.submitCommand = new DelegateCommand<int?>(this.Submit, this.CanSubmit);
+ }
+
+ private bool CanSubmit(int? customerId)
+ {
+ return (customerId.HasValue && customers.Contains(customerId.Value));
+ }
+
+
+ public MyClass()
+ {
+ this.submitCommand = new DelegateCommand<int?>(this.Submit, this.CanSubmit);
+ }
+
+ private bool CanSubmit(int? customerId)
+ {
+ return (customerId.HasValue && customers.Contains(customerId.Value));
+ }
+
+
+ public MyClass()
+ {
+ this.submitCommand = new DelegateCommand<int?>(this.Submit, this.CanSubmit);
+ }
+
+ private bool CanSubmit(int? customerId)
+ {
+ return (customerId.HasValue && customers.Contains(customerId.Value));
+ }
+
+
+ public MyClass()
+ {
+ this.submitCommand = new DelegateCommand<int?>(this.Submit, this.CanSubmit);
+ }
+
+ private bool CanSubmit(int? customerId)
+ {
+ return (customerId.HasValue && customers.Contains(customerId.Value));
+ }
+
+
+ public MyClass()
+ {
+ this.submitCommand = new DelegateCommand<int?>(this.Submit, this.CanSubmit);
+ }
+
+ private bool CanSubmit(int? customerId)
+ {
+ return (customerId.HasValue && customers.Contains(customerId.Value));
+ }
+
+
+ public MyClass()
+ {
+ this.submitCommand = new DelegateCommand<int?>(this.Submit, this.CanSubmit);
+ }
+
+ private bool CanSubmit(int? customerId)
+ {
+ return (customerId.HasValue && customers.Contains(customerId.Value));
+ }
+
+
+ public MyClass()
+ {
+ this.submitCommand = new DelegateCommand<int?>(this.Submit, this.CanSubmit);
+ }
+
+ private bool CanSubmit(int? customerId)
+ {
+ return (customerId.HasValue && customers.Contains(customerId.Value));
+ }
+
+ See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+int luminance = array[y * width + x] & 0xff
+ See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +Gets the requested bit, where true means black.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+int luminance = array[y * width + x] & 0xff
+ This class contains the methods for decoding the PDF417 codewords.
+ +Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+A field based on powers of a generator integer, modulo some modulus.
+Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Decodes Code 128 barcodes.
+ +A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +Gets the requested bit, where true means black.
+ +Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Decodes Codabar barcodes.
+ +Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-8 format.
+Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+int luminance = array[y * width + x] & 0xff
+ This class contains the methods for decoding the PDF417 codewords.
+ +Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+A field based on powers of a generator integer, modulo some modulus.
+Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Decodes Code 128 barcodes.
+ +A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +Gets the requested bit, where true means black.
+ +Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Decodes Codabar barcodes.
+ +Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-8 format.
+Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+int luminance = array[y * width + x] & 0xff
+ null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+int luminance = array[y * width + x] & 0xff
+ null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+int luminance = array[y * width + x] & 0xff
+ null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+int luminance = array[y * width + x] & 0xff
+ null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+int luminance = array[y * width + x] & 0xff
+ This class contains the methods for decoding the PDF417 codewords.
+ +Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+A field based on powers of a generator integer, modulo some modulus.
+Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Decodes Code 128 barcodes.
+ +A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Decodes Codabar barcodes.
+ +Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +Gets the requested bit, where true means black.
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-8 format.
+Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+int luminance = array[y * width + x] & 0xff
+ This class contains the methods for decoding the PDF417 codewords.
+ +Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+A field based on powers of a generator integer, modulo some modulus.
+Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Decodes Code 128 barcodes.
+ +A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Decodes Codabar barcodes.
+ +Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +Gets the requested bit, where true means black.
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-8 format.
+Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+int luminance = array[y * width + x] & 0xff
+ This class contains the methods for decoding the PDF417 codewords.
+ +Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+A field based on powers of a generator integer, modulo some modulus.
+Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Decodes Code 128 barcodes.
+ +A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Decodes Codabar barcodes.
+ +Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +Gets the requested bit, where true means black.
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-8 format.
+Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+int luminance = array[y * width + x] & 0xff
+ See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +Gets the requested bit, where true means black.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+See + + DoCoMo's documentation about the result types represented by subclasses of this class.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+ +Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.
+ +Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.
+Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.
+ +This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+ +Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.
+This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.
+Parses an "smtp:" URI result, whose format is not standardized but appears to be like:
+ smtp[:subject[:body]]}
.
See http://code.google.com/p/zxing/issues/detail?id=536
+Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.
+Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.
+The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.
+Gets the requested bit, where true means black.
+ +Flips the given bit.
+Sets a square region of the bit matrix to true.
+ +This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.
+ +This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.
+ +Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.
+A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.
+ +Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.
+Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.
+The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.
+The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
+
These 16 parameters define the transformation needed to sample the image.
+Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.
+ +This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.
+ +For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.
+ +This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.
+Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +
+Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.
+Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+Implements Reed-Solomon decoding, as the name implies.
+ +The algorithm will not be explained here, but the following references were helpful + in creating this implementation:
+ +Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.
+ +Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.
+Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.
+ +See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ + OriginalReads the bits in the
Reads a bit of the mapping matrix accounting for boundary wrapping.
+ + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the standard Utah-shaped pattern.
+ +See ISO 16022:2006, 5.8.1 Figure 6
+ + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 1.
+ +See ISO 16022:2006, Figure F.3
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 2.
+ +See ISO 16022:2006, Figure F.4
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 3.
+ +See ISO 16022:2006, Figure F.5
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Reads the 8 bits of the special corner condition 4.
+ +See ISO 16022:2006, Figure F.6
+ + Number of rows in the mapping matrix + Number of columns in the mapping matrix +Extracts the data region from a
Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code +Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.
+ +See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ +The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.
+ +Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+ + booleans representing white/black Data Matrix Code modules +Decodes a Data Matrix Code represented as a
Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+ + data and error correction codewords + number of codewords that are data bytes +Deduces version information from Data Matrix dimensions.
+ + Number of rows in modules + Number of columns in modules +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.
+Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.
+Detects a Data Matrix Code in an image.
+int luminance = array[y * width + x] & 0xff
+ MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.
+ +The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.
+ +Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.
+A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.
+That is, instead of passing a {@link Reader} a caller might pass
+ new ByQuadrantReader(reader)
.
Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+ +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.
+ +In contrast to
Use the TRY_HARDER hint to ask for a more thorough detection.
+ +Creates a finder that will search the image for three finder patterns.
+ + image to search +Decodes Codabar barcodes.
+ +Decodes Code 128 barcodes.
+ +Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Decodes Code 93 barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the EAN-13 format.
+ +Implements decoding of the EAN-8 format.
+Implements decoding of the ITF format, or Interleaved Two of Five.
+ +This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.
+ +The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.
+ +http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.
+ +Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Implements decoding of the UPC-A format.
+Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Attempts to decode a one-dimensional barcode format given a single row of + an image.
+Like
Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.
+Implements decoding of the UPC-E format.
+Thisis a great reference for + UPC-E information.
+This class contains the methods for decoding the PDF417 codewords.
+ +PDF417 error correction implementation.
+This example + is quite useful in understanding the algorithm.
+A field based on powers of a generator integer, modulo some modulus.
+Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.
+ +Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
+Reads format information from one of its two locations within the QR Code.
+ +Reads version information from one of its two locations within the QR Code.
+ +Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.
+ +Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.
+ +When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.
+ +Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.
+ +Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.
+ +Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.
+QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.
+ +See ISO 18004:2006, 6.4.3 - 6.4.7
+The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.
+Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.
+Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.
+Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.
+See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.
+Encapsulates a QR Code's format information, including the data mask used and + error correction level.
+ +null
+ if doesn't seem to match any known pattern
+ See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.
+Deduces version information purely from QR Code dimensions.
+ +Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.
+Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.
+Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.
+ +Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.
+ +At the moment this only looks for the bottom-right alignment pattern.
+ +This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.
+ +This class is thread-safe but not reentrant. Each thread must allocate its own object.
+ +Creates a finder that will look in a portion of the whole image.
+ +This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.
+ +After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.
+This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.
+ +Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.
+Detects a QR Code in an image.
+Detects a QR Code in an image.
+Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.
+Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.
+Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.
+This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.
+ +This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.
+Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.
+Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.
+Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.
+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.
+Creates a finder that will search the image for three finder patterns.
+After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.
+Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.
+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 +Orders by {@link FinderPattern#getCount()}, descending.
Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.
+null
null
null
. This contains optional metadata about what was detected about the barcode,
+ like orientation.
+ 2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.
+This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.
+