ref: 94443daf8e248e65afc8d3f17f26efea22748b51
dir: /libtk/canvs.h/
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*);