{"version":3,"file":"SegmentPacker.mjs","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<number> = [];\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":["verts","j"],"mappings":"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"}