{"version":3,"file":"RoundedRectangle.mjs","sources":["../../src/shapes/RoundedRectangle.ts"],"sourcesContent":["import { SHAPES } from '../const';\n\n/**\n * The Rounded Rectangle object is an area that has nice rounded corners, as indicated by its\n * top-left corner point (x, y) and by its width and its height and its radius.\n * @memberof PIXI\n */\nexport class RoundedRectangle\n{\n    /** @default 0 */\n    public x: number;\n\n    /** @default 0 */\n    public y: number;\n\n    /** @default 0 */\n    public width: number;\n\n    /** @default 0 */\n    public height: number;\n\n    /** @default 20 */\n    public radius: number;\n\n    /**\n     * The type of the object, mainly used to avoid `instanceof` checks\n     * @default PIXI.SHAPES.RREC\n     * @see PIXI.SHAPES\n     */\n    public readonly type: SHAPES.RREC;\n\n    /**\n     * @param x - The X coordinate of the upper-left corner of the rounded rectangle\n     * @param y - The Y coordinate of the upper-left corner of the rounded rectangle\n     * @param width - The overall width of this rounded rectangle\n     * @param height - The overall height of this rounded rectangle\n     * @param radius - Controls the radius of the rounded corners\n     */\n    constructor(x = 0, y = 0, width = 0, height = 0, radius = 20)\n    {\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n        this.radius = radius;\n        this.type = SHAPES.RREC;\n    }\n\n    /**\n     * Creates a clone of this Rounded Rectangle.\n     * @returns - A copy of the rounded rectangle.\n     */\n    clone(): RoundedRectangle\n    {\n        return new RoundedRectangle(this.x, this.y, this.width, this.height, this.radius);\n    }\n\n    /**\n     * Checks whether the x and y coordinates given are contained within this Rounded Rectangle\n     * @param x - The X coordinate of the point to test.\n     * @param y - The Y coordinate of the point to test.\n     * @returns - Whether the x/y coordinates are within this Rounded Rectangle.\n     */\n    contains(x: number, y: number): boolean\n    {\n        if (this.width <= 0 || this.height <= 0)\n        {\n            return false;\n        }\n        if (x >= this.x && x <= this.x + this.width)\n        {\n            if (y >= this.y && y <= this.y + this.height)\n            {\n                const radius = Math.max(0, Math.min(this.radius, Math.min(this.width, this.height) / 2));\n\n                if ((y >= this.y + radius && y <= this.y + this.height - radius)\n                || (x >= this.x + radius && x <= this.x + this.width - radius))\n                {\n                    return true;\n                }\n                let dx = x - (this.x + radius);\n                let dy = y - (this.y + radius);\n                const radius2 = radius * radius;\n\n                if ((dx * dx) + (dy * dy) <= radius2)\n                {\n                    return true;\n                }\n                dx = x - (this.x + this.width - radius);\n                if ((dx * dx) + (dy * dy) <= radius2)\n                {\n                    return true;\n                }\n                dy = y - (this.y + this.height - radius);\n                if ((dx * dx) + (dy * dy) <= radius2)\n                {\n                    return true;\n                }\n                dx = x - (this.x + radius);\n                if ((dx * dx) + (dy * dy) <= radius2)\n                {\n                    return true;\n                }\n            }\n        }\n\n        return false;\n    }\n\n    // #if _DEBUG\n    toString(): string\n    {\n        return `[pixijs/math:RoundedRectangle x=${this.x} y=${this.y}`\n            + `width=${this.width} height=${this.height} radius=${this.radius}]`;\n    }\n    // #endif\n}\n"],"names":[],"mappings":"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"}