qr-pure - v2.1.0
    Preparing search index...

    Class MaskEvaluator

    Clase para aplicar y evaluar patrones de máscara.

    Los patrones de máscara se aplican a los módulos de datos para mejorar la legibilidad del código QR. El estándar define 8 patrones, y se debe seleccionar el que resulte en la menor penalización.

    Las funciones de máscara determinan qué módulos invertir:

    • 0: (row + col) % 2 === 0
    • 1: row % 2 === 0
    • 2: col % 3 === 0
    • 3: (row + col) % 3 === 0
    • 4: (Math.floor(row/2) + Math.floor(col/3)) % 2 === 0
    • 5: (row * col) % 2 + (row * col) % 3 === 0
    • 6: ((row * col) % 2 + (row * col) % 3) % 2 === 0
    • 7: ((row + col) % 2 + (row * col) % 3) % 2 === 0
    const bestMask = MaskEvaluator.findBestMask(matrix, reserved);
    MaskEvaluator.apply(matrix, reserved, bestMask);
    Index

    Constructors

    Methods

    • Aplica un patrón de máscara a la matriz.

      Parameters

      • matrix: number[][]

        Matriz del QR a modificar

      • reserved: number[][]

        Matriz de reserva (módulos de función)

      • pattern: MaskPattern

        Patrón de máscara (0-7)

      Returns void

      Solo invierte módulos de datos (no reservados).

      MaskEvaluator.apply(matrix, reserved, 0);
      
    • Calcula la penalización total de una matriz.

      Parameters

      • matrix: number[][]

        Matriz del QR (con máscara aplicada)

      Returns number

      Penalización total

      Suma las cuatro reglas de penalización:

      1. Secuencias de 5+ módulos del mismo color
      2. Bloques 2x2 del mismo color
      3. Patrones que se asemejan a finder patterns
      4. Desequilibrio en proporción oscuro/claro
    • Encuentra el mejor patrón de máscara para una matriz.

      Parameters

      • matrix: number[][]

        Matriz del QR (sin máscara aplicada)

      • reserved: number[][]

        Matriz de reserva

      Returns MaskPattern

      El patrón de máscara óptimo (0-7)

      Evalúa los 8 patrones y retorna el que tenga menor penalización total.

      const best = MaskEvaluator.findBestMask(matrix, reserved);
      console.log(`Mejor máscara: ${best}`);