{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/utils/pattern/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { PatternCfg } from '../../types/pattern';\n\n/**\n * 获取设备像素比\n */\nexport function getPixelRatio(): number {\n return typeof window === 'object' ? window?.devicePixelRatio : 2;\n}\n\n/**\n * 初始化 cavnas,设置宽高等\n */\nexport function initCanvas(width: number, height: number = width): HTMLCanvasElement {\n const canvas = document.createElement('canvas');\n\n const pixelRatio = getPixelRatio();\n // 画布尺寸\n canvas.width = width * pixelRatio;\n canvas.height = height * pixelRatio;\n // 显示尺寸\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n\n const ctx = canvas.getContext('2d');\n ctx.scale(pixelRatio, pixelRatio);\n\n return canvas;\n}\n\n/**\n * 绘制背景\n *\n * @param context\n * @param cfg\n * @param width\n * @param height\n */\nexport function drawBackground(\n context: CanvasRenderingContext2D,\n cfg: PatternCfg,\n width: number,\n height: number = width\n) {\n const { backgroundColor, opacity } = cfg;\n\n context.globalAlpha = opacity;\n context.fillStyle = backgroundColor;\n\n context.beginPath();\n context.fillRect(0, 0, width, height);\n context.closePath();\n}\n\n/**\n * 计算贴图单元大小\n *\n * @param size 元素大小\n * @param padding 圆点间隔\n * @param isStagger 是否交错\n * @reutrn 返回贴图单元大小\n */\nexport function getUnitPatternSize(size: number, padding: number, isStagger: boolean): number {\n // 如果交错, unitSize 放大两倍\n const unitSize = size + padding;\n return isStagger ? unitSize * 2 : unitSize;\n}\n\n/**\n * 计算有交错情况的元素坐标\n *\n * @param unitSize 贴图单元大小\n * @param isStagger 是否交错\n * @reutrn 元素中心坐标 x,y 数组集合\n */\nexport function getSymbolsPosition(unitSize: number, isStagger: boolean): number[][] {\n // 如果交错, 交错绘制 dot\n const symbolsPos = isStagger\n ? [\n [unitSize * (1 / 4), unitSize * (1 / 4)],\n [unitSize * (3 / 4), unitSize * (3 / 4)],\n ]\n : [[unitSize * (1 / 2), unitSize * (1 / 2)]];\n return symbolsPos;\n}\n\n/**\n * 给整个 pattern贴图 做变换, 目前支持旋转\n *\n * @param pattern 整个贴图\n * @param dpr 设备像素比\n * @param rotation 旋转角度\n */\nexport function transformMatrix(dpr: number, rotation: number) {\n const radian = (rotation * Math.PI) / 180;\n const matrix = {\n a: Math.cos(radian) * (1 / dpr),\n b: Math.sin(radian) * (1 / dpr),\n c: -Math.sin(radian) * (1 / dpr),\n d: Math.cos(radian) * (1 / dpr),\n e: 0,\n f: 0,\n };\n return matrix;\n}\n"]}