summaryrefslogtreecommitdiff
path: root/sys/src/cmd/abaco/dat.h
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
commite5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch)
treed8d51eac403f07814b9e936eed0c9a79195e2450 /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-xsys/src/cmd/abaco/dat.h355
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 *) */