Options
All
  • Public
  • Public/Protected
  • All
Menu

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.

author

Sean Owen

Hierarchy

  • DataMask

Index

Constructors

Properties

Methods

Constructors

constructor

Properties

Private isMasked

isMasked: (i: number, j: number) => boolean

Type declaration

    • (i: number, j: number): boolean
    • Parameters

      • i: number
      • j: number

      Returns boolean

Private value

Static values

values: Map<DataMaskValues, DataMask> = new Map<DataMaskValues, DataMask>([/*** 000: mask bits for which (x + y) mod 2 == 0*/[DataMaskValues.DATA_MASK_000, new DataMask(DataMaskValues.DATA_MASK_000, (i: number /* int */, j: number /* int */) => {return ((i + j) & 0x01) === 0;})],/*** 001: mask bits for which x mod 2 == 0*/[DataMaskValues.DATA_MASK_001, new DataMask(DataMaskValues.DATA_MASK_001, (i: number /* int */, j: number /* int */) => {return (i & 0x01) === 0;})],/*** 010: mask bits for which y mod 3 == 0*/[DataMaskValues.DATA_MASK_010, new DataMask(DataMaskValues.DATA_MASK_010, (i: number /* int */, j: number /* int */) => {return j % 3 === 0;})],/*** 011: mask bits for which (x + y) mod 3 == 0*/[DataMaskValues.DATA_MASK_011, new DataMask(DataMaskValues.DATA_MASK_011, (i: number /* int */, j: number /* int */) => {return (i + j) % 3 === 0;})],/*** 100: mask bits for which (x/2 + y/3) mod 2 == 0*/[DataMaskValues.DATA_MASK_100, new DataMask(DataMaskValues.DATA_MASK_100, (i: number /* int */, j: number /* int */) => {return ((Math.floor(i / 2) + Math.floor(j / 3)) & 0x01) === 0;})],/*** 101: mask bits for which xy mod 2 + xy mod 3 == 0* equivalently, such that xy mod 6 == 0*/[DataMaskValues.DATA_MASK_101, new DataMask(DataMaskValues.DATA_MASK_101, (i: number /* int */, j: number /* int */) => {return (i * j) % 6 === 0;})],/*** 110: mask bits for which (xy mod 2 + xy mod 3) mod 2 == 0* equivalently, such that xy mod 6 < 3*/[DataMaskValues.DATA_MASK_110, new DataMask(DataMaskValues.DATA_MASK_110, (i: number /* int */, j: number /* int */) => {return ((i * j) % 6) < 3;})],/*** 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*/[DataMaskValues.DATA_MASK_111, new DataMask(DataMaskValues.DATA_MASK_111, (i: number /* int */, j: number /* int */) => {return ((i + j + ((i * j) % 3)) & 0x01) === 0;})],])

Methods

unmaskBitMatrix

  • unmaskBitMatrix(bits: BitMatrix, dimension: number): void
  • Implementations of this method reverse the data masking process applied to a QR Code and make its bits ready to read.

    Parameters

    • bits: BitMatrix

      representation of QR Code bits

    • dimension: number

      dimension of QR Code, represented by bits, being unmasked

    Returns void

Generated using TypeDoc