1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#ifndef TERM_CELL_H
#define TERM_CELL_H
/*
* The cell layout that the terminal stores. Only src/term uses it. A
* snapshot converts these cells to the public struct term_cell.
*/
#include "term.h"
enum cell_flags {
CELL_BOLD = 1 << 0,
CELL_ITALIC = 1 << 1,
CELL_UNDERLINE = 1 << 2,
CELL_STRIKE = 1 << 3,
CELL_OVERLINE = 1 << 4,
CELL_EMOJI = 1 << 5,
CELL_TEXT = 1 << 6,
CELL_WIDE = 1 << 7,
CELL_TRAIL = 1 << 8,
CELL_WRAP_PAD = 1 << 9,
CELL_FAINT = 1 << 10,
CELL_DOUBLE_UNDERLINE = 1 << 11,
CELL_CURLY_UNDERLINE = 1 << 12,
CELL_DOTTED_UNDERLINE = 1 << 13,
CELL_DASHED_UNDERLINE = 1 << 14,
CELL_LINK = 1 << 15,
};
#define CELL_ANY_UNDERLINE \
(CELL_UNDERLINE | CELL_DOUBLE_UNDERLINE | CELL_CURLY_UNDERLINE | \
CELL_DOTTED_UNDERLINE | CELL_DASHED_UNDERLINE)
/* c is a code point or a grapheme handle. pad holds the OSC 8 link id. */
struct cell {
uint32_t c;
uint32_t fg;
uint32_t bg;
uint16_t flags;
uint16_t pad;
};
_Static_assert(sizeof(struct cell) == 16,
"struct cell must stay 16 bytes (4 cells per AVX-512 register)");
#endif
|