This commit is contained in:
2025-01-04 00:34:03 +01:00
parent 41829408dc
commit 0ca14bbc19
18111 changed files with 1871397 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
"use strict";
var BitmapFontData = require("../BitmapFontData.js");
class TextFormat {
/**
* Check if resource refers to txt font data.
* @param data
* @returns - True if resource could be treated as font data, false otherwise.
*/
static test(data) {
return typeof data == "string" && data.startsWith("info face=");
}
/**
* Convert text font data to a javascript object.
* @param txt - Raw string data to be converted
* @returns - Parsed font data
*/
static parse(txt) {
const items = txt.match(/^[a-z]+\s+.+$/gm), rawData = {
info: [],
common: [],
page: [],
char: [],
chars: [],
kerning: [],
kernings: [],
distanceField: []
};
for (const i in items) {
const name = items[i].match(/^[a-z]+/gm)[0], attributeList = items[i].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm), itemData = {};
for (const i2 in attributeList) {
const split = attributeList[i2].split("="), key = split[0], strValue = split[1].replace(/"/gm, ""), floatValue = parseFloat(strValue), value = isNaN(floatValue) ? strValue : floatValue;
itemData[key] = value;
}
rawData[name].push(itemData);
}
const font = new BitmapFontData.BitmapFontData();
return rawData.info.forEach((info) => font.info.push({
face: info.face,
size: parseInt(info.size, 10)
})), rawData.common.forEach((common) => font.common.push({
lineHeight: parseInt(common.lineHeight, 10)
})), rawData.page.forEach((page) => font.page.push({
id: parseInt(page.id, 10),
file: page.file
})), rawData.char.forEach((char) => font.char.push({
id: parseInt(char.id, 10),
page: parseInt(char.page, 10),
x: parseInt(char.x, 10),
y: parseInt(char.y, 10),
width: parseInt(char.width, 10),
height: parseInt(char.height, 10),
xoffset: parseInt(char.xoffset, 10),
yoffset: parseInt(char.yoffset, 10),
xadvance: parseInt(char.xadvance, 10)
})), rawData.kerning.forEach((kerning) => font.kerning.push({
first: parseInt(kerning.first, 10),
second: parseInt(kerning.second, 10),
amount: parseInt(kerning.amount, 10)
})), rawData.distanceField.forEach((df) => font.distanceField.push({
distanceRange: parseInt(df.distanceRange, 10),
fieldType: df.fieldType
})), font;
}
}
exports.TextFormat = TextFormat;
//# sourceMappingURL=TextFormat.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,67 @@
import { BitmapFontData } from "../BitmapFontData.mjs";
class TextFormat {
/**
* Check if resource refers to txt font data.
* @param data
* @returns - True if resource could be treated as font data, false otherwise.
*/
static test(data) {
return typeof data == "string" && data.startsWith("info face=");
}
/**
* Convert text font data to a javascript object.
* @param txt - Raw string data to be converted
* @returns - Parsed font data
*/
static parse(txt) {
const items = txt.match(/^[a-z]+\s+.+$/gm), rawData = {
info: [],
common: [],
page: [],
char: [],
chars: [],
kerning: [],
kernings: [],
distanceField: []
};
for (const i in items) {
const name = items[i].match(/^[a-z]+/gm)[0], attributeList = items[i].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm), itemData = {};
for (const i2 in attributeList) {
const split = attributeList[i2].split("="), key = split[0], strValue = split[1].replace(/"/gm, ""), floatValue = parseFloat(strValue), value = isNaN(floatValue) ? strValue : floatValue;
itemData[key] = value;
}
rawData[name].push(itemData);
}
const font = new BitmapFontData();
return rawData.info.forEach((info) => font.info.push({
face: info.face,
size: parseInt(info.size, 10)
})), rawData.common.forEach((common) => font.common.push({
lineHeight: parseInt(common.lineHeight, 10)
})), rawData.page.forEach((page) => font.page.push({
id: parseInt(page.id, 10),
file: page.file
})), rawData.char.forEach((char) => font.char.push({
id: parseInt(char.id, 10),
page: parseInt(char.page, 10),
x: parseInt(char.x, 10),
y: parseInt(char.y, 10),
width: parseInt(char.width, 10),
height: parseInt(char.height, 10),
xoffset: parseInt(char.xoffset, 10),
yoffset: parseInt(char.yoffset, 10),
xadvance: parseInt(char.xadvance, 10)
})), rawData.kerning.forEach((kerning) => font.kerning.push({
first: parseInt(kerning.first, 10),
second: parseInt(kerning.second, 10),
amount: parseInt(kerning.amount, 10)
})), rawData.distanceField.forEach((df) => font.distanceField.push({
distanceRange: parseInt(df.distanceRange, 10),
fieldType: df.fieldType
})), font;
}
}
export {
TextFormat
};
//# sourceMappingURL=TextFormat.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,63 @@
"use strict";
var BitmapFontData = require("../BitmapFontData.js");
class XMLFormat {
/**
* Check if resource refers to xml font data.
* @param data
* @returns - True if resource could be treated as font data, false otherwise.
*/
static test(data) {
const xml = data;
return typeof data != "string" && "getElementsByTagName" in data && xml.getElementsByTagName("page").length && xml.getElementsByTagName("info")[0].getAttribute("face") !== null;
}
/**
* Convert the XML into BitmapFontData that we can use.
* @param xml
* @returns - Data to use for BitmapFont
*/
static parse(xml) {
const data = new BitmapFontData.BitmapFontData(), info = xml.getElementsByTagName("info"), common = xml.getElementsByTagName("common"), page = xml.getElementsByTagName("page"), char = xml.getElementsByTagName("char"), kerning = xml.getElementsByTagName("kerning"), distanceField = xml.getElementsByTagName("distanceField");
for (let i = 0; i < info.length; i++)
data.info.push({
face: info[i].getAttribute("face"),
size: parseInt(info[i].getAttribute("size"), 10)
});
for (let i = 0; i < common.length; i++)
data.common.push({
lineHeight: parseInt(common[i].getAttribute("lineHeight"), 10)
});
for (let i = 0; i < page.length; i++)
data.page.push({
id: parseInt(page[i].getAttribute("id"), 10) || 0,
file: page[i].getAttribute("file")
});
for (let i = 0; i < char.length; i++) {
const letter = char[i];
data.char.push({
id: parseInt(letter.getAttribute("id"), 10),
page: parseInt(letter.getAttribute("page"), 10) || 0,
x: parseInt(letter.getAttribute("x"), 10),
y: parseInt(letter.getAttribute("y"), 10),
width: parseInt(letter.getAttribute("width"), 10),
height: parseInt(letter.getAttribute("height"), 10),
xoffset: parseInt(letter.getAttribute("xoffset"), 10),
yoffset: parseInt(letter.getAttribute("yoffset"), 10),
xadvance: parseInt(letter.getAttribute("xadvance"), 10)
});
}
for (let i = 0; i < kerning.length; i++)
data.kerning.push({
first: parseInt(kerning[i].getAttribute("first"), 10),
second: parseInt(kerning[i].getAttribute("second"), 10),
amount: parseInt(kerning[i].getAttribute("amount"), 10)
});
for (let i = 0; i < distanceField.length; i++)
data.distanceField.push({
fieldType: distanceField[i].getAttribute("fieldType"),
distanceRange: parseInt(distanceField[i].getAttribute("distanceRange"), 10)
});
return data;
}
}
exports.XMLFormat = XMLFormat;
//# sourceMappingURL=XMLFormat.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,64 @@
import { BitmapFontData } from "../BitmapFontData.mjs";
class XMLFormat {
/**
* Check if resource refers to xml font data.
* @param data
* @returns - True if resource could be treated as font data, false otherwise.
*/
static test(data) {
const xml = data;
return typeof data != "string" && "getElementsByTagName" in data && xml.getElementsByTagName("page").length && xml.getElementsByTagName("info")[0].getAttribute("face") !== null;
}
/**
* Convert the XML into BitmapFontData that we can use.
* @param xml
* @returns - Data to use for BitmapFont
*/
static parse(xml) {
const data = new BitmapFontData(), info = xml.getElementsByTagName("info"), common = xml.getElementsByTagName("common"), page = xml.getElementsByTagName("page"), char = xml.getElementsByTagName("char"), kerning = xml.getElementsByTagName("kerning"), distanceField = xml.getElementsByTagName("distanceField");
for (let i = 0; i < info.length; i++)
data.info.push({
face: info[i].getAttribute("face"),
size: parseInt(info[i].getAttribute("size"), 10)
});
for (let i = 0; i < common.length; i++)
data.common.push({
lineHeight: parseInt(common[i].getAttribute("lineHeight"), 10)
});
for (let i = 0; i < page.length; i++)
data.page.push({
id: parseInt(page[i].getAttribute("id"), 10) || 0,
file: page[i].getAttribute("file")
});
for (let i = 0; i < char.length; i++) {
const letter = char[i];
data.char.push({
id: parseInt(letter.getAttribute("id"), 10),
page: parseInt(letter.getAttribute("page"), 10) || 0,
x: parseInt(letter.getAttribute("x"), 10),
y: parseInt(letter.getAttribute("y"), 10),
width: parseInt(letter.getAttribute("width"), 10),
height: parseInt(letter.getAttribute("height"), 10),
xoffset: parseInt(letter.getAttribute("xoffset"), 10),
yoffset: parseInt(letter.getAttribute("yoffset"), 10),
xadvance: parseInt(letter.getAttribute("xadvance"), 10)
});
}
for (let i = 0; i < kerning.length; i++)
data.kerning.push({
first: parseInt(kerning[i].getAttribute("first"), 10),
second: parseInt(kerning[i].getAttribute("second"), 10),
amount: parseInt(kerning[i].getAttribute("amount"), 10)
});
for (let i = 0; i < distanceField.length; i++)
data.distanceField.push({
fieldType: distanceField[i].getAttribute("fieldType"),
distanceRange: parseInt(distanceField[i].getAttribute("distanceRange"), 10)
});
return data;
}
}
export {
XMLFormat
};
//# sourceMappingURL=XMLFormat.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,22 @@
"use strict";
var core = require("@pixi/core"), XMLFormat = require("./XMLFormat.js");
class XMLStringFormat {
/**
* Check if resource refers to text xml font data.
* @param data
* @returns - True if resource could be treated as font data, false otherwise.
*/
static test(data) {
return typeof data == "string" && data.includes("<font>") ? XMLFormat.XMLFormat.test(core.settings.ADAPTER.parseXML(data)) : !1;
}
/**
* Convert the text XML into BitmapFontData that we can use.
* @param xmlTxt
* @returns - Data to use for BitmapFont
*/
static parse(xmlTxt) {
return XMLFormat.XMLFormat.parse(core.settings.ADAPTER.parseXML(xmlTxt));
}
}
exports.XMLStringFormat = XMLStringFormat;
//# sourceMappingURL=XMLStringFormat.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"XMLStringFormat.js","sources":["../../src/formats/XMLStringFormat.ts"],"sourcesContent":["import { settings } from '@pixi/core';\nimport { XMLFormat } from './XMLFormat';\n\nimport type { BitmapFontData } from '../BitmapFontData';\n\n/**\n * BitmapFont format that's XML-based.\n * @private\n */\nexport class XMLStringFormat\n{\n /**\n * Check if resource refers to text xml font data.\n * @param data\n * @returns - True if resource could be treated as font data, false otherwise.\n */\n static test(data: string | XMLDocument | BitmapFontData): boolean\n {\n if (typeof data === 'string' && data.includes('<font>'))\n {\n return XMLFormat.test(settings.ADAPTER.parseXML(data));\n }\n\n return false;\n }\n\n /**\n * Convert the text XML into BitmapFontData that we can use.\n * @param xmlTxt\n * @returns - Data to use for BitmapFont\n */\n static parse(xmlTxt: string): BitmapFontData\n {\n return XMLFormat.parse(settings.ADAPTER.parseXML(xmlTxt));\n }\n}\n"],"names":["XMLFormat","settings"],"mappings":";;AASO,MAAM,gBACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,OAAO,KAAK,MACZ;AACI,WAAI,OAAO,QAAS,YAAY,KAAK,SAAS,QAAQ,IAE3CA,UAAAA,UAAU,KAAKC,KAAAA,SAAS,QAAQ,SAAS,IAAI,CAAC,IAGlD;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,MAAM,QACb;AACI,WAAOD,UAAAA,UAAU,MAAMC,KAAA,SAAS,QAAQ,SAAS,MAAM,CAAC;AAAA,EAC5D;AACJ;;"}

