{"version":3,"file":"PatternBrush.min.mjs","names":[],"sources":["../../../src/brushes/PatternBrush.ts"],"sourcesContent":["import { Pattern } from '../Pattern';\nimport { createCanvasElement } from '../util/misc/dom';\nimport type { Canvas } from '../canvas/Canvas';\nimport { PencilBrush } from './PencilBrush';\nimport type { TSimplePathData } from '../util/path/typedefs';\n\nexport class PatternBrush extends PencilBrush {\n  declare source?: CanvasImageSource;\n\n  constructor(canvas: Canvas) {\n    super(canvas);\n  }\n\n  getPatternSrc() {\n    const dotWidth = 20,\n      dotDistance = 5,\n      patternCanvas = createCanvasElement(),\n      patternCtx = patternCanvas.getContext('2d');\n\n    patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n    if (patternCtx) {\n      patternCtx.fillStyle = this.color;\n      patternCtx.beginPath();\n      patternCtx.arc(\n        dotWidth / 2,\n        dotWidth / 2,\n        dotWidth / 2,\n        0,\n        Math.PI * 2,\n        false,\n      );\n      patternCtx.closePath();\n      patternCtx.fill();\n    }\n    return patternCanvas;\n  }\n\n  /**\n   * Creates \"pattern\" instance property\n   * @param {CanvasRenderingContext2D} ctx\n   */\n  getPattern(ctx: CanvasRenderingContext2D) {\n    return ctx.createPattern(this.source || this.getPatternSrc(), 'repeat');\n  }\n\n  /**\n   * Sets brush styles\n   * @param {CanvasRenderingContext2D} ctx\n   */\n  _setBrushStyles(ctx: CanvasRenderingContext2D) {\n    super._setBrushStyles(ctx);\n    const pattern = this.getPattern(ctx);\n    pattern && (ctx.strokeStyle = pattern);\n  }\n\n  /**\n   * Creates path\n   */\n  createPath(pathData: TSimplePathData) {\n    const path = super.createPath(pathData),\n      topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n    path.stroke = new Pattern({\n      source: this.source || this.getPatternSrc(),\n      offsetX: -topLeft.x,\n      offsetY: -topLeft.y,\n    });\n    return path;\n  }\n}\n"],"mappings":"wKAMA,IAAa,EAAb,cAAkC,CAAA,CAGhC,YAAY,EAAA,CACV,MAAM,EAAA,CAGR,eAAA,CACE,IAEE,EAAgB,GAAA,CAChB,EAAa,EAAc,WAAW,KAAA,CAiBxC,MAfA,GAAc,MAAQ,EAAc,OAAS,GACzC,IACF,EAAW,UAAY,KAAK,MAC5B,EAAW,WAAA,CACX,EAAW,IACT,GACA,GACA,GACA,EACU,EAAV,KAAK,GAAA,CACL,EAAA,CAEF,EAAW,WAAA,CACX,EAAW,MAAA,EAEN,EAOT,WAAW,EAAA,CACT,OAAO,EAAI,cAAc,KAAK,QAAU,KAAK,eAAA,CAAiB,SAAA,CAOhE,gBAAgB,EAAA,CACd,MAAM,gBAAgB,EAAA,CACtB,IAAM,EAAU,KAAK,WAAW,EAAA,CAChC,IAAY,EAAI,YAAc,GAMhC,WAAW,EAAA,CACT,IAAM,EAAO,MAAM,WAAW,EAAA,CAC5B,EAAU,EAAK,mBAAA,CAAoB,UAAU,EAAK,YAAc,EAAA,CAOlE,MALA,GAAK,OAAS,IAAI,EAAQ,CACxB,OAAQ,KAAK,QAAU,KAAK,eAAA,CAC5B,QAAA,CAAU,EAAQ,EAClB,QAAA,CAAU,EAAQ,EAAA,CAAA,CAEb,IAAA,OAAA,KAAA"}