sdfsdfs
This commit is contained in:
76
node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLParser.js
generated
vendored
Normal file
76
node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLParser.js
generated
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
'use strict';
|
||||
|
||||
"use strict";
|
||||
const bitmapFontXMLParser = {
|
||||
test(data) {
|
||||
const xml = data;
|
||||
return typeof xml !== "string" && "getElementsByTagName" in xml && xml.getElementsByTagName("page").length && xml.getElementsByTagName("info")[0].getAttribute("face") !== null;
|
||||
},
|
||||
parse(xml) {
|
||||
const data = {
|
||||
chars: {},
|
||||
pages: [],
|
||||
lineHeight: 0,
|
||||
fontSize: 0,
|
||||
fontFamily: "",
|
||||
distanceField: null,
|
||||
baseLineOffset: 0
|
||||
};
|
||||
const info = xml.getElementsByTagName("info")[0];
|
||||
const common = xml.getElementsByTagName("common")[0];
|
||||
const distanceField = xml.getElementsByTagName("distanceField")[0];
|
||||
if (distanceField) {
|
||||
data.distanceField = {
|
||||
type: distanceField.getAttribute("fieldType"),
|
||||
range: parseInt(distanceField.getAttribute("distanceRange"), 10)
|
||||
};
|
||||
}
|
||||
const page = xml.getElementsByTagName("page");
|
||||
const char = xml.getElementsByTagName("char");
|
||||
const kerning = xml.getElementsByTagName("kerning");
|
||||
data.fontSize = parseInt(info.getAttribute("size"), 10);
|
||||
data.fontFamily = info.getAttribute("face");
|
||||
data.lineHeight = parseInt(common.getAttribute("lineHeight"), 10);
|
||||
for (let i = 0; i < page.length; i++) {
|
||||
data.pages.push({
|
||||
id: parseInt(page[i].getAttribute("id"), 10) || 0,
|
||||
file: page[i].getAttribute("file")
|
||||
});
|
||||
}
|
||||
const map = {};
|
||||
data.baseLineOffset = data.lineHeight - parseInt(common.getAttribute("base"), 10);
|
||||
for (let i = 0; i < char.length; i++) {
|
||||
const charNode = char[i];
|
||||
const id = parseInt(charNode.getAttribute("id"), 10);
|
||||
let letter = charNode.getAttribute("letter") ?? charNode.getAttribute("char") ?? String.fromCharCode(id);
|
||||
if (letter === "space")
|
||||
letter = " ";
|
||||
map[id] = letter;
|
||||
data.chars[letter] = {
|
||||
id,
|
||||
// texture deets..
|
||||
page: parseInt(charNode.getAttribute("page"), 10) || 0,
|
||||
x: parseInt(charNode.getAttribute("x"), 10),
|
||||
y: parseInt(charNode.getAttribute("y"), 10),
|
||||
width: parseInt(charNode.getAttribute("width"), 10),
|
||||
height: parseInt(charNode.getAttribute("height"), 10),
|
||||
// render deets..
|
||||
xOffset: parseInt(charNode.getAttribute("xoffset"), 10),
|
||||
yOffset: parseInt(charNode.getAttribute("yoffset"), 10),
|
||||
// + baseLineOffset,
|
||||
xAdvance: parseInt(charNode.getAttribute("xadvance"), 10),
|
||||
kerning: {}
|
||||
};
|
||||
}
|
||||
for (let i = 0; i < kerning.length; i++) {
|
||||
const first = parseInt(kerning[i].getAttribute("first"), 10);
|
||||
const second = parseInt(kerning[i].getAttribute("second"), 10);
|
||||
const amount = parseInt(kerning[i].getAttribute("amount"), 10);
|
||||
data.chars[map[second]].kerning[map[first]] = amount;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
};
|
||||
|
||||
exports.bitmapFontXMLParser = bitmapFontXMLParser;
|
||||
//# sourceMappingURL=bitmapFontXMLParser.js.map
|
Reference in New Issue
Block a user