Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
_updatePatternAtlas() {
const bins = [];
for (const id in this.patterns) {
bins.push(this.patterns[id].bin);
}
const {w, h} = potpack(bins);
const dst = this.atlasImage;
dst.resize({width: w || 1, height: h || 1});
for (const id in this.patterns) {
const {bin} = this.patterns[id];
const x = bin.x + padding;
const y = bin.y + padding;
const src = this.images[id].data;
const w = src.width;
const h = src.height;
RGBAImage.copy(src, dst, {x: 0, y: 0}, {x, y}, {width: w, height: h});
// Add 1 pixel wrapped padding on each side of the image.
RGBAImage.copy(src, dst, {x: 0, y: h - 1}, {x, y: y - 1}, {width: w, height: 1}); // T
constructor(icons: {[string]: StyleImage}, patterns: {[string]: StyleImage}) {
const iconPositions = {}, patternPositions = {};
this.haveRenderCallbacks = [];
const bins = [];
this.addImages(icons, iconPositions, bins);
this.addImages(patterns, patternPositions, bins);
const {w, h} = potpack(bins);
const image = new RGBAImage({width: w || 1, height: h || 1});
for (const id in icons) {
const src = icons[id];
const bin = iconPositions[id].paddedRect;
RGBAImage.copy(src.data, image, {x: 0, y: 0}, {x: bin.x + IMAGE_PADDING, y: bin.y + IMAGE_PADDING}, src.data);
}
for (const id in patterns) {
const src = patterns[id];
const bin = patternPositions[id].paddedRect;
const x = bin.x + IMAGE_PADDING,
y = bin.y + IMAGE_PADDING,
w = src.data.width,
h = src.data.height;
for (const id in glyphs) {
const src = glyphs[+id];
if (!src || src.bitmap.width === 0 || src.bitmap.height === 0) continue;
const bin = {
x: 0,
y: 0,
w: src.bitmap.width + 2 * padding,
h: src.bitmap.height + 2 * padding
};
bins.push(bin);
stackPositions[id] = {rect: bin, metrics: src.metrics};
}
}
const {w, h} = potpack(bins);
const image = new AlphaImage({width: w || 1, height: h || 1});
for (const stack in stacks) {
const glyphs = stacks[stack];
for (const id in glyphs) {
const src = glyphs[+id];
if (!src || src.bitmap.width === 0 || src.bitmap.height === 0) continue;
const bin = positions[stack][id].rect;
AlphaImage.copy(src.bitmap, image, {x: 0, y: 0}, {x: bin.x + padding, y: bin.y + padding}, src.bitmap);
}
}
this.image = image;
this.positions = positions;
}