From 81d93b8fbf817c83cd7dbb918ad33bbd6fbb35b6 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Thu, 31 Aug 2017 23:23:04 -0700 Subject: [PATCH] Ensure CharMeasure exposes integers --- src/renderer/BaseRenderLayer.ts | 10 ++++------ src/renderer/Renderer.ts | 9 ++++----- src/utils/CharMeasure.ts | 4 ++-- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/renderer/BaseRenderLayer.ts b/src/renderer/BaseRenderLayer.ts index e286b220..331bc678 100644 --- a/src/renderer/BaseRenderLayer.ts +++ b/src/renderer/BaseRenderLayer.ts @@ -28,8 +28,8 @@ export abstract class BaseRenderLayer implements IRenderLayer { } public resize(terminal: ITerminal, canvasWidth: number, canvasHeight: number, charSizeChanged: boolean): void { - this.scaledCharWidth = Math.ceil(terminal.charMeasure.width) * window.devicePixelRatio; - this.scaledCharHeight = Math.ceil(terminal.charMeasure.height) * window.devicePixelRatio; + this.scaledCharWidth = terminal.charMeasure.width * window.devicePixelRatio; + this.scaledCharHeight = terminal.charMeasure.height * window.devicePixelRatio; this._canvas.width = canvasWidth * window.devicePixelRatio; this._canvas.height = canvasHeight * window.devicePixelRatio; this._canvas.style.width = `${canvasWidth}px`; @@ -43,7 +43,7 @@ export abstract class BaseRenderLayer implements IRenderLayer { BaseRenderLayer._charAtlas = null; BaseRenderLayer._charAtlasCharWidth = terminal.charMeasure.width; 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; }); } @@ -109,9 +109,7 @@ class CharAtlasGenerator { this._ctx.scale(window.devicePixelRatio, window.devicePixelRatio); } - public generate(terminal: ITerminal, charWidth: number, charHeight: number): Promise { - const scaledCharWidth = Math.ceil(charWidth) * window.devicePixelRatio; - const scaledCharHeight = Math.ceil(charHeight) * window.devicePixelRatio; + public generate(terminal: ITerminal, scaledCharWidth: number, scaledCharHeight: number): Promise { this._canvas.width = 255 * scaledCharWidth; this._canvas.height = (/*default*/1 + /*0-15*/16) * scaledCharHeight; diff --git a/src/renderer/Renderer.ts b/src/renderer/Renderer.ts index a512c983..2cce350b 100644 --- a/src/renderer/Renderer.ts +++ b/src/renderer/Renderer.ts @@ -32,17 +32,16 @@ export class Renderer { } public onResize(cols: number, rows: number): void { - const width = Math.ceil(this._terminal.charMeasure.width) * this._terminal.cols; - const height = Math.ceil(this._terminal.charMeasure.height) * this._terminal.rows; + const width = this._terminal.charMeasure.width * this._terminal.cols; + const height = this._terminal.charMeasure.height * this._terminal.rows; for (let i = 0; i < this._dataRenderLayers.length; i++) { this._dataRenderLayers[i].resize(this._terminal, width, height, false); } } public onCharSizeChanged(charWidth: number, charHeight: number): void { - console.log('Renderer.onCharSizeChanged', charWidth, charHeight); - const width = Math.ceil(charWidth) * this._terminal.cols; - const height = Math.ceil(charHeight) * this._terminal.rows; + const width = charWidth * this._terminal.cols; + const height = charHeight * this._terminal.rows; for (let i = 0; i < this._dataRenderLayers.length; i++) { this._dataRenderLayers[i].resize(this._terminal, width, height, true); } diff --git a/src/utils/CharMeasure.ts b/src/utils/CharMeasure.ts index ff777811..1366bb63 100644 --- a/src/utils/CharMeasure.ts +++ b/src/utils/CharMeasure.ts @@ -59,8 +59,8 @@ export class CharMeasure extends EventEmitter implements ICharMeasure { return; } if (this._width !== geometry.width || this._height !== geometry.height) { - this._width = geometry.width; - this._height = geometry.height; + this._width = Math.ceil(geometry.width); + this._height = Math.ceil(geometry.height); this.emit('charsizechanged'); } }