45 same_list_t samehead = {.dtor =
free_same};
46 same_list_t sametail = {.dtor =
free_same};
62 for (
size_t i = 0; i <
LIST_SIZE(&samehead); i++) {
67 for (
size_t i = 0; i <
LIST_SIZE(&sametail); i++) {
80 for (
size_t i = 0; i <
LIST_SIZE(same); i++)
86 same_t to_append = {.id =
id};
103 double x = 0, y = 0, x1, y1, x2, y2, r;
108 for (
size_t i = 0; i <
LIST_SIZE(&l); i++) {
134 curve[1].
x = (2 * x1 + x2) / 3;
135 curve[1].
y = (2 * y1 + y2) / 3;
136 curve[2].
x = (2 * x2 + x1) / 3;
137 curve[2].
y = (2 * y2 + y1) / 3;
147 port prt = {.
p = {.
x = round(x1), .y = round(y1)}};
160 for (
size_t i = 0; i <
LIST_SIZE(&l); i++) {
void dot_sameports(Agraph_t *)
Agsym_t * agattr_text(Agraph_t *g, int kind, char *name, const char *value)
creates or looks up text attributes of a graph
char * agxget(void *obj, Agsym_t *sym)
Agedge_t * agnxtedge(Agraph_t *g, Agedge_t *e, Agnode_t *n)
Agedge_t * agfstedge(Agraph_t *g, Agnode_t *n)
Agnode_t * agnxtnode(Agraph_t *g, Agnode_t *n)
Agnode_t * agfstnode(Agraph_t *g)
Agraph_t * agraphof(void *obj)
type-generic dynamically expanding list
#define LIST_AT(list, index)
#define LIST_APPEND(list, item)
#define LIST_GET(list, index)
void shape_clip(node_t *n, pointf curve[4])
static void free_same(same_t s)
static void sameport(node_t *u, edge_list_t l)
static void sameedge(same_list_t *same, edge_t *e, char *id)
register e in the same structure of the originating node under id
static bool streq(const char *a, const char *b)
are a and b equal?