{"version":3,"file":"SegmentPacker.js","sources":["../../src/core/SegmentPacker.ts"],"sourcesContent":["import { BuildData } from './BuildData';\nimport { JOINT_TYPE } from './const';\n\n/**\n * @memberof PIXI.smooth\n */\nexport class SegmentPacker\n{\n static vertsByJoint: Array = [];\n\n strideFloats = 12;\n\n updateBufferSize(jointStart: number, jointLen: number, triangles: number, target: BuildData): void\n {\n const { joints } = target;\n let foundTriangle = false;\n\n let vertexSize = 0;\n let indexSize = 0;\n\n for (let i = jointStart; i < jointStart + jointLen; i++)\n {\n const prevCap = joints[i] & ~31;\n const joint = joints[i] & 31;\n\n if (joint === JOINT_TYPE.FILL)\n {\n foundTriangle = true;\n vertexSize++;\n continue;\n }\n\n if (joint >= JOINT_TYPE.FILL_EXPAND)\n {\n vertexSize += 3;\n indexSize += 3;\n continue;\n }\n\n const vs = SegmentPacker.vertsByJoint[joint] + SegmentPacker.vertsByJoint[prevCap];\n\n if (vs >= 4)\n {\n vertexSize += vs;\n indexSize += 6 + (3 * Math.max(vs - 6, 0));\n }\n }\n if (foundTriangle)\n {\n indexSize += triangles;\n }\n\n target.vertexSize += vertexSize;\n target.indexSize += indexSize;\n }\n\n bufferPos = 0;\n indexPos = 0;\n bufFloat: Float32Array;\n bufUint: Uint32Array;\n indices: Uint16Array;\n buildData: BuildData;\n\n beginPack(buildData: BuildData, bufFloat: Float32Array, bufUint: Uint32Array,\n indices: Uint16Array, bufferPos = 0, indexPos = 0): void\n {\n this.buildData = buildData;\n this.bufFloat = bufFloat;\n this.bufUint = bufUint;\n this.indices = indices;\n this.bufferPos = bufferPos;\n this.indexPos = indexPos;\n }\n\n endPack(): void\n {\n this.buildData = null;\n this.bufFloat = null;\n this.bufUint = null;\n this.indices = null;\n }\n\n packInterleavedGeometry(jointStart: number, jointLen: number, triangles: number[],\n lineStyle: number, color: number): void\n {\n const { bufFloat, bufUint, indices, buildData, strideFloats } = this;\n const { joints, verts } = buildData;\n\n let bufPos = this.bufferPos;\n let indPos = this.indexPos;\n let index = this.bufferPos / this.strideFloats;\n\n // eslint-disable-next-line max-len\n let x1: number; let y1: number;\n let x2: number; let y2: number;\n let prevX: number; let prevY: number;\n let nextX: number; let nextY: number;\n // let type: number;\n let hasTriangle = false;\n\n let travel = 0;\n\n for (let j = jointStart; j < jointStart + jointLen; j++)\n {\n const fullJoint = joints[j];\n const prevCap = joints[j] & ~31;\n const joint = joints[j] & 31;\n\n if (joint === JOINT_TYPE.FILL)\n {\n // just one vertex\n hasTriangle = true;\n x1 = verts[(j * 2)];\n y1 = verts[(j * 2) + 1];\n bufFloat[bufPos] = x1;\n bufFloat[bufPos + 1] = y1;\n bufFloat[bufPos + 2] = x1;\n bufFloat[bufPos + 3] = y1;\n bufFloat[bufPos + 4] = x1;\n bufFloat[bufPos + 5] = y1;\n bufFloat[bufPos + 6] = x1;\n bufFloat[bufPos + 7] = y1;\n bufFloat[bufPos + 8] = travel;\n bufFloat[bufPos + 9] = 16 * joint;\n bufFloat[bufPos + 10] = lineStyle;\n bufUint[bufPos + 11] = color;\n bufPos += strideFloats;\n continue;\n }\n\n if (joint >= JOINT_TYPE.FILL_EXPAND)\n {\n prevX = verts[j * 2];\n prevY = verts[(j * 2) + 1];\n x1 = verts[(j * 2) + 2];\n y1 = verts[(j * 2) + 3];\n x2 = verts[(j * 2) + 4];\n y2 = verts[(j * 2) + 5];\n\n const bis = j + 3;\n\n for (let i = 0; i < 3; i++)\n {\n bufFloat[bufPos] = prevX;\n bufFloat[bufPos + 1] = prevY;\n bufFloat[bufPos + 2] = x1;\n bufFloat[bufPos + 3] = y1;\n bufFloat[bufPos + 4] = x2;\n bufFloat[bufPos + 5] = y2;\n bufFloat[bufPos + 6] = verts[(bis + i) * 2];\n bufFloat[bufPos + 7] = verts[((bis + i) * 2) + 1];\n\n bufFloat[bufPos + 8] = travel;\n bufFloat[bufPos + 9] = (16 * fullJoint) + i;\n bufFloat[bufPos + 10] = lineStyle;\n bufUint[bufPos + 11] = color;\n bufPos += strideFloats;\n }\n\n indices[indPos] = index;\n indices[indPos + 1] = index + 1;\n indices[indPos + 2] = index + 2;\n indPos += 3;\n index += 3;\n continue;\n }\n\n const vs = SegmentPacker.vertsByJoint[joint] + SegmentPacker.vertsByJoint[prevCap];\n\n if (vs === 0)\n {\n continue;\n }\n x1 = verts[j * 2];\n y1 = verts[(j * 2) + 1];\n x2 = verts[(j * 2) + 2];\n y2 = verts[(j * 2) + 3];\n // TODO: caps here\n prevX = verts[(j * 2) - 2];\n prevY = verts[(j * 2) - 1];\n\n const dist = Math.sqrt(((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1)));\n\n if (SegmentPacker.vertsByJoint[joint] === 0)\n {\n travel -= dist;\n }\n\n if ((joint & ~2) !== JOINT_TYPE.JOINT_CAP_BUTT)\n {\n nextX = verts[(j * 2) + 4];\n nextY = verts[(j * 2) + 5];\n }\n else\n {\n nextX = x1;\n nextY = y1;\n }\n // type = joint;\n\n for (let i = 0; i < vs; i++)\n {\n bufFloat[bufPos] = prevX;\n bufFloat[bufPos + 1] = prevY;\n bufFloat[bufPos + 2] = x1;\n bufFloat[bufPos + 3] = y1;\n bufFloat[bufPos + 4] = x2;\n bufFloat[bufPos + 5] = y2;\n bufFloat[bufPos + 6] = nextX;\n bufFloat[bufPos + 7] = nextY;\n bufFloat[bufPos + 8] = travel;\n bufFloat[bufPos + 9] = (16 * fullJoint) + i;\n bufFloat[bufPos + 10] = lineStyle;\n bufUint[bufPos + 11] = color;\n bufPos += strideFloats;\n }\n\n travel += dist;\n\n indices[indPos] = index;\n indices[indPos + 1] = index + 1;\n indices[indPos + 2] = index + 2;\n indices[indPos + 3] = index;\n indices[indPos + 4] = index + 2;\n indices[indPos + 5] = index + 3;\n indPos += 6;\n for (let j = 5; j + 1 < vs; j++)\n {\n indices[indPos] = index + 4;\n indices[indPos + 1] = index + j;\n indices[indPos + 2] = index + j + 1;\n indPos += 3;\n }\n index += vs;\n }\n\n if (hasTriangle)\n {\n for (let i = 0; i < triangles.length; i++)\n {\n indices[indPos + i] = triangles[i] + index;\n }\n indPos += triangles.length;\n }\n\n this.bufferPos = bufPos;\n this.indexPos = indPos;\n }\n}\n\nconst verts = SegmentPacker.vertsByJoint;\n\nfor (let i = 0; i < 256; i++)\n{ verts.push(0); }\n// simple fill\nverts[JOINT_TYPE.FILL] = 1;\n\nfor (let i = 0; i < 8; i++)\n{\n verts[JOINT_TYPE.FILL_EXPAND + i] = 3;\n}\n\n// no caps for now\nverts[JOINT_TYPE.JOINT_BEVEL] = 4 + 5;\nverts[JOINT_TYPE.JOINT_BEVEL + 1] = 4 + 5;\nverts[JOINT_TYPE.JOINT_BEVEL + 2] = 4 + 5;\nverts[JOINT_TYPE.JOINT_BEVEL + 3] = 4 + 5;\nverts[JOINT_TYPE.JOINT_ROUND] = 4 + 5;\nverts[JOINT_TYPE.JOINT_ROUND + 1] = 4 + 5;\nverts[JOINT_TYPE.JOINT_ROUND + 2] = 4 + 5;\nverts[JOINT_TYPE.JOINT_ROUND + 3] = 4 + 5;\nverts[JOINT_TYPE.JOINT_MITER] = 4 + 5;\nverts[JOINT_TYPE.JOINT_MITER + 1] = 4 + 5;\nverts[JOINT_TYPE.JOINT_MITER + 2] = 4;\nverts[JOINT_TYPE.JOINT_MITER + 3] = 4;\nverts[JOINT_TYPE.JOINT_CAP_BUTT] = 4;\nverts[JOINT_TYPE.JOINT_CAP_BUTT + 1] = 4;\nverts[JOINT_TYPE.JOINT_CAP_SQUARE] = 4;\nverts[JOINT_TYPE.JOINT_CAP_SQUARE + 1] = 4;\nverts[JOINT_TYPE.JOINT_CAP_ROUND] = 4 + 5;\nverts[JOINT_TYPE.JOINT_CAP_ROUND + 1] = 4 + 5;\n\nverts[JOINT_TYPE.CAP_ROUND] = 4;\n"],"names":["JOINT_TYPE","verts","j"],"mappings":"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"}