Graphviz 14.0.0~dev.20250917.1738
Loading...
Searching...
No Matches
utils.h
Go to the documentation of this file.
1
3/*************************************************************************
4 * Copyright (c) 2011 AT&T Intellectual Property
5 * All rights reserved. This program and the accompanying materials
6 * are made available under the terms of the Eclipse Public License v1.0
7 * which accompanies this distribution, and is available at
8 * https://www.eclipse.org/legal/epl-v10.html
9 *
10 * Contributors: Details at https://graphviz.org
11 *************************************************************************/
12
13#pragma once
14
15#include "config.h"
16
17#include <stdbool.h>
18#include <stddef.h>
19#include <util/agxbuf.h>
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25#ifdef GVDLL
26#ifdef GVC_EXPORTS
27#define UTILS_API __declspec(dllexport)
28#else
29#define UTILS_API __declspec(dllimport)
30#endif
31#endif
32
33#ifndef UTILS_API
34#define UTILS_API /* nothing */
35#endif
36
37UTILS_API pointf Bezier(pointf *, double, pointf *, pointf *);
38
40UTILS_API double attach_attrs_and_arrows(graph_t *, bool *, bool *);
41
42UTILS_API void write_plain(GVJ_t *job, graph_t *g, void *f, bool extend);
43
45UTILS_API double yDir(double y, double yOff);
46
59UTILS_API char *ps_string(char *s, int chset);
60
61UTILS_API char *strdup_and_subst_obj(char *str, void *obj);
62UTILS_API void epsf_emit_body(GVJ_t *job, usershape_t *us);
63UTILS_API void epsf_define(GVJ_t *job);
64UTILS_API void undoClusterEdges(graph_t *g);
65UTILS_API Dt_t *mkClustMap(Agraph_t *g);
66UTILS_API Agraph_t *findCluster(Dt_t *map, char *name);
67UTILS_API attrsym_t *safe_dcl(graph_t *g, int obj_kind, char *name,
68 char *defaultValue);
69
70UTILS_API int late_int(void *obj, Agsym_t *attr, int defaultValue, int minimum);
71UTILS_API double late_double(void *obj, Agsym_t *attr, double defaultValue,
72 double minimum);
73UTILS_API char *late_nnstring(void *obj, Agsym_t *attr, char *defaultValue);
74UTILS_API char *late_string(void *obj, Agsym_t *attr, char *defaultValue);
75UTILS_API bool late_bool(void *obj, Agsym_t *attr, bool defaultValue);
76UTILS_API double get_inputscale(graph_t *g);
77
78// routines for supporting “union-find”, a.k.a. “disjoint-set forest”
79// https://en.wikipedia.org/wiki/Disjoint-set_data_structure
80UTILS_API Agnode_t *UF_find(Agnode_t *);
81UTILS_API Agnode_t *UF_union(Agnode_t *, Agnode_t *);
82UTILS_API void UF_singleton(Agnode_t *);
83UTILS_API void UF_setname(Agnode_t *, Agnode_t *);
84
85UTILS_API const char *safefile(const char *filename);
86
87UTILS_API bool mapBool(const char *p, bool defaultValue);
88UTILS_API bool mapbool(const char *p);
89UTILS_API int maptoken(char *, char **, int *);
90
91UTILS_API bool findStopColor(const char *colorlist, char *clrs[2],
92 double *frac);
93UTILS_API int test_toggle(void);
94
95UTILS_API void common_init_node(node_t *n);
96UTILS_API void common_init_edge(edge_t *e);
97
98UTILS_API void updateBB(graph_t *g, textlabel_t *lp);
99UTILS_API void compute_bb(Agraph_t *);
100UTILS_API boxf polyBB(polygon_t *poly);
101UTILS_API bool overlap_node(node_t *n, boxf b);
102UTILS_API bool overlap_label(textlabel_t *lp, boxf b);
103UTILS_API bool overlap_edge(edge_t *e, boxf b);
104
105UTILS_API void get_gradient_points(pointf *A, pointf *G, size_t n, double angle,
106 int flags);
107
108UTILS_API void processClusterEdges(graph_t *g);
109
110UTILS_API char *latin1ToUTF8(char *);
111UTILS_API char *htmlEntityUTF8(char *, graph_t *g);
112UTILS_API char *utf8ToLatin1(char *ins);
113UTILS_API char *scanEntity(char *t, agxbuf *xb);
114
115UTILS_API pointf dotneato_closest(splines *spl, pointf p);
116
117UTILS_API Agsym_t *setAttr(graph_t *, void *, char *name, char *value,
118 Agsym_t *);
119UTILS_API void setEdgeType(graph_t *g, int defaultValue);
120UTILS_API bool is_a_cluster(Agraph_t *g);
121
122/* from postproc.c */
123UTILS_API void gv_nodesize(Agnode_t *n, bool flip);
124
125#ifndef HAVE_DRAND48
126UTILS_API double drand48(void);
127#endif
128
129/* from timing.c */
130UTILS_API void start_timer(void);
131UTILS_API double elapsed_sec(void);
132
133/* from psusershape.c */
134UTILS_API void cat_libfile(GVJ_t *job, const char **arglib,
135 const char **stdlib);
136
137#undef UTILS_API
138
139#ifdef __cplusplus
140}
141#endif
static void ins(Dict_t *d, Dtlink_t **set, Agedge_t *e)
Definition edge.c:149
#define A(n, t)
Definition expr.h:76
static int flags
Definition gc.c:61
#define G
Definition gdefs.h:7
textitem scanner parser str
Definition htmlparse.y:218
graph or subgraph
Definition cgraph.h:424
string attribute descriptor symbol in Agattr_s.dict
Definition cgraph.h:651
Definition geom.h:41
Definition cdt.h:98
Definition grammar.c:90
void processClusterEdges(graph_t *g)
Definition utils.c:928
void undoClusterEdges(graph_t *g)
Definition utils.c:1027
char * scanEntity(char *t, agxbuf *xb)
Definition utils.c:1079
char * late_string(void *obj, Agsym_t *attr, char *defaultValue)
Definition utils.c:81
char * strdup_and_subst_obj(char *str, void *obj)
Processes graph object escape sequences; also collapses \ to .
Definition labels.c:385
bool mapbool(const char *p)
Definition utils.c:339
char * htmlEntityUTF8(char *, graph_t *g)
Definition utils.c:1180
void UF_setname(Agnode_t *, Agnode_t *)
Definition utils.c:146
Agnode_t * UF_union(Agnode_t *, Agnode_t *)
Definition utils.c:111
Dt_t * mkClustMap(Agraph_t *g)
Definition utils.c:1589
void setEdgeType(graph_t *g, int defaultValue)
Definition utils.c:1420
boxf polyBB(polygon_t *poly)
Definition utils.c:602
void common_init_node(node_t *n)
Definition utils.c:425
bool overlap_label(textlabel_t *lp, boxf b)
Definition utils.c:1320
double elapsed_sec(void)
Definition timing.c:48
Agsym_t * setAttr(graph_t *, void *, char *name, char *value, Agsym_t *)
Definition utils.c:702
bool findStopColor(const char *colorlist, char *clrs[2], double *frac)
Definition emit.c:4010
bool late_bool(void *obj, Agsym_t *attr, bool defaultValue)
Definition utils.c:94
bool overlap_node(node_t *n, boxf b)
Definition utils.c:1308
Agnode_t * UF_find(Agnode_t *)
Definition utils.c:101
void UF_singleton(Agnode_t *)
Definition utils.c:139
void common_init_edge(edge_t *e)
Definition utils.c:507
const char * safefile(const char *filename)
Definition utils.c:262
pointf Bezier(pointf *, double, pointf *, pointf *)
Definition utils.c:171
void write_plain(GVJ_t *job, graph_t *g, void *f, bool extend)
Definition output.c:127
void epsf_define(GVJ_t *job)
double attach_attrs_and_arrows(graph_t *, bool *, bool *)
Definition output.c:252
char * late_nnstring(void *obj, Agsym_t *attr, char *defaultValue)
Definition utils.c:87
char * ps_string(char *s, int chset)
attrsym_t * safe_dcl(graph_t *g, int obj_kind, char *name, char *defaultValue)
Definition utils.c:1062
double yDir(double y, double yOff)
Definition output.c:33
void compute_bb(Agraph_t *)
Definition utils.c:631
double get_inputscale(graph_t *g)
Definition utils.c:74
void start_timer(void)
Definition timing.c:43
void updateBB(graph_t *g, textlabel_t *lp)
Definition utils.c:622
int late_int(void *obj, Agsym_t *attr, int defaultValue, int minimum)
Definition utils.c:36
bool overlap_edge(edge_t *e, boxf b)
Definition utils.c:1355
void cat_libfile(GVJ_t *job, const char **arglib, const char **stdlib)
char * latin1ToUTF8(char *)
Converts string from Latin1 encoding to utf8. Also translates HTML entities.
Definition utils.c:1257
void gv_nodesize(Agnode_t *n, bool flip)
Definition utils.c:1533
bool mapBool(const char *p, bool defaultValue)
Definition utils.c:323
double late_double(void *obj, Agsym_t *attr, double defaultValue, double minimum)
Definition utils.c:51
void epsf_emit_body(GVJ_t *job, usershape_t *us)
int maptoken(char *, char **, int *)
Definition utils.c:313
pointf dotneato_closest(splines *spl, pointf p)
Definition utils.c:344
void get_gradient_points(pointf *A, pointf *G, size_t n, double angle, int flags)
Definition utils.c:1443
char * utf8ToLatin1(char *ins)
Definition utils.c:1290
int test_toggle(void)
Definition utils.c:414
bool is_a_cluster(Agraph_t *g)
Definition utils.c:693
Agraph_t * findCluster(Dt_t *map, char *name)
Definition utils.c:1599
double drand48(void)
Definition utils.c:1547