diff options
| author | Charles.Forsyth <devnull@localhost> | 2006-12-22 17:07:39 +0000 |
|---|---|---|
| committer | Charles.Forsyth <devnull@localhost> | 2006-12-22 17:07:39 +0000 |
| commit | 37da2899f40661e3e9631e497da8dc59b971cbd0 (patch) | |
| tree | cbc6d4680e347d906f5fa7fca73214418741df72 /libtk/canvs.h | |
| parent | 54bc8ff236ac10b3eaa928fd6bcfc0cdb2ba46ae (diff) | |
20060303a
Diffstat (limited to 'libtk/canvs.h')
| -rw-r--r-- | libtk/canvs.h | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/libtk/canvs.h b/libtk/canvs.h new file mode 100644 index 00000000..d82b7eb1 --- /dev/null +++ b/libtk/canvs.h @@ -0,0 +1,238 @@ +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*); + |
