From ddb9fbd1d6bc6183eb2b16fcc7487b8f5c5f8722 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 14 Jun 2019 22:25:40 -0700 Subject: [PATCH] Improve type safety in webgl --- src/public/Terminal.ts | 1 - src/renderer/webgl/WebglRenderer.ts | 14 +++++++------- src/renderer/webgl/WebglRendererAddon.ts | 9 +++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/public/Terminal.ts b/src/public/Terminal.ts index 2026d70e..23869218 100644 --- a/src/public/Terminal.ts +++ b/src/public/Terminal.ts @@ -33,7 +33,6 @@ export class Terminal implements ITerminalApi { public get onResize(): IEvent<{ cols: number, rows: number }> { return this._core.onResize; } public get element(): HTMLElement { return this._core.element; } - public get screenElement(): HTMLElement { return this._core.screenElement; } public get textarea(): HTMLTextAreaElement { return this._core.textarea; } public get rows(): number { return this._core.rows; } public get cols(): number { return this._core.cols; } diff --git a/src/renderer/webgl/WebglRenderer.ts b/src/renderer/webgl/WebglRenderer.ts index d5896b9c..a01098df 100644 --- a/src/renderer/webgl/WebglRenderer.ts +++ b/src/renderer/webgl/WebglRenderer.ts @@ -47,13 +47,13 @@ export class WebglRenderer extends Disposable implements IRenderer { ) { super(); - this._core = (this._terminal as any)._core; + this._core = (this._terminal)._core; this._applyBgLuminanceBasedSelection(); this._renderLayers = [ - new LinkRenderLayer((this._terminal).screenElement, 2, this._colors, this._core), - new CursorRenderLayer((this._terminal).screenElement, 3, this._colors) + new LinkRenderLayer(this._core.screenElement, 2, this._colors, this._core), + new CursorRenderLayer(this._core.screenElement, 3, this._colors) ]; this.dimensions = { scaledCharWidth: null, @@ -83,7 +83,7 @@ export class WebglRenderer extends Disposable implements IRenderer { if (!this._gl) { throw new Error('WebGL2 not supported'); } - (this._terminal).screenElement.appendChild(this._canvas); + this._core.screenElement.appendChild(this._canvas); this._rectangleRenderer = new RectangleRenderer(this._terminal, this._colors, this._gl, this.dimensions); this._glyphRenderer = new GlyphRenderer(this._terminal, this._colors, this._gl, this.dimensions); @@ -94,7 +94,7 @@ export class WebglRenderer extends Disposable implements IRenderer { public dispose(): void { this._renderLayers.forEach(l => l.dispose()); - (this._terminal).screenElement.removeChild(this._canvas); + this._core.screenElement.removeChild(this._canvas); super.dispose(); } @@ -153,8 +153,8 @@ export class WebglRenderer extends Disposable implements IRenderer { this._canvas.style.height = `${this.dimensions.canvasHeight}px`; // Resize the screen - (this._terminal).screenElement.style.width = `${this.dimensions.canvasWidth}px`; - (this._terminal).screenElement.style.height = `${this.dimensions.canvasHeight}px`; + this._core.screenElement.style.width = `${this.dimensions.canvasWidth}px`; + this._core.screenElement.style.height = `${this.dimensions.canvasHeight}px`; this._glyphRenderer.setDimensions(this.dimensions); this._glyphRenderer.onResize(); diff --git a/src/renderer/webgl/WebglRendererAddon.ts b/src/renderer/webgl/WebglRendererAddon.ts index e29a7f07..4b67e380 100644 --- a/src/renderer/webgl/WebglRendererAddon.ts +++ b/src/renderer/webgl/WebglRendererAddon.ts @@ -5,10 +5,10 @@ import { Terminal, ITerminalAddon } from 'xterm'; import { WebglRenderer } from './WebglRenderer'; +import { IRenderService } from 'browser/services/Services'; +import { IColorSet } from 'browser/Types'; export class WebglRendererAddon implements ITerminalAddon { - private _terminal: Terminal | undefined; - constructor( private _preserveDrawingBuffer?: boolean ) {} @@ -17,8 +17,9 @@ export class WebglRendererAddon implements ITerminalAddon { if (!terminal.element) { throw new Error('Cannot activate WebglRendererAddon before Terminal.open'); } - this._terminal = terminal; - (this._terminal)._core._renderService.setRenderer(new WebglRenderer(terminal, (terminal as any)._core._colorManager.colors, this._preserveDrawingBuffer)); + const renderService: IRenderService = (terminal)._core._renderService; + const colors: IColorSet = (terminal)._core._colorManager.colors; + renderService.setRenderer(new WebglRenderer(terminal, colors, this._preserveDrawingBuffer)); } public dispose(): void {