1 line
11 KiB
Plaintext
1 line
11 KiB
Plaintext
{"version":3,"file":"SVGToGraphicsPath.mjs","sources":["../../../../../src/scene/graphics/shared/svg/SVGToGraphicsPath.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport parse from 'parse-svg-path';\nimport { warn } from '../../../../utils/logging/warn';\n\nimport type { GraphicsPath } from '../path/GraphicsPath';\n\ninterface SubPath\n{\n startX: number;\n startY: number;\n}\n\n// TODO optimise and cache the paths?\nexport function SVGToGraphicsPath(svgPath: string, path: GraphicsPath): GraphicsPath\n{\n const commands = parse(svgPath);\n\n const subpaths: SubPath[] = [];\n let currentSubPath: SubPath | null = null;\n\n let lastX = 0;\n let lastY = 0;\n\n for (let i = 0; i < commands.length; i++)\n {\n const command = commands[i];\n const type = command[0];\n const data = command; // alias for 1-based referencing\n\n switch (type)\n {\n case 'M':\n lastX = data[1];\n lastY = data[2];\n\n path.moveTo(lastX, lastY);\n break;\n case 'm':\n\n lastX += data[1];\n lastY += data[2];\n\n path.moveTo(lastX, lastY);\n break;\n case 'H':\n lastX = data[1];\n\n path.lineTo(lastX, lastY);\n break;\n case 'h':\n lastX += data[1];\n\n path.lineTo(lastX, lastY);\n break;\n case 'V':\n lastY = data[1];\n\n path.lineTo(lastX, lastY);\n break;\n case 'v':\n lastY += data[1];\n\n path.lineTo(lastX, lastY);\n break;\n case 'L':\n lastX = data[1];\n lastY = data[2];\n\n path.lineTo(lastX, lastY);\n break;\n case 'l':\n lastX += data[1];\n lastY += data[2];\n\n path.lineTo(lastX, lastY);\n break;\n case 'C':\n\n lastX = data[5];\n lastY = data[6];\n\n path.bezierCurveTo(\n data[1], data[2],\n data[3], data[4],\n lastX, lastY\n );\n break;\n case 'c':\n path.bezierCurveTo(\n lastX + data[1], lastY + data[2],\n lastX + data[3], lastY + data[4],\n lastX + data[5], lastY + data[6]\n );\n\n lastX += data[5];\n lastY += data[6];\n break;\n case 'S':\n lastX = data[3];\n lastY = data[4];\n\n path.bezierCurveToShort(\n data[1], data[2],\n lastX, lastY\n );\n break;\n case 's':\n path.bezierCurveToShort(\n lastX + data[1], lastY + data[2],\n lastX + data[3], lastY + data[4],\n );\n\n lastX += data[3];\n lastY += data[4];\n break;\n case 'Q':\n lastX = data[3];\n lastY = data[4];\n\n path.quadraticCurveTo(\n data[1], data[2],\n lastX, lastY\n );\n break;\n case 'q':\n path.quadraticCurveTo(\n lastX + data[1], lastY + data[2],\n lastX + data[3], lastY + data[4]\n );\n\n lastX += data[3];\n lastY += data[4];\n break;\n case 'T':\n lastX = data[1];\n lastY = data[2];\n\n path.quadraticCurveToShort(\n lastX, lastY\n );\n break;\n case 't':\n lastX += data[1];\n lastY += data[2];\n\n path.quadraticCurveToShort(\n lastX, lastY\n );\n break;\n case 'A':\n lastX = data[6];\n lastY = data[7];\n\n path.arcToSvg(\n data[1],\n data[2],\n data[3],\n data[4],\n data[5],\n lastX, lastY\n );\n break;\n case 'a':\n lastX += data[6];\n lastY += data[7];\n\n path.arcToSvg(\n data[1],\n data[2],\n data[3],\n data[4],\n data[5],\n lastX, lastY\n );\n break;\n case 'Z':\n case 'z':\n path.closePath();\n if (subpaths.length > 0)\n {\n currentSubPath = subpaths.pop();\n if (currentSubPath)\n {\n lastX = currentSubPath.startX;\n lastY = currentSubPath.startY;\n }\n else\n {\n lastX = 0;\n lastY = 0;\n }\n }\n currentSubPath = null;\n break;\n default:\n // #if _DEBUG\n warn(`Unknown SVG path command: ${type}`);\n // #endif\n }\n\n if (type !== 'Z' && type !== 'z')\n {\n if (currentSubPath === null)\n {\n currentSubPath = { startX: lastX, startY: lastY };\n subpaths.push(currentSubPath);\n }\n }\n }\n\n return path;\n}\n"],"names":[],"mappings":"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"} |