View File

@@ -0,0 +1,24 @@
import { settings } from "@pixi/core";
import { XMLFormat } from "./XMLFormat.mjs";
class XMLStringFormat {
/**
* Check if resource refers to text xml font data.
* @param data
* @returns - True if resource could be treated as font data, false otherwise.
*/
static test(data) {
return typeof data == "string" && data.includes("<font>") ? XMLFormat.test(settings.ADAPTER.parseXML(data)) : !1;
}
/**
* Convert the text XML into BitmapFontData that we can use.
* @param xmlTxt
* @returns - Data to use for BitmapFont
*/
static parse(xmlTxt) {
return XMLFormat.parse(settings.ADAPTER.parseXML(xmlTxt));
}
}
export {
XMLStringFormat
};
//# sourceMappingURL=XMLStringFormat.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"XMLStringFormat.mjs","sources":["../../src/formats/XMLStringFormat.ts"],"sourcesContent":["import { settings } from '@pixi/core';\nimport { XMLFormat } from './XMLFormat';\n\nimport type { BitmapFontData } from '../BitmapFontData';\n\n/**\n * BitmapFont format that's XML-based.\n * @private\n */\nexport class XMLStringFormat\n{\n /**\n * Check if resource refers to text xml font data.\n * @param data\n * @returns - True if resource could be treated as font data, false otherwise.\n */\n static test(data: string | XMLDocument | BitmapFontData): boolean\n {\n if (typeof data === 'string' && data.includes('<font>'))\n {\n return XMLFormat.test(settings.ADAPTER.parseXML(data));\n }\n\n return false;\n }\n\n /**\n * Convert the text XML into BitmapFontData that we can use.\n * @param xmlTxt\n * @returns - Data to use for BitmapFont\n */\n static parse(xmlTxt: string): BitmapFontData\n {\n return XMLFormat.parse(settings.ADAPTER.parseXML(xmlTxt));\n }\n}\n"],"names":[],"mappings":";;AASO,MAAM,gBACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,OAAO,KAAK,MACZ;AACI,WAAI,OAAO,QAAS,YAAY,KAAK,SAAS,QAAQ,IAE3C,UAAU,KAAK,SAAS,QAAQ,SAAS,IAAI,CAAC,IAGlD;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,MAAM,QACb;AACI,WAAO,UAAU,MAAM,SAAS,QAAQ,SAAS,MAAM,CAAC;AAAA,EAC5D;AACJ;"}

