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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
#ifndef _RUNES_SCREEN_H
#define _RUNES_SCREEN_H
enum RunesColorType {
RUNES_COLOR_DEFAULT,
RUNES_COLOR_IDX,
RUNES_COLOR_RGB
};
struct runes_loc {
int row;
int col;
};
struct runes_color {
union {
struct {
unsigned char r;
unsigned char g;
unsigned char b;
};
unsigned char idx;
};
unsigned char type;
};
struct runes_cell {
char contents[8];
size_t len;
struct runes_color fgcolor;
struct runes_color bgcolor;
unsigned char bold: 1;
unsigned char italic: 1;
unsigned char underline: 1;
unsigned char inverse: 1;
};
struct runes_row {
struct runes_cell *cells;
unsigned char dirty: 1;
};
struct runes_screen {
struct runes_loc cur;
struct runes_loc max;
struct runes_loc saved;
int scroll_top;
int scroll_bottom;
char *title;
char *icon_name;
struct runes_row *rows;
struct runes_color fgcolor;
struct runes_color bgcolor;
unsigned char bold: 1;
unsigned char italic: 1;
unsigned char underline: 1;
unsigned char inverse: 1;
unsigned char hide_cursor: 1;
unsigned char application_keypad: 1;
unsigned char application_cursor: 1;
unsigned char mouse_reporting_press: 1;
unsigned char mouse_reporting_press_release: 1;
unsigned char visual_bell: 1;
unsigned char audible_bell: 1;
unsigned char update_title: 1;
unsigned char update_icon_name: 1;
};
void runes_screen_init(RunesTerm *t);
void runes_screen_process_string(RunesTerm *t, char *buf, size_t len);
void runes_screen_audible_bell(RunesTerm *t);
void runes_screen_visual_bell(RunesTerm *t);
void runes_screen_show_string_ascii(RunesTerm *t, char *buf, size_t len);
void runes_screen_show_string_utf8(RunesTerm *t, char *buf, size_t len);
void runes_screen_move_to(RunesTerm *t, int row, int col);
void runes_screen_clear_screen(RunesTerm *t);
void runes_screen_clear_screen_forward(RunesTerm *t);
void runes_screen_clear_screen_backward(RunesTerm *t);
void runes_screen_kill_line(RunesTerm *t);
void runes_screen_kill_line_forward(RunesTerm *t);
void runes_screen_kill_line_backward(RunesTerm *t);
void runes_screen_insert_characters(RunesTerm *t, int count);
void runes_screen_insert_lines(RunesTerm *t, int count);
void runes_screen_delete_characters(RunesTerm *t, int count);
void runes_screen_delete_lines(RunesTerm *t, int count);
void runes_screen_set_scroll_region(
RunesTerm *t, int top, int bottom, int left, int right);
void runes_screen_reset_text_attributes(RunesTerm *t);
void runes_screen_set_fg_color(RunesTerm *t, int idx);
void runes_screen_set_fg_color_rgb(RunesTerm *t, int r, int g, int b);
void runes_screen_reset_fg_color(RunesTerm *t);
void runes_screen_set_bg_color(RunesTerm *t, int idx);
void runes_screen_set_bg_color_rgb(RunesTerm *t, int r, int g, int b);
void runes_screen_reset_bg_color(RunesTerm *t);
void runes_screen_set_bold(RunesTerm *t);
void runes_screen_set_italic(RunesTerm *t);
void runes_screen_set_underline(RunesTerm *t);
void runes_screen_set_inverse(RunesTerm *t);
void runes_screen_reset_bold(RunesTerm *t);
void runes_screen_reset_italic(RunesTerm *t);
void runes_screen_reset_underline(RunesTerm *t);
void runes_screen_reset_inverse(RunesTerm *t);
void runes_screen_use_alternate_buffer(RunesTerm *t);
void runes_screen_use_normal_buffer(RunesTerm *t);
void runes_screen_save_cursor(RunesTerm *t);
void runes_screen_restore_cursor(RunesTerm *t);
void runes_screen_show_cursor(RunesTerm *t);
void runes_screen_hide_cursor(RunesTerm *t);
void runes_screen_set_application_keypad(RunesTerm *t);
void runes_screen_reset_application_keypad(RunesTerm *t);
void runes_screen_set_application_cursor(RunesTerm *t);
void runes_screen_reset_application_cursor(RunesTerm *t);
void runes_screen_set_mouse_reporting_press(RunesTerm *t);
void runes_screen_reset_mouse_reporting_press(RunesTerm *t);
void runes_screen_set_mouse_reporting_press_release(RunesTerm *t);
void runes_screen_reset_mouse_reporting_press_release(RunesTerm *t);
void runes_screen_set_window_title(RunesTerm *t, char *buf, size_t len);
void runes_screen_set_icon_name(RunesTerm *t, char *buf, size_t len);
void runes_screen_destroy(RunesTerm *t);
#endif
|