diff options
author | Nicholas Noll <nbnoll@eml.cc> | 2020-06-10 14:49:45 -0700 |
---|---|---|
committer | Nicholas Noll <nbnoll@eml.cc> | 2020-06-10 14:49:45 -0700 |
commit | e41eb5691417ecacade402759231f64778e3147f (patch) | |
tree | c28606655266f2702a30277f283e83b62f9a2cbb /sys/cmd/dvtm/window.c | |
parent | 5daf8d56cdf6aecd1b7301c622c3e35eaa47bd42 (diff) |
checkin: massive restructuring of dvtm
Diffstat (limited to 'sys/cmd/dvtm/window.c')
-rw-r--r-- | sys/cmd/dvtm/window.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/sys/cmd/dvtm/window.c b/sys/cmd/dvtm/window.c new file mode 100644 index 0000000..44690c9 --- /dev/null +++ b/sys/cmd/dvtm/window.c @@ -0,0 +1,42 @@ +#include <u.h> +#include <libn.h> + +#include "buffer.h" + +typedef struct Rect Rect; +typedef struct Window Window; + +/* origin upper left corner */ +struct Rect +{ + int r0, c0, rows, cols; +}; + +struct Window +{ + Buffer buffer[2], *buf; + Rect area; /* on screen */ + Pen pen, spen; /* current and saved pen */ + struct { + uint visible : 1; + int row, col; /* saved cursor row/colmn (zero based) */ + int srow, scol; /* saved cursor row/colmn (zero based) */ + } c; +} + +/* functions */ + +Window * +makewindow( + + t->pen = (Pen) { + .state = PenNormal, + .col = {-1, -1}, + }; + t->buffer = &t->buf[0]; + + if (!binit(&t->buf[0], rows, cols, size) || + !binit(&t->buf[1], rows, cols, 0)) { + free(t); + return nil; + } |