123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- typedef struct TkCimeth TkCimeth;
- typedef struct TkCitem TkCitem;
- typedef struct TkCanvas TkCanvas;
- typedef struct TkCline TkCline;
- typedef struct TkCtag TkCtag;
- typedef struct TkCpoints TkCpoints;
- typedef struct TkCwind TkCwind;
- struct TkCline
- {
- int arrow;
- int shape[3];
- int width;
- Image* stipple;
- Image* pen;
- int arrowf;
- int arrowl;
- int capstyle;
- int smooth;
- int steps;
- };
- struct TkCwind
- {
- Tk* sub; /* Subwindow of canvas */
- Tk* focus; /* Current Mouse focus */
- int width; /* Requested width */
- int height; /* Requested height */
- int flags; /* possible: Tkanchor|Tksetwidth|Tksetheight */
- };
- struct TkCpoints
- {
- int npoint; /* Number of points */
- Point* parampt; /* Parameters in fixed point */
- Point* drawpt; /* Draw coord in pixels */
- Rectangle bb; /* Bounding box in pixels */
- };
- struct TkCitem
- {
- int id; /* Unique id */
- int type; /* Object type */
- TkCpoints p; /* Points plus bounding box */
- TkEnv* env; /* Colors & fonts */
- TkCitem* next; /* Z order */
- TkName* tags; /* Temporary tag spot */
- TkCtag* stag; /* Real tag structure */
- // char obj[TKSTRUCTALIGN];
- };
- struct TkCtag
- {
- TkCitem* item; /* Link to item */
- TkName* name; /* Text name or id */
- TkCtag* taglist; /* link items with this tag */
- TkCtag* itemlist; /* link tags for this item */
- };
- enum
- {
- /* Item types */
- TkCVline,
- TkCVtext,
- TkCVrect,
- TkCVoval,
- TkCVbitmap,
- TkCVpoly,
- TkCVwindow,
- TkCVimage,
- TkCVarc,
- TkCselto = 0,
- TkCselfrom,
- TkCseladjust,
- TkCbufauto = 0,
- TkCbufnone,
- TkCbufvisible,
- TkCbufall,
- TkCadd = 0,
- TkCfind,
-
- TkChash = 32,
- TkCarrowf = (1<<0),
- TkCarrowl = (1<<1),
- Tknarrow = 6 /* Number of points in arrow */
- };
- struct TkCanvas
- {
- int close;
- int confine;
- int cleanup;
- int scrollr[4];
- Rectangle region;
- Rectangle update; /* Area to paint next draw */
- Point view;
- TkCitem* selection;
- int width;
- int height;
- int sborderwidth;
- int xscrolli; /* Scroll increment */
- int yscrolli;
- char* xscroll; /* Scroll commands */
- char* yscroll;
- int id; /* Unique id */
- TkCitem* head; /* Items in Z order */
- TkCitem* tail; /* Head is lowest, tail is highest */
- TkCitem* focus; /* Keyboard focus */
- TkCitem* mouse; /* Mouse focus */
- TkCitem* grab;
- TkName* current; /* Fake for current tag */
- TkCtag curtag;
- Image* image; /* Drawing space */
- int ialloc; /* image was allocated by us? */
- Image* mask; /* mask space (for stippling) */
- TkName* thash[TkChash]; /* Tag hash */
- int actions;
- int actlim;
- int buffer;
- };
- struct TkCimeth
- {
- char* name;
- char* (*create)(Tk*, char *arg, char **val);
- void (*draw)(Image*, TkCitem*, TkEnv*);
- void (*free)(TkCitem*);
- char* (*coord)(TkCitem*, char*, int, int);
- char* (*cget)(TkCitem*, char*, char**);
- char* (*conf)(Tk*, TkCitem*, char*);
- int (*hit)(TkCitem*, Point);
- };
- extern TkCimeth tkcimethod[];
- extern int cvslshape[];
- extern Rectangle bbnil;
- extern Rectangle huger;
- /* General */
- extern char* tkcaddtag(Tk*, TkCitem*, int);
- extern TkCtag* tkcfirsttag(TkCitem*, TkCtag*);
- extern TkCtag* tkclasttag(TkCitem*, TkCtag*);
- extern void tkcvsappend(TkCanvas*, TkCitem*);
- extern TkCitem* tkcnewitem(Tk*, int, int);
- extern void tkcvsfreeitem(TkCitem*);
- extern Point tkcvsrelpos(Tk*);
- extern Tk* tkcvsinwindow(Tk*, Point*);
- extern char* tkcvstextdchar(Tk*, TkCitem*, char*);
- extern char* tkcvstextindex(Tk*, TkCitem*, char*, char **val);
- extern char* tkcvstextinsert(Tk*, TkCitem*, char*);
- extern char* tkcvstexticursor(Tk*, TkCitem*, char*);
- extern void tkmkpen(Image**, TkEnv*, Image*);
- extern void tkcvstextfocus(Tk*, TkCitem*, int);
- extern char* tkcvstextselect(Tk*, TkCitem*, char*, int);
- extern void tkcvstextclr(Tk*);
- extern Tk* tkcvsevent(Tk*, int, void*);
- extern Point tkcvsanchor(Point, int, int, int);
- extern void tkcvsdirty(Tk*);
- extern void tkfreectag(TkCtag*);
- extern char* tkparsepts(TkTop*, TkCpoints*, char**, int);
- extern void tkfreepoint(TkCpoints*);
- extern void tkxlatepts(Point*, int, int, int);
- extern void tkpolybound(Point*, int, Rectangle*);
- extern TkName* tkctaglook(Tk*, TkName*, char*);
- extern void tkbbmax(Rectangle*, Rectangle*);
- extern void tkcvssetdirty(Tk*);
- /* Canvas Item methods - required to populate tkcimethod in canvs.c */
- extern char* tkcvslinecreat(Tk*, char *arg, char **val);
- extern void tkcvslinedraw(Image*, TkCitem*, TkEnv*);
- extern void tkcvslinefree(TkCitem*);
- extern char* tkcvslinecoord(TkCitem*, char*, int, int);
- extern char* tkcvslinecget(TkCitem*, char*, char**);
- extern char* tkcvslineconf(Tk*, TkCitem*, char*);
- extern int tkcvslinehit(TkCitem*, Point);
- extern char* tkcvstextcreat(Tk*, char *arg, char **val);
- extern void tkcvstextdraw(Image*, TkCitem*, TkEnv*);
- extern void tkcvstextfree(TkCitem*);
- extern char* tkcvstextcoord(TkCitem*, char*, int, int);
- extern char* tkcvstextcget(TkCitem*, char*, char**);
- extern char* tkcvstextconf(Tk*, TkCitem*, char*);
- extern char* tkcvsrectcreat(Tk*, char *arg, char **val);
- extern void tkcvsrectdraw(Image*, TkCitem*, TkEnv*);
- extern void tkcvsrectfree(TkCitem*);
- extern char* tkcvsrectcoord(TkCitem*, char*, int, int);
- extern char* tkcvsrectcget(TkCitem*, char*, char**);
- extern char* tkcvsrectconf(Tk*, TkCitem*, char*);
- extern char* tkcvsovalcreat(Tk*, char *arg, char **val);
- extern void tkcvsovaldraw(Image*, TkCitem*, TkEnv*);
- extern void tkcvsovalfree(TkCitem*);
- extern char* tkcvsovalcoord(TkCitem*, char*, int, int);
- extern char* tkcvsovalcget(TkCitem*, char*, char**);
- extern char* tkcvsovalconf(Tk*, TkCitem*, char*);
- extern int tkcvsovalhit(TkCitem*, Point);
- extern char* tkcvsarccreat(Tk*, char *arg, char **val);
- extern void tkcvsarcdraw(Image*, TkCitem*, TkEnv*);
- extern void tkcvsarcfree(TkCitem*);
- extern char* tkcvsarccoord(TkCitem*, char*, int, int);
- extern char* tkcvsarccget(TkCitem*, char*, char**);
- extern char* tkcvsarcconf(Tk*, TkCitem*, char*);
- extern char* tkcvsbitcreat(Tk*, char *arg, char **val);
- extern void tkcvsbitdraw(Image*, TkCitem*, TkEnv*);
- extern void tkcvsbitfree(TkCitem*);
- extern char* tkcvsbitcoord(TkCitem*, char*, int, int);
- extern char* tkcvsbitcget(TkCitem*, char*, char**);
- extern char* tkcvsbitconf(Tk*, TkCitem*, char*);
- extern char* tkcvswindcreat(Tk*, char *arg, char **val);
- extern void tkcvswinddraw(Image*, TkCitem*, TkEnv*);
- extern void tkcvswindfree(TkCitem*);
- extern char* tkcvswindcoord(TkCitem*, char*, int, int);
- extern char* tkcvswindcget(TkCitem*, char*, char**);
- extern char* tkcvswindconf(Tk*, TkCitem*, char*);
- extern char* tkcvspolycreat(Tk*, char *arg, char **val);
- extern void tkcvspolydraw(Image*, TkCitem*, TkEnv*);
- extern void tkcvspolyfree(TkCitem*);
- extern char* tkcvspolycoord(TkCitem*, char*, int, int);
- extern char* tkcvspolycget(TkCitem*, char*, char**);
- extern char* tkcvspolyconf(Tk*, TkCitem*, char*);
- extern int tkcvspolyhit(TkCitem*, Point);
- extern char* tkcvsimgcreat(Tk*, char *arg, char **val);
- extern void tkcvsimgdraw(Image*, TkCitem*, TkEnv*);
- extern void tkcvsimgfree(TkCitem*);
- extern char* tkcvsimgcoord(TkCitem*, char*, int, int);
- extern char* tkcvsimgcget(TkCitem*, char*, char**);
- extern char* tkcvsimgconf(Tk*, TkCitem*, char*);
- extern TkCitem* tkcvsfindwin(Tk*);
- extern void tkcvsforgetsub(Tk*, Tk*);
|