{"version":3,"file":"XMLFormat.mjs","sources":["../../src/formats/XMLFormat.ts"],"sourcesContent":["import { BitmapFontData } from '../BitmapFontData';\n\n/**\n * BitmapFont format that's XML-based.\n * @private\n */\nexport class XMLFormat\n{\n    /**\n     * Check if resource refers to xml font data.\n     * @param data\n     * @returns - True if resource could be treated as font data, false otherwise.\n     */\n    static test(data: unknown): boolean\n    {\n        const xml = data as Document;\n\n        return 'getElementsByTagName' in xml\n            && xml.getElementsByTagName('page').length\n            && xml.getElementsByTagName('info')[0].getAttribute('face') !== null;\n    }\n\n    /**\n     * Convert the XML into BitmapFontData that we can use.\n     * @param xml\n     * @returns - Data to use for BitmapFont\n     */\n    static parse(xml: Document): BitmapFontData\n    {\n        const data = new BitmapFontData();\n        const info = xml.getElementsByTagName('info');\n        const common = xml.getElementsByTagName('common');\n        const page = xml.getElementsByTagName('page');\n        const char = xml.getElementsByTagName('char');\n        const kerning = xml.getElementsByTagName('kerning');\n        const distanceField = xml.getElementsByTagName('distanceField');\n\n        for (let i = 0; i < info.length; i++)\n        {\n            data.info.push({\n                face: info[i].getAttribute('face'),\n                size: parseInt(info[i].getAttribute('size'), 10),\n            });\n        }\n\n        for (let i = 0; i < common.length; i++)\n        {\n            data.common.push({\n                lineHeight: parseInt(common[i].getAttribute('lineHeight'), 10),\n            });\n        }\n\n        for (let i = 0; i < page.length; i++)\n        {\n            data.page.push({\n                id: parseInt(page[i].getAttribute('id'), 10) || 0,\n                file: page[i].getAttribute('file'),\n            });\n        }\n\n        for (let i = 0; i < char.length; i++)\n        {\n            const letter = char[i];\n\n            data.char.push({\n                id: parseInt(letter.getAttribute('id'), 10),\n                page: parseInt(letter.getAttribute('page'), 10) || 0,\n                x: parseInt(letter.getAttribute('x'), 10),\n                y: parseInt(letter.getAttribute('y'), 10),\n                width: parseInt(letter.getAttribute('width'), 10),\n                height: parseInt(letter.getAttribute('height'), 10),\n                xoffset: parseInt(letter.getAttribute('xoffset'), 10),\n                yoffset: parseInt(letter.getAttribute('yoffset'), 10),\n                xadvance: parseInt(letter.getAttribute('xadvance'), 10),\n            });\n        }\n\n        for (let i = 0; i < kerning.length; i++)\n        {\n            data.kerning.push({\n                first: parseInt(kerning[i].getAttribute('first'), 10),\n                second: parseInt(kerning[i].getAttribute('second'), 10),\n                amount: parseInt(kerning[i].getAttribute('amount'), 10),\n            });\n        }\n\n        for (let i = 0; i < distanceField.length; i++)\n        {\n            data.distanceField.push({\n                fieldType: distanceField[i].getAttribute('fieldType'),\n                distanceRange: parseInt(distanceField[i].getAttribute('distanceRange'), 10),\n            });\n        }\n\n        return data;\n    }\n}\n"],"names":[],"mappings":"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"}