summaryrefslogtreecommitdiff
path: root/libtk/canvs.h
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
commit37da2899f40661e3e9631e497da8dc59b971cbd0 (patch)
treecbc6d4680e347d906f5fa7fca73214418741df72 /libtk/canvs.h
parent54bc8ff236ac10b3eaa928fd6bcfc0cdb2ba46ae (diff)
20060303a
Diffstat (limited to 'libtk/canvs.h')
-rw-r--r--libtk/canvs.h238
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*);
+