Files
Foundry-VTT-Docker/resources/app/node_modules/@pixi/graphics-smooth/lib/shapes/PolyBuilder.mjs.map
2025-01-04 00:34:03 +01:00

1 line
26 KiB
Plaintext

{"version":3,"file":"PolyBuilder.mjs","sources":["../../src/shapes/PolyBuilder.ts"],"sourcesContent":["import type { IShapeBuilder } from '../core/IShapeBuilder';\r\nimport { SmoothGraphicsData } from '../core/SmoothGraphicsData';\r\nimport { BuildData } from '../core/BuildData';\r\nimport { JOINT_TYPE } from '../core/const';\r\nimport { Point, Polygon, utils } from '@pixi/core';\r\n\r\nconst tempArr: Array<number> = [];\r\n\r\nfunction fixOrientation(points: number[], hole = false)\r\n{\r\n const m = points.length;\r\n\r\n if (m < 6)\r\n {\r\n return;\r\n }\r\n\r\n let area = 0;\r\n\r\n for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2)\r\n {\r\n const x2 = points[i];\r\n const y2 = points[i + 1];\r\n\r\n area += (x2 - x1) * (y2 + y1);\r\n\r\n x1 = x2;\r\n y1 = y2;\r\n }\r\n\r\n if ((!hole && area > 0) || (hole && area <= 0))\r\n {\r\n const n = m / 2;\r\n\r\n for (let i = n + (n % 2); i < m; i += 2)\r\n {\r\n const i1 = m - i - 2;\r\n const i2 = m - i - 1;\r\n const i3 = i;\r\n const i4 = i + 1;\r\n\r\n [points[i1], points[i3]] = [points[i3], points[i1]];\r\n [points[i2], points[i4]] = [points[i4], points[i2]];\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @memberof PIXI.smooth\r\n */\r\nexport class PolyBuilder implements IShapeBuilder\r\n{\r\n path(graphicsData: SmoothGraphicsData, buildData: BuildData)\r\n {\r\n const shape = graphicsData.shape as Polygon;\r\n const points = graphicsData.points = shape.points.slice();\r\n const eps = buildData.closePointEps;\r\n const eps2 = eps * eps;\r\n\r\n if (points.length === 0)\r\n {\r\n return;\r\n }\r\n\r\n const firstPoint = new Point(points[0], points[1]);\r\n const lastPoint = new Point(points[points.length - 2], points[points.length - 1]);\r\n const closedShape = graphicsData.closeStroke = shape.closeStroke;\r\n\r\n let len = points.length;\r\n let newLen = 2;\r\n\r\n // 1. remove equal points\r\n for (let i = 2; i < len; i += 2)\r\n {\r\n const x1 = points[i - 2];\r\n const y1 = points[i - 1];\r\n const x2 = points[i];\r\n const y2 = points[i + 1];\r\n let flag = true;\r\n\r\n if (Math.abs(x1 - x2) < eps\r\n && Math.abs(y1 - y2) < eps)\r\n {\r\n flag = false;\r\n }\r\n\r\n if (flag)\r\n {\r\n points[newLen] = points[i];\r\n points[newLen + 1] = points[i + 1];\r\n newLen += 2;\r\n }\r\n }\r\n points.length = len = newLen;\r\n\r\n newLen = 2;\r\n // 2. remove middle points\r\n for (let i = 2; i + 2 < len; i += 2)\r\n {\r\n let x1 = points[i - 2];\r\n let y1 = points[i - 1];\r\n const x2 = points[i];\r\n const y2 = points[i + 1];\r\n let x3 = points[i + 2];\r\n let y3 = points[i + 3];\r\n\r\n x1 -= x2;\r\n y1 -= y2;\r\n x3 -= x2;\r\n y3 -= y2;\r\n let flag = true;\r\n\r\n if (Math.abs((x3 * y1) - (y3 * x1)) < eps2)\r\n {\r\n if ((x1 * x3) + (y1 * y3) < -eps2)\r\n {\r\n flag = false;\r\n }\r\n }\r\n\r\n if (flag)\r\n {\r\n points[newLen] = points[i];\r\n points[newLen + 1] = points[i + 1];\r\n newLen += 2;\r\n }\r\n }\r\n points[newLen] = points[len - 2];\r\n points[newLen + 1] = points[len - 1];\r\n newLen += 2;\r\n\r\n points.length = len = newLen;\r\n\r\n if (len <= 2)\r\n {\r\n // suddenly, nothing\r\n return;\r\n }\r\n\r\n if (closedShape)\r\n {\r\n // first point should be last point in closed line!\r\n const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps\r\n && Math.abs(firstPoint.y - lastPoint.y) < eps;\r\n\r\n if (closedPath)\r\n {\r\n points.pop();\r\n points.pop();\r\n }\r\n }\r\n }\r\n\r\n line(graphicsData: SmoothGraphicsData, buildData: BuildData)\r\n {\r\n const { closeStroke, points } = graphicsData;\r\n // const eps = buildData.closePointEps;\r\n // const eps2 = eps * eps;\r\n const len = points.length;\r\n // const style = graphicsData.lineStyle;\r\n\r\n if (len <= 2)\r\n {\r\n return;\r\n }\r\n const { verts, joints } = buildData;\r\n\r\n // TODO: alignment\r\n\r\n const joint = graphicsData.jointType();\r\n const cap = graphicsData.capType();\r\n let prevCap = 0;\r\n\r\n let prevX: number; let\r\n prevY: number;\r\n\r\n if (closeStroke)\r\n {\r\n prevX = points[len - 2];\r\n prevY = points[len - 1];\r\n joints.push(JOINT_TYPE.NONE);\r\n }\r\n else\r\n {\r\n prevX = points[2];\r\n prevY = points[3];\r\n if (cap === JOINT_TYPE.CAP_ROUND)\r\n {\r\n verts.push(points[0], points[1]);\r\n joints.push(JOINT_TYPE.NONE);\r\n joints.push(JOINT_TYPE.CAP_ROUND);\r\n prevCap = 0;\r\n }\r\n else\r\n {\r\n prevCap = cap;\r\n joints.push(JOINT_TYPE.NONE);\r\n }\r\n }\r\n verts.push(prevX, prevY);\r\n\r\n /* Line segments of interest where (x1,y1) forms the corner. */\r\n for (let i = 0; i < len; i += 2)\r\n {\r\n const x1 = points[i]; const\r\n y1 = points[i + 1];\r\n\r\n // let x2: number; let\r\n // y2: number;\r\n\r\n // if (i + 2 < len)\r\n // {\r\n // x2 = points[i + 2];\r\n // y2 = points[i + 3];\r\n // }\r\n // else\r\n // {\r\n // x2 = points[0];\r\n // y2 = points[1];\r\n // }\r\n\r\n // const dx = x2 - x1;\r\n // const dy = y2 - y1;\r\n // let nextX: number; let\r\n // nextY: number;\r\n\r\n let endJoint = joint;\r\n\r\n if (i + 2 >= len)\r\n {\r\n // nextX = points[2];\r\n // nextY = points[3];\r\n if (!closeStroke)\r\n {\r\n endJoint = JOINT_TYPE.NONE;\r\n }\r\n }\r\n else if (i + 4 >= len)\r\n {\r\n // nextX = points[0];\r\n // nextY = points[1];\r\n if (!closeStroke)\r\n {\r\n if (cap === JOINT_TYPE.CAP_ROUND)\r\n {\r\n endJoint = JOINT_TYPE.JOINT_CAP_ROUND;\r\n }\r\n if (cap === JOINT_TYPE.CAP_BUTT)\r\n {\r\n endJoint = JOINT_TYPE.JOINT_CAP_BUTT;\r\n }\r\n if (cap === JOINT_TYPE.CAP_SQUARE)\r\n {\r\n endJoint = JOINT_TYPE.JOINT_CAP_SQUARE;\r\n }\r\n }\r\n }\r\n // else\r\n // {\r\n // nextX = points[i + 4];\r\n // nextY = points[i + 5];\r\n // }\r\n\r\n // const dx3 = x1 - prevX;\r\n // const dy3 = y1 - prevY;\r\n\r\n endJoint += prevCap;\r\n prevCap = 0;\r\n\r\n verts.push(x1, y1);\r\n joints.push(endJoint);\r\n\r\n prevX = x1;\r\n prevY = y1;\r\n }\r\n\r\n if (closeStroke)\r\n {\r\n verts.push(points[0], points[1]);\r\n joints.push(JOINT_TYPE.NONE);\r\n verts.push(points[2], points[3]);\r\n joints.push(JOINT_TYPE.NONE);\r\n }\r\n else\r\n {\r\n verts.push(points[len - 4], points[len - 3]);\r\n joints.push(JOINT_TYPE.NONE);\r\n }\r\n }\r\n\r\n fill(graphicsData: SmoothGraphicsData, buildData: BuildData)\r\n {\r\n let points = graphicsData.points;\r\n // TODO: simplify holes too!\r\n const holes = graphicsData.holes;\r\n const eps = buildData.closePointEps;\r\n\r\n const { verts, joints } = buildData;\r\n\r\n if (points.length < 6)\r\n {\r\n return;\r\n }\r\n const holeArray = [];\r\n let len = points.length;\r\n\r\n fixOrientation(points, false);\r\n\r\n // Process holes..\r\n for (let i = 0; i < holes.length; i++)\r\n {\r\n const hole = holes[i];\r\n\r\n fixOrientation(hole.points, true);\r\n\r\n holeArray.push(points.length / 2);\r\n points = points.concat(hole.points);\r\n }\r\n\r\n // TODO: reduce size later?\r\n const pn = tempArr;\r\n\r\n if (pn.length < points.length)\r\n {\r\n pn.length = points.length;\r\n }\r\n let start = 0;\r\n\r\n for (let i = 0; i <= holeArray.length; i++)\r\n {\r\n let finish = len / 2;\r\n\r\n if (i > 0)\r\n {\r\n if (i < holeArray.length)\r\n {\r\n finish = holeArray[i];\r\n }\r\n else\r\n {\r\n finish = (points.length >> 1);\r\n }\r\n }\r\n pn[start * 2] = finish - 1;\r\n pn[((finish - 1) * 2) + 1] = start;\r\n for (let j = start; j + 1 < finish; j++)\r\n {\r\n pn[(j * 2) + 1] = j + 1;\r\n pn[(j * 2) + 2] = j;\r\n }\r\n start = finish;\r\n }\r\n\r\n // sort color\r\n graphicsData.triangles = utils.earcut(points, holeArray, 2);\r\n\r\n if (!graphicsData.triangles)\r\n {\r\n return;\r\n }\r\n\r\n if (!graphicsData.fillAA)\r\n {\r\n for (let i = 0; i < points.length; i += 2)\r\n {\r\n verts.push(points[i], points[i + 1]);\r\n joints.push(JOINT_TYPE.FILL);\r\n }\r\n\r\n return;\r\n }\r\n\r\n const { triangles } = graphicsData;\r\n\r\n len = points.length;\r\n\r\n for (let i = 0; i < triangles.length; i += 3)\r\n {\r\n // TODO: holes prev/next!!!\r\n let flag = 0;\r\n\r\n for (let j = 0; j < 3; j++)\r\n {\r\n const ind1 = triangles[i + j];\r\n const ind2 = triangles[i + ((j + 1) % 3)];\r\n\r\n if (pn[ind1 * 2] === ind2 || pn[(ind1 * 2) + 1] === ind2)\r\n {\r\n flag |= (1 << j);\r\n }\r\n }\r\n joints.push(JOINT_TYPE.FILL_EXPAND + flag);\r\n joints.push(JOINT_TYPE.NONE);\r\n joints.push(JOINT_TYPE.NONE);\r\n joints.push(JOINT_TYPE.NONE);\r\n joints.push(JOINT_TYPE.NONE);\r\n joints.push(JOINT_TYPE.NONE);\r\n }\r\n\r\n // bisect, re-using pn\r\n for (let ind = 0; ind < len / 2; ind++)\r\n {\r\n const prev = pn[ind * 2];\r\n const next = pn[(ind * 2) + 1];\r\n let nx1 = (points[(next * 2) + 1] - points[(ind * 2) + 1]); let\r\n ny1 = -(points[next * 2] - points[ind * 2]);\r\n let nx2 = (points[(ind * 2) + 1] - points[(prev * 2) + 1]); let\r\n ny2 = -(points[ind * 2] - points[prev * 2]);\r\n const D1 = Math.sqrt((nx1 * nx1) + (ny1 * ny1));\r\n\r\n nx1 /= D1;\r\n ny1 /= D1;\r\n const D2 = Math.sqrt((nx2 * nx2) + (ny2 * ny2));\r\n\r\n nx2 /= D2;\r\n ny2 /= D2;\r\n\r\n let bx = (nx1 + nx2);\r\n let by = (ny1 + ny2);\r\n const D = (bx * nx1) + (by * ny1);\r\n\r\n if (Math.abs(D) < eps)\r\n {\r\n bx = nx1;\r\n by = ny1;\r\n }\r\n else\r\n {\r\n bx /= D;\r\n by /= D;\r\n }\r\n pn[ind * 2] = bx;\r\n pn[(ind * 2) + 1] = by;\r\n }\r\n\r\n for (let i = 0; i < triangles.length; i += 3)\r\n {\r\n const prev = triangles[i];\r\n const ind = triangles[i + 1];\r\n const next = triangles[i + 2];\r\n const nx1 = (points[(next * 2) + 1] - points[(ind * 2) + 1]); const\r\n ny1 = -(points[next * 2] - points[ind * 2]);\r\n const nx2 = (points[(ind * 2) + 1] - points[(prev * 2) + 1]); const\r\n ny2 = -(points[ind * 2] - points[prev * 2]);\r\n\r\n let j1 = 1;\r\n\r\n if ((nx1 * ny2) - (nx2 * ny1) > 0.0)\r\n {\r\n j1 = 2;\r\n }\r\n\r\n for (let j = 0; j < 3; j++)\r\n {\r\n const ind = triangles[i + ((j * j1) % 3)];\r\n\r\n verts.push(points[ind * 2], points[(ind * 2) + 1]);\r\n }\r\n for (let j = 0; j < 3; j++)\r\n {\r\n const ind = triangles[i + ((j * j1) % 3)];\r\n\r\n verts.push(pn[ind * 2], pn[(ind * 2) + 1]);\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["ind"],"mappings":"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"}