57 lines
2.0 KiB
JavaScript
57 lines
2.0 KiB
JavaScript
"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
|