aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9term/dat.h
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-11-06 22:16:48 +0000
committerrsc <devnull@localhost>2005-11-06 22:16:48 +0000
commite830a908498c8f0270948fd08c50f6d773315880 (patch)
treea16fe62419a4e3a95ab2d8d3a70f1a870d0bb55c /src/cmd/9term/dat.h
parenta6c0ff35ee294c0a808e1792eb4f43820fed8f16 (diff)
downloadplan9port-e830a908498c8f0270948fd08c50f6d773315880.tar.gz
plan9port-e830a908498c8f0270948fd08c50f6d773315880.tar.bz2
plan9port-e830a908498c8f0270948fd08c50f6d773315880.zip
New 9term using rio sources more directly.
Diffstat (limited to 'src/cmd/9term/dat.h')
-rw-r--r--src/cmd/9term/dat.h243
1 files changed, 243 insertions, 0 deletions
diff --git a/src/cmd/9term/dat.h b/src/cmd/9term/dat.h
new file mode 100644
index 00000000..cf7aa9f9
--- /dev/null
+++ b/src/cmd/9term/dat.h
@@ -0,0 +1,243 @@
+#define STACK 32768
+#undef Borderwidth
+#define Borderwidth 0
+
+typedef struct Consreadmesg Consreadmesg;
+typedef struct Conswritemesg Conswritemesg;
+typedef struct Stringpair Stringpair;
+typedef struct Dirtab Dirtab;
+typedef struct Mouseinfo Mouseinfo;
+typedef struct Mousereadmesg Mousereadmesg;
+typedef struct Mousestate Mousestate;
+typedef struct Timer Timer;
+typedef struct Wctlmesg Wctlmesg;
+typedef struct Window Window;
+
+enum
+{
+ Selborder = 0, /* border of selected window */
+ Unselborder = 0, /* border of unselected window */
+ Scrollwid = 12, /* width of scroll bar */
+ Scrollgap = 4, /* gap right of scroll bar */
+ BIG = 3, /* factor by which window dimension can exceed screen */
+ TRUE = 1,
+ FALSE = 0,
+};
+
+enum
+{
+ Kscrolloneup = KF|0x20,
+ Kscrollonedown = KF|0x21,
+};
+
+enum /* control messages */
+{
+ Wakeup,
+ Reshaped,
+ Moved,
+ Refresh,
+ Movemouse,
+ Rawon,
+ Rawoff,
+ Holdon,
+ Holdoff,
+ Deleted,
+ Exited,
+};
+
+struct Wctlmesg
+{
+ int type;
+ Rectangle r;
+ Image *image;
+};
+
+struct Conswritemesg
+{
+ Channel *cw; /* chan(Stringpair) */
+};
+
+struct Consreadmesg
+{
+ Channel *c1; /* chan(tuple(char*, int) == Stringpair) */
+ Channel *c2; /* chan(tuple(char*, int) == Stringpair) */
+};
+
+struct Mousereadmesg
+{
+ Channel *cm; /* chan(Mouse) */
+};
+
+struct Stringpair /* rune and nrune or byte and nbyte */
+{
+ void *s;
+ int ns;
+};
+
+struct Mousestate
+{
+ Mouse m;
+ ulong counter; /* serial no. of mouse event */
+};
+
+struct Mouseinfo
+{
+ Mousestate queue[16];
+ int ri; /* read index into queue */
+ int wi; /* write index */
+ ulong counter; /* serial no. of last mouse event we received */
+ ulong lastcounter; /* serial no. of last mouse event sent to client */
+ int lastb; /* last button state we received */
+ uchar qfull; /* filled the queue; no more recording until client comes back */
+};
+
+struct Window
+{
+ Ref ref;
+ QLock lk;
+ Frame f;
+ Image *i;
+ Mousectl mc;
+ Mouseinfo mouse;
+ Channel *ck; /* chan(Rune[10]) */
+ Channel *cctl; /* chan(Wctlmesg)[20] */
+ Channel *conswrite; /* chan(Conswritemesg) */
+ Channel *consread; /* chan(Consreadmesg) */
+ Channel *mouseread; /* chan(Mousereadmesg) */
+ Channel *wctlread; /* chan(Consreadmesg) */
+ uint nr; /* number of runes in window */
+ uint maxr; /* number of runes allocated in r */
+ Rune *r;
+ uint nraw;
+ Rune *raw;
+ uint org;
+ uint q0;
+ uint q1;
+ uint qh;
+ int id;
+ char name[32];
+ uint namecount;
+ Rectangle scrollr;
+ /*
+ * Rio once used originwindow, so screenr could be different from i->r.
+ * Now they're always the same but the code doesn't assume so.
+ */
+ Rectangle screenr; /* screen coordinates of window */
+ int resized;
+ int wctlready;
+ Rectangle lastsr;
+ int topped;
+ int notefd;
+ uchar scrolling;
+ Cursor cursor;
+ Cursor *cursorp;
+ uchar holding;
+ uchar rawing;
+ uchar ctlopen;
+ uchar wctlopen;
+ uchar deleted;
+ uchar mouseopen;
+ char *label;
+ int pid;
+ char *dir;
+};
+
+int winborder(Window*, Point);
+void winctl(void*);
+void winshell(void*);
+Window* wlookid(int);
+Window* wmk(Image*, Mousectl*, Channel*, Channel*, int);
+Window* wpointto(Point);
+Window* wtop(Point);
+void wtopme(Window*);
+void wbottomme(Window*);
+char* wcontents(Window*, int*);
+int wbswidth(Window*, Rune);
+int wclickmatch(Window*, int, int, int, uint*);
+int wclose(Window*);
+int wctlmesg(Window*, int, Rectangle, Image*);
+int wctlmesg(Window*, int, Rectangle, Image*);
+uint wbacknl(Window*, uint, uint);
+uint winsert(Window*, Rune*, int, uint);
+void waddraw(Window*, Rune*, int);
+void wborder(Window*, int);
+void wclosewin(Window*);
+void wcurrent(Window*);
+void wcut(Window*);
+void wdelete(Window*, uint, uint);
+void wdoubleclick(Window*, uint*, uint*);
+void wfill(Window*);
+void wframescroll(Window*, int);
+void wkeyctl(Window*, Rune);
+void wmousectl(Window*);
+void wmovemouse(Window*, Point);
+void wpaste(Window*);
+void wplumb(Window*);
+void wrefresh(Window*, Rectangle);
+void wrepaint(Window*);
+void wresize(Window*, Image*, int);
+void wscrdraw(Window*);
+void wscroll(Window*, int);
+void wselect(Window*);
+void wsendctlmesg(Window*, int, Rectangle, Image*);
+void wsetcursor(Window*, int);
+void wsetname(Window*);
+void wsetorigin(Window*, uint, int);
+void wsetpid(Window*, int, int);
+void wsetselect(Window*, uint, uint);
+void wshow(Window*, uint);
+void wsnarf(Window*);
+void wscrsleep(Window*, uint);
+void wsetcols(Window*);
+
+void deletetimeoutproc(void*);
+
+struct Timer
+{
+ int dt;
+ int cancel;
+ Channel *c; /* chan(int) */
+ Timer *next;
+};
+
+#ifndef Extern
+#define Extern extern
+#endif
+
+Extern Font *font;
+Extern Mousectl *mousectl;
+Extern Mouse *mouse;
+Extern Keyboardctl *keyboardctl;
+Extern Display *display;
+Extern Image *view;
+Extern Screen *wscreen;
+Extern Cursor boxcursor;
+Extern Cursor crosscursor;
+Extern Cursor sightcursor;
+Extern Cursor whitearrow;
+Extern Cursor query;
+Extern Cursor *corners[9];
+Extern Image *background;
+Extern Image *lightgrey;
+Extern Image *red;
+Extern Window **window;
+Extern Window *wkeyboard; /* window of simulated keyboard */
+Extern int nwindow;
+Extern int snarffd;
+Extern Window *input;
+Extern QLock all; /* BUG */
+Extern Window *hidden[100];
+Extern int nhidden;
+Extern int nsnarf;
+Extern Rune* snarf;
+Extern int scrolling;
+Extern int maxtab;
+Extern Channel* winclosechan;
+Extern Channel* deletechan;
+Extern char *startdir;
+Extern int sweeping;
+Extern int wctlfd;
+Extern int errorshouldabort;
+Extern int menuing; /* menu action is pending; waiting for window to be indicated */
+Extern int snarfversion; /* updated each time it is written */
+Extern int messagesize; /* negotiated in 9P version setup */