137da2899SCharles.Forsyth typedef struct TkCimeth TkCimeth; 237da2899SCharles.Forsyth typedef struct TkCitem TkCitem; 337da2899SCharles.Forsyth typedef struct TkCanvas TkCanvas; 437da2899SCharles.Forsyth typedef struct TkCline TkCline; 537da2899SCharles.Forsyth typedef struct TkCtag TkCtag; 637da2899SCharles.Forsyth typedef struct TkCpoints TkCpoints; 737da2899SCharles.Forsyth typedef struct TkCwind TkCwind; 837da2899SCharles.Forsyth 937da2899SCharles.Forsyth struct TkCline 1037da2899SCharles.Forsyth { 1137da2899SCharles.Forsyth int arrow; 1237da2899SCharles.Forsyth int shape[3]; 1337da2899SCharles.Forsyth int width; 1437da2899SCharles.Forsyth Image* stipple; 1537da2899SCharles.Forsyth Image* pen; 1637da2899SCharles.Forsyth int arrowf; 1737da2899SCharles.Forsyth int arrowl; 1837da2899SCharles.Forsyth int capstyle; 1937da2899SCharles.Forsyth int smooth; 2037da2899SCharles.Forsyth int steps; 2137da2899SCharles.Forsyth }; 2237da2899SCharles.Forsyth 2337da2899SCharles.Forsyth struct TkCwind 2437da2899SCharles.Forsyth { 2537da2899SCharles.Forsyth Tk* sub; /* Subwindow of canvas */ 2637da2899SCharles.Forsyth Tk* focus; /* Current Mouse focus */ 2737da2899SCharles.Forsyth int width; /* Requested width */ 2837da2899SCharles.Forsyth int height; /* Requested height */ 2937da2899SCharles.Forsyth int flags; /* possible: Tkanchor|Tksetwidth|Tksetheight */ 3037da2899SCharles.Forsyth }; 3137da2899SCharles.Forsyth 3237da2899SCharles.Forsyth struct TkCpoints 3337da2899SCharles.Forsyth { 3437da2899SCharles.Forsyth int npoint; /* Number of points */ 3537da2899SCharles.Forsyth Point* parampt; /* Parameters in fixed point */ 3637da2899SCharles.Forsyth Point* drawpt; /* Draw coord in pixels */ 3737da2899SCharles.Forsyth Rectangle bb; /* Bounding box in pixels */ 3837da2899SCharles.Forsyth }; 3937da2899SCharles.Forsyth 4037da2899SCharles.Forsyth struct TkCitem 4137da2899SCharles.Forsyth { 4237da2899SCharles.Forsyth int id; /* Unique id */ 4337da2899SCharles.Forsyth int type; /* Object type */ 4437da2899SCharles.Forsyth TkCpoints p; /* Points plus bounding box */ 4537da2899SCharles.Forsyth TkEnv* env; /* Colors & fonts */ 4637da2899SCharles.Forsyth TkCitem* next; /* Z order */ 4737da2899SCharles.Forsyth TkName* tags; /* Temporary tag spot */ 4837da2899SCharles.Forsyth TkCtag* stag; /* Real tag structure */ 4937da2899SCharles.Forsyth // char obj[TKSTRUCTALIGN]; 5037da2899SCharles.Forsyth }; 5137da2899SCharles.Forsyth 5237da2899SCharles.Forsyth struct TkCtag 5337da2899SCharles.Forsyth { 5437da2899SCharles.Forsyth TkCitem* item; /* Link to item */ 5537da2899SCharles.Forsyth TkName* name; /* Text name or id */ 5637da2899SCharles.Forsyth TkCtag* taglist; /* link items with this tag */ 5737da2899SCharles.Forsyth TkCtag* itemlist; /* link tags for this item */ 5837da2899SCharles.Forsyth }; 5937da2899SCharles.Forsyth 6037da2899SCharles.Forsyth enum 6137da2899SCharles.Forsyth { 6237da2899SCharles.Forsyth /* Item types */ 6337da2899SCharles.Forsyth TkCVline, 6437da2899SCharles.Forsyth TkCVtext, 6537da2899SCharles.Forsyth TkCVrect, 6637da2899SCharles.Forsyth TkCVoval, 6737da2899SCharles.Forsyth TkCVbitmap, 6837da2899SCharles.Forsyth TkCVpoly, 6937da2899SCharles.Forsyth TkCVwindow, 7037da2899SCharles.Forsyth TkCVimage, 7137da2899SCharles.Forsyth TkCVarc, 7237da2899SCharles.Forsyth 7337da2899SCharles.Forsyth TkCselto = 0, 7437da2899SCharles.Forsyth TkCselfrom, 7537da2899SCharles.Forsyth TkCseladjust, 7637da2899SCharles.Forsyth 7737da2899SCharles.Forsyth TkCbufauto = 0, 7837da2899SCharles.Forsyth TkCbufnone, 7937da2899SCharles.Forsyth TkCbufvisible, 8037da2899SCharles.Forsyth TkCbufall, 8137da2899SCharles.Forsyth 8237da2899SCharles.Forsyth TkCadd = 0, 8337da2899SCharles.Forsyth TkCfind, 8437da2899SCharles.Forsyth 8537da2899SCharles.Forsyth TkChash = 32, 8637da2899SCharles.Forsyth 8737da2899SCharles.Forsyth TkCarrowf = (1<<0), 8837da2899SCharles.Forsyth TkCarrowl = (1<<1), 8937da2899SCharles.Forsyth Tknarrow = 6 /* Number of points in arrow */ 9037da2899SCharles.Forsyth }; 9137da2899SCharles.Forsyth 9237da2899SCharles.Forsyth struct TkCanvas 9337da2899SCharles.Forsyth { 9437da2899SCharles.Forsyth int close; 9537da2899SCharles.Forsyth int confine; 9637da2899SCharles.Forsyth int cleanup; 9737da2899SCharles.Forsyth int scrollr[4]; 9837da2899SCharles.Forsyth Rectangle region; 9937da2899SCharles.Forsyth Rectangle update; /* Area to paint next draw */ 10037da2899SCharles.Forsyth Point view; 10137da2899SCharles.Forsyth TkCitem* selection; 10237da2899SCharles.Forsyth int width; 10337da2899SCharles.Forsyth int height; 10437da2899SCharles.Forsyth int sborderwidth; 10537da2899SCharles.Forsyth int xscrolli; /* Scroll increment */ 10637da2899SCharles.Forsyth int yscrolli; 10737da2899SCharles.Forsyth char* xscroll; /* Scroll commands */ 10837da2899SCharles.Forsyth char* yscroll; 10937da2899SCharles.Forsyth int id; /* Unique id */ 11037da2899SCharles.Forsyth TkCitem* head; /* Items in Z order */ 11137da2899SCharles.Forsyth TkCitem* tail; /* Head is lowest, tail is highest */ 11237da2899SCharles.Forsyth TkCitem* focus; /* Keyboard focus */ 11337da2899SCharles.Forsyth TkCitem* mouse; /* Mouse focus */ 11437da2899SCharles.Forsyth TkCitem* grab; 11537da2899SCharles.Forsyth TkName* current; /* Fake for current tag */ 11637da2899SCharles.Forsyth TkCtag curtag; 11737da2899SCharles.Forsyth Image* image; /* Drawing space */ 11837da2899SCharles.Forsyth int ialloc; /* image was allocated by us? */ 11937da2899SCharles.Forsyth Image* mask; /* mask space (for stippling) */ 12037da2899SCharles.Forsyth TkName* thash[TkChash]; /* Tag hash */ 12137da2899SCharles.Forsyth int actions; 12237da2899SCharles.Forsyth int actlim; 12337da2899SCharles.Forsyth int buffer; 12437da2899SCharles.Forsyth }; 12537da2899SCharles.Forsyth 12637da2899SCharles.Forsyth struct TkCimeth 12737da2899SCharles.Forsyth { 12837da2899SCharles.Forsyth char* name; 12937da2899SCharles.Forsyth char* (*create)(Tk*, char *arg, char **val); 13037da2899SCharles.Forsyth void (*draw)(Image*, TkCitem*, TkEnv*); 13137da2899SCharles.Forsyth void (*free)(TkCitem*); 13237da2899SCharles.Forsyth char* (*coord)(TkCitem*, char*, int, int); 13337da2899SCharles.Forsyth char* (*cget)(TkCitem*, char*, char**); 13437da2899SCharles.Forsyth char* (*conf)(Tk*, TkCitem*, char*); 13537da2899SCharles.Forsyth int (*hit)(TkCitem*, Point); 13637da2899SCharles.Forsyth }; 13737da2899SCharles.Forsyth 13837da2899SCharles.Forsyth extern TkCimeth tkcimethod[]; 13937da2899SCharles.Forsyth extern int cvslshape[]; 14037da2899SCharles.Forsyth extern Rectangle bbnil; 14137da2899SCharles.Forsyth extern Rectangle huger; 14237da2899SCharles.Forsyth 14337da2899SCharles.Forsyth /* General */ 14437da2899SCharles.Forsyth extern char* tkcaddtag(Tk*, TkCitem*, int); 14537da2899SCharles.Forsyth extern TkCtag* tkcfirsttag(TkCitem*, TkCtag*); 14637da2899SCharles.Forsyth extern TkCtag* tkclasttag(TkCitem*, TkCtag*); 14737da2899SCharles.Forsyth extern void tkcvsappend(TkCanvas*, TkCitem*); 14837da2899SCharles.Forsyth extern TkCitem* tkcnewitem(Tk*, int, int); 14937da2899SCharles.Forsyth extern void tkcvsfreeitem(TkCitem*); 15037da2899SCharles.Forsyth extern Point tkcvsrelpos(Tk*); 15137da2899SCharles.Forsyth extern Tk* tkcvsinwindow(Tk*, Point*); 15237da2899SCharles.Forsyth extern char* tkcvstextdchar(Tk*, TkCitem*, char*); 15337da2899SCharles.Forsyth extern char* tkcvstextindex(Tk*, TkCitem*, char*, char **val); 15437da2899SCharles.Forsyth extern char* tkcvstextinsert(Tk*, TkCitem*, char*); 15537da2899SCharles.Forsyth extern char* tkcvstexticursor(Tk*, TkCitem*, char*); 15637da2899SCharles.Forsyth extern void tkmkpen(Image**, TkEnv*, Image*); 15737da2899SCharles.Forsyth extern void tkcvstextfocus(Tk*, TkCitem*, int); 15837da2899SCharles.Forsyth extern char* tkcvstextselect(Tk*, TkCitem*, char*, int); 15937da2899SCharles.Forsyth extern void tkcvstextclr(Tk*); 16037da2899SCharles.Forsyth extern Tk* tkcvsevent(Tk*, int, void*); 16137da2899SCharles.Forsyth extern Point tkcvsanchor(Point, int, int, int); 16237da2899SCharles.Forsyth extern void tkcvsdirty(Tk*); 16337da2899SCharles.Forsyth extern void tkfreectag(TkCtag*); 16437da2899SCharles.Forsyth extern char* tkparsepts(TkTop*, TkCpoints*, char**, int); 16537da2899SCharles.Forsyth extern void tkfreepoint(TkCpoints*); 16637da2899SCharles.Forsyth extern void tkxlatepts(Point*, int, int, int); 16737da2899SCharles.Forsyth extern void tkpolybound(Point*, int, Rectangle*); 16837da2899SCharles.Forsyth extern TkName* tkctaglook(Tk*, TkName*, char*); 16937da2899SCharles.Forsyth extern void tkbbmax(Rectangle*, Rectangle*); 17037da2899SCharles.Forsyth extern void tkcvssetdirty(Tk*); 17137da2899SCharles.Forsyth 17237da2899SCharles.Forsyth /* Canvas Item methods - required to populate tkcimethod in canvs.c */ 17337da2899SCharles.Forsyth extern char* tkcvslinecreat(Tk*, char *arg, char **val); 17437da2899SCharles.Forsyth extern void tkcvslinedraw(Image*, TkCitem*, TkEnv*); 17537da2899SCharles.Forsyth extern void tkcvslinefree(TkCitem*); 17637da2899SCharles.Forsyth extern char* tkcvslinecoord(TkCitem*, char*, int, int); 17737da2899SCharles.Forsyth extern char* tkcvslinecget(TkCitem*, char*, char**); 17837da2899SCharles.Forsyth extern char* tkcvslineconf(Tk*, TkCitem*, char*); 17937da2899SCharles.Forsyth extern int tkcvslinehit(TkCitem*, Point); 18037da2899SCharles.Forsyth 18137da2899SCharles.Forsyth extern char* tkcvstextcreat(Tk*, char *arg, char **val); 18237da2899SCharles.Forsyth extern void tkcvstextdraw(Image*, TkCitem*, TkEnv*); 18337da2899SCharles.Forsyth extern void tkcvstextfree(TkCitem*); 18437da2899SCharles.Forsyth extern char* tkcvstextcoord(TkCitem*, char*, int, int); 18537da2899SCharles.Forsyth extern char* tkcvstextcget(TkCitem*, char*, char**); 18637da2899SCharles.Forsyth extern char* tkcvstextconf(Tk*, TkCitem*, char*); 18737da2899SCharles.Forsyth 18837da2899SCharles.Forsyth extern char* tkcvsrectcreat(Tk*, char *arg, char **val); 18937da2899SCharles.Forsyth extern void tkcvsrectdraw(Image*, TkCitem*, TkEnv*); 19037da2899SCharles.Forsyth extern void tkcvsrectfree(TkCitem*); 19137da2899SCharles.Forsyth extern char* tkcvsrectcoord(TkCitem*, char*, int, int); 19237da2899SCharles.Forsyth extern char* tkcvsrectcget(TkCitem*, char*, char**); 19337da2899SCharles.Forsyth extern char* tkcvsrectconf(Tk*, TkCitem*, char*); 19437da2899SCharles.Forsyth 19537da2899SCharles.Forsyth extern char* tkcvsovalcreat(Tk*, char *arg, char **val); 19637da2899SCharles.Forsyth extern void tkcvsovaldraw(Image*, TkCitem*, TkEnv*); 19737da2899SCharles.Forsyth extern void tkcvsovalfree(TkCitem*); 19837da2899SCharles.Forsyth extern char* tkcvsovalcoord(TkCitem*, char*, int, int); 19937da2899SCharles.Forsyth extern char* tkcvsovalcget(TkCitem*, char*, char**); 20037da2899SCharles.Forsyth extern char* tkcvsovalconf(Tk*, TkCitem*, char*); 20137da2899SCharles.Forsyth extern int tkcvsovalhit(TkCitem*, Point); 20237da2899SCharles.Forsyth 20337da2899SCharles.Forsyth extern char* tkcvsarccreat(Tk*, char *arg, char **val); 20437da2899SCharles.Forsyth extern void tkcvsarcdraw(Image*, TkCitem*, TkEnv*); 20537da2899SCharles.Forsyth extern void tkcvsarcfree(TkCitem*); 20637da2899SCharles.Forsyth extern char* tkcvsarccoord(TkCitem*, char*, int, int); 20737da2899SCharles.Forsyth extern char* tkcvsarccget(TkCitem*, char*, char**); 20837da2899SCharles.Forsyth extern char* tkcvsarcconf(Tk*, TkCitem*, char*); 20937da2899SCharles.Forsyth 21037da2899SCharles.Forsyth extern char* tkcvsbitcreat(Tk*, char *arg, char **val); 21137da2899SCharles.Forsyth extern void tkcvsbitdraw(Image*, TkCitem*, TkEnv*); 21237da2899SCharles.Forsyth extern void tkcvsbitfree(TkCitem*); 21337da2899SCharles.Forsyth extern char* tkcvsbitcoord(TkCitem*, char*, int, int); 21437da2899SCharles.Forsyth extern char* tkcvsbitcget(TkCitem*, char*, char**); 21537da2899SCharles.Forsyth extern char* tkcvsbitconf(Tk*, TkCitem*, char*); 21637da2899SCharles.Forsyth 21737da2899SCharles.Forsyth extern char* tkcvswindcreat(Tk*, char *arg, char **val); 21837da2899SCharles.Forsyth extern void tkcvswinddraw(Image*, TkCitem*, TkEnv*); 21937da2899SCharles.Forsyth extern void tkcvswindfree(TkCitem*); 22037da2899SCharles.Forsyth extern char* tkcvswindcoord(TkCitem*, char*, int, int); 22137da2899SCharles.Forsyth extern char* tkcvswindcget(TkCitem*, char*, char**); 22237da2899SCharles.Forsyth extern char* tkcvswindconf(Tk*, TkCitem*, char*); 22337da2899SCharles.Forsyth 22437da2899SCharles.Forsyth extern char* tkcvspolycreat(Tk*, char *arg, char **val); 22537da2899SCharles.Forsyth extern void tkcvspolydraw(Image*, TkCitem*, TkEnv*); 22637da2899SCharles.Forsyth extern void tkcvspolyfree(TkCitem*); 22737da2899SCharles.Forsyth extern char* tkcvspolycoord(TkCitem*, char*, int, int); 22837da2899SCharles.Forsyth extern char* tkcvspolycget(TkCitem*, char*, char**); 22937da2899SCharles.Forsyth extern char* tkcvspolyconf(Tk*, TkCitem*, char*); 23037da2899SCharles.Forsyth extern int tkcvspolyhit(TkCitem*, Point); 23137da2899SCharles.Forsyth 23237da2899SCharles.Forsyth extern char* tkcvsimgcreat(Tk*, char *arg, char **val); 23337da2899SCharles.Forsyth extern void tkcvsimgdraw(Image*, TkCitem*, TkEnv*); 23437da2899SCharles.Forsyth extern void tkcvsimgfree(TkCitem*); 23537da2899SCharles.Forsyth extern char* tkcvsimgcoord(TkCitem*, char*, int, int); 23637da2899SCharles.Forsyth extern char* tkcvsimgcget(TkCitem*, char*, char**); 23737da2899SCharles.Forsyth extern char* tkcvsimgconf(Tk*, TkCitem*, char*); 23837da2899SCharles.Forsyth 239*5849851aSforsyth extern TkCitem* tkcvsfindwin(Tk*); 240*5849851aSforsyth extern void tkcvsforgetsub(Tk*, Tk*); 241