@xterm/addon-image 0.9.0-beta.99 → 0.10.0-beta.1
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/lib/addon-image.js +1 -1
- package/lib/addon-image.js.map +1 -1
- package/lib/addon-image.mjs.map +1 -1
- package/package.json +5 -5
- package/lib/addon-image.js.LICENSE.txt +0 -24
- package/out/IIPHandler.js +0 -148
- package/out/IIPHandler.js.map +0 -1
- package/out/IIPHeaderParser.js +0 -156
- package/out/IIPHeaderParser.js.map +0 -1
- package/out/IIPHeaderParser.test.js +0 -137
- package/out/IIPHeaderParser.test.js.map +0 -1
- package/out/IIPMetrics.js +0 -69
- package/out/IIPMetrics.js.map +0 -1
- package/out/IIPMetrics.test.js +0 -39
- package/out/IIPMetrics.test.js.map +0 -1
- package/out/ImageAddon.js +0 -261
- package/out/ImageAddon.js.map +0 -1
- package/out/ImageRenderer.js +0 -330
- package/out/ImageRenderer.js.map +0 -1
- package/out/ImageStorage.js +0 -563
- package/out/ImageStorage.js.map +0 -1
- package/out/SixelHandler.js +0 -140
- package/out/SixelHandler.js.map +0 -1
- package/out/Types.js +0 -7
- package/out/Types.js.map +0 -1
- package/src/IIPHeaderParser.test.ts +0 -138
- package/src/IIPMetrics.test.ts +0 -44
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
|
package/out/ImageAddon.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ImageAddon.js","sourceRoot":"","sources":["../src/ImageAddon.ts"],"names":[],"mappings":"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"}
|
package/out/ImageRenderer.js
DELETED
|
@@ -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
|
package/out/ImageRenderer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../src/ImageRenderer.ts"],"names":[],"mappings":"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"}
|