diff options
author | rsc <devnull@localhost> | 2005-11-06 22:16:48 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-11-06 22:16:48 +0000 |
commit | e830a908498c8f0270948fd08c50f6d773315880 (patch) | |
tree | a16fe62419a4e3a95ab2d8d3a70f1a870d0bb55c /src/cmd/9term/dat.h | |
parent | a6c0ff35ee294c0a808e1792eb4f43820fed8f16 (diff) | |
download | plan9port-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.h | 243 |
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 */ |