{"version":3,"file":"drawRoundedPolygon.mjs","sources":["../src/drawRoundedPolygon.ts"],"sourcesContent":["import type { Graphics } from 'pixijs/graphics';\n\n/**\n * Draw a regular polygon with rounded corners.\n *\n * _Note: Only available with **pixijs/graphics/extras**._\n * @method PIXI.Graphics#drawRoundedPolygon\n * @param this\n * @param {number} x - X position\n * @param {number} y - Y position\n * @param {number} radius - Polygon radius\n * @param {number} sides - Minimum value is 3\n * @param {number} corner - Corner size in pixels.\n * @param {number} rotation - Starting rotation values in radians..\n * @returns {PIXI.Graphics} This Graphics object. Good for chaining method calls\n */\nexport function drawRoundedPolygon(this: Graphics,\n    x: number,\n    y: number,\n    radius: number,\n    sides: number,\n    corner: number,\n    rotation = 0): Graphics\n{\n    sides = Math.max((sides | 0), 3);\n\n    if (corner <= 0)\n    {\n        return this.drawRegularPolygon(x, y, radius, sides, rotation);\n    }\n\n    const sideLength = (radius * Math.sin(Math.PI / sides)) - 0.001;\n\n    corner = Math.min(corner, sideLength);\n\n    const startAngle = (-1 * Math.PI / 2) + rotation;\n    const delta = (Math.PI * 2) / sides;\n    const internalAngle = ((sides - 2) * Math.PI) / sides / 2;\n\n    for (let i = 0; i < sides; i++)\n    {\n        const angle = (i * delta) + startAngle;\n        const x0 = x + (radius * Math.cos(angle));\n        const y0 = y + (radius * Math.sin(angle));\n        const a1 = angle + (Math.PI) + internalAngle;\n        const a2 = angle - (Math.PI) - internalAngle;\n        const x1 = x0 + (corner * Math.cos(a1));\n        const y1 = y0 + (corner * Math.sin(a1));\n        const x3 = x0 + (corner * Math.cos(a2));\n        const y3 = y0 + (corner * Math.sin(a2));\n\n        if (i === 0)\n        {\n            this.moveTo(x1, y1);\n        }\n        else\n        {\n            this.lineTo(x1, y1);\n        }\n        this.quadraticCurveTo(x0, y0, x3, y3);\n    }\n\n    return this.closePath();\n}\n"],"names":[],"mappings":"AAgBO,SAAA,kBAAA,CACH,GACA,CACA,EAAA,MAAA,EACA,KACA,EAAA,MAAA,EACA,WAAW,CACf,EAAA;AACI,EAAA,KAAA,GAAQ,IAAK,CAAA,GAAA,CAAK,KAAQ,GAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAE/B,EAAA,IAAI,UAAU,CACd,EAAA;AACI,IAAA,OAAO,KAAK,kBAAmB,CAAA,CAAA,EAAG,CAAG,EAAA,MAAA,EAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,GAChE;AAEA,EAAA,MAAM,aAAc,MAAS,GAAA,IAAA,CAAK,IAAI,IAAK,CAAA,EAAA,GAAK,KAAK,CAAK,GAAA,IAAA,CAAA;AAE1D,EAAS,MAAA,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,UAAU,CAAA,CAAA;AAEpC,EAAA,MAAM,UAAc,GAAA,CAAA,CAAA,GAAK,IAAK,CAAA,EAAA,GAAK,CAAK,GAAA,QAAA,CAAA;AACxC,EAAM,MAAA,KAAA,GAAS,IAAK,CAAA,EAAA,GAAK,CAAK,GAAA,KAAA,CAAA;AAC9B,EAAA,MAAM,aAAkB,GAAA,CAAA,KAAA,GAAQ,CAAK,IAAA,IAAA,CAAK,KAAM,KAAQ,GAAA,CAAA,CAAA;AAExD,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,EAAO,CAC3B,EAAA,EAAA;AACI,IAAM,MAAA,KAAA,GAAS,IAAI,KAAS,GAAA,UAAA,CAAA;AAC5B,IAAA,MAAM,EAAK,GAAA,CAAA,GAAK,MAAS,GAAA,IAAA,CAAK,IAAI,KAAK,CAAA,CAAA;AACvC,IAAA,MAAM,EAAK,GAAA,CAAA,GAAK,MAAS,GAAA,IAAA,CAAK,IAAI,KAAK,CAAA,CAAA;AACvC,IAAM,MAAA,EAAA,GAAK,KAAS,GAAA,IAAA,CAAK,EAAM,GAAA,aAAA,CAAA;AAC/B,IAAM,MAAA,EAAA,GAAK,KAAS,GAAA,IAAA,CAAK,EAAM,GAAA,aAAA,CAAA;AAC/B,IAAA,MAAM,EAAK,GAAA,EAAA,GAAM,MAAS,GAAA,IAAA,CAAK,IAAI,EAAE,CAAA,CAAA;AACrC,IAAA,MAAM,EAAK,GAAA,EAAA,GAAM,MAAS,GAAA,IAAA,CAAK,IAAI,EAAE,CAAA,CAAA;AACrC,IAAA,MAAM,EAAK,GAAA,EAAA,GAAM,MAAS,GAAA,IAAA,CAAK,IAAI,EAAE,CAAA,CAAA;AACrC,IAAA,MAAM,EAAK,GAAA,EAAA,GAAM,MAAS,GAAA,IAAA,CAAK,IAAI,EAAE,CAAA,CAAA;AAErC,IAAA,IAAI,MAAM,CACV,EAAA;AACI,MAAK,IAAA,CAAA,MAAA,CAAO,IAAI,EAAE,CAAA,CAAA;AAAA,KAGtB,MAAA;AACI,MAAK,IAAA,CAAA,MAAA,CAAO,IAAI,EAAE,CAAA,CAAA;AAAA,KACtB;AACA,IAAA,IAAA,CAAK,gBAAiB,CAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA,CAAA;AAAA,GACxC;AAEA,EAAA,OAAO,KAAK,SAAU,EAAA,CAAA;AAC1B;;;;"}