{"version":3,"file":"square.js","sourceRoot":"","sources":["../../../src/utils/pattern/square.ts"],"names":[],"mappings":";;;AACA,qCAAyC;AACzC,+BAOgB;AAEhB;;GAEG;AACU,QAAA,uBAAuB,GAAG;IACrC,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,aAAa;IAC9B,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,aAAa;IACrB,SAAS,EAAE,CAAC;CACb,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,OAAiC,EAAE,GAAqB,EAAE,CAAS,EAAE,CAAS;IAC/F,IAAA,MAAM,GAAyC,GAAG,OAA5C,EAAE,IAAI,GAAmC,GAAG,KAAtC,EAAE,IAAI,GAA6B,GAAG,KAAhC,EAAE,SAAS,GAAkB,GAAG,UAArB,EAAE,WAAW,GAAK,GAAG,YAAR,CAAS;IAE3D,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IAClC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IACzB,0BAA0B;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAVD,gCAUC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,GAAsB;IACxD,IAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,EAAE,EAAE,+BAAuB,EAAE,GAAG,CAAC,CAAC;IAEvD,IAAA,IAAI,GAAmC,SAAS,KAA5C,EAAE,OAAO,GAA0B,SAAS,QAAnC,EAAE,SAAS,GAAe,SAAS,UAAxB,EAAE,QAAQ,GAAK,SAAS,SAAd,CAAe;IAEzD,qBAAqB;IACrB,IAAM,QAAQ,GAAG,IAAA,yBAAkB,EAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAM,OAAO,GAAG,IAAA,yBAAkB,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB;IAEzE,oBAAoB;IACpB,IAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEpC,wBAAwB;IACxB,IAAA,qBAAc,EAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzC,KAAqB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;QAAnB,IAAA,kBAAM,EAAL,CAAC,QAAA,EAAE,CAAC,QAAA;QACd,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAClC;IAED,IAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEpD,IAAI,OAAO,EAAE;QACX,IAAM,GAAG,GAAG,IAAA,oBAAa,GAAE,CAAC;QAC5B,IAAM,MAAM,GAAG,IAAA,sBAAe,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AA5BD,kDA4BC","sourcesContent":["import { SquarePatternCfg } 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 * squarePattern 的 默认配置\n */\nexport const defaultSquarePatternCfg = {\n size: 6,\n padding: 1,\n isStagger: true,\n backgroundColor: 'transparent',\n opacity: 1,\n rotation: 0,\n fill: '#fff',\n fillOpacity: 0.5,\n stroke: 'transparent',\n lineWidth: 0,\n};\n\n/**\n * 绘制square\n *\n * @param context canvasContext\n * @param cfg squarePattern 的配置\n * @param x和y square的中心位置\n */\nexport function drawSquare(context: CanvasRenderingContext2D, cfg: SquarePatternCfg, x: number, y: number) {\n const { stroke, size, fill, lineWidth, fillOpacity } = cfg;\n\n context.globalAlpha = fillOpacity;\n context.strokeStyle = stroke;\n context.lineWidth = lineWidth;\n context.fillStyle = fill;\n // 因为正方形绘制从左上角开始,所以x,y做个偏移\n context.strokeRect(x - size / 2, y - size / 2, size, size);\n context.fillRect(x - size / 2, y - size / 2, size, size);\n}\n\n/**\n * 创建 squarePattern\n */\nexport function createSquarePattern(cfg?: SquarePatternCfg): CanvasPattern {\n const squareCfg = deepAssign({}, defaultSquarePatternCfg, cfg);\n\n const { size, padding, isStagger, rotation } = squareCfg;\n\n // 计算 画布大小,squares的位置\n const unitSize = getUnitPatternSize(size, padding, isStagger);\n const squares = getSymbolsPosition(unitSize, isStagger); // 计算方法与 dots 一样\n\n // 初始化 patternCanvas\n const canvas = initCanvas(unitSize, unitSize);\n const ctx = canvas.getContext('2d');\n\n // 绘制 background,squares\n drawBackground(ctx, squareCfg, unitSize);\n for (const [x, y] of squares) {\n drawSquare(ctx, squareCfg, 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"]}