diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/abaco/dat.h |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/abaco/dat.h')
-rwxr-xr-x | sys/src/cmd/abaco/dat.h | 355 |
1 files changed, 355 insertions, 0 deletions
diff --git a/sys/src/cmd/abaco/dat.h b/sys/src/cmd/abaco/dat.h new file mode 100755 index 000000000..afe553f5b --- /dev/null +++ b/sys/src/cmd/abaco/dat.h @@ -0,0 +1,355 @@ +typedef struct Box Box; +typedef struct Cimage Cimage; +typedef struct Column Column; +typedef struct Exec Exec; +typedef struct Line Line; +typedef struct Page Page; +typedef struct Row Row; +typedef struct Runestr Runestr; +typedef struct Text Text; +typedef struct Timer Timer; +typedef struct Url Url; +typedef struct Window Window; + +struct Runestr +{ + Rune *r; + int nr; +}; + +enum +{ + Rowtag, + Columntag, + Tag, + Urltag, + Statustag, + Entry, + Textarea, +}; + +struct Text +{ + Frame; + uint org; + uint q0; + uint q1; + int what; + Window *w; + Rectangle scrollr; + Rectangle lastsr; + Rectangle all; + Row *row; + Column *col; + Runestr rs; +}; + +uint textbacknl(Text*, uint, uint); +int textbswidth(Text*, Rune); +int textclickmatch(Text*, int, int, int, uint*); +void textclose(Text*); +void textdelete(Text*, uint, uint); +void textdoubleclick(Text*, uint*, uint*); +void textfill(Text*); +void textframescroll(Text*, int); +void textinit(Text *, Image *, Rectangle, Font *, Image **); +void textinsert(Text*, uint, Rune*, uint); +void textredraw(Text *, Rectangle, Font *, Image *); +int textresize(Text *, Image *, Rectangle); +void textscrdraw(Text*); +void textscroll(Text*, int); +void textselect(Text*); +int textselect2(Text *, uint *, uint *, Text **); +int textselect3(Text *, uint *, uint *); +void textset(Text *, Rune *, int); +void textsetorigin(Text*, uint, int); +void textsetselect(Text*, uint, uint); +void textshow(Text*, uint, uint, int); +void texttype(Text*, Rune); +void textmouse(Text *, Point, int); + +struct Line +{ + Rectangle r; + int state; + int hastext; + int hastable; + Box *boxes; + Box *lastbox; + Line *prev; + Line *next; +}; + +struct Box +{ + Item *i; + Rectangle r; + + void (*draw)(Box *, Page *, Image *); + void (*mouse)(Box *, Page *, int); + void (*key)(Box *, Page *, Rune); + Box *prev; + Box *next; +}; + +Box* boxalloc(Line *, Item *, Rectangle); +void boxinit(Box *); + +struct Lay +{ + Rectangle r; + int width; + int xwall; + Line *lines; + Line *lastline; + Font *font; + Ifloat *floats; + int laying; +}; + +void laypage(Page *p); +Lay* layitems(Item *, Rectangle, int); +void laydraw(Page *, Image *, Lay *); +void layfree(Lay *); + +struct Cimage +{ + Ref; + Image *i; + Memimage *mi; + Url *url; + Cimage *next; +}; + +struct Url +{ + Ref; /* urls in window.url[] are not freed */ + int id; + int method; /* HGet or HPost */ + Runestr src; /* requested url */ + Runestr act; /* actual url (redirection) */ + Runestr post; /* only set if method==HPost */ + Runestr ctype; /* content type */ +}; + +Url* urlalloc(Runestr *, Runestr *, int); +void urlfree(Url *); +Url* urldup(Url *); +int urlopen(Url *); + +struct Page +{ + Url *url; + Runestr title; + Window *w; + Image *b; + + Rectangle r; + Rectangle all; + Rectangle vscrollr; + Rectangle hscrollr; + Row *row; + Column *col; + + Docinfo *doc; + Kidinfo *kidinfo; + Item *items; + Lay *lay; + Point pos; + + int selecting; + Point top, bot; + Box *topbx, *botbx; + + int aborting; + int changed; + int loading; + + Rune *status; + + Page *parent; + Page *child; + Page *next; + + Cimage **cimage; + int ncimage; + + struct{ + long t; + Runestr rs; + }refresh; +}; + +void pageget(Page *, Runestr *, Runestr *, int, int); +void pageload(Page *, Url *, int); +void pageclose(Page *); +void pageredraw(Page *); +void pagerender(Page *); +void pagemouse(Page *, Point, int); +void pagetype(Page *, Rune, Point); +void pagescrldraw(Page *); +void pagescroll(Page *, int, int); +int pagescrollxy(Page *, int, int); +int pageabort(Page *); +void pagesnarf(Page *); +void pagesetrefresh(Page *); +int pagerefresh(Page *); + +struct Window +{ + Ref; + QLock; + Text tag; + Text url; + Page page; + Text status; + int owner; + int inpage; + Rectangle r; + Column *col; + struct{ + Url **url; + int nurl; + int cid; + }history; +}; + +void wininit(Window *, Window *, Rectangle); +int winclean(Window *, int); +void winclose(Window *); +int winresize(Window *, Rectangle, int); +Text* wintext(Window *, Point); +void winlock(Window *, int); +void winunlock(Window *); +void winaddhist(Window *, Url *); +void wingohist(Window *, int); +void winsettag(Window *); +void winseturl(Window *); +void winsetstatus(Window *w, Rune *); +Text* wintype(Window *, Point, Rune); +Text* winmouse(Window *, Point, int); +void winmousebut(Window *); +void windebug(Window *); + +struct Column +{ + Rectangle r; + Text tag; + Row *row; + Window **w; + int nw; + int safe; +}; + +void colinit(Column*, Rectangle); +Window* coladd(Column*, Window*, Window*, int); +void colclose(Column*, Window*, int); +void colcloseall(Column*); +void colresize(Column*, Rectangle); +Text* colwhich(Column*, Point, Rune, int); +void coldragwin(Column*, Window*, int); +void colgrow(Column*, Window*, int); +int colclean(Column*); +void colsort(Column*); +void colmousebut(Column*); + +struct Row +{ + QLock; + Rectangle r; + Text tag; + Column **col; + int ncol; + +}; + +void rowinit(Row*, Rectangle); +Column* rowadd(Row*, Column *c, int); +void rowclose(Row*, Column*, int); +Text* rowwhich(Row*, Point, Rune, int); +Column* rowwhichcol(Row*, Point); +void rowresize(Row*, Rectangle); +void rowdragcol(Row*, Column*, int but); + +struct Exec +{ + char *cmd; + int p[2]; /* p[1] is write to program; p[0] set to prog fd 0*/ + int q[2]; /* q[0] is read from program; q[1] set to prog fd 1 */ + Channel *sync; /* chan(ulong) */ +}; + +struct Timer +{ + int dt; + int cancel; + Channel *c; /* chan(int) */ + Timer *next; +}; + +enum +{ + Scrollsize = 12, + Scrollgap = 4, + Margin = 4, + Border = 2, + Space = 2, + Tabspace = 30, + Boxsize = 12, + WFont = FntR*NumSize+Tiny, + + Panspeed = 4, + Maxtab = 8, + + BUFSIZE = 1024*8, + RBUFSIZE = BUFSIZE/sizeof(Rune), + STACK = 64*1024, +}; + +enum +{ + FALSE, + TRUE, + XXX, +}; + +enum +{ + Light = 0xEEEEEE, + Dark = 0x666666, + Red = 0xBB0000, + Back = 0xCCCCCC, +}; + +Mouse *mouse; +Mousectl *mousectl; +Keyboardctl *keyboardctl; +Image *tagcols[NCOL]; +Image *textcols[NCOL]; +Image *but2col; +Image *but3col; +Image *button; +Image *colbutton; +Font *passfont; +Cursor boxcursor; +Row row; +Text *argtext; +Text *seltext; +Text *typetext; +Page *selpage; +Column *activecol; +char *webmountpt; +int plumbsendfd; +int webctlfd; +char *charset; +int procstderr; + +enum +{ + Kscrolloneup = KF|0x20, + Kscrollonedown = KF|0x21, +}; + +Channel *cplumb; /* chan(Plumbmsg*) */ +Channel *cexit; /* chan(int) */ +Channel *crefresh; /* chan(page *) */ |