New 9term using rio sources more directly.
This commit is contained in:
parent
a6c0ff35ee
commit
e830a90849
10 changed files with 2963 additions and 1842 deletions
243
src/cmd/9term/dat.h
Normal file
243
src/cmd/9term/dat.h
Normal file
|
|
@ -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 */
|
||||
Loading…
Add table
Add a link
Reference in a new issue