com.google.zxing
Interface MonochromeBitmapSource

All Known Implementing Classes:
AWTImageMonochromeBitmapSource, BaseMonochromeBitmapSource, BufferedImageMonochromeBitmapSource, CroppedMonochromeBitmapSource, LCDUIImageMonochromeBitmapSource, YUVMonochromeBitmapSource

public interface MonochromeBitmapSource

Encapsulates a generic black-and-white bitmap -- a collection of pixels in two dimensions. This unifies many possible representations, like AWT's BufferedImage.

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

Method Summary
 void estimateBlackPoint(BlackPointEstimationMethod method, int argument)
          Estimates black point according to the given method, which is optionally parameterized by a single int argument.
 BitArray getBlackColumn(int x, BitArray column, int startY, int getHeight)
          Entirely analogous to getBlackRow(int, BitArray, int, int) but gets a column.
 BitArray getBlackDiagonal(int x, int y, int dx, int dy, BitArray diagonal, int size)
           
 BitArray getBlackRow(int y, BitArray row, int startX, int getWidth)
          Returns an entire row of black/white pixels as an array of bits, where "true" means "black".
 int getHeight()
           
 BlackPointEstimationMethod getLastEstimationMethod()
           
 int getLuminance(int x, int y)
          Retrieves the luminance at the pixel x,y in the bitmap.
 int[] getLuminanceColumn(int x, int[] column)
          The same as getLuminanceRow(), but for columns.
 int[] getLuminanceRow(int y, int[] row)
          This is the main mechanism for retrieving luminance data.
 int getWidth()
           
 boolean isBlack(int x, int y)
           
 boolean isRotateSupported()
           
 MonochromeBitmapSource rotateCounterClockwise()
          Optional operation which returns an implementation based on the same underlying image, but which behaves as if the underlying image had been rotated 90 degrees counterclockwise.
 

Method Detail

isBlack

boolean isBlack(int x,
                int y)
Parameters:
x - horizontal offset, from left, of the pixel
y - vertical offset, from top, of the pixel
Returns:
true iff the pixel at (x,y) is black

getBlackRow

BitArray getBlackRow(int y,
                     BitArray row,
                     int startX,
                     int getWidth)

Returns an entire row of black/white pixels as an array of bits, where "true" means "black". This is a sort of "bulk get" operation intended to enable efficient access in certain situations.

Parameters:
y - vertical offset, from top, of the row of pixels
row - if not null, BitArray to write pixels into. If null, a new BitArray is allocated and returned.
startX - horizontal offset, from left, from which to start getting pixels
getWidth - number of pixels to get from the row
Returns:
BitArray representing the (subset of the) row of pixels. If row parameter was not null, it is returned.

getBlackColumn

BitArray getBlackColumn(int x,
                        BitArray column,
                        int startY,
                        int getHeight)
Entirely analogous to getBlackRow(int, BitArray, int, int) but gets a column.


getBlackDiagonal

BitArray getBlackDiagonal(int x,
                          int y,
                          int dx,
                          int dy,
                          BitArray diagonal,
                          int size)

getHeight

int getHeight()
Returns:
height of underlying image

getWidth

int getWidth()
Returns:
width of underlying image

estimateBlackPoint

void estimateBlackPoint(BlackPointEstimationMethod method,
                        int argument)
                        throws ReaderException

Estimates black point according to the given method, which is optionally parameterized by a single int argument. For BlackPointEstimationMethod.ROW_SAMPLING, this specifies the row to sample.

The estimated value will be used in subsequent computations that rely on an estimated black point.

Parameters:
method - black point estimation method
argument - method-specific argument
Throws:
ReaderException

getLastEstimationMethod

BlackPointEstimationMethod getLastEstimationMethod()
Returns:
BlackPointEstimationMethod representing last sampling method used

rotateCounterClockwise

MonochromeBitmapSource rotateCounterClockwise()

Optional operation which returns an implementation based on the same underlying image, but which behaves as if the underlying image had been rotated 90 degrees counterclockwise. This is useful in the context of 1D barcodes and the DecodeHintType.TRY_HARDER decode hint, and is only intended to be used in non-resource-constrained environments. Hence, implementations of this class which are only used in resource-constrained mobile environments don't have a need to implement this.

Throws:
java.lang.IllegalArgumentException - if not supported

isRotateSupported

boolean isRotateSupported()
Returns:
true iff rotation is supported
See Also:
rotateCounterClockwise()

getLuminance

int getLuminance(int x,
                 int y)
Retrieves the luminance at the pixel x,y in the bitmap. This method is only used for estimating the black point and implementing getBlackRow() - it is not meant for decoding, hence it is not part of MonochromeBitmapSource itself, and is protected.

Parameters:
x - The x coordinate in the image.
y - The y coordinate in the image.
Returns:
The luminance value between 0 and 255.

getLuminanceRow

int[] getLuminanceRow(int y,
                      int[] row)
This is the main mechanism for retrieving luminance data. It is dramatically more efficient than repeatedly calling getLuminance(). As above, this is not meant for decoders.

Parameters:
y - The row to fetch
row - The array to write luminance values into. It is strongly suggested that you allocate this yourself, making sure row.length >= getWidth(), and reuse the same array on subsequent calls for performance. If you pass null, you will be flogged, but then I will take pity on you and allocate a sufficient array internally.
Returns:
The array containing the luminance data. This is the same as row if it was usable.

getLuminanceColumn

int[] getLuminanceColumn(int x,
                         int[] column)
The same as getLuminanceRow(), but for columns.

Parameters:
x - The column to fetch
column - The array to write luminance values into. See above.
Returns:
The array containing the luminance data.