fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 6.38 kB
Source Map (JSON)
{"version":3,"file":"draw.mjs","sources":["../../../extensions/aligning_guidelines/util/draw.ts"],"sourcesContent":["import { Point } from 'fabric';\nimport type { AligningGuidelines } from '..';\n\nexport function drawLine(\n this: AligningGuidelines,\n origin: Point,\n target: Point,\n) {\n const ctx = this.canvas.getTopContext();\n const viewportTransform = this.canvas.viewportTransform;\n const zoom = this.canvas.getZoom();\n ctx.save();\n ctx.transform(...viewportTransform);\n ctx.lineWidth = this.width / zoom;\n if (this.lineDash) ctx.setLineDash(this.lineDash);\n ctx.strokeStyle = this.color;\n ctx.beginPath();\n ctx.moveTo(origin.x, origin.y);\n ctx.lineTo(target.x, target.y);\n ctx.stroke();\n if (this.lineDash) ctx.setLineDash([]);\n\n this.drawX(origin, -1);\n this.drawX(target, 1);\n ctx.restore();\n}\n\nexport function drawX(this: AligningGuidelines, point: Point, _: number) {\n const ctx = this.canvas.getTopContext();\n const zoom = this.canvas.getZoom();\n const size = this.xSize / zoom;\n ctx.save();\n ctx.translate(point.x, point.y);\n ctx.beginPath();\n ctx.moveTo(-size, -size);\n ctx.lineTo(size, size);\n ctx.moveTo(size, -size);\n ctx.lineTo(-size, size);\n ctx.stroke();\n ctx.restore();\n}\nfunction drawPoint(this: AligningGuidelines, arr: Point[]) {\n const ctx = this.canvas.getTopContext();\n const viewportTransform = this.canvas.viewportTransform;\n const zoom = this.canvas.getZoom();\n ctx.save();\n ctx.transform(...viewportTransform);\n ctx.lineWidth = this.width / zoom;\n ctx.strokeStyle = this.color;\n for (const item of arr) this.drawX(item, 0);\n ctx.restore();\n}\n\nexport function drawPointList(this: AligningGuidelines) {\n const list = [];\n if (!this.closeVLine) {\n for (const v of this.verticalLines) list.push(JSON.parse(v));\n }\n if (!this.closeHLine) {\n for (const h of this.horizontalLines) list.push(JSON.parse(h));\n }\n const arr = list.map((item) => item.target);\n drawPoint.call(this, arr);\n}\n\nexport function drawVerticalLine(this: AligningGuidelines) {\n if (this.closeVLine) return;\n\n for (const v of this.verticalLines) {\n const { origin, target } = JSON.parse(v);\n const o = new Point(target.x, origin.y);\n this.drawLine(o, target);\n }\n}\n\nexport function drawHorizontalLine(this: AligningGuidelines) {\n if (this.closeHLine) return;\n\n for (const v of this.horizontalLines) {\n const { origin, target } = JSON.parse(v);\n const o = new Point(origin.x, target.y);\n this.drawLine(o, target);\n }\n}\n"],"names":["drawLine","origin","target","ctx","canvas","getTopContext","viewportTransform","zoom","getZoom","save","transform","lineWidth","width","lineDash","setLineDash","strokeStyle","color","beginPath","moveTo","x","y","lineTo","stroke","drawX","restore","point","_","size","xSize","translate","drawPoint","arr","item","drawPointList","list","closeVLine","v","verticalLines","push","JSON","parse","closeHLine","h","horizontalLines","map","call","drawVerticalLine","o","Point","drawHorizontalLine"],"mappings":";;AAGO,SAASA,QAAQA,CAEtBC,MAAa,EACbC,MAAa,EACb;EACA,MAAMC,GAAG,GAAG,IAAI,CAACC,MAAM,CAACC,aAAa,EAAE;AACvC,EAAA,MAAMC,iBAAiB,GAAG,IAAI,CAACF,MAAM,CAACE,iBAAiB;EACvD,MAAMC,IAAI,GAAG,IAAI,CAACH,MAAM,CAACI,OAAO,EAAE;EAClCL,GAAG,CAACM,IAAI,EAAE;AACVN,EAAAA,GAAG,CAACO,SAAS,CAAC,GAAGJ,iBAAiB,CAAC;AACnCH,EAAAA,GAAG,CAACQ,SAAS,GAAG,IAAI,CAACC,KAAK,GAAGL,IAAI;EACjC,IAAI,IAAI,CAACM,QAAQ,EAAEV,GAAG,CAACW,WAAW,CAAC,IAAI,CAACD,QAAQ,CAAC;AACjDV,EAAAA,GAAG,CAACY,WAAW,GAAG,IAAI,CAACC,KAAK;EAC5Bb,GAAG,CAACc,SAAS,EAAE;EACfd,GAAG,CAACe,MAAM,CAACjB,MAAM,CAACkB,CAAC,EAAElB,MAAM,CAACmB,CAAC,CAAC;EAC9BjB,GAAG,CAACkB,MAAM,CAACnB,MAAM,CAACiB,CAAC,EAAEjB,MAAM,CAACkB,CAAC,CAAC;EAC9BjB,GAAG,CAACmB,MAAM,EAAE;EACZ,IAAI,IAAI,CAACT,QAAQ,EAAEV,GAAG,CAACW,WAAW,CAAC,EAAE,CAAC;AAEtC,EAAA,IAAI,CAACS,KAAK,CAACtB,MAAM,EAAE,EAAE,CAAC;AACtB,EAAA,IAAI,CAACsB,KAAK,CAACrB,MAAM,EAAE,CAAC,CAAC;EACrBC,GAAG,CAACqB,OAAO,EAAE;AACf;AAEO,SAASD,KAAKA,CAA2BE,KAAY,EAAEC,CAAS,EAAE;EACvE,MAAMvB,GAAG,GAAG,IAAI,CAACC,MAAM,CAACC,aAAa,EAAE;EACvC,MAAME,IAAI,GAAG,IAAI,CAACH,MAAM,CAACI,OAAO,EAAE;AAClC,EAAA,MAAMmB,IAAI,GAAG,IAAI,CAACC,KAAK,GAAGrB,IAAI;EAC9BJ,GAAG,CAACM,IAAI,EAAE;EACVN,GAAG,CAAC0B,SAAS,CAACJ,KAAK,CAACN,CAAC,EAAEM,KAAK,CAACL,CAAC,CAAC;EAC/BjB,GAAG,CAACc,SAAS,EAAE;EACfd,GAAG,CAACe,MAAM,CAAC,CAACS,IAAI,EAAE,CAACA,IAAI,CAAC;AACxBxB,EAAAA,GAAG,CAACkB,MAAM,CAACM,IAAI,EAAEA,IAAI,CAAC;AACtBxB,EAAAA,GAAG,CAACe,MAAM,CAACS,IAAI,EAAE,CAACA,IAAI,CAAC;AACvBxB,EAAAA,GAAG,CAACkB,MAAM,CAAC,CAACM,IAAI,EAAEA,IAAI,CAAC;EACvBxB,GAAG,CAACmB,MAAM,EAAE;EACZnB,GAAG,CAACqB,OAAO,EAAE;AACf;AACA,SAASM,SAASA,CAA2BC,GAAY,EAAE;EACzD,MAAM5B,GAAG,GAAG,IAAI,CAACC,MAAM,CAACC,aAAa,EAAE;AACvC,EAAA,MAAMC,iBAAiB,GAAG,IAAI,CAACF,MAAM,CAACE,iBAAiB;EACvD,MAAMC,IAAI,GAAG,IAAI,CAACH,MAAM,CAACI,OAAO,EAAE;EAClCL,GAAG,CAACM,IAAI,EAAE;AACVN,EAAAA,GAAG,CAACO,SAAS,CAAC,GAAGJ,iBAAiB,CAAC;AACnCH,EAAAA,GAAG,CAACQ,SAAS,GAAG,IAAI,CAACC,KAAK,GAAGL,IAAI;AACjCJ,EAAAA,GAAG,CAACY,WAAW,GAAG,IAAI,CAACC,KAAK;AAC5B,EAAA,KAAK,MAAMgB,IAAI,IAAID,GAAG,EAAE,IAAI,CAACR,KAAK,CAACS,IAAI,EAAE,CAAC,CAAC;EAC3C7B,GAAG,CAACqB,OAAO,EAAE;AACf;AAEO,SAASS,aAAaA,GAA2B;EACtD,MAAMC,IAAI,GAAG,EAAE;AACf,EAAA,IAAI,CAAC,IAAI,CAACC,UAAU,EAAE;AACpB,IAAA,KAAK,MAAMC,CAAC,IAAI,IAAI,CAACC,aAAa,EAAEH,IAAI,CAACI,IAAI,CAACC,IAAI,CAACC,KAAK,CAACJ,CAAC,CAAC,CAAC;AAC9D,EAAA;AACA,EAAA,IAAI,CAAC,IAAI,CAACK,UAAU,EAAE;AACpB,IAAA,KAAK,MAAMC,CAAC,IAAI,IAAI,CAACC,eAAe,EAAET,IAAI,CAACI,IAAI,CAACC,IAAI,CAACC,KAAK,CAACE,CAAC,CAAC,CAAC;AAChE,EAAA;EACA,MAAMX,GAAG,GAAGG,IAAI,CAACU,GAAG,CAAEZ,IAAI,IAAKA,IAAI,CAAC9B,MAAM,CAAC;AAC3C4B,EAAAA,SAAS,CAACe,IAAI,CAAC,IAAI,EAAEd,GAAG,CAAC;AAC3B;AAEO,SAASe,gBAAgBA,GAA2B;EACzD,IAAI,IAAI,CAACX,UAAU,EAAE;AAErB,EAAA,KAAK,MAAMC,CAAC,IAAI,IAAI,CAACC,aAAa,EAAE;IAClC,MAAM;MAAEpC,MAAM;AAAEC,MAAAA;AAAO,KAAC,GAAGqC,IAAI,CAACC,KAAK,CAACJ,CAAC,CAAC;AACxC,IAAA,MAAMW,CAAC,GAAG,IAAIC,KAAK,CAAC9C,MAAM,CAACiB,CAAC,EAAElB,MAAM,CAACmB,CAAC,CAAC;AACvC,IAAA,IAAI,CAACpB,QAAQ,CAAC+C,CAAC,EAAE7C,MAAM,CAAC;AAC1B,EAAA;AACF;AAEO,SAAS+C,kBAAkBA,GAA2B;EAC3D,IAAI,IAAI,CAACR,UAAU,EAAE;AAErB,EAAA,KAAK,MAAML,CAAC,IAAI,IAAI,CAACO,eAAe,EAAE;IACpC,MAAM;MAAE1C,MAAM;AAAEC,MAAAA;AAAO,KAAC,GAAGqC,IAAI,CAACC,KAAK,CAACJ,CAAC,CAAC;AACxC,IAAA,MAAMW,CAAC,GAAG,IAAIC,KAAK,CAAC/C,MAAM,CAACkB,CAAC,EAAEjB,MAAM,CAACkB,CAAC,CAAC;AACvC,IAAA,IAAI,CAACpB,QAAQ,CAAC+C,CAAC,EAAE7C,MAAM,CAAC;AAC1B,EAAA;AACF;;;;"}