From 5b86f9291e9303d7981a4a475eaff7ca2a31dd2c Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 31 May 2019 18:10:46 -0700 Subject: [PATCH] Fix conflicts in webgl renderer --- demo/client.ts | 6 +----- src/renderer/webgl/GlyphRenderer.ts | 4 ++-- src/renderer/webgl/atlas/WebglCharAtlas.ts | 18 +++++++++--------- .../webgl/renderLayer/BaseRenderLayer.ts | 4 ++-- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/demo/client.ts b/demo/client.ts index ede79334e..10d27c864 100644 --- a/demo/client.ts +++ b/demo/client.ts @@ -218,7 +218,7 @@ function initOptions(term: TerminalType): void { fontFamily: null, fontWeight: ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'], fontWeightBold: ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'], - rendererType: ['dom', 'canvas', 'webgl'] + rendererType: ['dom', 'canvas'] }; const options = Object.keys((term)._core.options); const booleanOptions = []; @@ -286,10 +286,6 @@ function initOptions(term: TerminalType): void { const input = document.getElementById(`opt-${o}`); addDomListener(input, 'change', () => { console.log('change', o, input.value); - if (o === 'rendererType' && input.value === 'webgl') { - term.setOption('experimentalCharAtlas', 'webgl'); - setTimeout(() => (document.getElementById(`opt-experimentalCharAtlas`)).value = 'webgl', 0); - } term.setOption(o, input.value); }); }); diff --git a/src/renderer/webgl/GlyphRenderer.ts b/src/renderer/webgl/GlyphRenderer.ts index 545a666e0..4a7c44e00 100644 --- a/src/renderer/webgl/GlyphRenderer.ts +++ b/src/renderer/webgl/GlyphRenderer.ts @@ -182,9 +182,9 @@ export class GlyphRenderer { let rasterizedGlyph: IRasterizedGlyph; if (chars && chars.length > 1) { - rasterizedGlyph = this._atlas.getRasterizedGlyphCombinedChar(chars, attr, bg, fg, this._terminal.getOption('enableBold')); + rasterizedGlyph = this._atlas.getRasterizedGlyphCombinedChar(chars, attr, bg, fg); } else { - rasterizedGlyph = this._atlas.getRasterizedGlyph(code, attr, bg, fg, this._terminal.getOption('enableBold')); + rasterizedGlyph = this._atlas.getRasterizedGlyph(code, attr, bg, fg); } // Fill empty if no glyph was found diff --git a/src/renderer/webgl/atlas/WebglCharAtlas.ts b/src/renderer/webgl/atlas/WebglCharAtlas.ts index 85496aa15..6832d4dc2 100644 --- a/src/renderer/webgl/atlas/WebglCharAtlas.ts +++ b/src/renderer/webgl/atlas/WebglCharAtlas.ts @@ -96,7 +96,7 @@ export default class WebglCharAtlas extends BaseCharAtlas { protected _doWarmUp(): void { // Pre-fill with ASCII 33-126 for (let i = 33; i < 126; i++) { - const rasterizedGlyph = this._drawToCache(i, DEFAULT_ATTR, DEFAULT_COLOR, DEFAULT_COLOR, true); + const rasterizedGlyph = this._drawToCache(i, DEFAULT_ATTR, DEFAULT_COLOR, DEFAULT_COLOR); this._cacheMap[i] = { [DEFAULT_ATTR]: rasterizedGlyph }; @@ -116,7 +116,7 @@ export default class WebglCharAtlas extends BaseCharAtlas { return false; } - public getRasterizedGlyphCombinedChar(chars: string, attr: number, bg: number, fg: number, enableBold: boolean): IRasterizedGlyph { + public getRasterizedGlyphCombinedChar(chars: string, attr: number, bg: number, fg: number): IRasterizedGlyph { let rasterizedGlyphSet = this._cacheMapCombined[chars]; if (!rasterizedGlyphSet) { rasterizedGlyphSet = {}; @@ -124,7 +124,7 @@ export default class WebglCharAtlas extends BaseCharAtlas { } let rasterizedGlyph = rasterizedGlyphSet[attr]; if (!rasterizedGlyph) { - rasterizedGlyph = this._drawToCache(chars, attr, bg, fg, enableBold); + rasterizedGlyph = this._drawToCache(chars, attr, bg, fg); rasterizedGlyphSet[attr] = rasterizedGlyph; } return rasterizedGlyph; @@ -133,7 +133,7 @@ export default class WebglCharAtlas extends BaseCharAtlas { /** * Gets the glyphs texture coords, drawing the texture if it's not already */ - public getRasterizedGlyph(code: number, attr: number, bg: number, fg: number, enableBold: boolean): IRasterizedGlyph { + public getRasterizedGlyph(code: number, attr: number, bg: number, fg: number): IRasterizedGlyph { let rasterizedGlyphSet = this._cacheMap[code]; if (!rasterizedGlyphSet) { rasterizedGlyphSet = {}; @@ -141,7 +141,7 @@ export default class WebglCharAtlas extends BaseCharAtlas { } let rasterizedGlyph = rasterizedGlyphSet[attr]; if (!rasterizedGlyph) { - rasterizedGlyph = this._drawToCache(code, attr, bg, fg, enableBold); + rasterizedGlyph = this._drawToCache(code, attr, bg, fg); rasterizedGlyphSet[attr] = rasterizedGlyph; } return rasterizedGlyph; @@ -186,16 +186,16 @@ export default class WebglCharAtlas extends BaseCharAtlas { return this._config.colors.foreground; } - private _drawToCache(code: number, attr: number, bg: number, fg: number, enableBold: boolean): IRasterizedGlyph; - private _drawToCache(chars: string, attr: number, bg: number, fg: number, enableBold: boolean): IRasterizedGlyph; - private _drawToCache(codeOrChars: number | string, attr: number, bg: number, fg: number, enableBold: boolean): IRasterizedGlyph { + private _drawToCache(code: number, attr: number, bg: number, fg: number): IRasterizedGlyph; + private _drawToCache(chars: string, attr: number, bg: number, fg: number): IRasterizedGlyph; + private _drawToCache(codeOrChars: number | string, attr: number, bg: number, fg: number): IRasterizedGlyph { const chars = typeof codeOrChars === 'number' ? String.fromCharCode(codeOrChars) : codeOrChars; this.hasCanvasChanged = true; const flags = attr >> 18; - const bold = !!(flags & FLAGS.BOLD) && enableBold; + const bold = !!(flags & FLAGS.BOLD); const dim = !!(flags & FLAGS.DIM); const italic = !!(flags & FLAGS.ITALIC); diff --git a/src/renderer/webgl/renderLayer/BaseRenderLayer.ts b/src/renderer/webgl/renderLayer/BaseRenderLayer.ts index 36c5bd53d..6d20c614b 100644 --- a/src/renderer/webgl/renderLayer/BaseRenderLayer.ts +++ b/src/renderer/webgl/renderLayer/BaseRenderLayer.ts @@ -287,7 +287,7 @@ export abstract class BaseRenderLayer implements IRenderLayer { this._currentGlyphIdentifier.code = cell.getCode() || WHITESPACE_CELL_CODE; this._currentGlyphIdentifier.bg = bg; this._currentGlyphIdentifier.fg = fg; - this._currentGlyphIdentifier.bold = cell.isBold() && terminal.getOption('enableBold'); + this._currentGlyphIdentifier.bold = !!cell.isBold(); this._currentGlyphIdentifier.dim = !!cell.isDim(); this._currentGlyphIdentifier.italic = !!cell.isItalic(); const atlasDidDraw = this._charAtlas && this._charAtlas.draw( @@ -315,7 +315,7 @@ export abstract class BaseRenderLayer implements IRenderLayer { */ private _drawUncachedChars(terminal: Terminal, cell: ICellData, x: number, y: number): void { this._ctx.save(); - this._ctx.font = this._getFont(terminal, cell.isBold() && terminal.getOption('enableBold'), !!cell.isItalic()); + this._ctx.font = this._getFont(terminal, !!cell.isBold(), !!cell.isItalic()); this._ctx.textBaseline = 'middle'; if (cell.isInverse()) {