32double yDir(
double y,
double Y_off) {
36static void agputs(
int (*putstr)(
void *chan,
const char *
str),
const char*
s,
41static void agputc(
int (*putstr)(
void *chan,
const char *
str),
char c,
43 char buf[] = {c,
'\0'};
53static void printint(
int (*putstr)(
void *chan,
const char *
str), FILE *f,
73static void printpoint(
int (*putstr)(
void *chan,
const char *
str), FILE *f,
113 if (portname && *portname)
149 if (fillcolor[0] ==
'\0')
158 if (!(tport =
agget(e,
"tailport")))
160 if (!(hport =
agget(e,
"headport")))
166 size_t splinePoints = 0;
167 for (
size_t i = 0; i <
ED_spl(e)->size; i++) {
169 splinePoints += bz.
size;
174 printint(putstr, f,
" ", splinePoints);
175 for (
size_t i = 0; i <
ED_spl(e)->size; i++) {
177 for (
size_t j = 0; j < bz.
size; j++)
190 agputs(putstr,
"stop\n", f);
203 for (i = 0; i < f->
n_flds; i++)
243 bool e_arrows =
false;
244 bool s_arrows =
false;
275 for (k = 3; k <
GD_odim(g); k++) {
292 if (strcmp(
ND_shape(n)->name,
"record") == 0) {
300 size_t sides =
poly->sides;
302 char *p =
agget(n,
"samplepoints");
304 sides = strtoul(p,
NULL, 0);
310 for (
size_t i = 0; i < sides; i++) {
313 if (
poly->sides >= 3)
319 ND_width(n) / 2.0 * cos((
double)i / (
double)sides *
M_PI * 2.0),
321 ND_height(n) / 2.0 * sin((
double)i / (
double)sides *
M_PI * 2.0)));
332 for (
size_t i = 0; i <
ED_spl(e)->size; i++) {
335 if (
ED_spl(e)->list[i].sflag) {
341 if (
ED_spl(e)->list[i].eflag) {
347 for (
size_t j = 0; j <
ED_spl(e)->list[i].size; j++) {
350 ptf =
ED_spl(e)->list[i].list[j];
static int agxbpop(agxbuf *xb)
removes last character added, if any
static void agxbfree(agxbuf *xb)
free any malloced resources
static int agxbprint(agxbuf *xb, const char *fmt,...)
Printf-style output to an agxbuf.
static WUR char * agxbuse(agxbuf *xb)
static int agxbputc(agxbuf *xb, char c)
add character to buffer
void undoClusterEdges(graph_t *g)
char * late_nnstring(void *obj, attrsym_t *attr, char *defaultValue)
attrsym_t * safe_dcl(graph_t *g, int obj_kind, char *name, char *defaultValue)
void gv_fixLocale(int set)
#define PS2INCH(a_points)
bool Y_invert
invert y in dot & plain output
require define api prefix
int agset(void *obj, char *name, const char *value)
int agxset(void *obj, Agsym_t *sym, const char *value)
char * agget(void *obj, char *name)
char * agxget(void *obj, Agsym_t *sym)
Agedge_t * agfstout(Agraph_t *g, Agnode_t *n)
Agedge_t * agnxtout(Agraph_t *g, Agedge_t *e)
Agnode_t * agnxtnode(Agraph_t *g, Agnode_t *n)
Agnode_t * agfstnode(Agraph_t *g)
Agraph_t * agraphof(void *obj)
char * agnameof(void *)
returns a string descriptor for the object.
int agstrfree(Agraph_t *, const char *)
char * agstrdup(Agraph_t *, const char *)
returns a pointer to a reference-counted copy of the argument string, creating one if necessary
char * agcanonStr(char *str)
void attach_attrs(graph_t *g)
Graphviz context library.
textitem scanner parser str
#define HAS_CLUST_EDGE(g)
static void agputc(int(*putstr)(void *chan, const char *str), char c, FILE *fp)
static void writenodeandport(int(*putstr)(void *chan, const char *str), FILE *f, node_t *node, char *portname)
static void rec_attach_bb(graph_t *g, Agsym_t *bbsym, Agsym_t *lpsym, Agsym_t *lwsym, Agsym_t *lhsym, double yOff)
static void printstring(int(*putstr)(void *chan, const char *str), FILE *f, char *prefix, char *s)
static double YFDIR(offsets_t offsets, double y)
double attach_attrs_and_arrows(graph_t *g, bool *sp, bool *ep)
double yDir(double y, double Y_off)
static void printint(int(*putstr)(void *chan, const char *str), FILE *f, char *prefix, size_t i)
static void printpoint(int(*putstr)(void *chan, const char *str), FILE *f, pointf p, double yOff)
static char * canon(graph_t *g, char *s)
static void set_record_rects(node_t *n, field_t *f, agxbuf *xb, double yOff)
void write_plain(GVJ_t *job, graph_t *g, FILE *f, bool extend)
static void printdouble(int(*putstr)(void *chan, const char *str), FILE *f, char *prefix, double v)
static offsets_t setYInvert(graph_t *g)
static void agputs(int(*putstr)(void *chan, const char *str), const char *s, FILE *fp)
#define PRISIZE_T
PRIu64 alike for printing size_t
int(* putstr)(void *chan, const char *str)
Agclos_t * clos
shared resources
state for offset calculations