From 3077ae531145ce71ae8e0911a1a3a5557c3a9a56 Mon Sep 17 00:00:00 2001 From: Juan Campa Date: Mon, 21 Jan 2019 18:56:54 -0500 Subject: [PATCH 1/3] Only apply the selection hack for the WebGL renderer --- src/renderer/ColorManager.ts | 19 ++++++++++--------- src/renderer/webgl/WebglRenderer.ts | 1 + 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/renderer/ColorManager.ts b/src/renderer/ColorManager.ts index 05727530..329a6439 100644 --- a/src/renderer/ColorManager.ts +++ b/src/renderer/ColorManager.ts @@ -121,15 +121,7 @@ export class ColorManager implements IColorManager { this.colors.background = this._parseColor(theme.background, DEFAULT_BACKGROUND); this.colors.cursor = this._parseColor(theme.cursor, DEFAULT_CURSOR, true); this.colors.cursorAccent = this._parseColor(theme.cursorAccent, DEFAULT_CURSOR_ACCENT, true); - - // HACK: while webgl renderer adds support for selection colors - // this.colors.selection = this._parseColor(theme.selection, DEFAULT_SELECTION, true); - if (this.getLuminance(this.colors.background) > 0.5) { - this.colors.selection = this._parseColor('#000', DEFAULT_SELECTION, true); - } else { - this.colors.selection = this._parseColor('#fff', DEFAULT_SELECTION, true); - } - + this.colors.selection = this._parseColor(theme.selection, DEFAULT_SELECTION, true); this.colors.ansi[0] = this._parseColor(theme.black, DEFAULT_ANSI_COLORS[0]); this.colors.ansi[1] = this._parseColor(theme.red, DEFAULT_ANSI_COLORS[1]); this.colors.ansi[2] = this._parseColor(theme.green, DEFAULT_ANSI_COLORS[2]); @@ -148,6 +140,15 @@ export class ColorManager implements IColorManager { this.colors.ansi[15] = this._parseColor(theme.brightWhite, DEFAULT_ANSI_COLORS[15]); } + public applyWebglSelectionColorHack() { + // HACK: while webgl renderer adds support for selection colors + if (this.getLuminance(this.colors.background) > 0.5) { + this.colors.selection = this._parseColor('#000', DEFAULT_SELECTION, true); + } else { + this.colors.selection = this._parseColor('#fff', DEFAULT_SELECTION, true); + } + } + private _parseColor( css: string, fallback: IColor, diff --git a/src/renderer/webgl/WebglRenderer.ts b/src/renderer/webgl/WebglRenderer.ts index c627fa6f..ec9e140d 100644 --- a/src/renderer/webgl/WebglRenderer.ts +++ b/src/renderer/webgl/WebglRenderer.ts @@ -52,6 +52,7 @@ export class WebglRenderer extends EventEmitter implements IRenderer { this.colorManager = new ColorManager(document, allowTransparency); if (theme) { this.colorManager.setTheme(theme); + this.colorManager.applyWebglSelectionColorHack(); } this._renderLayers = [ From 1ce75cd4e9f92a3361438a93718d99c58747102a Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 8 Mar 2019 12:16:27 -0800 Subject: [PATCH 2/3] Encapsulate hacks inside WebglRenderer --- src/renderer/ColorManager.ts | 9 --------- src/renderer/webgl/WebglRenderer.ts | 12 +++++++++++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/renderer/ColorManager.ts b/src/renderer/ColorManager.ts index ae23fd7a..3459e48f 100644 --- a/src/renderer/ColorManager.ts +++ b/src/renderer/ColorManager.ts @@ -140,15 +140,6 @@ export class ColorManager implements IColorManager { this.colors.ansi[15] = this._parseColor(theme.brightWhite, DEFAULT_ANSI_COLORS[15]); } - public applyWebglSelectionColorHack() { - // HACK: while webgl renderer adds support for selection colors - if (this.getLuminance(this.colors.background) > 0.5) { - this.colors.selection = this._parseColor('#000', DEFAULT_SELECTION, true); - } else { - this.colors.selection = this._parseColor('#fff', DEFAULT_SELECTION, true); - } - } - private _parseColor( css: string, fallback: IColor, diff --git a/src/renderer/webgl/WebglRenderer.ts b/src/renderer/webgl/WebglRenderer.ts index ec9e140d..f4eeba37 100644 --- a/src/renderer/webgl/WebglRenderer.ts +++ b/src/renderer/webgl/WebglRenderer.ts @@ -52,7 +52,7 @@ export class WebglRenderer extends EventEmitter implements IRenderer { this.colorManager = new ColorManager(document, allowTransparency); if (theme) { this.colorManager.setTheme(theme); - this.colorManager.applyWebglSelectionColorHack(); + this._applyBgLuminanceBasedSelection(); } this._renderLayers = [ @@ -108,6 +108,15 @@ export class WebglRenderer extends EventEmitter implements IRenderer { super.dispose(); } + private _applyBgLuminanceBasedSelection(): void { + // HACK: While webgl renderer adds support for selection colors + if (this.colorManager.getLuminance(this.colorManager.colors.background) > 0.5) { + this.colorManager.colors.selection = { css: '#000', rgba: 255 }; + } else { + this.colorManager.colors.selection = { css: '#fff', rgba: 4294967295 }; + } + } + public onIntersectionChange(entry: IntersectionObserverEntry): void { this._isPaused = entry.intersectionRatio === 0; if (!this._isPaused && this._needsFullRefresh) { @@ -128,6 +137,7 @@ export class WebglRenderer extends EventEmitter implements IRenderer { public setTheme(theme: ITheme | undefined): IColorSet { if (theme) { this.colorManager.setTheme(theme); + this._applyBgLuminanceBasedSelection(); } // Clear layers and force a full render From 5ebb4e82d1cdd5f90d605260aeff5ec3dd7a52d3 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 8 Mar 2019 12:18:27 -0800 Subject: [PATCH 3/3] Clarify comment --- src/renderer/webgl/WebglRenderer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/webgl/WebglRenderer.ts b/src/renderer/webgl/WebglRenderer.ts index f4eeba37..b727a0a6 100644 --- a/src/renderer/webgl/WebglRenderer.ts +++ b/src/renderer/webgl/WebglRenderer.ts @@ -109,7 +109,7 @@ export class WebglRenderer extends EventEmitter implements IRenderer { } private _applyBgLuminanceBasedSelection(): void { - // HACK: While webgl renderer adds support for selection colors + // HACK: This is needed until webgl renderer adds support for selection colors if (this.colorManager.getLuminance(this.colorManager.colors.background) > 0.5) { this.colorManager.colors.selection = { css: '#000', rgba: 255 }; } else {