@xterm/addon-image 0.9.0-beta.98 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/out/ImageAddon.js DELETED
@@ -1,261 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) 2020 The xterm.js authors. All rights reserved.
4
- * @license MIT
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ImageAddon = void 0;
8
- const IIPHandler_1 = require("./IIPHandler");
9
- const ImageRenderer_1 = require("./ImageRenderer");
10
- const ImageStorage_1 = require("./ImageStorage");
11
- const SixelHandler_1 = require("./SixelHandler");
12
- // default values of addon ctor options
13
- const DEFAULT_OPTIONS = {
14
- enableSizeReports: true,
15
- pixelLimit: 16777216, // limit to 4096 * 4096 pixels
16
- sixelSupport: true,
17
- sixelScrolling: true,
18
- sixelPaletteLimit: 256,
19
- sixelSizeLimit: 25000000,
20
- storageLimit: 128,
21
- showPlaceholder: true,
22
- iipSupport: true,
23
- iipSizeLimit: 20000000
24
- };
25
- // max palette size supported by the sixel lib (compile time setting)
26
- const MAX_SIXEL_PALETTE_SIZE = 4096;
27
- class ImageAddon {
28
- constructor(opts) {
29
- this._disposables = [];
30
- this._handlers = new Map();
31
- this._opts = Object.assign({}, DEFAULT_OPTIONS, opts);
32
- this._defaultOpts = Object.assign({}, DEFAULT_OPTIONS, opts);
33
- }
34
- dispose() {
35
- for (const obj of this._disposables) {
36
- obj.dispose();
37
- }
38
- this._disposables.length = 0;
39
- this._handlers.clear();
40
- }
41
- _disposeLater(...args) {
42
- for (const obj of args) {
43
- this._disposables.push(obj);
44
- }
45
- }
46
- activate(terminal) {
47
- this._terminal = terminal;
48
- // internal data structures
49
- this._renderer = new ImageRenderer_1.ImageRenderer(terminal);
50
- this._storage = new ImageStorage_1.ImageStorage(terminal, this._renderer, this._opts);
51
- // enable size reports
52
- if (this._opts.enableSizeReports) {
53
- // const windowOptions = terminal.getOption('windowOptions');
54
- // windowOptions.getWinSizePixels = true;
55
- // windowOptions.getCellSizePixels = true;
56
- // windowOptions.getWinSizeChars = true;
57
- // terminal.setOption('windowOptions', windowOptions);
58
- const windowOps = terminal.options.windowOptions || {};
59
- windowOps.getWinSizePixels = true;
60
- windowOps.getCellSizePixels = true;
61
- windowOps.getWinSizeChars = true;
62
- terminal.options.windowOptions = windowOps;
63
- }
64
- this._disposeLater(this._renderer, this._storage,
65
- // DECSET/DECRST/DA1/XTSMGRAPHICS handlers
66
- terminal.parser.registerCsiHandler({ prefix: '?', final: 'h' }, params => this._decset(params)), terminal.parser.registerCsiHandler({ prefix: '?', final: 'l' }, params => this._decrst(params)), terminal.parser.registerCsiHandler({ final: 'c' }, params => this._da1(params)), terminal.parser.registerCsiHandler({ prefix: '?', final: 'S' }, params => this._xtermGraphicsAttributes(params)),
67
- // render hook
68
- terminal.onRender(range => { var _a; return (_a = this._storage) === null || _a === void 0 ? void 0 : _a.render(range); }),
69
- /**
70
- * reset handlers covered:
71
- * - DECSTR
72
- * - RIS
73
- * - Terminal.reset()
74
- */
75
- terminal.parser.registerCsiHandler({ intermediates: '!', final: 'p' }, () => this.reset()), terminal.parser.registerEscHandler({ final: 'c' }, () => this.reset()), terminal._core._inputHandler.onRequestReset(() => this.reset()),
76
- // wipe canvas and delete alternate images on buffer switch
77
- terminal.buffer.onBufferChange(() => { var _a; return (_a = this._storage) === null || _a === void 0 ? void 0 : _a.wipeAlternate(); }),
78
- // extend images to the right on resize
79
- terminal.onResize(metrics => { var _a; return (_a = this._storage) === null || _a === void 0 ? void 0 : _a.viewportResize(metrics); }));
80
- // SIXEL handler
81
- if (this._opts.sixelSupport) {
82
- const sixelHandler = new SixelHandler_1.SixelHandler(this._opts, this._storage, terminal);
83
- this._handlers.set('sixel', sixelHandler);
84
- this._disposeLater(terminal._core._inputHandler._parser.registerDcsHandler({ final: 'q' }, sixelHandler));
85
- }
86
- // iTerm IIP handler
87
- if (this._opts.iipSupport) {
88
- const iipHandler = new IIPHandler_1.IIPHandler(this._opts, this._renderer, this._storage, terminal);
89
- this._handlers.set('iip', iipHandler);
90
- this._disposeLater(terminal._core._inputHandler._parser.registerOscHandler(1337, iipHandler));
91
- }
92
- }
93
- // Note: storageLimit is skipped here to not intoduce a surprising side effect.
94
- reset() {
95
- var _a;
96
- // reset options customizable by sequences to defaults
97
- this._opts.sixelScrolling = this._defaultOpts.sixelScrolling;
98
- this._opts.sixelPaletteLimit = this._defaultOpts.sixelPaletteLimit;
99
- // also clear image storage
100
- (_a = this._storage) === null || _a === void 0 ? void 0 : _a.reset();
101
- // reset protocol handlers
102
- for (const handler of this._handlers.values()) {
103
- handler.reset();
104
- }
105
- return false;
106
- }
107
- get storageLimit() {
108
- var _a;
109
- return ((_a = this._storage) === null || _a === void 0 ? void 0 : _a.getLimit()) || -1;
110
- }
111
- set storageLimit(limit) {
112
- var _a;
113
- (_a = this._storage) === null || _a === void 0 ? void 0 : _a.setLimit(limit);
114
- this._opts.storageLimit = limit;
115
- }
116
- get storageUsage() {
117
- if (this._storage) {
118
- return this._storage.getUsage();
119
- }
120
- return -1;
121
- }
122
- get showPlaceholder() {
123
- return this._opts.showPlaceholder;
124
- }
125
- set showPlaceholder(value) {
126
- var _a;
127
- this._opts.showPlaceholder = value;
128
- (_a = this._renderer) === null || _a === void 0 ? void 0 : _a.showPlaceholder(value);
129
- }
130
- getImageAtBufferCell(x, y) {
131
- var _a;
132
- return (_a = this._storage) === null || _a === void 0 ? void 0 : _a.getImageAtBufferCell(x, y);
133
- }
134
- extractTileAtBufferCell(x, y) {
135
- var _a;
136
- return (_a = this._storage) === null || _a === void 0 ? void 0 : _a.extractTileAtBufferCell(x, y);
137
- }
138
- _report(s) {
139
- var _a;
140
- (_a = this._terminal) === null || _a === void 0 ? void 0 : _a._core.coreService.triggerDataEvent(s);
141
- }
142
- _decset(params) {
143
- for (let i = 0; i < params.length; ++i) {
144
- switch (params[i]) {
145
- case 80:
146
- this._opts.sixelScrolling = false;
147
- break;
148
- }
149
- }
150
- return false;
151
- }
152
- _decrst(params) {
153
- for (let i = 0; i < params.length; ++i) {
154
- switch (params[i]) {
155
- case 80:
156
- this._opts.sixelScrolling = true;
157
- break;
158
- }
159
- }
160
- return false;
161
- }
162
- // overload DA to return something more appropriate
163
- _da1(params) {
164
- if (params[0]) {
165
- return true;
166
- }
167
- // reported features:
168
- // 62 - VT220
169
- // 4 - SIXEL support
170
- // 9 - charsets
171
- // 22 - ANSI colors
172
- if (this._opts.sixelSupport) {
173
- this._report(`\x1b[?62;4;9;22c`);
174
- return true;
175
- }
176
- return false;
177
- }
178
- /**
179
- * Implementation of xterm's graphics attribute sequence.
180
- *
181
- * Supported features:
182
- * - read/change palette limits (max 4096 by sixel lib)
183
- * - read SIXEL canvas geometry (reports current window canvas or
184
- * squared pixelLimit if canvas > pixel limit)
185
- *
186
- * Everything else is deactivated.
187
- */
188
- _xtermGraphicsAttributes(params) {
189
- var _a, _b, _c, _d, _e, _f;
190
- if (params.length < 2) {
191
- return true;
192
- }
193
- if (params[0] === 1 /* GaItem.COLORS */) {
194
- switch (params[1]) {
195
- case 1 /* GaAction.READ */:
196
- this._report(`\x1b[?${params[0]};${0 /* GaStatus.SUCCESS */};${this._opts.sixelPaletteLimit}S`);
197
- return true;
198
- case 2 /* GaAction.SET_DEFAULT */:
199
- this._opts.sixelPaletteLimit = this._defaultOpts.sixelPaletteLimit;
200
- this._report(`\x1b[?${params[0]};${0 /* GaStatus.SUCCESS */};${this._opts.sixelPaletteLimit}S`);
201
- // also reset protocol handlers for now
202
- for (const handler of this._handlers.values()) {
203
- handler.reset();
204
- }
205
- return true;
206
- case 3 /* GaAction.SET */:
207
- if (params.length > 2 && !(params[2] instanceof Array) && params[2] <= MAX_SIXEL_PALETTE_SIZE) {
208
- this._opts.sixelPaletteLimit = params[2];
209
- this._report(`\x1b[?${params[0]};${0 /* GaStatus.SUCCESS */};${this._opts.sixelPaletteLimit}S`);
210
- }
211
- else {
212
- this._report(`\x1b[?${params[0]};${2 /* GaStatus.ACTION_ERROR */}S`);
213
- }
214
- return true;
215
- case 4 /* GaAction.READ_MAX */:
216
- this._report(`\x1b[?${params[0]};${0 /* GaStatus.SUCCESS */};${MAX_SIXEL_PALETTE_SIZE}S`);
217
- return true;
218
- default:
219
- this._report(`\x1b[?${params[0]};${2 /* GaStatus.ACTION_ERROR */}S`);
220
- return true;
221
- }
222
- }
223
- if (params[0] === 2 /* GaItem.SIXEL_GEO */) {
224
- switch (params[1]) {
225
- // we only implement read and read_max here
226
- case 1 /* GaAction.READ */:
227
- let width = (_b = (_a = this._renderer) === null || _a === void 0 ? void 0 : _a.dimensions) === null || _b === void 0 ? void 0 : _b.css.canvas.width;
228
- let height = (_d = (_c = this._renderer) === null || _c === void 0 ? void 0 : _c.dimensions) === null || _d === void 0 ? void 0 : _d.css.canvas.height;
229
- if (!width || !height) {
230
- // for some reason we have no working image renderer
231
- // --> fallback to default cell size
232
- const cellSize = ImageStorage_1.CELL_SIZE_DEFAULT;
233
- width = (((_e = this._terminal) === null || _e === void 0 ? void 0 : _e.cols) || 80) * cellSize.width;
234
- height = (((_f = this._terminal) === null || _f === void 0 ? void 0 : _f.rows) || 24) * cellSize.height;
235
- }
236
- if (width * height < this._opts.pixelLimit) {
237
- this._report(`\x1b[?${params[0]};${0 /* GaStatus.SUCCESS */};${width.toFixed(0)};${height.toFixed(0)}S`);
238
- }
239
- else {
240
- // if we overflow pixelLimit report that squared instead
241
- const x = Math.floor(Math.sqrt(this._opts.pixelLimit));
242
- this._report(`\x1b[?${params[0]};${0 /* GaStatus.SUCCESS */};${x};${x}S`);
243
- }
244
- return true;
245
- case 4 /* GaAction.READ_MAX */:
246
- // read_max returns pixelLimit as square area
247
- const x = Math.floor(Math.sqrt(this._opts.pixelLimit));
248
- this._report(`\x1b[?${params[0]};${0 /* GaStatus.SUCCESS */};${x};${x}S`);
249
- return true;
250
- default:
251
- this._report(`\x1b[?${params[0]};${2 /* GaStatus.ACTION_ERROR */}S`);
252
- return true;
253
- }
254
- }
255
- // exit with error on ReGIS or any other requests
256
- this._report(`\x1b[?${params[0]};${1 /* GaStatus.ITEM_ERROR */}S`);
257
- return true;
258
- }
259
- }
260
- exports.ImageAddon = ImageAddon;
261
- //# sourceMappingURL=ImageAddon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageAddon.js","sourceRoot":"","sources":["../src/ImageAddon.ts"],"names":[],"mappings":"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"}
@@ -1,330 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) 2020 The xterm.js authors. All rights reserved.
4
- * @license MIT
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ImageRenderer = void 0;
8
- const Colors_1 = require("sixel/lib/Colors");
9
- const lifecycle_1 = require("vs/base/common/lifecycle");
10
- const PLACEHOLDER_LENGTH = 4096;
11
- const PLACEHOLDER_HEIGHT = 24;
12
- /**
13
- * ImageRenderer - terminal frontend extension:
14
- * - provide primitives for canvas, ImageData, Bitmap (static)
15
- * - add canvas layer to DOM (browser only for now)
16
- * - draw image tiles onRender
17
- */
18
- class ImageRenderer extends lifecycle_1.Disposable {
19
- // drawing primitive - canvas
20
- static createCanvas(localDocument, width, height) {
21
- /**
22
- * NOTE: We normally dont care, from which document the canvas
23
- * gets created, so we can fall back to global document,
24
- * if the terminal has no document associated yet.
25
- * This way early image loads before calling .open keep working
26
- * (still discouraged though, as the metrics will be screwed up).
27
- * Only the DOM output canvas should be on the terminal's document,
28
- * which gets explicitly checked in `insertLayerToDom`.
29
- */
30
- const canvas = (localDocument || document).createElement('canvas');
31
- canvas.width = width | 0;
32
- canvas.height = height | 0;
33
- return canvas;
34
- }
35
- // drawing primitive - ImageData with optional buffer
36
- static createImageData(ctx, width, height, buffer) {
37
- if (typeof ImageData !== 'function') {
38
- const imgData = ctx.createImageData(width, height);
39
- if (buffer) {
40
- imgData.data.set(new Uint8ClampedArray(buffer, 0, width * height * 4));
41
- }
42
- return imgData;
43
- }
44
- return buffer
45
- ? new ImageData(new Uint8ClampedArray(buffer, 0, width * height * 4), width, height)
46
- : new ImageData(width, height);
47
- }
48
- // drawing primitive - ImageBitmap
49
- static createImageBitmap(img) {
50
- if (typeof createImageBitmap !== 'function') {
51
- return Promise.resolve(undefined);
52
- }
53
- return createImageBitmap(img);
54
- }
55
- constructor(_terminal) {
56
- super();
57
- this._terminal = _terminal;
58
- this._optionsRefresh = this._register(new lifecycle_1.MutableDisposable());
59
- this._oldOpen = this._terminal._core.open;
60
- this._terminal._core.open = (parent) => {
61
- var _a;
62
- (_a = this._oldOpen) === null || _a === void 0 ? void 0 : _a.call(this._terminal._core, parent);
63
- this._open();
64
- };
65
- if (this._terminal._core.screenElement) {
66
- this._open();
67
- }
68
- // hack to spot fontSize changes
69
- this._optionsRefresh.value = this._terminal._core.optionsService.onOptionChange(option => {
70
- var _a;
71
- if (option === 'fontSize') {
72
- this.rescaleCanvas();
73
- (_a = this._renderService) === null || _a === void 0 ? void 0 : _a.refreshRows(0, this._terminal.rows);
74
- }
75
- });
76
- this._register((0, lifecycle_1.toDisposable)(() => {
77
- var _a;
78
- this.removeLayerFromDom();
79
- if (this._terminal._core && this._oldOpen) {
80
- this._terminal._core.open = this._oldOpen;
81
- this._oldOpen = undefined;
82
- }
83
- if (this._renderService && this._oldSetRenderer) {
84
- this._renderService.setRenderer = this._oldSetRenderer;
85
- this._oldSetRenderer = undefined;
86
- }
87
- this._renderService = undefined;
88
- this.canvas = undefined;
89
- this._ctx = undefined;
90
- (_a = this._placeholderBitmap) === null || _a === void 0 ? void 0 : _a.close();
91
- this._placeholderBitmap = undefined;
92
- this._placeholder = undefined;
93
- }));
94
- }
95
- /**
96
- * Enable the placeholder.
97
- */
98
- showPlaceholder(value) {
99
- var _a, _b;
100
- if (value) {
101
- if (!this._placeholder && this.cellSize.height !== -1) {
102
- this._createPlaceHolder(Math.max(this.cellSize.height + 1, PLACEHOLDER_HEIGHT));
103
- }
104
- }
105
- else {
106
- (_a = this._placeholderBitmap) === null || _a === void 0 ? void 0 : _a.close();
107
- this._placeholderBitmap = undefined;
108
- this._placeholder = undefined;
109
- }
110
- (_b = this._renderService) === null || _b === void 0 ? void 0 : _b.refreshRows(0, this._terminal.rows);
111
- }
112
- /**
113
- * Dimensions of the terminal.
114
- * Forwarded from internal render service.
115
- */
116
- get dimensions() {
117
- var _a;
118
- return (_a = this._renderService) === null || _a === void 0 ? void 0 : _a.dimensions;
119
- }
120
- /**
121
- * Current cell size (float).
122
- */
123
- get cellSize() {
124
- var _a, _b;
125
- return {
126
- width: ((_a = this.dimensions) === null || _a === void 0 ? void 0 : _a.css.cell.width) || -1,
127
- height: ((_b = this.dimensions) === null || _b === void 0 ? void 0 : _b.css.cell.height) || -1
128
- };
129
- }
130
- /**
131
- * Clear a region of the image layer canvas.
132
- */
133
- clearLines(start, end) {
134
- var _a, _b, _c, _d;
135
- (_a = this._ctx) === null || _a === void 0 ? void 0 : _a.clearRect(0, start * (((_b = this.dimensions) === null || _b === void 0 ? void 0 : _b.css.cell.height) || 0), ((_c = this.dimensions) === null || _c === void 0 ? void 0 : _c.css.canvas.width) || 0, (++end - start) * (((_d = this.dimensions) === null || _d === void 0 ? void 0 : _d.css.cell.height) || 0));
136
- }
137
- /**
138
- * Clear whole image canvas.
139
- */
140
- clearAll() {
141
- var _a, _b, _c;
142
- (_a = this._ctx) === null || _a === void 0 ? void 0 : _a.clearRect(0, 0, ((_b = this.canvas) === null || _b === void 0 ? void 0 : _b.width) || 0, ((_c = this.canvas) === null || _c === void 0 ? void 0 : _c.height) || 0);
143
- }
144
- /**
145
- * Draw neighboring tiles on the image layer canvas.
146
- */
147
- draw(imgSpec, tileId, col, row, count = 1) {
148
- if (!this._ctx) {
149
- return;
150
- }
151
- const { width, height } = this.cellSize;
152
- // Don't try to draw anything, if we cannot get valid renderer metrics.
153
- if (width === -1 || height === -1) {
154
- return;
155
- }
156
- this._rescaleImage(imgSpec, width, height);
157
- const img = imgSpec.actual;
158
- const cols = Math.ceil(img.width / width);
159
- const sx = (tileId % cols) * width;
160
- const sy = Math.floor(tileId / cols) * height;
161
- const dx = col * width;
162
- const dy = row * height;
163
- // safari bug: never access image source out of bounds
164
- const finalWidth = count * width + sx > img.width ? img.width - sx : count * width;
165
- const finalHeight = sy + height > img.height ? img.height - sy : height;
166
- // Floor all pixel offsets to get stable tile mapping without any overflows.
167
- // Note: For not pixel perfect aligned cells like in the DOM renderer
168
- // this will move a tile slightly to the top/left (subpixel range, thus ignore it).
169
- // FIX #34: avoid striping on displays with pixelDeviceRatio != 1 by ceiling height and width
170
- this._ctx.drawImage(img, Math.floor(sx), Math.floor(sy), Math.ceil(finalWidth), Math.ceil(finalHeight), Math.floor(dx), Math.floor(dy), Math.ceil(finalWidth), Math.ceil(finalHeight));
171
- }
172
- /**
173
- * Extract a single tile from an image.
174
- */
175
- extractTile(imgSpec, tileId) {
176
- const { width, height } = this.cellSize;
177
- // Don't try to draw anything, if we cannot get valid renderer metrics.
178
- if (width === -1 || height === -1) {
179
- return;
180
- }
181
- this._rescaleImage(imgSpec, width, height);
182
- const img = imgSpec.actual;
183
- const cols = Math.ceil(img.width / width);
184
- const sx = (tileId % cols) * width;
185
- const sy = Math.floor(tileId / cols) * height;
186
- const finalWidth = width + sx > img.width ? img.width - sx : width;
187
- const finalHeight = sy + height > img.height ? img.height - sy : height;
188
- const canvas = ImageRenderer.createCanvas(this.document, finalWidth, finalHeight);
189
- const ctx = canvas.getContext('2d');
190
- if (ctx) {
191
- ctx.drawImage(img, Math.floor(sx), Math.floor(sy), Math.floor(finalWidth), Math.floor(finalHeight), 0, 0, Math.floor(finalWidth), Math.floor(finalHeight));
192
- return canvas;
193
- }
194
- }
195
- /**
196
- * Draw a line with placeholder on the image layer canvas.
197
- */
198
- drawPlaceholder(col, row, count = 1) {
199
- if (this._ctx) {
200
- const { width, height } = this.cellSize;
201
- // Don't try to draw anything, if we cannot get valid renderer metrics.
202
- if (width === -1 || height === -1) {
203
- return;
204
- }
205
- if (!this._placeholder) {
206
- this._createPlaceHolder(Math.max(height + 1, PLACEHOLDER_HEIGHT));
207
- }
208
- else if (height >= this._placeholder.height) {
209
- this._createPlaceHolder(height + 1);
210
- }
211
- if (!this._placeholder)
212
- return;
213
- this._ctx.drawImage(this._placeholderBitmap || this._placeholder, col * width, (row * height) % 2 ? 0 : 1, // needs %2 offset correction
214
- width * count, height, col * width, row * height, width * count, height);
215
- }
216
- }
217
- /**
218
- * Rescale image layer canvas if needed.
219
- * Checked once from `ImageStorage.render`.
220
- */
221
- rescaleCanvas() {
222
- if (!this.canvas) {
223
- return;
224
- }
225
- if (this.canvas.width !== this.dimensions.css.canvas.width || this.canvas.height !== this.dimensions.css.canvas.height) {
226
- this.canvas.width = this.dimensions.css.canvas.width || 0;
227
- this.canvas.height = this.dimensions.css.canvas.height || 0;
228
- }
229
- }
230
- /**
231
- * Rescale image in storage if needed.
232
- */
233
- _rescaleImage(spec, currentWidth, currentHeight) {
234
- if (currentWidth === spec.actualCellSize.width && currentHeight === spec.actualCellSize.height) {
235
- return;
236
- }
237
- const { width: originalWidth, height: originalHeight } = spec.origCellSize;
238
- if (currentWidth === originalWidth && currentHeight === originalHeight) {
239
- spec.actual = spec.orig;
240
- spec.actualCellSize.width = originalWidth;
241
- spec.actualCellSize.height = originalHeight;
242
- return;
243
- }
244
- const canvas = ImageRenderer.createCanvas(this.document, Math.ceil(spec.orig.width * currentWidth / originalWidth), Math.ceil(spec.orig.height * currentHeight / originalHeight));
245
- const ctx = canvas.getContext('2d');
246
- if (ctx) {
247
- ctx.drawImage(spec.orig, 0, 0, canvas.width, canvas.height);
248
- spec.actual = canvas;
249
- spec.actualCellSize.width = currentWidth;
250
- spec.actualCellSize.height = currentHeight;
251
- }
252
- }
253
- /**
254
- * Lazy init for the renderer.
255
- */
256
- _open() {
257
- this._renderService = this._terminal._core._renderService;
258
- this._oldSetRenderer = this._renderService.setRenderer.bind(this._renderService);
259
- this._renderService.setRenderer = (renderer) => {
260
- var _a;
261
- this.removeLayerFromDom();
262
- (_a = this._oldSetRenderer) === null || _a === void 0 ? void 0 : _a.call(this._renderService, renderer);
263
- };
264
- }
265
- insertLayerToDom() {
266
- var _a, _b;
267
- // make sure that the terminal is attached to a document and to DOM
268
- if (this.document && this._terminal._core.screenElement) {
269
- if (!this.canvas) {
270
- this.canvas = ImageRenderer.createCanvas(this.document, ((_a = this.dimensions) === null || _a === void 0 ? void 0 : _a.css.canvas.width) || 0, ((_b = this.dimensions) === null || _b === void 0 ? void 0 : _b.css.canvas.height) || 0);
271
- this.canvas.classList.add('xterm-image-layer');
272
- this._terminal._core.screenElement.appendChild(this.canvas);
273
- this._ctx = this.canvas.getContext('2d', { alpha: true, desynchronized: true });
274
- this.clearAll();
275
- }
276
- }
277
- else {
278
- console.warn('image addon: cannot insert output canvas to DOM, missing document or screenElement');
279
- }
280
- }
281
- removeLayerFromDom() {
282
- if (this.canvas) {
283
- this._ctx = undefined;
284
- this.canvas.remove();
285
- this.canvas = undefined;
286
- }
287
- }
288
- _createPlaceHolder(height = PLACEHOLDER_HEIGHT) {
289
- var _a;
290
- (_a = this._placeholderBitmap) === null || _a === void 0 ? void 0 : _a.close();
291
- this._placeholderBitmap = undefined;
292
- // create blueprint to fill placeholder with
293
- const bWidth = 32; // must be 2^n
294
- const blueprint = ImageRenderer.createCanvas(this.document, bWidth, height);
295
- const ctx = blueprint.getContext('2d', { alpha: false });
296
- if (!ctx)
297
- return;
298
- const imgData = ImageRenderer.createImageData(ctx, bWidth, height);
299
- const d32 = new Uint32Array(imgData.data.buffer);
300
- const black = (0, Colors_1.toRGBA8888)(0, 0, 0);
301
- const white = (0, Colors_1.toRGBA8888)(255, 255, 255);
302
- d32.fill(black);
303
- for (let y = 0; y < height; ++y) {
304
- const shift = y % 2;
305
- const offset = y * bWidth;
306
- for (let x = 0; x < bWidth; x += 2) {
307
- d32[offset + x + shift] = white;
308
- }
309
- }
310
- ctx.putImageData(imgData, 0, 0);
311
- // create placeholder line, width aligned to blueprint width
312
- const width = (screen.width + bWidth - 1) & ~(bWidth - 1) || PLACEHOLDER_LENGTH;
313
- this._placeholder = ImageRenderer.createCanvas(this.document, width, height);
314
- const ctx2 = this._placeholder.getContext('2d', { alpha: false });
315
- if (!ctx2) {
316
- this._placeholder = undefined;
317
- return;
318
- }
319
- for (let i = 0; i < width; i += bWidth) {
320
- ctx2.drawImage(blueprint, i, 0);
321
- }
322
- ImageRenderer.createImageBitmap(this._placeholder).then(bitmap => this._placeholderBitmap = bitmap);
323
- }
324
- get document() {
325
- var _a;
326
- return (_a = this._terminal._core._coreBrowserService) === null || _a === void 0 ? void 0 : _a.window.document;
327
- }
328
- }
329
- exports.ImageRenderer = ImageRenderer;
330
- //# sourceMappingURL=ImageRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../src/ImageRenderer.ts"],"names":[],"mappings":"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"}