Ensure CharMeasure exposes integers
This commit is contained in:
@@ -28,8 +28,8 @@ export abstract class BaseRenderLayer implements IRenderLayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public resize(terminal: ITerminal, canvasWidth: number, canvasHeight: number, charSizeChanged: boolean): void {
|
public resize(terminal: ITerminal, canvasWidth: number, canvasHeight: number, charSizeChanged: boolean): void {
|
||||||
this.scaledCharWidth = Math.ceil(terminal.charMeasure.width) * window.devicePixelRatio;
|
this.scaledCharWidth = terminal.charMeasure.width * window.devicePixelRatio;
|
||||||
this.scaledCharHeight = Math.ceil(terminal.charMeasure.height) * window.devicePixelRatio;
|
this.scaledCharHeight = terminal.charMeasure.height * window.devicePixelRatio;
|
||||||
this._canvas.width = canvasWidth * window.devicePixelRatio;
|
this._canvas.width = canvasWidth * window.devicePixelRatio;
|
||||||
this._canvas.height = canvasHeight * window.devicePixelRatio;
|
this._canvas.height = canvasHeight * window.devicePixelRatio;
|
||||||
this._canvas.style.width = `${canvasWidth}px`;
|
this._canvas.style.width = `${canvasWidth}px`;
|
||||||
@@ -43,7 +43,7 @@ export abstract class BaseRenderLayer implements IRenderLayer {
|
|||||||
BaseRenderLayer._charAtlas = null;
|
BaseRenderLayer._charAtlas = null;
|
||||||
BaseRenderLayer._charAtlasCharWidth = terminal.charMeasure.width;
|
BaseRenderLayer._charAtlasCharWidth = terminal.charMeasure.width;
|
||||||
BaseRenderLayer._charAtlasCharHeight = terminal.charMeasure.height;
|
BaseRenderLayer._charAtlasCharHeight = terminal.charMeasure.height;
|
||||||
BaseRenderLayer._charAtlasGenerator.generate(terminal, terminal.charMeasure.width, terminal.charMeasure.height).then(bitmap => {
|
BaseRenderLayer._charAtlasGenerator.generate(terminal, this.scaledCharWidth, this.scaledCharHeight).then(bitmap => {
|
||||||
BaseRenderLayer._charAtlas = bitmap;
|
BaseRenderLayer._charAtlas = bitmap;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -109,9 +109,7 @@ class CharAtlasGenerator {
|
|||||||
this._ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
|
this._ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
|
||||||
}
|
}
|
||||||
|
|
||||||
public generate(terminal: ITerminal, charWidth: number, charHeight: number): Promise<ImageBitmap> {
|
public generate(terminal: ITerminal, scaledCharWidth: number, scaledCharHeight: number): Promise<ImageBitmap> {
|
||||||
const scaledCharWidth = Math.ceil(charWidth) * window.devicePixelRatio;
|
|
||||||
const scaledCharHeight = Math.ceil(charHeight) * window.devicePixelRatio;
|
|
||||||
this._canvas.width = 255 * scaledCharWidth;
|
this._canvas.width = 255 * scaledCharWidth;
|
||||||
this._canvas.height = (/*default*/1 + /*0-15*/16) * scaledCharHeight;
|
this._canvas.height = (/*default*/1 + /*0-15*/16) * scaledCharHeight;
|
||||||
|
|
||||||
|
|||||||
@@ -32,17 +32,16 @@ export class Renderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public onResize(cols: number, rows: number): void {
|
public onResize(cols: number, rows: number): void {
|
||||||
const width = Math.ceil(this._terminal.charMeasure.width) * this._terminal.cols;
|
const width = this._terminal.charMeasure.width * this._terminal.cols;
|
||||||
const height = Math.ceil(this._terminal.charMeasure.height) * this._terminal.rows;
|
const height = this._terminal.charMeasure.height * this._terminal.rows;
|
||||||
for (let i = 0; i < this._dataRenderLayers.length; i++) {
|
for (let i = 0; i < this._dataRenderLayers.length; i++) {
|
||||||
this._dataRenderLayers[i].resize(this._terminal, width, height, false);
|
this._dataRenderLayers[i].resize(this._terminal, width, height, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public onCharSizeChanged(charWidth: number, charHeight: number): void {
|
public onCharSizeChanged(charWidth: number, charHeight: number): void {
|
||||||
console.log('Renderer.onCharSizeChanged', charWidth, charHeight);
|
const width = charWidth * this._terminal.cols;
|
||||||
const width = Math.ceil(charWidth) * this._terminal.cols;
|
const height = charHeight * this._terminal.rows;
|
||||||
const height = Math.ceil(charHeight) * this._terminal.rows;
|
|
||||||
for (let i = 0; i < this._dataRenderLayers.length; i++) {
|
for (let i = 0; i < this._dataRenderLayers.length; i++) {
|
||||||
this._dataRenderLayers[i].resize(this._terminal, width, height, true);
|
this._dataRenderLayers[i].resize(this._terminal, width, height, true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,8 +59,8 @@ export class CharMeasure extends EventEmitter implements ICharMeasure {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this._width !== geometry.width || this._height !== geometry.height) {
|
if (this._width !== geometry.width || this._height !== geometry.height) {
|
||||||
this._width = geometry.width;
|
this._width = Math.ceil(geometry.width);
|
||||||
this._height = geometry.height;
|
this._height = Math.ceil(geometry.height);
|
||||||
this.emit('charsizechanged');
|
this.emit('charsizechanged');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user