aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9term/9term.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/9term/9term.h')
-rw-r--r--src/cmd/9term/9term.h120
1 files changed, 120 insertions, 0 deletions
diff --git a/src/cmd/9term/9term.h b/src/cmd/9term/9term.h
new file mode 100644
index 00000000..be2fa4c9
--- /dev/null
+++ b/src/cmd/9term/9term.h
@@ -0,0 +1,120 @@
+#include <u.h>
+#include <libc.h>
+#include <ctype.h>
+#include <draw.h>
+#include <thread.h>
+#include <mouse.h>
+#include <cursor.h>
+#include <keyboard.h>
+#include <frame.h>
+#include <plumb.h>
+#include <termios.h>
+
+#define fatal sysfatal
+
+typedef struct Text Text;
+typedef struct Readbuf Readbuf;
+
+enum
+{
+ /* these are chosen to use malloc()'s properties well */
+ HiWater = 640000, /* max size of history */
+ LoWater = 330000, /* min size of history after max'ed */
+};
+
+/* various geometric paramters */
+enum
+{
+ Scrollwid = 12, /* width of scroll bar */
+ Scrollgap = 4, /* gap right of scroll bar */
+ Maxtab = 4,
+};
+
+enum
+{
+ Cut,
+ Paste,
+ Snarf,
+ Send,
+ Scroll,
+ Plumb,
+};
+
+
+#define SCROLLKEY Kdown
+#define ESC 0x1B
+#define CUT 0x18 /* ctrl-x */
+#define COPY 0x03 /* crtl-c */
+#define PASTE 0x16 /* crtl-v */
+#define BACKSCROLLKEY Kup
+
+#define READBUFSIZE 8192
+
+struct Text
+{
+ Frame *f; /* frame ofr terminal */
+ Mouse m;
+ uint nr; /* num of runes in term */
+ Rune *r; /* runes for term */
+ uint nraw; /* num of runes in raw buffer */
+ Rune *raw; /* raw buffer */
+ uint org; /* first rune on the screen */
+ uint q0; /* start of selection region */
+ uint q1; /* end of selection region */
+ uint qh; /* unix point */
+ int npart; /* partial runes read from console */
+ char part[UTFmax];
+ int nsnarf; /* snarf buffer */
+ Rune *snarf;
+};
+
+struct Readbuf
+{
+ short n; /* # bytes in buf */
+ uchar data[READBUFSIZE]; /* data bytes */
+};
+
+void mouse(void);
+void domenu2(int);
+void loop(void);
+void geom(void);
+void fill(void);
+void tcheck(void);
+void updatesel(void);
+void doreshape(void);
+void rcstart(int fd[2]);
+void runewrite(Rune*, int);
+void consread(void);
+void conswrite(char*, int);
+int bswidth(Rune c);
+void cut(void);
+void paste(Rune*, int, int);
+void snarfupdate(void);
+void snarf(void);
+void show(uint);
+void key(Rune);
+void setorigin(uint org, int exact);
+uint line2q(uint);
+uint backnl(uint, uint);
+int cansee(uint);
+uint backnl(uint, uint);
+void addraw(Rune*, int);
+void mselect(void);
+void doubleclick(uint *q0, uint *q1);
+int clickmatch(int cl, int cr, int dir, uint *q);
+Rune *strrune(Rune *s, Rune c);
+int consready(void);
+Rectangle scrpos(Rectangle r, ulong p0, ulong p1, ulong tot);
+void scrdraw(void);
+void scroll(int);
+void hostproc(void *arg);
+void hoststart(void);
+void pdx(int, char*, int);
+void plumbstart(void);
+void plumb(uint, uint);
+void plumbclick(uint*, uint*);
+int getpts(int fd[], char *slave);
+
+#define runemalloc(n) malloc((n)*sizeof(Rune))
+#define runerealloc(a, n) realloc(a, (n)*sizeof(Rune))
+#define runemove(a, b, n) memmove(a, b, (n)*sizeof(Rune))