UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

1 lines 2.74 kB
{"version":3,"file":"PatternBrush.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":";;;;AAMA,IAAa,eAAb,cAAkC,YAAY;CAG5C,YAAY,QAAgB;AAC1B,QAAM,OAAO;;CAGf,gBAAgB;EACd,MAAM,WAAW,IACf,cAAc,GACd,gBAAgB,qBAAqB,EACrC,aAAa,cAAc,WAAW,KAAK;AAE7C,gBAAc,QAAQ,cAAc,SAAS,WAAW;AACxD,MAAI,YAAY;AACd,cAAW,YAAY,KAAK;AAC5B,cAAW,WAAW;AACtB,cAAW,IACT,WAAW,GACX,WAAW,GACX,WAAW,GACX,GACA,KAAK,KAAK,GACV,MACD;AACD,cAAW,WAAW;AACtB,cAAW,MAAM;;AAEnB,SAAO;;;;;;CAOT,WAAW,KAA+B;AACxC,SAAO,IAAI,cAAc,KAAK,UAAU,KAAK,eAAe,EAAE,SAAS;;;;;;CAOzE,gBAAgB,KAA+B;AAC7C,QAAM,gBAAgB,IAAI;EAC1B,MAAM,UAAU,KAAK,WAAW,IAAI;AACpC,cAAY,IAAI,cAAc;;;;;CAMhC,WAAW,UAA2B;EACpC,MAAM,OAAO,MAAM,WAAW,SAAS,EACrC,UAAU,KAAK,mBAAmB,CAAC,UAAU,KAAK,cAAc,EAAE;AAEpE,OAAK,SAAS,IAAI,QAAQ;GACxB,QAAQ,KAAK,UAAU,KAAK,eAAe;GAC3C,SAAS,CAAC,QAAQ;GAClB,SAAS,CAAC,QAAQ;GACnB,CAAC;AACF,SAAO"}