All files / src/render data-url-canvas.render.js

100% Statements 24/24
100% Branches 0/0
100% Functions 0/0
100% Lines 24/24

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 251x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import { renderTo2dContext } from './canvas-2d-context.render.js'
 
/**
 *
 * @param {object} opts - function parameters
 * @param {number} [opts.cellSize] - cell size in pixels, defaults to 2
 * @param {number} [opts.margin] - margin in pixels, defaults to {@link cellSize} * 4
 * @param {import('../qr-code.js').QrCode} opts.qrcode - QR Code data
 * @param {import('../utils/css-colors.util.js').QRCodeCssColors} [opts.colors] - qr code colors
 * @param {import('../utils/css-qrcode-style.util.js').QRCodeCssStyles} [opts.style] - qr code colors
 * @returns {string} data url of qr code image
 */
export function createDataURL ({ cellSize = 2, margin, qrcode, colors, style }) {
  margin ??= cellSize * 4
 
  const paintSize = qrcode.moduleCount * cellSize
  const size = paintSize + margin * 2
  const canvas = document.createElement('canvas')
  canvas.width = size
  canvas.height = size
  const context = /** @type {CanvasRenderingContext2D} */(canvas.getContext('2d'))
  renderTo2dContext({ context, cellSize, margin, qrcode, colors, style })
  return canvas.toDataURL('image/png', 1.0)
};