aboutsummaryrefslogtreecommitdiffstats
path: root/src/screen.h
blob: 77f12f290cef9b17c74b06ff9286c3a957d1869f (plain) (blame)
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