summaryrefslogtreecommitdiffstats
path: root/generic/tkTreeElem.h
blob: 11e57d122b221c2e6a7b908fd6a27ebc47ed9cde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
typedef struct ElementType ElementType;
typedef struct Element Element;
typedef struct ElementArgs ElementArgs;

struct ElementArgs
{
	TreeCtrl *tree;
	Element *elem;
	int state;
	struct {
		int noop;
	} create;
	struct {
		int noop;
	} delete;
	struct {
		int objc;
		Tcl_Obj *CONST *objv;
		int flagSelf;
	} config;
	struct {
		int x;
		int y;
		int width;
		int height;
		int pad[4];
		Drawable drawable;
	} display;
	struct {
		int squeeze;
		int width;
		int height;
	} layout;
	struct {
		int flagTree;
		int flagMaster;
		int flagSelf;
	} change;
	struct {
		int state1;
		int state2;
	} states;
	struct {
		Tcl_Obj *obj;
	} actual;
};

struct ElementType
{
	char *name; /* "image", "text" */
	int size; /* size of an Element */
	Tk_OptionSpec *optionSpecs;
	Tk_OptionTable optionTable;
	int (*createProc)(ElementArgs *args);
	void (*deleteProc)(ElementArgs *args);
	int (*configProc)(ElementArgs *args);
	void (*displayProc)(ElementArgs *args);
	void (*layoutProc)(ElementArgs *args);
	int (*changeProc)(ElementArgs *args);
	int (*stateProc)(ElementArgs *args);
	void (*undefProc)(ElementArgs *args);
	int (*actualProc)(ElementArgs *args);
	ElementType *next;
};

/* list of these for each style */
struct Element
{
	Tk_Uid name; /* "image", "text" etc */
	ElementType *typePtr;
	Element *master; /* NULL if this is master */
	/* type-specific data here */
};

extern ElementType elemTypeBitmap;
extern ElementType elemTypeBorder;
extern ElementType elemTypeImage;
extern ElementType elemTypeRect;
extern ElementType elemTypeText;

extern int Element_GetSortData(TreeCtrl *tree, Element *elem, int type, long *lv, double *dv, char **sv);