1*7ab27030SDavid du Colombier #define runemalloc(a) emalloc((a)*sizeof(Rune)) 2*7ab27030SDavid du Colombier #define runerealloc(a, b) erealloc(a, (b)*sizeof(Rune)) 3*7ab27030SDavid du Colombier #define runemove(a, b, c) memmove(a, b, (c)*sizeof(Rune)) 4*7ab27030SDavid du Colombier 5*7ab27030SDavid du Colombier #define hasbrk(x) ((x)&IFbrk || (x)&IFbrksp) 6*7ab27030SDavid du Colombier #define istrue(x) ((x) ? "true" : "false") 7*7ab27030SDavid du Colombier 8*7ab27030SDavid du Colombier void plumblook(Plumbmsg*m); 9*7ab27030SDavid du Colombier int plumbrunestr(Runestr *, char *); 10*7ab27030SDavid du Colombier void putsnarf(Runestr *); 11*7ab27030SDavid du Colombier void getsnarf(Runestr *); 12*7ab27030SDavid du Colombier 13*7ab27030SDavid du Colombier void tablesize(Table *, int); 14*7ab27030SDavid du Colombier void drawtable(Box *, Page *, Image *); 15*7ab27030SDavid du Colombier void laytable(Itable *, Rectangle); 16*7ab27030SDavid du Colombier void settables(Page *); 17*7ab27030SDavid du Colombier void laysnarf(Page *, Lay *, Runestr *); 18*7ab27030SDavid du Colombier Timer* timerstart(int); 19*7ab27030SDavid du Colombier void timerstop(Timer*); 20*7ab27030SDavid du Colombier void timercancel(Timer*); 21*7ab27030SDavid du Colombier void timerinit(void); 22*7ab27030SDavid du Colombier 23*7ab27030SDavid du Colombier void cut(Text *, Text *, int, int, Rune *, int); 24*7ab27030SDavid du Colombier void get(Text *, Text *, int, int, Rune *, int); 25*7ab27030SDavid du Colombier void paste(Text *, Text *, int, int, Rune *, int); 26*7ab27030SDavid du Colombier void execute(Text *, uint, uint, Text *); 27*7ab27030SDavid du Colombier void look3(Text *, uint, uint); 28*7ab27030SDavid du Colombier int search(Text *, Rune *, uint); 29*7ab27030SDavid du Colombier 30*7ab27030SDavid du Colombier void scrsleep(uint); 31*7ab27030SDavid du Colombier void scrlresize(void); 32*7ab27030SDavid du Colombier void tmpresize(void); 33*7ab27030SDavid du Colombier 34*7ab27030SDavid du Colombier void initfontpaths(void); 35*7ab27030SDavid du Colombier void cvttorunes(char*, int, Rune*, int*, int*, int*); 36*7ab27030SDavid du Colombier void error(char *); 37*7ab27030SDavid du Colombier void closerunestr(Runestr *); 38*7ab27030SDavid du Colombier void copyrunestr(Runestr *, Runestr *); 39*7ab27030SDavid du Colombier int runestreq(Runestr, Runestr); 40*7ab27030SDavid du Colombier int validurl(Rune *); 41*7ab27030SDavid du Colombier int runeeq(Rune *, uint, Rune *, uint); 42*7ab27030SDavid du Colombier int min(int, int); 43*7ab27030SDavid du Colombier int max(int, int); 44*7ab27030SDavid du Colombier int isalnum(Rune); 45*7ab27030SDavid du Colombier Rune* skipbl(Rune *, int, int *); 46*7ab27030SDavid du Colombier Rune* findbl(Rune *r, int, int *); 47*7ab27030SDavid du Colombier char* estrdup(char *); 48*7ab27030SDavid du Colombier Rune* erunestrdup(Rune *); 49*7ab27030SDavid du Colombier Rune* ucvt(Rune *s); 50*7ab27030SDavid du Colombier int dimwidth(Dimen , int); 51*7ab27030SDavid du Colombier void frdims(Dimen *, int, int, int **); 52*7ab27030SDavid du Colombier Image* getbg(Page *); 53*7ab27030SDavid du Colombier Rune* getbase(Page *); 54*7ab27030SDavid du Colombier Image* eallocimage(Display *, Rectangle, ulong, int, int); 55*7ab27030SDavid du Colombier Image* getcolor(int); 56*7ab27030SDavid du Colombier void freecolors(void); 57*7ab27030SDavid du Colombier Font* getfont(int); 58*7ab27030SDavid du Colombier void freefonts(void); 59*7ab27030SDavid du Colombier void colarray(Image **, Image *, Image *, Image *, int); 60*7ab27030SDavid du Colombier void rect3d(Image *, Rectangle, int, Image **, Point); 61*7ab27030SDavid du Colombier void ellipse3d(Image *, Point, int, int, Image **, Point); 62*7ab27030SDavid du Colombier void reverseimages(Iimage **); 63*7ab27030SDavid du Colombier void setstatus(Window *, char *, ...); 64*7ab27030SDavid du Colombier int istextfield(Item *); 65*7ab27030SDavid du Colombier int forceitem(Item *); 66*7ab27030SDavid du Colombier int xtofchar(Rune *, Font *, long); 67*7ab27030SDavid du Colombier int istextsel(Page *, Rectangle, int *, int *, Rune *, Font *); 68*7ab27030SDavid du Colombier char* convert(Runestr, char *, long *); 69*7ab27030SDavid du Colombier void execproc(void *); 70*7ab27030SDavid du Colombier void getimage(Cimage *, Rune *); 71*7ab27030SDavid du Colombier Point getpt(Page *p, Point); 72*7ab27030SDavid du Colombier Rune *urlcombine(Rune *, Rune *); 73*7ab27030SDavid du Colombier void fixtext(Page *); 74*7ab27030SDavid du Colombier void addrefresh(Page *, char *, ...); 75*7ab27030SDavid du Colombier void flushrefresh(void); 76*7ab27030SDavid du Colombier void savemouse(Window *); 77*7ab27030SDavid du Colombier void restoremouse(Window *); 78*7ab27030SDavid du Colombier void clearmouse(void); 79*7ab27030SDavid du Colombier void bytetorunestr(char *, Runestr *); 80*7ab27030SDavid du Colombier Window* makenewwindow(Page *); 81*7ab27030SDavid du Colombier 82*7ab27030SDavid du Colombier Line* linewhich(Lay *, Point); 83*7ab27030SDavid du Colombier Box* pttobox(Line *, Point); 84*7ab27030SDavid du Colombier Box* boxwhich(Lay *, Point); 85*7ab27030SDavid du Colombier 86