aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/xterm/src/common/buffer/Constants.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/xterm/src/common/buffer/Constants.ts')
-rw-r--r--node_modules/xterm/src/common/buffer/Constants.ts139
1 files changed, 139 insertions, 0 deletions
diff --git a/node_modules/xterm/src/common/buffer/Constants.ts b/node_modules/xterm/src/common/buffer/Constants.ts
new file mode 100644
index 0000000..a2c1b88
--- /dev/null
+++ b/node_modules/xterm/src/common/buffer/Constants.ts
@@ -0,0 +1,139 @@
+/**
+ * Copyright (c) 2019 The xterm.js authors. All rights reserved.
+ * @license MIT
+ */
+
+export const DEFAULT_COLOR = 256;
+export const DEFAULT_ATTR = (0 << 18) | (DEFAULT_COLOR << 9) | (256 << 0);
+
+export const CHAR_DATA_ATTR_INDEX = 0;
+export const CHAR_DATA_CHAR_INDEX = 1;
+export const CHAR_DATA_WIDTH_INDEX = 2;
+export const CHAR_DATA_CODE_INDEX = 3;
+
+/**
+ * Null cell - a real empty cell (containing nothing).
+ * Note that code should always be 0 for a null cell as
+ * several test condition of the buffer line rely on this.
+ */
+export const NULL_CELL_CHAR = '';
+export const NULL_CELL_WIDTH = 1;
+export const NULL_CELL_CODE = 0;
+
+/**
+ * Whitespace cell.
+ * This is meant as a replacement for empty cells when needed
+ * during rendering lines to preserve correct aligment.
+ */
+export const WHITESPACE_CELL_CHAR = ' ';
+export const WHITESPACE_CELL_WIDTH = 1;
+export const WHITESPACE_CELL_CODE = 32;
+
+/**
+ * Bitmasks for accessing data in `content`.
+ */
+export const enum Content {
+ /**
+ * bit 1..21 codepoint, max allowed in UTF32 is 0x10FFFF (21 bits taken)
+ * read: `codepoint = content & Content.codepointMask;`
+ * write: `content |= codepoint & Content.codepointMask;`
+ * shortcut if precondition `codepoint <= 0x10FFFF` is met:
+ * `content |= codepoint;`
+ */
+ CODEPOINT_MASK = 0x1FFFFF,
+
+ /**
+ * bit 22 flag indication whether a cell contains combined content
+ * read: `isCombined = content & Content.isCombined;`
+ * set: `content |= Content.isCombined;`
+ * clear: `content &= ~Content.isCombined;`
+ */
+ IS_COMBINED_MASK = 0x200000, // 1 << 21
+
+ /**
+ * bit 1..22 mask to check whether a cell contains any string data
+ * we need to check for codepoint and isCombined bits to see
+ * whether a cell contains anything
+ * read: `isEmpty = !(content & Content.hasContent)`
+ */
+ HAS_CONTENT_MASK = 0x3FFFFF,
+
+ /**
+ * bit 23..24 wcwidth value of cell, takes 2 bits (ranges from 0..2)
+ * read: `width = (content & Content.widthMask) >> Content.widthShift;`
+ * `hasWidth = content & Content.widthMask;`
+ * as long as wcwidth is highest value in `content`:
+ * `width = content >> Content.widthShift;`
+ * write: `content |= (width << Content.widthShift) & Content.widthMask;`
+ * shortcut if precondition `0 <= width <= 3` is met:
+ * `content |= width << Content.widthShift;`
+ */
+ WIDTH_MASK = 0xC00000, // 3 << 22
+ WIDTH_SHIFT = 22
+}
+
+export const enum Attributes {
+ /**
+ * bit 1..8 blue in RGB, color in P256 and P16
+ */
+ BLUE_MASK = 0xFF,
+ BLUE_SHIFT = 0,
+ PCOLOR_MASK = 0xFF,
+ PCOLOR_SHIFT = 0,
+
+ /**
+ * bit 9..16 green in RGB
+ */
+ GREEN_MASK = 0xFF00,
+ GREEN_SHIFT = 8,
+
+ /**
+ * bit 17..24 red in RGB
+ */
+ RED_MASK = 0xFF0000,
+ RED_SHIFT = 16,
+
+ /**
+ * bit 25..26 color mode: DEFAULT (0) | P16 (1) | P256 (2) | RGB (3)
+ */
+ CM_MASK = 0x3000000,
+ CM_DEFAULT = 0,
+ CM_P16 = 0x1000000,
+ CM_P256 = 0x2000000,
+ CM_RGB = 0x3000000,
+
+ /**
+ * bit 1..24 RGB room
+ */
+ RGB_MASK = 0xFFFFFF
+}
+
+export const enum FgFlags {
+ /**
+ * bit 27..32
+ */
+ INVERSE = 0x4000000,
+ BOLD = 0x8000000,
+ UNDERLINE = 0x10000000,
+ BLINK = 0x20000000,
+ INVISIBLE = 0x40000000,
+ STRIKETHROUGH = 0x80000000,
+}
+
+export const enum BgFlags {
+ /**
+ * bit 27..32 (upper 3 unused)
+ */
+ ITALIC = 0x4000000,
+ DIM = 0x8000000,
+ HAS_EXTENDED = 0x10000000
+}
+
+export const enum UnderlineStyle {
+ NONE = 0,
+ SINGLE = 1,
+ DOUBLE = 2,
+ CURLY = 3,
+ DOTTED = 4,
+ DASHED = 5
+}