1
/* Common functions for layout engines. */
9
engnode_t *il_nd(Agnode_t *n)
11
return (engnode_t*)AGDATA(n);
14
engedge_t *il_ed(Agedge_t *e)
16
return (engedge_t*)AGDATA(e);
19
ILnode_t *il_node(Agnode_t *n)
21
return ((engnode_t*)(AGDATA(n)))->client;
24
ILedge_t *il_edge(Agedge_t *e)
26
return ((engedge_t*)(AGDATA(e)))->client;
29
ilcoord_t il_pos(Agnode_t *n)
31
return il_nd(n)->client->pos;
34
void il_set_pos(Agnode_t *n, ilcoord_t pos)
36
il_nd(n)->client->pos = pos;
39
double il_edgewidth(engview_t *view, Agedge_t *e)
44
if (spec) return spec->width;
48
ilcoord_t il_nodesize(engview_t *view, Agnode_t *node)
53
if ((node) && ((nd = il_nd(node)))) {
54
if (NOT(nd->bb.valid)) {
55
if (nd->client->shape)
56
nd->bb.size = il_get_bounding_rect(nd->client->shape);
58
nd->bb.size.ll.x = nd->bb.size.ll.y = nd->bb.size.ur.y = 0.0;
59
nd->bb.size.ur.x = 2 * view->client->separation.x;
63
rv.x = nd->bb.size.ur.x - nd->bb.size.ll.x;
64
rv.y = nd->bb.size.ur.y - nd->bb.size.ll.y;
66
else { rv.x = rv.y = 0.0; }
70
ilcoord_t il_nodesep(engview_t *view)
72
return view->client->separation;