UNPKG

fabric

Version:

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

1 lines 6.08 kB
{"version":3,"file":"draw.mjs","sources":["../../../extensions/aligning_guidelines/util/draw.ts"],"sourcesContent":["import type { Canvas } from 'fabric';\nimport { Point } from 'fabric';\nimport type { HorizontalLine, VerticalLine } from '../typedefs';\nimport { aligningLineConfig } from '../constant';\n\nfunction drawLine(canvas: Canvas, origin: Point, target: Point) {\n const { width, color } = aligningLineConfig;\n const ctx = canvas.getSelectionContext();\n const viewportTransform = canvas.viewportTransform;\n const zoom = canvas.getZoom();\n ctx.save();\n ctx.transform(...viewportTransform);\n ctx.lineWidth = width / zoom;\n ctx.strokeStyle = color;\n ctx.beginPath();\n ctx.moveTo(origin.x, origin.y);\n ctx.lineTo(target.x, target.y);\n ctx.stroke();\n drawX(ctx, zoom, origin);\n drawX(ctx, zoom, target);\n ctx.restore();\n}\n\nconst xSize = 2.4;\nfunction drawX(ctx: CanvasRenderingContext2D, zoom: number, point: Point) {\n const size = 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(canvas: Canvas, arr: Point[]) {\n const { width, color } = aligningLineConfig;\n const ctx = canvas.getSelectionContext();\n const viewportTransform = canvas.viewportTransform;\n const zoom = canvas.getZoom();\n ctx.save();\n ctx.transform(...viewportTransform);\n ctx.lineWidth = width / zoom;\n ctx.strokeStyle = color;\n for (const item of arr) drawX(ctx, zoom, item);\n ctx.restore();\n}\nexport function drawPointList(\n canvas: Canvas,\n list: Array<VerticalLine | HorizontalLine>,\n) {\n const arr = list.map((item) => {\n const isVertical = 'y2' in item;\n const x = isVertical ? item.x : item.x1;\n const y = isVertical ? item.y1 : item.y;\n return new Point(x, y);\n });\n drawPoint(canvas, arr);\n}\n\nexport function drawVerticalLine(canvas: Canvas, coords: VerticalLine) {\n const x = coords.x;\n const origin = new Point(x, coords.y1);\n const target = new Point(x, coords.y2);\n drawLine(canvas, origin, target);\n}\n\nexport function drawHorizontalLine(canvas: Canvas, coords: HorizontalLine) {\n const y = coords.y;\n const origin = new Point(coords.x1, y);\n const target = new Point(coords.x2, y);\n drawLine(canvas, origin, target);\n}\n"],"names":["drawLine","canvas","origin","target","width","color","aligningLineConfig","ctx","getSelectionContext","viewportTransform","zoom","getZoom","save","transform","lineWidth","strokeStyle","beginPath","moveTo","x","y","lineTo","stroke","drawX","restore","xSize","point","size","translate","drawPoint","arr","item","drawPointList","list","map","isVertical","x1","y1","Point","drawVerticalLine","coords","y2","drawHorizontalLine","x2"],"mappings":";;;AAKA,SAASA,QAAQA,CAACC,MAAc,EAAEC,MAAa,EAAEC,MAAa,EAAE;EAC9D,MAAM;IAAEC,KAAK;AAAEC,IAAAA,KAAAA;AAAM,GAAC,GAAGC,kBAAkB,CAAA;AAC3C,EAAA,MAAMC,GAAG,GAAGN,MAAM,CAACO,mBAAmB,EAAE,CAAA;AACxC,EAAA,MAAMC,iBAAiB,GAAGR,MAAM,CAACQ,iBAAiB,CAAA;AAClD,EAAA,MAAMC,IAAI,GAAGT,MAAM,CAACU,OAAO,EAAE,CAAA;EAC7BJ,GAAG,CAACK,IAAI,EAAE,CAAA;AACVL,EAAAA,GAAG,CAACM,SAAS,CAAC,GAAGJ,iBAAiB,CAAC,CAAA;AACnCF,EAAAA,GAAG,CAACO,SAAS,GAAGV,KAAK,GAAGM,IAAI,CAAA;EAC5BH,GAAG,CAACQ,WAAW,GAAGV,KAAK,CAAA;EACvBE,GAAG,CAACS,SAAS,EAAE,CAAA;EACfT,GAAG,CAACU,MAAM,CAACf,MAAM,CAACgB,CAAC,EAAEhB,MAAM,CAACiB,CAAC,CAAC,CAAA;EAC9BZ,GAAG,CAACa,MAAM,CAACjB,MAAM,CAACe,CAAC,EAAEf,MAAM,CAACgB,CAAC,CAAC,CAAA;EAC9BZ,GAAG,CAACc,MAAM,EAAE,CAAA;AACZC,EAAAA,KAAK,CAACf,GAAG,EAAEG,IAAI,EAAER,MAAM,CAAC,CAAA;AACxBoB,EAAAA,KAAK,CAACf,GAAG,EAAEG,IAAI,EAAEP,MAAM,CAAC,CAAA;EACxBI,GAAG,CAACgB,OAAO,EAAE,CAAA;AACf,CAAA;AAEA,MAAMC,KAAK,GAAG,GAAG,CAAA;AACjB,SAASF,KAAKA,CAACf,GAA6B,EAAEG,IAAY,EAAEe,KAAY,EAAE;AACxE,EAAA,MAAMC,IAAI,GAAGF,KAAK,GAAGd,IAAI,CAAA;EACzBH,GAAG,CAACK,IAAI,EAAE,CAAA;EACVL,GAAG,CAACoB,SAAS,CAACF,KAAK,CAACP,CAAC,EAAEO,KAAK,CAACN,CAAC,CAAC,CAAA;EAC/BZ,GAAG,CAACS,SAAS,EAAE,CAAA;EACfT,GAAG,CAACU,MAAM,CAAC,CAACS,IAAI,EAAE,CAACA,IAAI,CAAC,CAAA;AACxBnB,EAAAA,GAAG,CAACa,MAAM,CAACM,IAAI,EAAEA,IAAI,CAAC,CAAA;AACtBnB,EAAAA,GAAG,CAACU,MAAM,CAACS,IAAI,EAAE,CAACA,IAAI,CAAC,CAAA;AACvBnB,EAAAA,GAAG,CAACa,MAAM,CAAC,CAACM,IAAI,EAAEA,IAAI,CAAC,CAAA;EACvBnB,GAAG,CAACc,MAAM,EAAE,CAAA;EACZd,GAAG,CAACgB,OAAO,EAAE,CAAA;AACf,CAAA;AACA,SAASK,SAASA,CAAC3B,MAAc,EAAE4B,GAAY,EAAE;EAC/C,MAAM;IAAEzB,KAAK;AAAEC,IAAAA,KAAAA;AAAM,GAAC,GAAGC,kBAAkB,CAAA;AAC3C,EAAA,MAAMC,GAAG,GAAGN,MAAM,CAACO,mBAAmB,EAAE,CAAA;AACxC,EAAA,MAAMC,iBAAiB,GAAGR,MAAM,CAACQ,iBAAiB,CAAA;AAClD,EAAA,MAAMC,IAAI,GAAGT,MAAM,CAACU,OAAO,EAAE,CAAA;EAC7BJ,GAAG,CAACK,IAAI,EAAE,CAAA;AACVL,EAAAA,GAAG,CAACM,SAAS,CAAC,GAAGJ,iBAAiB,CAAC,CAAA;AACnCF,EAAAA,GAAG,CAACO,SAAS,GAAGV,KAAK,GAAGM,IAAI,CAAA;EAC5BH,GAAG,CAACQ,WAAW,GAAGV,KAAK,CAAA;AACvB,EAAA,KAAK,MAAMyB,IAAI,IAAID,GAAG,EAAEP,KAAK,CAACf,GAAG,EAAEG,IAAI,EAAEoB,IAAI,CAAC,CAAA;EAC9CvB,GAAG,CAACgB,OAAO,EAAE,CAAA;AACf,CAAA;AACO,SAASQ,aAAaA,CAC3B9B,MAAc,EACd+B,IAA0C,EAC1C;AACA,EAAA,MAAMH,GAAG,GAAGG,IAAI,CAACC,GAAG,CAAEH,IAAI,IAAK;AAC7B,IAAA,MAAMI,UAAU,IAAG,IAAI,IAAIJ,IAAI,CAAA,CAAA;IAC/B,MAAMZ,CAAC,GAAGgB,UAAU,GAAGJ,IAAI,CAACZ,CAAC,GAAGY,IAAI,CAACK,EAAE,CAAA;IACvC,MAAMhB,CAAC,GAAGe,UAAU,GAAGJ,IAAI,CAACM,EAAE,GAAGN,IAAI,CAACX,CAAC,CAAA;AACvC,IAAA,OAAO,IAAIkB,KAAK,CAACnB,CAAC,EAAEC,CAAC,CAAC,CAAA;AACxB,GAAC,CAAC,CAAA;AACFS,EAAAA,SAAS,CAAC3B,MAAM,EAAE4B,GAAG,CAAC,CAAA;AACxB,CAAA;AAEO,SAASS,gBAAgBA,CAACrC,MAAc,EAAEsC,MAAoB,EAAE;AACrE,EAAA,MAAMrB,CAAC,GAAGqB,MAAM,CAACrB,CAAC,CAAA;EAClB,MAAMhB,MAAM,GAAG,IAAImC,KAAK,CAACnB,CAAC,EAAEqB,MAAM,CAACH,EAAE,CAAC,CAAA;EACtC,MAAMjC,MAAM,GAAG,IAAIkC,KAAK,CAACnB,CAAC,EAAEqB,MAAM,CAACC,EAAE,CAAC,CAAA;AACtCxC,EAAAA,QAAQ,CAACC,MAAM,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAA;AAClC,CAAA;AAEO,SAASsC,kBAAkBA,CAACxC,MAAc,EAAEsC,MAAsB,EAAE;AACzE,EAAA,MAAMpB,CAAC,GAAGoB,MAAM,CAACpB,CAAC,CAAA;EAClB,MAAMjB,MAAM,GAAG,IAAImC,KAAK,CAACE,MAAM,CAACJ,EAAE,EAAEhB,CAAC,CAAC,CAAA;EACtC,MAAMhB,MAAM,GAAG,IAAIkC,KAAK,CAACE,MAAM,CAACG,EAAE,EAAEvB,CAAC,CAAC,CAAA;AACtCnB,EAAAA,QAAQ,CAACC,MAAM,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAA;AAClC;;;;"}