123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- #pragma once
- #include <common/glib.h>
- #include <common/sys/types.h>
- #include <common/spinlock.h>
- #define TEXTUI_WF_CHROMATIC (1 << 0)
- #define textui_is_chromatic(flag) ((flag)&TEXTUI_WF_CHROMATIC)
- #define TEXTUI_CHAR_WIDTH 8
- #define TEXTUI_CHAR_HEIGHT 16
- struct textui_char_normal_t
- {
- char c;
- };
- struct textui_char_chromatic_t
- {
- unsigned c : 16;
-
- unsigned FRcolor : 24;
-
- unsigned BKcolor : 24;
- };
- struct textui_vline_normal_t
- {
- struct textui_char_normal_t *chars;
- int16_t index;
- };
- struct textui_vline_chromatic_t
- {
- struct textui_char_chromatic_t *chars;
- int16_t index;
- };
- struct textui_window_t
- {
- struct List list;
- uint32_t id;
- int16_t vlines_num;
- int16_t vlines_used;
-
- union
- {
- struct textui_vline_normal_t *normal;
- struct textui_vline_chromatic_t *chromatic;
- } vlines;
- int16_t top_vline;
- int16_t vline_operating;
- int16_t chars_per_line;
- uint8_t flags;
- spinlock_t lock;
- };
- struct textui_private_info_t
- {
- int16_t actual_line;
- struct textui_window_t *current_window;
- struct textui_window_t *default_window;
- };
- int textui_refresh_vline(struct textui_window_t *window, uint16_t vline_id);
- int textui_refresh_vlines(struct textui_window_t *window, uint16_t start, uint16_t count);
- int textui_refresh_characters(struct textui_window_t *window, uint16_t vline_id, uint16_t start, uint16_t count);
- int textui_putchar_window(struct textui_window_t *window, uint16_t character, uint32_t FRcolor, uint32_t BKcolor);
- int textui_putchar(uint16_t character, uint32_t FRcolor, uint32_t BKcolor);
- uint16_t __textui_get_actual_lines();
- uint32_t __textui_get_current_window_id();
- int textui_init();
|