View File

@@ -0,0 +1,18 @@
"use strict";
var TextFormat = require("./TextFormat.js"), XMLFormat = require("./XMLFormat.js"), XMLStringFormat = require("./XMLStringFormat.js");
const formats = [
TextFormat.TextFormat,
XMLFormat.XMLFormat,
XMLStringFormat.XMLStringFormat
];
function autoDetectFormat(data) {
for (let i = 0; i < formats.length; i++)
if (formats[i].test(data))
return formats[i];
return null;
}
exports.TextFormat = TextFormat.TextFormat;
exports.XMLFormat = XMLFormat.XMLFormat;
exports.XMLStringFormat = XMLStringFormat.XMLStringFormat;
exports.autoDetectFormat = autoDetectFormat;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sources":["../../src/formats/index.ts"],"sourcesContent":["import { TextFormat } from './TextFormat';\nimport { XMLFormat } from './XMLFormat';\nimport { XMLStringFormat } from './XMLStringFormat';\n\nimport type { BitmapFontData } from '../BitmapFontData';\n\n// Registered formats, maybe make this extensible in the future?\nconst formats = [\n TextFormat,\n XMLFormat,\n XMLStringFormat,\n] as const;\n\n/**\n * Auto-detect BitmapFont parsing format based on data.\n * @private\n * @param {any} data - Data to detect format\n * @returns {any} Format or null\n */\nexport function autoDetectFormat(data: string | XMLDocument | BitmapFontData): typeof formats[number] | null\n{\n for (let i = 0; i < formats.length; i++)\n {\n if (formats[i].test(data))\n {\n return formats[i];\n }\n }\n\n return null;\n}\n\nexport type { IBitmapFontRawData } from './TextFormat';\nexport { TextFormat, XMLFormat, XMLStringFormat };\n"],"names":["TextFormat","XMLFormat","XMLStringFormat"],"mappings":";;AAOA,MAAM,UAAU;AAAA,EACZA,WAAA;AAAA,EACAC,UAAA;AAAA,EACAC,gBAAA;AACJ;AAQO,SAAS,iBAAiB,MACjC;AACI,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ;AAEhC,QAAI,QAAQ,CAAC,EAAE,KAAK,IAAI;AAEpB,aAAO,QAAQ,CAAC;AAIjB,SAAA;AACX;;;;;"}

