{"version":3,"file":"dot.js","sourceRoot":"","sources":["../../../src/utils/pattern/dot.ts"],"names":[],"mappings":"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","sourcesContent":["import { DotPatternCfg } from '../../types/pattern';\nimport { deepAssign } from '../../utils';\nimport {\n drawBackground,\n getPixelRatio,\n getSymbolsPosition,\n getUnitPatternSize,\n initCanvas,\n transformMatrix,\n} from './util';\n\n/**\n * dotPattern的默认配置\n */\nexport const defaultDotPatternCfg = {\n size: 6,\n padding: 2,\n backgroundColor: 'transparent',\n opacity: 1,\n rotation: 0,\n fill: '#fff',\n fillOpacity: 0.5,\n stroke: 'transparent',\n lineWidth: 0,\n isStagger: true,\n};\n\n/**\n * 绘制圆点\n *\n * @param context\n * @param cfg\n * @param x 圆点中心坐标x\n * @param y 圆点中心坐标y\n */\nexport function drawDot(context: CanvasRenderingContext2D, cfg: DotPatternCfg, x: number, y: number) {\n const { size, fill, lineWidth, stroke, fillOpacity } = cfg;\n\n context.beginPath();\n context.globalAlpha = fillOpacity;\n context.fillStyle = fill;\n context.strokeStyle = stroke;\n context.lineWidth = lineWidth;\n context.arc(x, y, size / 2, 0, 2 * Math.PI, false);\n context.fill();\n if (lineWidth) {\n context.stroke();\n }\n context.closePath();\n}\n\n/**\n * 创建 dot pattern,返回 HTMLCanvasElement\n *\n * @param cfg\n * @returns HTMLCanvasElement\n */\nexport function createDotPattern(cfg?: DotPatternCfg): CanvasPattern {\n const dotCfg = deepAssign({}, defaultDotPatternCfg, cfg);\n\n const { size, padding, isStagger, rotation } = dotCfg;\n\n // 计算 画布大小,dots的位置\n const unitSize = getUnitPatternSize(size, padding, isStagger);\n const dots = getSymbolsPosition(unitSize, isStagger);\n\n // 初始化 patternCanvas\n const canvas = initCanvas(unitSize, unitSize);\n const ctx = canvas.getContext('2d');\n\n // 绘制 background,dots\n drawBackground(ctx, dotCfg, unitSize);\n for (const [x, y] of dots) {\n drawDot(ctx, dotCfg, x, y);\n }\n\n const pattern = ctx.createPattern(canvas, 'repeat');\n\n if (pattern) {\n const dpr = getPixelRatio();\n const matrix = transformMatrix(dpr, rotation);\n pattern.setTransform(matrix);\n }\n\n return pattern;\n}\n"]}