{"version":3,"file":"QuadUv.mjs","sources":["../../src/utils/QuadUv.ts"],"sourcesContent":["import { Buffer } from '../geometry/Buffer';\nimport { Geometry } from '../geometry/Geometry';\n\nimport type { Rectangle } from 'pixijs/math';\n\n/**\n * Helper class to create a quad with uvs like in v4\n * @memberof PIXI\n */\nexport class QuadUv extends Geometry\n{\n    vertexBuffer: Buffer;\n    uvBuffer: Buffer;\n\n    /** An array of vertices. */\n    vertices: Float32Array;\n\n    /** The Uvs of the quad. */\n    uvs: Float32Array;\n\n    constructor()\n    {\n        super();\n\n        this.vertices = new Float32Array([\n            -1, -1,\n            1, -1,\n            1, 1,\n            -1, 1,\n        ]);\n\n        this.uvs = new Float32Array([\n            0, 0,\n            1, 0,\n            1, 1,\n            0, 1,\n        ]);\n\n        this.vertexBuffer = new Buffer(this.vertices);\n        this.uvBuffer = new Buffer(this.uvs);\n\n        this.addAttribute('aVertexPosition', this.vertexBuffer)\n            .addAttribute('aTextureCoord', this.uvBuffer)\n            .addIndex([0, 1, 2, 0, 2, 3]);\n    }\n\n    /**\n     * Maps two Rectangle to the quad.\n     * @param targetTextureFrame - The first rectangle\n     * @param destinationFrame - The second rectangle\n     * @returns - Returns itself.\n     */\n    map(targetTextureFrame: Rectangle, destinationFrame: Rectangle): this\n    {\n        let x = 0; // destinationFrame.x / targetTextureFrame.width;\n        let y = 0; // destinationFrame.y / targetTextureFrame.height;\n\n        this.uvs[0] = x;\n        this.uvs[1] = y;\n\n        this.uvs[2] = x + (destinationFrame.width / targetTextureFrame.width);\n        this.uvs[3] = y;\n\n        this.uvs[4] = x + (destinationFrame.width / targetTextureFrame.width);\n        this.uvs[5] = y + (destinationFrame.height / targetTextureFrame.height);\n\n        this.uvs[6] = x;\n        this.uvs[7] = y + (destinationFrame.height / targetTextureFrame.height);\n\n        x = destinationFrame.x;\n        y = destinationFrame.y;\n\n        this.vertices[0] = x;\n        this.vertices[1] = y;\n\n        this.vertices[2] = x + destinationFrame.width;\n        this.vertices[3] = y;\n\n        this.vertices[4] = x + destinationFrame.width;\n        this.vertices[5] = y + destinationFrame.height;\n\n        this.vertices[6] = x;\n        this.vertices[7] = y + destinationFrame.height;\n\n        this.invalidate();\n\n        return this;\n    }\n\n    /**\n     * Legacy upload method, just marks buffers dirty.\n     * @returns - Returns itself.\n     */\n    invalidate(): this\n    {\n        this.vertexBuffer._updateID++;\n        this.uvBuffer._updateID++;\n\n        return this;\n    }\n}\n"],"names":[],"mappings":"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"}