View File

@@ -0,0 +1,21 @@
import { TextFormat } from "./TextFormat.mjs";
import { XMLFormat } from "./XMLFormat.mjs";
import { XMLStringFormat } from "./XMLStringFormat.mjs";
const formats = [
TextFormat,
XMLFormat,
XMLStringFormat
];
function autoDetectFormat(data) {
for (let i = 0; i < formats.length; i++)
if (formats[i].test(data))
return formats[i];
return null;
}
export {
TextFormat,
XMLFormat,
XMLStringFormat,
autoDetectFormat
};
//# sourceMappingURL=index.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.mjs","sources":["../../src/formats/index.ts"],"sourcesContent":["import { TextFormat } from './TextFormat';\nimport { XMLFormat } from './XMLFormat';\nimport { XMLStringFormat } from './XMLStringFormat';\n\nimport type { BitmapFontData } from '../BitmapFontData';\n\n// Registered formats, maybe make this extensible in the future?\nconst formats = [\n TextFormat,\n XMLFormat,\n XMLStringFormat,\n] as const;\n\n/**\n * Auto-detect BitmapFont parsing format based on data.\n * @private\n * @param {any} data - Data to detect format\n * @returns {any} Format or null\n */\nexport function autoDetectFormat(data: string | XMLDocument | BitmapFontData): typeof formats[number] | null\n{\n for (let i = 0; i < formats.length; i++)\n {\n if (formats[i].test(data))\n {\n return formats[i];\n }\n }\n\n return null;\n}\n\nexport type { IBitmapFontRawData } from './TextFormat';\nexport { TextFormat, XMLFormat, XMLStringFormat };\n"],"names":[],"mappings":";;;AAOA,MAAM,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACJ;AAQO,SAAS,iBAAiB,MACjC;AACI,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ;AAEhC,QAAI,QAAQ,CAAC,EAAE,KAAK,IAAI;AAEpB,aAAO,QAAQ,CAAC;AAIjB,SAAA;AACX;"}