12
typedef struct dgLayout_s dgLayout_t;
13
typedef struct dgLayoutNode_s dgLayoutNode_t;
14
typedef struct dgLayoutEdge_s dgLayoutEdge_t;
16
typedef enum dgdir_e {BOTH, FORWARD, BACKWARD, NOREVERSE} dgdir_t;
18
typedef struct dglInterp_s {
20
tblHeader_pt layoutTable;
23
struct dgLayoutNode_s {
24
ILnode_t node; /* must be first */
25
Tcl_HashEntry *n; /* pointer to base object */
28
struct dgLayoutEdge_s {
29
ILedge_t edge; /* must be first */
30
Tcl_HashEntry *e; /* pointer to base object */
34
ILview_t v; /* must be first */
36
dglInterp_t *dglInterp;
39
char *insert_node_cmd;
40
char *insert_edge_cmd;
41
char *modify_node_cmd;
42
char *modify_edge_cmd;
43
char *delete_node_cmd;
44
char *delete_edge_cmd;
45
ILedge_t *defaultedge; /* a place to keep default shape info */
46
ILnode_t *defaultnode;
48
Tcl_HashTable edgetable;
49
Tcl_HashTable nodetable;
52
/* functions from dglayout.c */
53
int layoutcmd(ClientData clientData, Tcl_Interp * interp, int argc, char *argv[]);
55
/* functions from dgshape.c */
56
void setnodeshapefromdefault(dgLayout_t * v, ILnode_t *spec);
57
void setedgeshapefromdefault(dgLayout_t * v, ILedge_t *spec);
58
void setnodeshape(ILnode_t *spec, ilshapetype_t type);
59
void setedgeshape(ILedge_t *spec, ilshapetype_t type);
60
int dgedgeshape(dgLayout_t *vp, int argc, char **argv, ILedge_t *spec);
61
int dgnodeshape(dgLayout_t *vp, int argc, char **argv, ILnode_t *spec);
62
void freeshapes(ilshape_t *shape);
64
/* functions from dgutil.c */
65
void initedgespec(ILedge_t *spec);
66
void initnodespec(ILnode_t *spec);
67
int getedgespec (dgLayout_t *v, char *e, dgLayoutEdge_t **vep, int create_p);
68
int getnodespec (dgLayout_t *v, char *n, dgLayoutNode_t **vnp, int create_p);
69
void dgldelete (dgLayout_t *v);
71
dgLayoutEdge_t * edge_to_spec(dgLayout_t *v, Tcl_HashEntry *e);
72
dgLayoutNode_t * node_to_spec(dgLayout_t *v, Tcl_HashEntry *n);
74
ilshape_t *init_edge_pos();
75
void insert_obj(dgLayout_t *v, ILobj_t *spec);
76
void modify_obj(dgLayout_t *v, ILobj_t *spec);
77
void delete_obj(dgLayout_t *v, ILobj_t *spec);
78
int shape_obj(dgLayout_t *v, ILobj_t *spec);
80
int dgscanxy(dgLayout_t *vp, char **argv, ilcoord_t *p);
81
void dgsprintxy(dgLayout_t *vp, Tcl_DString *result, int npts, ilcoord_t *p);
82
int dgboundary(dgLayout_t *vp, int argc, char **argv, ILnode_t *spec);
84
char *buildBindings(char *s1, char *s2);
85
char *dglExpandPercentsEval(
86
Tcl_Interp * interp, /* interpreter context */
87
register char *before, /* Command with percent expressions */
88
char *l, /* layoutHandle string to substitute for "%l" */
89
char *n, /* nodeHandle string to substitute for "%n"
90
or tailnode in *_edge_cmd */
91
char *e, /* edgeHandle string to substitute for "%e" */
92
char *A, /* headnode in *_edge_cmd */
93
char *a, /* node/edge coords */
94
dgLayout_t *vp, /* layout context */
95
int npts, /* number of coordinates */
96
ilcoord_t * ppos /* Coordinates to substitute for %a */
99
char * layout_to_handle(dgLayout_t *v, char *buf);
100
dgLayout_t * handle_to_layout(char *s);
101
int dglCallbacks (dgLayout_t *v, int flag);
103
extern dglInterp_t dglInterp;