diff --git a/src/browser/renderer/shared/CellColorResolver.ts b/addons/addon-webgl/src/CellColorResolver.ts similarity index 100% rename from src/browser/renderer/shared/CellColorResolver.ts rename to addons/addon-webgl/src/CellColorResolver.ts diff --git a/src/browser/renderer/shared/CharAtlasCache.ts b/addons/addon-webgl/src/CharAtlasCache.ts similarity index 95% rename from src/browser/renderer/shared/CharAtlasCache.ts rename to addons/addon-webgl/src/CharAtlasCache.ts index 33e58078..051f5bfe 100644 --- a/src/browser/renderer/shared/CharAtlasCache.ts +++ b/addons/addon-webgl/src/CharAtlasCache.ts @@ -3,11 +3,11 @@ * @license MIT */ -import { TextureAtlas } from 'browser/renderer/shared/TextureAtlas'; +import { TextureAtlas } from './TextureAtlas'; import { ITerminalOptions, Terminal } from '@xterm/xterm'; import { ITerminal, ReadonlyColorSet } from 'browser/Types'; import { ICharAtlasConfig, ITextureAtlas } from 'browser/renderer/shared/Types'; -import { generateConfig, configEquals } from 'browser/renderer/shared/CharAtlasUtils'; +import { generateConfig, configEquals } from 'CharAtlasUtils'; interface ITextureAtlasCacheEntry { atlas: ITextureAtlas; diff --git a/src/browser/renderer/shared/CharAtlasUtils.ts b/addons/addon-webgl/src/CharAtlasUtils.ts similarity index 97% rename from src/browser/renderer/shared/CharAtlasUtils.ts rename to addons/addon-webgl/src/CharAtlasUtils.ts index db601383..31c09fe4 100644 --- a/src/browser/renderer/shared/CharAtlasUtils.ts +++ b/addons/addon-webgl/src/CharAtlasUtils.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { ICharAtlasConfig } from './Types'; +import { ICharAtlasConfig } from '../../../src/browser/renderer/shared/Types'; import { Attributes } from 'common/buffer/Constants'; import { ITerminalOptions } from '@xterm/xterm'; import { IColorSet, ReadonlyColorSet } from 'browser/Types'; diff --git a/addons/addon-webgl/src/Constants.ts b/addons/addon-webgl/src/Constants.ts new file mode 100644 index 00000000..a00434d6 --- /dev/null +++ b/addons/addon-webgl/src/Constants.ts @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2017 The xterm.js authors. All rights reserved. + * @license MIT + */ + +import { isFirefox, isLegacyEdge } from 'common/Platform'; + +export const DIM_OPACITY = 0.5; +// The text baseline is set conditionally by browser. Using 'ideographic' for Firefox or Legacy Edge +// would result in truncated text (Issue 3353). Using 'bottom' for Chrome would result in slightly +// unaligned Powerline fonts (PR 3356#issuecomment-850928179). +export const TEXT_BASELINE: CanvasTextBaseline = isFirefox || isLegacyEdge ? 'bottom' : 'ideographic'; diff --git a/src/browser/renderer/shared/CursorBlinkStateManager.ts b/addons/addon-webgl/src/CursorBlinkStateManager.ts similarity index 100% rename from src/browser/renderer/shared/CursorBlinkStateManager.ts rename to addons/addon-webgl/src/CursorBlinkStateManager.ts diff --git a/src/browser/renderer/shared/CustomGlyphs.ts b/addons/addon-webgl/src/CustomGlyphs.ts similarity index 100% rename from src/browser/renderer/shared/CustomGlyphs.ts rename to addons/addon-webgl/src/CustomGlyphs.ts diff --git a/src/browser/renderer/shared/DevicePixelObserver.ts b/addons/addon-webgl/src/DevicePixelObserver.ts similarity index 100% rename from src/browser/renderer/shared/DevicePixelObserver.ts rename to addons/addon-webgl/src/DevicePixelObserver.ts diff --git a/addons/addon-webgl/src/GlyphRenderer.ts b/addons/addon-webgl/src/GlyphRenderer.ts index f76804fd..a2c901d6 100644 --- a/addons/addon-webgl/src/GlyphRenderer.ts +++ b/addons/addon-webgl/src/GlyphRenderer.ts @@ -2,9 +2,7 @@ * Copyright (c) 2018 The xterm.js authors. All rights reserved. * @license MIT */ - -import { allowRescaling, throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; -import { TextureAtlas } from 'browser/renderer/shared/TextureAtlas'; +import { TextureAtlas } from 'TextureAtlas'; import { IRasterizedGlyph, IRenderDimensions, ITextureAtlas } from 'browser/renderer/shared/Types'; import { NULL_CELL_CODE } from 'common/buffer/Constants'; import { Disposable, toDisposable } from 'vs/base/common/lifecycle'; @@ -12,6 +10,7 @@ import { Terminal } from '@xterm/xterm'; import { IRenderModel, IWebGL2RenderingContext, IWebGLVertexArrayObject } from './Types'; import { createProgram, GLTexture, PROJECTION_MATRIX } from './WebglUtils'; import type { IOptionsService } from 'common/services/Services'; +import { allowRescaling, throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; interface IVertices { attributes: Float32Array; diff --git a/addons/addon-webgl/src/RectangleRenderer.ts b/addons/addon-webgl/src/RectangleRenderer.ts index 6dbedf09..8ace9076 100644 --- a/addons/addon-webgl/src/RectangleRenderer.ts +++ b/addons/addon-webgl/src/RectangleRenderer.ts @@ -3,7 +3,6 @@ * @license MIT */ -import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; import { IRenderDimensions } from 'browser/renderer/shared/Types'; import { IThemeService } from 'browser/services/Services'; import { ReadonlyColorSet } from 'browser/Types'; @@ -14,6 +13,7 @@ import { Terminal } from '@xterm/xterm'; import { RENDER_MODEL_BG_OFFSET, RENDER_MODEL_FG_OFFSET, RENDER_MODEL_INDICIES_PER_CELL } from './RenderModel'; import { IRenderModel, IWebGL2RenderingContext, IWebGLVertexArrayObject } from './Types'; import { createProgram, expandFloat32Array, PROJECTION_MATRIX } from './WebglUtils'; +import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; const enum VertexAttribLocations { POSITION = 0, diff --git a/src/browser/renderer/shared/TextureAtlas.ts b/addons/addon-webgl/src/TextureAtlas.ts similarity index 99% rename from src/browser/renderer/shared/TextureAtlas.ts rename to addons/addon-webgl/src/TextureAtlas.ts index 7343d890..c0842d54 100644 --- a/src/browser/renderer/shared/TextureAtlas.ts +++ b/addons/addon-webgl/src/TextureAtlas.ts @@ -4,8 +4,8 @@ */ import { IColorContrastCache } from 'browser/Types'; -import { DIM_OPACITY, TEXT_BASELINE } from 'browser/renderer/shared/Constants'; -import { tryDrawCustomChar } from 'browser/renderer/shared/CustomGlyphs'; +import { DIM_OPACITY, TEXT_BASELINE } from './Constants'; +import { tryDrawCustomChar } from 'CustomGlyphs'; import { computeNextVariantOffset, treatGlyphAsBackgroundColor, isPowerlineGlyph, isRestrictedPowerlineGlyph, throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; import { IBoundingBox, ICharAtlasConfig, IRasterizedGlyph, ITextureAtlas } from 'browser/renderer/shared/Types'; import { NULL_COLOR, channels, color, rgba } from 'common/Color'; diff --git a/addons/addon-webgl/src/WebglRenderer.ts b/addons/addon-webgl/src/WebglRenderer.ts index 4be864c1..ce9b58c5 100644 --- a/addons/addon-webgl/src/WebglRenderer.ts +++ b/addons/addon-webgl/src/WebglRenderer.ts @@ -4,11 +4,10 @@ */ import { ITerminal } from 'browser/Types'; -import { CellColorResolver } from 'browser/renderer/shared/CellColorResolver'; -import { acquireTextureAtlas, removeTerminalFromCache } from 'browser/renderer/shared/CharAtlasCache'; -import { CursorBlinkStateManager } from 'browser/renderer/shared/CursorBlinkStateManager'; -import { observeDevicePixelDimensions } from 'browser/renderer/shared/DevicePixelObserver'; -import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils'; +import { CellColorResolver } from 'CellColorResolver'; +import { acquireTextureAtlas, removeTerminalFromCache } from 'CharAtlasCache'; +import { CursorBlinkStateManager } from './CursorBlinkStateManager'; +import { observeDevicePixelDimensions } from 'DevicePixelObserver'; import { IRenderDimensions, IRenderer, IRequestRedrawEvent, ITextureAtlas } from 'browser/renderer/shared/Types'; import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IThemeService } from 'browser/services/Services'; import { CharData, IBufferLine, ICellData } from 'common/Types'; @@ -26,6 +25,7 @@ import { IRenderLayer } from './renderLayer/Types'; import { Emitter, Event } from 'vs/base/common/event'; import { addDisposableListener } from 'vs/base/browser/dom'; import { combinedDisposable, Disposable, MutableDisposable, toDisposable } from 'vs/base/common/lifecycle'; +import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils'; export class WebglRenderer extends Disposable implements IRenderer { private _renderLayers: IRenderLayer[]; diff --git a/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts b/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts index 0cac7eb3..ae7e47ef 100644 --- a/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts +++ b/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts @@ -4,9 +4,7 @@ */ import { ReadonlyColorSet } from 'browser/Types'; -import { acquireTextureAtlas } from 'browser/renderer/shared/CharAtlasCache'; -import { TEXT_BASELINE } from 'browser/renderer/shared/Constants'; -import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; +import { acquireTextureAtlas } from 'CharAtlasCache'; import { IRenderDimensions, ITextureAtlas } from 'browser/renderer/shared/Types'; import { ICoreBrowserService, IThemeService } from 'browser/services/Services'; import { Disposable, toDisposable } from 'vs/base/common/lifecycle'; @@ -14,6 +12,8 @@ import { CellData } from 'common/buffer/CellData'; import { IOptionsService } from 'common/services/Services'; import { Terminal } from '@xterm/xterm'; import { IRenderLayer } from './Types'; +import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; +import { TEXT_BASELINE } from 'Constants'; export abstract class BaseRenderLayer extends Disposable implements IRenderLayer { private _canvas: HTMLCanvasElement; diff --git a/addons/addon-webgl/src/renderLayer/LinkRenderLayer.ts b/addons/addon-webgl/src/renderLayer/LinkRenderLayer.ts index 1357dec6..50bf2d8f 100644 --- a/addons/addon-webgl/src/renderLayer/LinkRenderLayer.ts +++ b/addons/addon-webgl/src/renderLayer/LinkRenderLayer.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { is256Color } from 'browser/renderer/shared/CharAtlasUtils'; +import { is256Color } from 'CharAtlasUtils'; import { INVERTED_DEFAULT_COLOR } from 'browser/renderer/shared/Constants'; import { IRenderDimensions } from 'browser/renderer/shared/Types'; import { ICoreBrowserService, IThemeService } from 'browser/services/Services'; diff --git a/src/browser/renderer/shared/Constants.ts b/src/browser/renderer/shared/Constants.ts index b5105ec7..4bc4f985 100644 --- a/src/browser/renderer/shared/Constants.ts +++ b/src/browser/renderer/shared/Constants.ts @@ -3,12 +3,4 @@ * @license MIT */ -import { isFirefox, isLegacyEdge } from 'common/Platform'; - export const INVERTED_DEFAULT_COLOR = 257; - -export const DIM_OPACITY = 0.5; -// The text baseline is set conditionally by browser. Using 'ideographic' for Firefox or Legacy Edge -// would result in truncated text (Issue 3353). Using 'bottom' for Chrome would result in slightly -// unaligned Powerline fonts (PR 3356#issuecomment-850928179). -export const TEXT_BASELINE: CanvasTextBaseline = isFirefox || isLegacyEdge ? 'bottom' : 'ideographic';