Enum DataMask

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<DataMask>

    enum DataMask
    extends java.lang.Enum<DataMask>

    Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, including areas used for finder patterns, timing patterns, etc. These areas should be unused after the point they are unmasked anyway.

    Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position and j is row position. In fact, as the text says, i is row position and j is column position.

    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
      DATA_MASK_000
      000: mask bits for which (x + y) mod 2 == 0
      DATA_MASK_001
      001: mask bits for which x mod 2 == 0
      DATA_MASK_010
      010: mask bits for which y mod 3 == 0
      DATA_MASK_011
      011: mask bits for which (x + y) mod 3 == 0
      DATA_MASK_100
      100: mask bits for which (x/2 + y/3) mod 2 == 0
      DATA_MASK_101
      101: mask bits for which xy mod 2 + xy mod 3 == 0 equivalently, such that xy mod 6 == 0
      DATA_MASK_110
      110: mask bits for which (xy mod 2 + xy mod 3) mod 2 == 0 equivalently, such that xy mod 6 < 3
      DATA_MASK_111
      111: mask bits for which ((x+y)mod 2 + xy mod 3) mod 2 == 0 equivalently, such that (x + y + xy mod 3) mod 2 == 0
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private DataMask()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) abstract boolean isMasked​(int i, int j)  
      (package private) void unmaskBitMatrix​(BitMatrix bits, int dimension)
      Implementations of this method reverse the data masking process applied to a QR Code and make its bits ready to read.
      static DataMask valueOf​(java.lang.String name)
      Returns the enum constant of this type with the specified name.
      static DataMask[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      • Methods inherited from class java.lang.Enum

        clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Enum Constant Detail

      • DATA_MASK_000

        public static final DataMask DATA_MASK_000
        000: mask bits for which (x + y) mod 2 == 0
      • DATA_MASK_001

        public static final DataMask DATA_MASK_001
        001: mask bits for which x mod 2 == 0
      • DATA_MASK_010

        public static final DataMask DATA_MASK_010
        010: mask bits for which y mod 3 == 0
      • DATA_MASK_011

        public static final DataMask DATA_MASK_011
        011: mask bits for which (x + y) mod 3 == 0
      • DATA_MASK_100

        public static final DataMask DATA_MASK_100
        100: mask bits for which (x/2 + y/3) mod 2 == 0
      • DATA_MASK_101

        public static final DataMask DATA_MASK_101
        101: mask bits for which xy mod 2 + xy mod 3 == 0 equivalently, such that xy mod 6 == 0
      • DATA_MASK_110

        public static final DataMask DATA_MASK_110
        110: mask bits for which (xy mod 2 + xy mod 3) mod 2 == 0 equivalently, such that xy mod 6 < 3
      • DATA_MASK_111

        public static final DataMask DATA_MASK_111
        111: mask bits for which ((x+y)mod 2 + xy mod 3) mod 2 == 0 equivalently, such that (x + y + xy mod 3) mod 2 == 0
    • Constructor Detail

      • DataMask

        private DataMask()
    • Method Detail

      • values

        public static DataMask[] values()
        Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
        for (DataMask c : DataMask.values())
            System.out.println(c);
        
        Returns:
        an array containing the constants of this enum type, in the order they are declared
      • valueOf

        public static DataMask valueOf​(java.lang.String name)
        Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
        Parameters:
        name - the name of the enum constant to be returned.
        Returns:
        the enum constant with the specified name
        Throws:
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        java.lang.NullPointerException - if the argument is null
      • unmaskBitMatrix

        final void unmaskBitMatrix​(BitMatrix bits,
                                   int dimension)

        Implementations of this method reverse the data masking process applied to a QR Code and make its bits ready to read.

        Parameters:
        bits - representation of QR Code bits
        dimension - dimension of QR Code, represented by bits, being unmasked
      • isMasked

        abstract boolean isMasked​(int i,
                                  int j)