X-Git-Url: http://git.madism.org/?a=blobdiff_plain;ds=sidebyside;f=madtty%2Fmadtty.h;h=0a1e451b0496b89ac86c6a6fcb4d3f1989574180;hb=5e8bd7606f26abce289b94c905db65487926bc9c;hp=25da678d0ad5656663ff0d5316574746e7bc5de6;hpb=7e9bf69df0c4b6cd9a94172e71d7c6a584341f52;p=apps%2Fmadtty.git diff --git a/madtty/madtty.h b/madtty/madtty.h index 25da678..0a1e451 100644 --- a/madtty/madtty.h +++ b/madtty/madtty.h @@ -22,58 +22,49 @@ #ifndef MADTTY_MADTTY_H #define MADTTY_MADTTY_H -#include +#include #include #include #include #include #include - -#define MAX_CSI_ES_PARAMS 32 -#define ESEQ_BUF_SIZE 128 /* size of escape sequence buffer */ - -/* Represents each of the text cells in the terminal screen */ -typedef struct { - char s[4]; - char len; - attr_t attrs; -} RoteCell; - -typedef struct { - int pty; - pid_t childpid; - - /* flags */ - unsigned insert : 1; - unsigned escaped : 1; - unsigned graphmode : 1; - - /* geometry */ - int rows, cols; - int scrolltop, scrollbottom; - RoteCell **cells; - - /* cursor */ - attr_t curattrs; - int curs_row, curs_col; - int curs_srow, curs_scol; - - char esbuf[ESEQ_BUF_SIZE]; - int esbuf_len; -} madtty_t; - -void madtty_initialize(void); +#include + +enum { + /* means escape sequence was handled */ + MADTTY_HANDLER_OK, + /* means the escape sequence was not recognized yet, but + * there is hope that it still will once more characters + * arrive (i.e. it is not yet complete). + * + * The library will thus continue collecting characters + * and calling the handler as each character arrives until + * either OK or NOWAY is returned. + */ + MADTTY_HANDLER_NOTYET, + /* means the escape sequence was not recognized, and there + * is no chance that it will even if more characters are + * added to it. + */ + MADTTY_HANDLER_NOWAY +}; + +typedef struct madtty_t madtty_t; +typedef int (*madtty_handler_t)(madtty_t *, char *es); + +void madtty_init_colors(void); +void madtty_init_vt100_graphics(void); +void madtty_set_handler(madtty_t *, madtty_handler_t); +int madtty_color_pair(int fg, int bg); madtty_t *madtty_create(int rows, int cols); -void madtty_destroy(madtty_t *rt); -pid_t madtty_forkpty(madtty_t *rt, const char *path, const char *argv[]); - -int madtty_read(madtty_t *rt, char *buf, int buflen); -int madtty_write(madtty_t *rt, const char *data, int length); - -int madtty_inject(madtty_t *rt, const char *data, int length); -void madtty_draw(madtty_t *rt, WINDOW *win, int startrow, int startcol); - -void madtty_keypress(madtty_t *rt, int keycode); +void madtty_resize(madtty_t *, int rows, int cols); +void madtty_destroy(madtty_t *); +pid_t madtty_forkpty(madtty_t *, const char *, const char *argv[], int *pty); +int madtty_getpty(madtty_t *); + +int madtty_process(madtty_t *); +void madtty_keypress(madtty_t *, int keycode); +void madtty_draw(madtty_t *, WINDOW *win, int startrow, int startcol); #endif /* MADTTY_MADTTY_H */