Table of Contents

Namespace ZXing.Common

Classes

BitArray

A simple, fast array of bits, represented compactly by an array of ints internally.

BitMatrix

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.

BitSource

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.

       <p>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.</p>
CharacterSetECI

Encapsulates a Character Set ECI, according to "Extended Channel Interpretations" 5.3.1.1 of ISO 18004.

DecoderResult

Encapsulates the result of decoding a matrix of bits. This typically applies to 2D barcode formats. For now it contains the raw bytes obtained, as well as a String interpretation of those bytes, if applicable. Sean Owen

DecodingOptions

Defines an container for encoder options

DefaultGridSampler
DetectorResult

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.

ECI

Superclass of classes encapsulating types ECIs, according to "Extended Channel Interpretations" 5.3 of ISO 18004.

ECIEncoderSet

Set of CharsetEncoders for a given input string Invariants:

  • The list contains only encoders from CharacterSetECI(list is shorter then the list of encoders available on the platform for which ECI values are defined).
  • The list contains encoders at least one encoder for every character in the input.
  • The first encoder in the list is always the ISO-8859-1 encoder even of no character in the input can be encoded by it.
  • If the input contains a character that is not in ISO-8859-1 then the last two entries in the list will be the UTF-8 encoder and the UTF-16BE encoder.

@author Alex Geller

ECIStringBuilder

Class that converts a sequence of ECIs and bytes into a string

@author Alex Geller

EncodingOptions

Defines an container for encoder options

GlobalHistogramBinarizer

This Binarizer implementation uses the old ZXing global histogram approach. It is suitable for low-end mobile devices which don't have enough CPU or memory to use a local thresholding algorithm. However, because it picks a global black point, it cannot handle difficult shadows and gradients.

       Faster mobile devices and all desktop applications should probably use HybridBinarizer instead.

       <author>dswitkin@google.com (Daniel Switkin)</author>
       <author>Sean Owen</author>
GridSampler

Implementations of this class can, given locations of finder patterns for a QR code in an image, sample the right points in the image to reconstruct the QR code, accounting for perspective distortion. It is abstracted since it is relatively expensive and should be allowed to take advantage of platform-specific optimized implementations, like Sun's Java Advanced Imaging library, but which may not be available in other environments such as J2ME, and vice versa.

       The implementation used can be controlled by calling {@link #setGridSampler(GridSampler)}
       with an instance of a class which implements this interface.
HybridBinarizer

This class implements a local thresholding algorithm, which while slower than the GlobalHistogramBinarizer, is fairly efficient for what it does. It is designed for high frequency images of barcodes with black data on white backgrounds. For this application, it does a much better job than a global blackpoint with severe shadows and gradients. However it tends to produce artifacts on lower frequency images and is therefore not a good general purpose binarizer for uses outside ZXing.

       This class extends GlobalHistogramBinarizer, using the older histogram approach for 1D readers,
       and the newer local approach for 2D readers. 1D decoding using a per-row histogram is already
       inherently local, and only fails for horizontal gradients. We can revisit that problem later,
       but for now it was not a win to use local blocks for 1D.

       This Binarizer is the default for the unit tests and the recommended class for library users.
       <author>dswitkin@google.com (Daniel Switkin)</author>
MinimalECIInput

Class that converts a character string into a sequence of ECIs and bytes The implementation uses the Dijkstra algorithm to produce minimal encodings @author Alex Geller

PerspectiveTransform

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.

StringUtils

Common string-related functions.

Interfaces

ECIInput

Interface to navigate a sequence of ECIs and bytes. @author Alex Geller