aboutsummaryrefslogtreecommitdiffstats
path: root/src/screen.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/screen.h')
-rw-r--r--src/screen.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/src/screen.h b/src/screen.h
new file mode 100644
index 0000000..77f12f2
--- /dev/null
+++ b/src/screen.h
@@ -0,0 +1,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