MCPcopy
hub / github.com/xtermjs/xterm.js / setFromCharData

Method setFromCharData

src/common/buffer/CellData.ts:57–89  ·  view source on GitHub ↗

Set data from CharData

(value: CharData)

Source from the content-addressed store, hash-verified

55 }
56 /** Set data from CharData */
57 public setFromCharData(value: CharData): void {
58 this.fg = value[CHAR_DATA_ATTR_INDEX];
59 this.bg = 0;
60 let combined = false;
61 // surrogates and combined strings need special treatment
62 if (value[CHAR_DATA_CHAR_INDEX].length > 2) {
63 combined = true;
64 }
65 else if (value[CHAR_DATA_CHAR_INDEX].length === 2) {
66 const code = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0);
67 // if the 2-char string is a surrogate create single codepoint
68 // everything else is combined
69 if (0xD800 <= code && code <= 0xDBFF) {
70 const second = value[CHAR_DATA_CHAR_INDEX].charCodeAt(1);
71 if (0xDC00 <= second && second <= 0xDFFF) {
72 this.content = ((code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);
73 }
74 else {
75 combined = true;
76 }
77 }
78 else {
79 combined = true;
80 }
81 }
82 else {
83 this.content = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);
84 }
85 if (combined) {
86 this.combinedData = value[CHAR_DATA_CHAR_INDEX];
87 this.content = Content.IS_COMBINED_MASK | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);
88 }
89 }
90 /** Get data as CharData. */
91 public getAsCharData(): CharData {
92 return [this.fg, this.getChars(), this.getWidth(), this.getCode()];

Callers 1

fromCharDataMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected