Class BitMatrix

java.lang.Object
zext.plantuml.com.google.zxing.common.BitMatrix

public final class BitMatrix extends Object

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.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    final int[]
     
    final int
     
    final int
     
    final int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    BitMatrix(int dimension)
     
    BitMatrix(int width, int height)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Clears all bits (sets to false).
    boolean
     
    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
     
    getRow(int y, BitArray row)
    A fast method to retrieve one row of data from the matrix as a BitArray.
    int[]
    This is useful in detecting a corner of a 'pure' barcode.
    int
     
    int
     
    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.
     

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • width

      public final int width
    • height

      public final int height
    • rowSize

      public final int rowSize
    • bits

      public final int[] bits
  • Constructor Details

    • BitMatrix

      public BitMatrix(int dimension)
    • BitMatrix

      public BitMatrix(int width, int height)
  • Method Details

    • 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 region
      height - 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 retrieve
      row - 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
    • getTopLeftOnBit

      public int[] getTopLeftOnBit()
      This is useful in detecting a corner of a 'pure' barcode.
      Returns:
      {x,y} coordinate of top-left-most 1 bit, or null if it is all white
    • getWidth

      public int getWidth()
      Returns:
      The width of the matrix
    • getHeight

      public int getHeight()
      Returns:
      The height of the matrix
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object