dte test coverage


Directory: ./
File: src/terminal/style.h
Date: 2025-11-12 12:04:10
Coverage Exec Excl Total
Lines: 100.0% 12 0 12
Functions: 100.0% 4 0 4
Branches: 100.0% 14 0 14

Line Branch Exec Source
1 #ifndef TERMINAL_STYLE_H
2 #define TERMINAL_STYLE_H
3
4 #include <stdbool.h>
5 #include <stdint.h>
6 #include <sys/types.h>
7 #include "color.h"
8 #include "util/macros.h"
9 #include "util/ptr-array.h"
10
11 #define COLOR_STR_BUFSIZE 16
12 #define TERM_STYLE_BUFSIZE 128
13
14 enum {
15 ATTR_KEEP = 0x01,
16 ATTR_UNDERLINE = 0x02,
17 ATTR_REVERSE = 0x04,
18 ATTR_BLINK = 0x08,
19 ATTR_DIM = 0x10,
20 ATTR_BOLD = 0x20,
21 ATTR_INVIS = 0x40,
22 ATTR_ITALIC = 0x80,
23 ATTR_STRIKETHROUGH = 0x100,
24 };
25
26 typedef struct DESIGNATED_INIT {
27 int32_t fg;
28 int32_t bg;
29 unsigned int attr;
30 } TermStyle;
31
32 5 static inline TermStyle term_style(int32_t fg, int32_t bg, unsigned int attr)
33 {
34 5 return (TermStyle){.fg = fg, .bg = bg, .attr = attr};
35 }
36
37 418 static inline bool same_style(const TermStyle *a, const TermStyle *b)
38 {
39
6/6
✓ Branch 2 → 3 taken 253 times.
✓ Branch 2 → 5 taken 165 times.
✓ Branch 3 → 4 taken 250 times.
✓ Branch 3 → 5 taken 3 times.
✓ Branch 4 → 5 taken 8 times.
✓ Branch 4 → 6 taken 242 times.
418 return a->fg == b->fg && a->bg == b->bg && a->attr == b->attr;
40 }
41
42 7 static inline void mask_style2(TermStyle *style, const TermStyle *over, bool mask_bg)
43 {
44 14 *style = (TermStyle) {
45
2/2
✓ Branch 2 → 3 taken 2 times.
✓ Branch 2 → 4 taken 5 times.
7 .fg = (over->fg == COLOR_KEEP) ? style->fg : over->fg,
46
4/4
✓ Branch 4 → 5 taken 3 times.
✓ Branch 4 → 6 taken 4 times.
✓ Branch 5 → 6 taken 1 time.
✓ Branch 5 → 7 taken 2 times.
7 .bg = (over->bg == COLOR_KEEP || !mask_bg) ? style->bg : over->bg,
47
2/2
✓ Branch 7 → 8 taken 1 time.
✓ Branch 7 → 9 taken 6 times.
7 .attr = (over->attr & ATTR_KEEP) ? style->attr : over->attr,
48 };
49 7 }
50
51 3 static inline void mask_style(TermStyle *style, const TermStyle *over)
52 {
53 3 return mask_style2(style, over, true);
54 }
55
56 ssize_t parse_term_style(TermStyle *style, char **strs, size_t nstrs) NONNULL_ARGS WARN_UNUSED_RESULT;
57 size_t color_to_str(char buf[static COLOR_STR_BUFSIZE], int32_t color) NONNULL_ARGS WARN_UNUSED_RESULT;
58 const char *term_style_to_string(char buf[static TERM_STYLE_BUFSIZE], const TermStyle *style) NONNULL_ARGS_AND_RETURN;
59 void collect_colors_and_attributes(PointerArray *a, const char *prefix) NONNULL_ARGS;
60
61 #endif
62