Graphviz 12.0.1~dev.20240715.2254
Loading...
Searching...
No Matches
types.h
Go to the documentation of this file.
1
8/*************************************************************************
9 * Copyright (c) 2011 AT&T Intellectual Property
10 * All rights reserved. This program and the accompanying materials
11 * are made available under the terms of the Eclipse Public License v1.0
12 * which accompanies this distribution, and is available at
13 * https://www.eclipse.org/legal/epl-v10.html
14 *
15 * Contributors: Details at https://graphviz.org
16 *************************************************************************/
17
18#pragma once
19
20/* Define if you want CGRAPH */
21#define WITH_CGRAPH 1
22
23#include <stdbool.h>
24#include <stddef.h>
25#include <stdio.h>
26#include <stdint.h>
27#include <assert.h>
28#include <signal.h>
29#include "geom.h"
30#include "gvcext.h"
31#include "pathgeom.h"
32#include "textspan.h"
33#include "cgraph.h"
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39 typedef struct Agraph_s graph_t;
40 typedef struct Agnode_s node_t;
41 typedef struct Agedge_s edge_t;
42 typedef struct Agsym_s attrsym_t;
43#define TAIL_ID "tailport"
44#define HEAD_ID "headport"
45
46 typedef struct htmllabel_t htmllabel_t;
47
48 typedef struct port { /* internal edge endpoint specification */
49 pointf p; /* aiming point relative to node center */
50 double theta; /* slope in radians */
51 boxf *bp; /* if not null, points to bbox of
52 * rectangular area that is port target
53 */
54 bool defined; /* if true, edge has port info at this end */
55 bool constrained; /* if true, constraints such as theta are set */
56 bool clip; /* if true, clip end to node/port shape */
57 bool dyna; /* if true, assign compass point dynamically */
58 unsigned char order; /* for mincross */
59 unsigned char side; /* if port is on perimeter of node, this
60 * contains the bitwise OR of the sides (TOP,
61 * BOTTOM, etc.) it is on.
62 */
63 char *name; /* port name, if it was explicitly given, otherwise NULL */
65
66 typedef struct {
67 bool(*swapEnds) (edge_t * e); /* Should head and tail be swapped? */
68 bool(*splineMerge) (node_t * n); /* Is n a node in the middle of an edge? */
69 bool ignoreSwap; /* Test for swapped edges if false */
70 bool isOrtho; /* Orthogonal routing used */
71 } splineInfo;
72
73 typedef struct pathend_t {
74 boxf nb; /* the node box */
75 pointf np; /* node port */
77 int boxn;
80
81 typedef struct path { /* internal specification for an edge spline */
84 size_t nbox;
85 boxf *boxes; /* rectangular regions of subdivision */
86 void *data;
88
89 typedef struct bezier {
91 size_t size;
92 uint32_t sflag;
93 uint32_t eflag;
97
98 typedef struct splines {
100 size_t size;
103
104 typedef struct textlabel_t {
105 char *text;
106 char *fontname;
109 double fontsize;
110 pointf dimen; /* the diagonal size of the label (estimated by layout) */
111 pointf space; /* the diagonal size of the space for the label */
112 /* the rendered label is aligned in this box */
113 /* space does not include pad or margin */
114 pointf pos; /* the center of the space for the label */
115 union {
116 struct {
118 size_t nspans;
121 } u;
122 char valign; /* 't' 'c' 'b' */
123 bool set; /* true if position is set */
124 bool html; /* true if html label */
126
127 typedef struct {
128 bool filled: 1;
129 bool radial: 1;
130 bool rounded: 1;
131 bool diagonals: 1;
132 bool auxlabels: 1;
133 bool invisible: 1;
134 bool striped: 1;
135 bool dotted: 1;
136 bool dashed: 1;
137 bool wedged: 1;
138 bool underline: 1;
139 bool fixedshape: 1;
140 unsigned shape: 7;
142
143 typedef struct polygon_t { /* mutable shape information for a node */
144 int regular; /* true for symmetric shapes */
145 size_t peripheries;
146 size_t sides;
147 double orientation; /* orientation of shape (+ve degrees) */
148 double distortion; /* distortion factor - as in trapezium */
149 double skew; /* skew factor - as in parallelogram */
151 pointf *vertices; /* array of vertex points */
153
154typedef union inside_t {
155 struct {
157 double *r;
158 } a;
159 struct {
163 double radius;
165 size_t last;
166 size_t outp;
169 } s;
171
172 typedef struct stroke_t { /* information about a single stroke */
173 /* we would have called it a path if that term wasn't already used */
174 size_t nvertices;
175 pointf *vertices; /* array of vertex points */
177
178 typedef struct shape_functions { /* read-only shape functions */
179 void (*initfn) (node_t *); /* initializes shape from node u.shape_info structure */
180 void (*freefn) (node_t *); /* frees shape from node u.shape_info structure */
181 port(*portfn) (node_t *, char *, char *); /* finds aiming point and slope of port */
182 bool(*insidefn) (inside_t * inside_context, pointf); /* clips incident gvc->e spline on shape of gvc->n */
183 int (*pboxfn)(node_t* n, port* p, int side, boxf rv[], int *kptr); /* finds box path to reach port */
184 void (*codefn) (GVJ_t * job, node_t * n); /* emits graphics code for node */
186
188
189 typedef struct shape_desc { /* read-only shape descriptor */
190 char *name; /* as read from graph file */
192 polygon_t *polygon; /* base polygon info */
195
196#include "usershape.h" /* usershapes needed by gvc */
197
198 typedef struct adjmatrix_t adjmatrix_t;
199
200 typedef struct rank_t {
201 int n; /* number of nodes in this rank */
202 node_t **v; /* ordered list of nodes in rank */
203 int an; /* globally allocated number of nodes */
204 node_t **av; /* allocated list of nodes in rank */
205 double ht1; /* height below/above centerline */
206 double ht2; /* height below/above centerline */
207 double pht1; /* as above, but only primitive nodes */
208 double pht2; /* as above, but only primitive nodes */
209 bool candidate; /* for transpose () */
210 bool valid;
211 int cache_nc; /* caches number of crossings */
214
217
218 typedef struct layout_t {
219 double quantum;
220 double scale;
221 double ratio; /* set only if ratio_kind == R_VALUE */
222 double dpi;
226 bool filled;
230 void* xdots;
231 char* id;
233
234/* for "record" shapes */
235 typedef struct field_t {
236 pointf size; /* its dimension */
237 boxf b; /* its placement in node's coordinates */
239 textlabel_t *lp; /* n_flds == 0 */
240 struct field_t **fld; /* n_flds > 0 */
241 char *id; /* user's identifier */
242 unsigned char LR; /* if box list is horizontal (left to right) */
243 unsigned char sides; /* sides of node exposed to field */
245
246 typedef struct nlist_t {
248 size_t size;
250
251 typedef struct elist {
253 size_t size;
255
256#define GUI_STATE_ACTIVE (1<<0)
257#define GUI_STATE_SELECTED (1<<1)
258#define GUI_STATE_VISITED (1<<2)
259#define GUI_STATE_DELETED (1<<3)
260
261#define elist_append(item, L) \
262 do { \
263 L.list = gv_recalloc(L.list, L.size + 1, L.size + 2, sizeof(edge_t *)); \
264 L.list[L.size++] = item; \
265 L.list[L.size] = NULL; \
266 } while (0)
267#define alloc_elist(n, L) \
268 do { \
269 L.size = 0; \
270 L.list = gv_calloc(n + 1, sizeof(edge_t *)); \
271 } while (0)
272#define free_list(L) free(L.list)
273
275
278 typedef struct Agraphinfo_t {
280 /* to generate code */
282 textlabel_t *label; /* if the cluster has a title */
283 boxf bb; /* bounding box */
284 pointf border[4]; /* sizes of margins for graph labels */
285 unsigned char gui_state; /* Graph state for GUI ops */
286 unsigned char has_labels;
288 unsigned char charset; /* input character set */
290 double ht1; /* below and above extremal ranks */
291 double ht2; /* below and above extremal ranks */
292 unsigned short flags;
293 void *alg;
294 GVC_t *gvc; /* context for "globals" over multiple graphs */
295 void (*cleanup) (graph_t * g); /* function to deallocate layout-specific data */
296
297#ifndef DOT_ONLY
298 /* to place nodes */
300 int move;
301 double **dist;
302 double **spring;
303 double **sum_t;
304 double ***t;
305 unsigned short ndim;
306 unsigned short odim;
307#endif
308#ifndef NEATO_ONLY
309 /* to have subgraphs */
311 graph_t **clust; /* clusters are in clust[1..n_cluster] !!! */
315 graph_t *parent; /* containing cluster (not parent subgraph) */
316 int level; /* cluster nesting level (not node level!) */
317 node_t *minrep; /* set leaders for min and max rank */
318 node_t *maxrep; /* set leaders for min and max rank */
319
320 /* fast graph node list */
322 /* connected components */
323 node_t *minset; /* set leaders */
324 node_t *maxset; /* set leaders */
325 /* includes virtual */
328
329 /* various flags */
331 unsigned char showboxes;
332 fontname_kind fontnames; /* to override mangling in SVG */
333
336 node_t *ln; /* left nodes of bounding box */
337 node_t *rn; /* right nodes of bounding box */
338
339 /* for clusters */
347#endif
348
350
351#define GD_parent(g) (((Agraphinfo_t*)AGDATA(g))->parent)
352#define GD_level(g) (((Agraphinfo_t*)AGDATA(g))->level)
353#define GD_drawing(g) (((Agraphinfo_t*)AGDATA(g))->drawing)
354#define GD_bb(g) (((Agraphinfo_t*)AGDATA(g))->bb)
355#define GD_gvc(g) (((Agraphinfo_t*)AGDATA(g))->gvc)
356#define GD_cleanup(g) (((Agraphinfo_t*)AGDATA(g))->cleanup)
357#define GD_dist(g) (((Agraphinfo_t*)AGDATA(g))->dist)
358#define GD_alg(g) (((Agraphinfo_t*)AGDATA(g))->alg)
359#define GD_border(g) (((Agraphinfo_t*)AGDATA(g))->border)
360#define GD_clust(g) (((Agraphinfo_t*)AGDATA(g))->clust)
361#define GD_dotroot(g) (((Agraphinfo_t*)AGDATA(g))->dotroot)
362#define GD_comp(g) (((Agraphinfo_t*)AGDATA(g))->comp)
363#define GD_exact_ranksep(g) (((Agraphinfo_t*)AGDATA(g))->exact_ranksep)
364#define GD_expanded(g) (((Agraphinfo_t*)AGDATA(g))->expanded)
365#define GD_flags(g) (((Agraphinfo_t*)AGDATA(g))->flags)
366#define GD_gui_state(g) (((Agraphinfo_t*)AGDATA(g))->gui_state)
367#define GD_charset(g) (((Agraphinfo_t*)AGDATA(g))->charset)
368#define GD_has_labels(g) (((Agraphinfo_t*)AGDATA(g))->has_labels)
369#define GD_has_images(g) (((Agraphinfo_t*)AGDATA(g))->has_images)
370#define GD_has_flat_edges(g) (((Agraphinfo_t*)AGDATA(g))->has_flat_edges)
371#define GD_ht1(g) (((Agraphinfo_t*)AGDATA(g))->ht1)
372#define GD_ht2(g) (((Agraphinfo_t*)AGDATA(g))->ht2)
373#define GD_installed(g) (((Agraphinfo_t*)AGDATA(g))->installed)
374#define GD_label(g) (((Agraphinfo_t*)AGDATA(g))->label)
375#define GD_leader(g) (((Agraphinfo_t*)AGDATA(g))->leader)
376#define GD_rankdir2(g) (((Agraphinfo_t*)AGDATA(g))->rankdir)
377#define GD_rankdir(g) (((Agraphinfo_t*)AGDATA(g))->rankdir & 0x3)
378#define GD_flip(g) (GD_rankdir(g) & 1)
379#define GD_realrankdir(g) ((((Agraphinfo_t*)AGDATA(g))->rankdir) >> 2)
380#define GD_realflip(g) (GD_realrankdir(g) & 1)
381#define GD_ln(g) (((Agraphinfo_t*)AGDATA(g))->ln)
382#define GD_maxrank(g) (((Agraphinfo_t*)AGDATA(g))->maxrank)
383#define GD_maxset(g) (((Agraphinfo_t*)AGDATA(g))->maxset)
384#define GD_minrank(g) (((Agraphinfo_t*)AGDATA(g))->minrank)
385#define GD_minset(g) (((Agraphinfo_t*)AGDATA(g))->minset)
386#define GD_minrep(g) (((Agraphinfo_t*)AGDATA(g))->minrep)
387#define GD_maxrep(g) (((Agraphinfo_t*)AGDATA(g))->maxrep)
388#define GD_move(g) (((Agraphinfo_t*)AGDATA(g))->move)
389#define GD_n_cluster(g) (((Agraphinfo_t*)AGDATA(g))->n_cluster)
390#define GD_ndim(g) (((Agraphinfo_t*)AGDATA(g))->ndim)
391#define GD_odim(g) (((Agraphinfo_t*)AGDATA(g))->odim)
392#define GD_neato_nlist(g) (((Agraphinfo_t*)AGDATA(g))->neato_nlist)
393#define GD_nlist(g) (((Agraphinfo_t*)AGDATA(g))->nlist)
394#define GD_nodesep(g) (((Agraphinfo_t*)AGDATA(g))->nodesep)
395#define GD_rank(g) (((Agraphinfo_t*)AGDATA(g))->rank)
396#define GD_rankleader(g) (((Agraphinfo_t*)AGDATA(g))->rankleader)
397#define GD_ranksep(g) (((Agraphinfo_t*)AGDATA(g))->ranksep)
398#define GD_rn(g) (((Agraphinfo_t*)AGDATA(g))->rn)
399#define GD_set_type(g) (((Agraphinfo_t*)AGDATA(g))->set_type)
400#define GD_label_pos(g) (((Agraphinfo_t*)AGDATA(g))->label_pos)
401#define GD_showboxes(g) (((Agraphinfo_t*)AGDATA(g))->showboxes)
402#define GD_fontnames(g) (((Agraphinfo_t*)AGDATA(g))->fontnames)
403#define GD_spring(g) (((Agraphinfo_t*)AGDATA(g))->spring)
404#define GD_sum_t(g) (((Agraphinfo_t*)AGDATA(g))->sum_t)
405#define GD_t(g) (((Agraphinfo_t*)AGDATA(g))->t)
407
410 typedef struct Agnodeinfo_t {
415 double width; /* inches */
416 double height; /* inches */
418 double ht;
419 double lw;
420 double rw;
421 double outline_width; /* width in points with penwidth taken into account */
422 double outline_height; /* height in points with penwidth taken into account */
425 void *alg;
426 char state;
427 unsigned char gui_state; /* Node state for GUI ops */
429
430#ifndef DOT_ONLY
431 unsigned char pinned;
432 int id;
434 int hops;
435 double *pos;
436 double dist;
437#endif
438#ifndef NEATO_ONLY
439 unsigned char showboxes;
443
444 /* fast graph */
446 size_t mark;
458
459 /* for union-find and collapsing nodes */
462
463 /* for placing nodes */
464 int rank;
465 int order; /* initially, order = 1 for ordered edges */
466 double mval;
469
470 /* for network-simplex */
474 int low;
475 int lim;
477
478 double pad[1];
479#endif
480
482
483#define ND_id(n) (((Agnodeinfo_t*)AGDATA(n))->id)
484#define ND_alg(n) (((Agnodeinfo_t*)AGDATA(n))->alg)
485#define ND_UF_parent(n) (((Agnodeinfo_t*)AGDATA(n))->UF_parent)
486#define ND_set(n) (((Agnodeinfo_t*)AGDATA(n))->set)
487#define ND_UF_size(n) (((Agnodeinfo_t*)AGDATA(n))->UF_size)
488#define ND_bb(n) (((Agnodeinfo_t*)AGDATA(n))->bb)
489#define ND_clust(n) (((Agnodeinfo_t*)AGDATA(n))->clust)
490#define ND_coord(n) (((Agnodeinfo_t*)AGDATA(n))->coord)
491#define ND_dist(n) (((Agnodeinfo_t*)AGDATA(n))->dist)
492#define ND_flat_in(n) (((Agnodeinfo_t*)AGDATA(n))->flat_in)
493#define ND_flat_out(n) (((Agnodeinfo_t*)AGDATA(n))->flat_out)
494#define ND_gui_state(n) (((Agnodeinfo_t*)AGDATA(n))->gui_state)
495#define ND_has_port(n) (((Agnodeinfo_t*)AGDATA(n))->has_port)
496#define ND_rep(n) (((Agnodeinfo_t*)AGDATA(n))->rep)
497#define ND_heapindex(n) (((Agnodeinfo_t*)AGDATA(n))->heapindex)
498#define ND_height(n) (((Agnodeinfo_t*)AGDATA(n))->height)
499#define ND_hops(n) (((Agnodeinfo_t*)AGDATA(n))->hops)
500#define ND_ht(n) (((Agnodeinfo_t*)AGDATA(n))->ht)
501#define ND_in(n) (((Agnodeinfo_t*)AGDATA(n))->in)
502#define ND_label(n) (((Agnodeinfo_t*)AGDATA(n))->label)
503#define ND_xlabel(n) (((Agnodeinfo_t*)AGDATA(n))->xlabel)
504#define ND_lim(n) (((Agnodeinfo_t*)AGDATA(n))->lim)
505#define ND_low(n) (((Agnodeinfo_t*)AGDATA(n))->low)
506#define ND_lw(n) (((Agnodeinfo_t*)AGDATA(n))->lw)
507#define ND_mark(n) (((Agnodeinfo_t*)AGDATA(n))->mark)
508#define ND_mval(n) (((Agnodeinfo_t*)AGDATA(n))->mval)
509#define ND_n_cluster(n) (((Agnodeinfo_t*)AGDATA(n))->n_cluster)
510#define ND_next(n) (((Agnodeinfo_t*)AGDATA(n))->next)
511#define ND_node_type(n) (((Agnodeinfo_t*)AGDATA(n))->node_type)
512#define ND_onstack(n) (((Agnodeinfo_t*)AGDATA(n))->onstack)
513#define ND_order(n) (((Agnodeinfo_t*)AGDATA(n))->order)
514#define ND_other(n) (((Agnodeinfo_t*)AGDATA(n))->other)
515#define ND_out(n) (((Agnodeinfo_t*)AGDATA(n))->out)
516#define ND_outline_width(n) (((Agnodeinfo_t*)AGDATA(n))->outline_width)
517#define ND_outline_height(n) (((Agnodeinfo_t*)AGDATA(n))->outline_height)
518#define ND_par(n) (((Agnodeinfo_t*)AGDATA(n))->par)
519#define ND_pinned(n) (((Agnodeinfo_t*)AGDATA(n))->pinned)
520#define ND_pos(n) (((Agnodeinfo_t*)AGDATA(n))->pos)
521#define ND_prev(n) (((Agnodeinfo_t*)AGDATA(n))->prev)
522#define ND_priority(n) (((Agnodeinfo_t*)AGDATA(n))->priority)
523#define ND_rank(n) (((Agnodeinfo_t*)AGDATA(n))->rank)
524#define ND_ranktype(n) (((Agnodeinfo_t*)AGDATA(n))->ranktype)
525#define ND_rw(n) (((Agnodeinfo_t*)AGDATA(n))->rw)
526#define ND_save_in(n) (((Agnodeinfo_t*)AGDATA(n))->save_in)
527#define ND_save_out(n) (((Agnodeinfo_t*)AGDATA(n))->save_out)
528#define ND_shape(n) (((Agnodeinfo_t*)AGDATA(n))->shape)
529#define ND_shape_info(n) (((Agnodeinfo_t*)AGDATA(n))->shape_info)
530#define ND_showboxes(n) (((Agnodeinfo_t*)AGDATA(n))->showboxes)
531#define ND_state(n) (((Agnodeinfo_t*)AGDATA(n))->state)
532#define ND_clustnode(n) (((Agnodeinfo_t*)AGDATA(n))->clustnode)
533#define ND_tree_in(n) (((Agnodeinfo_t*)AGDATA(n))->tree_in)
534#define ND_tree_out(n) (((Agnodeinfo_t*)AGDATA(n))->tree_out)
535#define ND_weight_class(n) (((Agnodeinfo_t*)AGDATA(n))->weight_class)
536#define ND_width(n) (((Agnodeinfo_t*)AGDATA(n))->width)
537#define ND_xsize(n) (ND_lw(n)+ND_rw(n))
538#define ND_ysize(n) (ND_ht(n))
540
543 typedef struct Agedgeinfo_t {
554 char adjacent; /* true for flat edge with adjacent nodes */
556 unsigned char gui_state; /* Edge state for GUI ops */
557 edge_t *to_orig; /* for dot's shapes.c */
558 void *alg;
559
560#ifndef DOT_ONLY
561 double factor;
562 double dist;
564#endif
565#ifndef NEATO_ONLY
566 unsigned char showboxes;
568 short xpenalty;
572 short count;
575#endif
577
578#define ED_alg(e) (((Agedgeinfo_t*)AGDATA(e))->alg)
579#define ED_conc_opp_flag(e) (((Agedgeinfo_t*)AGDATA(e))->conc_opp_flag)
580#define ED_count(e) (((Agedgeinfo_t*)AGDATA(e))->count)
581#define ED_cutvalue(e) (((Agedgeinfo_t*)AGDATA(e))->cutvalue)
582#define ED_edge_type(e) (((Agedgeinfo_t*)AGDATA(e))->edge_type)
583#define ED_compound(e) (((Agedgeinfo_t*)AGDATA(e))->compound)
584#define ED_adjacent(e) (((Agedgeinfo_t*)AGDATA(e))->adjacent)
585#define ED_factor(e) (((Agedgeinfo_t*)AGDATA(e))->factor)
586#define ED_gui_state(e) (((Agedgeinfo_t*)AGDATA(e))->gui_state)
587#define ED_head_label(e) (((Agedgeinfo_t*)AGDATA(e))->head_label)
588#define ED_head_port(e) (((Agedgeinfo_t*)AGDATA(e))->head_port)
589#define ED_label(e) (((Agedgeinfo_t*)AGDATA(e))->label)
590#define ED_xlabel(e) (((Agedgeinfo_t*)AGDATA(e))->xlabel)
591#define ED_label_ontop(e) (((Agedgeinfo_t*)AGDATA(e))->label_ontop)
592#define ED_minlen(e) (((Agedgeinfo_t*)AGDATA(e))->minlen)
593#define ED_path(e) (((Agedgeinfo_t*)AGDATA(e))->path)
594#define ED_showboxes(e) (((Agedgeinfo_t*)AGDATA(e))->showboxes)
595#define ED_spl(e) (((Agedgeinfo_t*)AGDATA(e))->spl)
596#define ED_tail_label(e) (((Agedgeinfo_t*)AGDATA(e))->tail_label)
597#define ED_tail_port(e) (((Agedgeinfo_t*)AGDATA(e))->tail_port)
598#define ED_to_orig(e) (((Agedgeinfo_t*)AGDATA(e))->to_orig)
599#define ED_to_virt(e) (((Agedgeinfo_t*)AGDATA(e))->to_virt)
600#define ED_tree_index(e) (((Agedgeinfo_t*)AGDATA(e))->tree_index)
601#define ED_xpenalty(e) (((Agedgeinfo_t*)AGDATA(e))->xpenalty)
602#define ED_dist(e) (((Agedgeinfo_t*)AGDATA(e))->dist)
603#define ED_weight(e) (((Agedgeinfo_t*)AGDATA(e))->weight)
605
606#define ag_xget(x,a) agxget(x,a)
607#define SET_RANKDIR(g,rd) (GD_rankdir2(g) = rd)
609#define agfindedge(g,t,h) (agedge(g,t,h,NULL,0))
611#define agfindnode(g,n) (agnode(g,n,0))
613#define agfindgraphattr(g,a) (agattr(g,AGRAPH,a,NULL))
615#define agfindnodeattr(g,a) (agattr(g,AGNODE,a,NULL))
617#define agfindedgeattr(g,a) (agattr(g,AGEDGE,a,NULL))
618
619 typedef struct {
620 int flags;
622
623#ifdef __cplusplus
624}
625#endif
abstract graph C library, Cgraph API
geometric types and macros (e.g. points and boxes)
struct pointf_s pointf
struct Agnodeinfo_t Agnodeinfo_t
textlabel_t * label
Definition types.h:548
void * alg
Definition types.h:558
bool conc_opp_flag
Definition types.h:567
unsigned char gui_state
Definition types.h:556
textlabel_t * tail_label
Definition types.h:550
char label_ontop
Definition types.h:555
short xpenalty
Definition types.h:568
double dist
Definition types.h:562
port head_port
Definition types.h:547
int cutvalue
Definition types.h:570
edge_t * to_orig
Definition types.h:557
edge_t * to_virt
Definition types.h:574
textlabel_t * xlabel
Definition types.h:551
int weight
Definition types.h:569
char adjacent
Definition types.h:554
int minlen
Definition types.h:573
int tree_index
Definition types.h:571
char compound
Definition types.h:553
port tail_port
Definition types.h:546
unsigned char showboxes
Definition types.h:566
double factor
Definition types.h:561
Ppolyline_t path
Definition types.h:563
char edge_type
Definition types.h:552
splines * spl
Definition types.h:545
Agrec_t hdr
Definition types.h:544
textlabel_t * head_label
Definition types.h:549
short count
Definition types.h:572
Agrec_t hdr
Definition types.h:411
double mval
Definition types.h:466
char node_type
Definition types.h:445
double rw
Definition types.h:420
double width
Definition types.h:415
unsigned char pinned
Definition types.h:431
double outline_width
Definition types.h:421
boxf bb
Definition types.h:417
void * alg
Definition types.h:425
double height
Definition types.h:416
pointf coord
Definition types.h:414
size_t mark
Definition types.h:446
elist out
Definition types.h:453
double lw
Definition types.h:419
char onstack
Definition types.h:447
elist flat_in
Definition types.h:455
int heapindex
Definition types.h:433
char weight_class
Definition types.h:449
double dist
Definition types.h:436
int order
Definition types.h:465
textlabel_t * label
Definition types.h:423
elist flat_out
Definition types.h:454
elist tree_out
Definition types.h:472
unsigned char gui_state
Definition types.h:427
int UF_size
Definition types.h:460
node_t * set
Definition types.h:442
void * shape_info
Definition types.h:413
unsigned char showboxes
Definition types.h:439
node_t * UF_parent
Definition types.h:461
bool has_port
Definition types.h:440
char ranktype
Definition types.h:448
textlabel_t * xlabel
Definition types.h:424
double outline_height
Definition types.h:422
elist in
Definition types.h:452
shape_desc * shape
Definition types.h:412
double pad[1]
Definition types.h:478
node_t * prev
Definition types.h:451
node_t * rep
Definition types.h:441
double * pos
Definition types.h:435
node_t * next
Definition types.h:450
int priority
Definition types.h:476
graph_t * clust
Definition types.h:457
elist save_out
Definition types.h:468
elist other
Definition types.h:456
char state
Definition types.h:426
edge_t * par
Definition types.h:473
bool clustnode
Definition types.h:428
elist save_in
Definition types.h:467
double ht
Definition types.h:418
elist tree_in
Definition types.h:471
graph or subgraph
Definition cgraph.h:425
char label_pos
Definition types.h:345
node_t * minrep
Definition types.h:317
graph_t * parent
Definition types.h:315
layout_t * drawing
Definition types.h:281
node_t * maxset
Definition types.h:324
char installed
Definition types.h:343
int nodesep
Definition types.h:334
int rankdir
Definition types.h:289
nlist_t comp
Definition types.h:321
char set_type
Definition types.h:344
int maxrank
Definition types.h:327
graph_t ** clust
Definition types.h:311
bool has_images
Definition types.h:287
textlabel_t * label
Definition types.h:282
int n_cluster
Definition types.h:310
unsigned char gui_state
Definition types.h:285
GVC_t * gvc
Definition types.h:294
double *** t
Definition types.h:304
bool expanded
Definition types.h:342
int minrank
Definition types.h:326
int ranksep
Definition types.h:335
node_t ** neato_nlist
Definition types.h:299
double ht2
Definition types.h:291
double ** sum_t
Definition types.h:303
void(* cleanup)(graph_t *g)
Definition types.h:295
unsigned short ndim
Definition types.h:305
int level
Definition types.h:316
node_t ** rankleader
Definition types.h:341
unsigned char showboxes
Definition types.h:331
node_t * rn
Definition types.h:337
double ** spring
Definition types.h:302
double ht1
Definition types.h:290
node_t * maxrep
Definition types.h:318
unsigned char charset
Definition types.h:288
bool has_flat_edges
Definition types.h:330
pointf border[4]
Definition types.h:284
unsigned short odim
Definition types.h:306
node_t * ln
Definition types.h:336
void * alg
Definition types.h:293
Agrec_t hdr
Definition types.h:279
node_t * nlist
Definition types.h:313
node_t * minset
Definition types.h:323
bool exact_ranksep
Definition types.h:346
unsigned char has_labels
Definition types.h:286
graph_t * dotroot
Definition types.h:312
boxf bb
Definition types.h:283
rank_t * rank
Definition types.h:314
node_t * leader
Definition types.h:340
unsigned short flags
Definition types.h:292
fontname_kind fontnames
Definition types.h:332
double ** dist
Definition types.h:301
implementation of Agrec_t
Definition cgraph.h:172
string attribute descriptor symbol in Agattr_s.dict
Definition cgraph.h:639
Definition gvcint.h:80
Definition types.h:89
size_t size
Definition types.h:91
pointf sp
Definition types.h:94
pointf * list
Definition types.h:90
uint32_t eflag
Definition types.h:93
pointf ep
Definition types.h:95
uint32_t sflag
Definition types.h:92
Definition geom.h:41
Definition types.h:251
edge_t ** list
Definition types.h:252
size_t size
Definition types.h:253
int n_flds
Definition types.h:238
textlabel_t * lp
Definition types.h:239
pointf size
Definition types.h:236
boxf b
Definition types.h:237
struct field_t ** fld
Definition types.h:240
unsigned char LR
Definition types.h:242
char * id
Definition types.h:241
unsigned char sides
Definition types.h:243
void * xdots
Definition types.h:230
pointf size
Definition types.h:225
pointf margin
Definition types.h:223
bool landscape
Definition types.h:227
double scale
Definition types.h:220
bool centered
Definition types.h:228
char * id
Definition types.h:231
double dpi
Definition types.h:222
bool filled
Definition types.h:226
double ratio
Definition types.h:221
pointf page
Definition types.h:224
double quantum
Definition types.h:219
ratio_t ratio_kind
Definition types.h:229
node_t ** list
Definition types.h:247
size_t size
Definition types.h:248
Definition types.h:81
port start
Definition types.h:82
boxf * boxes
Definition types.h:85
port end
Definition types.h:83
size_t nbox
number of subdivisions
Definition types.h:84
void * data
Definition types.h:86
boxf nb
Definition types.h:74
int boxn
Definition types.h:77
int sidemask
Definition types.h:76
boxf boxes[20]
Definition types.h:78
pointf np
Definition types.h:75
size_t sides
number of sides
Definition types.h:146
int regular
Definition types.h:144
graphviz_polygon_style_t option
ROUNDED, DIAGONAL corners, etc.
Definition types.h:150
size_t peripheries
number of periphery lines
Definition types.h:145
double skew
Definition types.h:149
double orientation
Definition types.h:147
double distortion
Definition types.h:148
pointf * vertices
Definition types.h:151
Definition types.h:48
boxf * bp
Definition types.h:51
pointf p
Definition types.h:49
bool dyna
Definition types.h:57
unsigned char side
Definition types.h:59
bool clip
Definition types.h:56
double theta
Definition types.h:50
char * name
Definition types.h:63
unsigned char order
Definition types.h:58
bool constrained
Definition types.h:55
bool defined
Definition types.h:54
double pht1
Definition types.h:207
bool candidate
Definition types.h:209
int an
Definition types.h:203
bool valid
Definition types.h:210
node_t ** v
Definition types.h:202
int n
Definition types.h:201
adjmatrix_t * flat
Definition types.h:212
double ht1
Definition types.h:205
int cache_nc
Definition types.h:211
node_t ** av
Definition types.h:204
double pht2
Definition types.h:208
double ht2
Definition types.h:206
polygon_t * polygon
Definition types.h:192
shape_functions * fns
Definition types.h:191
bool usershape
Definition types.h:193
char * name
Definition types.h:190
void(* freefn)(node_t *)
Definition types.h:180
void(* initfn)(node_t *)
Definition types.h:179
int(* pboxfn)(node_t *n, port *p, int side, boxf rv[], int *kptr)
Definition types.h:183
void(* codefn)(GVJ_t *job, node_t *n)
Definition types.h:184
bool(* insidefn)(inside_t *inside_context, pointf)
Definition types.h:182
port(* portfn)(node_t *, char *, char *)
Definition types.h:181
bool isOrtho
Definition types.h:70
bool ignoreSwap
Definition types.h:69
bezier * list
Definition types.h:99
boxf bb
Definition types.h:101
size_t size
Definition types.h:100
pointf * vertices
Definition types.h:175
size_t nvertices
number of points in the stroke
Definition types.h:174
pointf pos
Definition types.h:114
char * fontcolor
Definition types.h:107
struct textlabel_t::@81::@82 txt
char * text
Definition types.h:105
int charset
Definition types.h:108
size_t nspans
Definition types.h:118
char valign
Definition types.h:122
bool set
Definition types.h:123
textspan_t * span
Definition types.h:117
double fontsize
Definition types.h:109
pointf space
Definition types.h:111
htmllabel_t * html
Definition types.h:120
bool html
Definition types.h:124
union textlabel_t::@81 u
char * fontname
Definition types.h:106
pointf dimen
Definition types.h:110
textspan_t, textfont_t, PostscriptAlias
fontname_kind
Definition types.h:274
@ NATIVEFONTS
Definition types.h:274
@ PSFONTS
Definition types.h:274
@ SVGFONTS
Definition types.h:274
shape_kind
Definition types.h:187
@ SH_EPSF
Definition types.h:187
@ SH_RECORD
Definition types.h:187
@ SH_UNSET
Definition types.h:187
@ SH_POINT
Definition types.h:187
@ SH_POLY
Definition types.h:187
ratio_t
Definition types.h:215
@ R_AUTO
Definition types.h:216
@ R_COMPRESS
Definition types.h:216
@ R_VALUE
Definition types.h:216
@ R_FILL
Definition types.h:216
@ R_EXPAND
Definition types.h:216
@ R_NONE
Definition types.h:215
struct inside_t::@83 a
double scaley
Definition types.h:167
pointf * p
Definition types.h:156
double scalex
Definition types.h:167
struct inside_t::@84 s
double * r
Definition types.h:157
double radius
last radius seen
Definition types.h:163
node_t * n
Definition types.h:160
double box_URx
Definition types.h:167
polygon_t * last_poly
last seen polygon
Definition types.h:164
node_t * lastn
last node argument
Definition types.h:162
size_t last
last used polygon vertex
Definition types.h:165
double box_URy
various computed sizes of aspects of the last seen polygon
Definition types.h:167
boxf * bp
Definition types.h:161
size_t outp
last used outline periphery
Definition types.h:166