public final class BitMatrix extends Objectimplements Cloneable
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.
| Constructor and Description |
|---|
BitMatrix(int dimension)
|
BitMatrix(int width, int height)
|
| Modifier and Type | Method and Description |
|---|---|
void |
clear()
Clears all bits (sets to false).
|
BitMatrix |
clone()
|
boolean |
equals(Object
|
void |
flip(int x, int y)
Flips the given bit.
|
boolean |
get(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.
|
int |
getHeight()
|
BitArray |
getRow(int y, BitArray
A fast method to retrieve one row of data from the matrix as a BitArray.
|
int |
getRowSize()
|
int[] |
getTopLeftOnBit()
This is useful in detecting a corner of a 'pure' barcode.
|
int |
getWidth()
|
int |
hashCode()
|
static BitMatrix |
parse(String
|
void |
rotate180()
Modifies this
BitMatrix to represent the same but rotated 180 degrees
|
void |
set(int x, int y)
Sets the given bit to true.
|
void |
setRegion(int left, int top, int width, int height)
Sets a square region of the bit matrix to true.
|
void |
setRow(int y, BitArray
|
String |
toString()
|
String |
toString(String
|
String |
toString(String
|
void |
unset(int x, int y)
|
void |
xor(BitMatrix
Exclusive-or (XOR): Flip the bit in this
BitMatrix if the corresponding mask bit is set.
|
public BitMatrix(int dimension)
public BitMatrix(int width,
int height)public static BitMatrixparse(String stringRepresentation, String setString, String unsetString)
public boolean get(int x,
int y)
Gets the requested bit, where true means black.
x - The horizontal component (i.e. which column)
y - The vertical component (i.e. which row)
public void set(int x,
int y)
Sets the given bit to true.
x - The horizontal component (i.e. which column)
y - The vertical component (i.e. which row)
public void unset(int x,
int y)public void flip(int x,
int y)
Flips the given bit.
x - The horizontal component (i.e. which column)
y - The vertical component (i.e. which row)
public void xor(BitMatrixmask)
BitMatrix if the corresponding mask bit is set.
mask - XOR mask
public void clear()
public void setRegion(int left,
int top,
int width,
int height)
Sets a square region of the bit matrix to true.
left - The horizontal position to begin at (inclusive)
top - The vertical position to begin at (inclusive)
width - The width of the region
height - The height of the region
public BitArraygetRow(int y, BitArray row)
y - The row to retrieve
row - An optional caller-allocated BitArray, will be allocated if null or too small
public void setRow(int y,
BitArray row)
y - row to set
row -
BitArray to copy from
public void rotate180()
BitMatrix to represent the same but rotated 180 degrees
public int[] getEnclosingRectangle()
left,top,width,height enclosing rectangle of all 1 bits, or null if it is all white
public int[] getTopLeftOnBit()
x,y coordinate of top-left-most 1 bit, or null if it is all white
public int[] getBottomRightOnBit()
public int getWidth()
public int getHeight()
public int getRowSize()
public boolean equals(Objecto)
public int hashCode()
public StringtoString()
public BitMatrixclone()