Package com.google.zxing.common
Class BitMatrix
- java.lang.Object
-
- com.google.zxing.common.BitMatrix
-
- All Implemented Interfaces:
java.lang.Cloneable
public final class BitMatrix extends java.lang.Object implements java.lang.CloneableRepresents 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.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()Clears all bits (sets to false).BitMatrixclone()booleanequals(java.lang.Object o)voidflip(int x, int y)Flips the given bit.booleanget(int x, int y)Gets the requested bit, where true means black.int[]getBottomRightOnBit()int[]getEnclosingRectangle()This is useful in detecting the enclosing rectangle of a 'pure' barcode.intgetHeight()BitArraygetRow(int y, BitArray row)A fast method to retrieve one row of data from the matrix as a BitArray.int[]getTopLeftOnBit()This is useful in detecting a corner of a 'pure' barcode.intgetWidth()inthashCode()voidrotate180()Modifies thisBitMatrixto represent the same but rotated 180 degreesvoidset(int x, int y)Sets the given bit to true.voidsetRegion(int left, int top, int width, int height)Sets a square region of the bit matrix to true.voidsetRow(int y, BitArray row)java.lang.StringtoString()
-
-
-
Method Detail
-
get
public boolean get(int x, int y)Gets the requested bit, where true means black.
- Parameters:
x- The horizontal component (i.e. which column)y- The vertical component (i.e. which row)- Returns:
- value of given bit in matrix
-
set
public void set(int x, int y)Sets the given bit to true.
- Parameters:
x- The horizontal component (i.e. which column)y- The vertical component (i.e. which row)
-
flip
public void flip(int x, int y)Flips the given bit.
- Parameters:
x- The horizontal component (i.e. which column)y- The vertical component (i.e. which row)
-
clear
public void clear()
Clears all bits (sets to false).
-
setRegion
public void setRegion(int left, int top, int width, int height)Sets a square region of the bit matrix to true.
- Parameters:
left- The horizontal position to begin at (inclusive)top- The vertical position to begin at (inclusive)width- The width of the regionheight- The height of the region
-
getRow
public BitArray getRow(int y, BitArray row)
A fast method to retrieve one row of data from the matrix as a BitArray.- Parameters:
y- The row to retrieverow- An optional caller-allocated BitArray, will be allocated if null or too small- Returns:
- The resulting BitArray - this reference should always be used even when passing your own row
-
setRow
public void setRow(int y, BitArray row)- Parameters:
y- row to setrow-BitArrayto copy from
-
rotate180
public void rotate180()
Modifies thisBitMatrixto represent the same but rotated 180 degrees
-
getEnclosingRectangle
public int[] getEnclosingRectangle()
This is useful in detecting the enclosing rectangle of a 'pure' barcode.- Returns:
left,top,width,heightenclosing rectangle of all 1 bits, or null if it is all white
-
getTopLeftOnBit
public int[] getTopLeftOnBit()
This is useful in detecting a corner of a 'pure' barcode.- Returns:
x,ycoordinate of top-left-most 1 bit, or null if it is all white
-
getBottomRightOnBit
public int[] getBottomRightOnBit()
-
getWidth
public int getWidth()
- Returns:
- The width of the matrix
-
getHeight
public int getHeight()
- Returns:
- The height of the matrix
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
clone
public BitMatrix clone()
- Overrides:
clonein classjava.lang.Object
-
-