securityos/node_modules/xterm-addon-webgl/out/atlas/CharAtlasCache.js

57 lines
2.0 KiB
JavaScript
Raw Permalink Normal View History

2024-09-06 15:32:35 +00:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var CharAtlasUtils_1 = require("./CharAtlasUtils");
var WebglCharAtlas_1 = require("./WebglCharAtlas");
var charAtlasCache = [];
function acquireCharAtlas(terminal, colors, scaledCharWidth, scaledCharHeight) {
var newConfig = CharAtlasUtils_1.generateConfig(scaledCharWidth, scaledCharHeight, terminal, colors);
for (var i = 0; i < charAtlasCache.length; i++) {
var entry = charAtlasCache[i];
var ownedByIndex = entry.ownedBy.indexOf(terminal);
if (ownedByIndex >= 0) {
if (CharAtlasUtils_1.configEquals(entry.config, newConfig)) {
return entry.atlas;
}
if (entry.ownedBy.length === 1) {
entry.atlas.dispose();
charAtlasCache.splice(i, 1);
}
else {
entry.ownedBy.splice(ownedByIndex, 1);
}
break;
}
}
for (var i = 0; i < charAtlasCache.length; i++) {
var entry = charAtlasCache[i];
if (CharAtlasUtils_1.configEquals(entry.config, newConfig)) {
entry.ownedBy.push(terminal);
return entry.atlas;
}
}
var newEntry = {
atlas: new WebglCharAtlas_1.WebglCharAtlas(document, newConfig),
config: newConfig,
ownedBy: [terminal]
};
charAtlasCache.push(newEntry);
return newEntry.atlas;
}
exports.acquireCharAtlas = acquireCharAtlas;
function removeTerminalFromCache(terminal) {
for (var i = 0; i < charAtlasCache.length; i++) {
var index = charAtlasCache[i].ownedBy.indexOf(terminal);
if (index !== -1) {
if (charAtlasCache[i].ownedBy.length === 1) {
charAtlasCache[i].atlas.dispose();
charAtlasCache.splice(i, 1);
}
else {
charAtlasCache[i].ownedBy.splice(index, 1);
}
break;
}
}
}
exports.removeTerminalFromCache = removeTerminalFromCache;
//# sourceMappingURL=CharAtlasCache.js.map