Graphviz 14.0.3~dev.20251104.0241
Loading...
Searching...
No Matches
emit.c File Reference

graphics code generator More...

#include "config.h"
#include <assert.h>
#include <float.h>
#include <stdatomic.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <locale.h>
#include <math.h>
#include <common/geomprocs.h>
#include <common/render.h>
#include <common/htmltable.h>
#include <gvc/gvc.h>
#include <cdt/cdt.h>
#include <pathplan/pathgeom.h>
#include <util/agxbuf.h>
#include <util/alloc.h>
#include <util/debug.h>
#include <util/gv_ctype.h>
#include <util/gv_math.h>
#include <util/list.h>
#include <util/streq.h>
#include <util/strview.h>
#include <util/tokenize.h>
#include <util/unreachable.h>
#include <util/unused.h>
#include <xdot/xdot.h>
Include dependency graph for emit.c:

Go to the source code of this file.

Data Structures

struct  exdot_op
 
struct  colorseg_t
 
struct  token_t
 

Macros

#define P2RECT(p, pr, sx, sy)   (pr[0].x = p.x - sx, pr[0].y = p.y - sy, pr[1].x = p.x + sx, pr[1].y = p.y + sy)
 
#define FUZZ   3
 
#define EPSILON   .0001
 
#define EPS   1E-5
 
#define AEQ0(x)   (((x) < EPS) && ((x) > -EPS))
 
#define THIN_LINE   0.5
 
#define HW   2.0 /* maximum distance away from line, in points */
 
#define SEP   2.0
 
#define NotFirstPage(j)   (((j)->layerNum>1)||((j)->pagesArrayElem.x > 0)||((j)->pagesArrayElem.x > 0))
 
#define SID   1
 
#define FUNLIMIT   64
 
#define FINISH()    GV_DEBUG("gvRenderJobs %s: %.2f secs.", agnameof(g), elapsed_sec())
 

Typedefs

typedef double(* radfunc_t) (double, double, double)
 

Enumerations

enum  { debug = 0 }
 

Functions

void * init_xdot (Agraph_t *g)
 
obj_state_tpush_obj_state (GVJ_t *job)
 
void pop_obj_state (GVJ_t *job)
 
bool initMapData (GVJ_t *job, char *lbl, char *url, char *tooltip, char *target, char *id, void *gobj)
 
static void layerPagePrefix (GVJ_t *job, agxbuf *xb)
 
char * getObjId (GVJ_t *job, void *obj, agxbuf *xb)
 Use id of root graph if any, plus kind and internal id of object.
 
static char * interpretCRNL (char *ins)
 
static char * preprocessTooltip (char *s, void *gobj)
 
static void initObjMapData (GVJ_t *job, textlabel_t *lab, void *gobj)
 
static void map_point (GVJ_t *job, pointf pf)
 
static char ** checkClusterStyle (graph_t *sg, graphviz_polygon_style_t *flagp)
 
static void freeSeg (colorseg_t seg)
 
typedef LIST (colorseg_t)
 
static int parseSegs (const char *clrs, colorsegs_t *psegs)
 
int wedgedEllipse (GVJ_t *job, pointf *pf, const char *clrs)
 
int stripedBox (GVJ_t *job, pointf *AF, const char *clrs, int rotate)
 
void emit_map_rect (GVJ_t *job, boxf b)
 
static void map_label (GVJ_t *job, textlabel_t *lab)
 
static bool isRect (polygon_t *p)
 
static bool isFilled (node_t *n)
 
static pointfpEllipse (double a, double b, size_t np)
 
static bool check_control_points (pointf *cp)
 
void update_bb_bz (boxf *bb, pointf *cp)
 
typedef LIST (pointf)
 
typedef LIST (size_t)
 
static void approx_bezier (pointf *cp, points_t *lp)
 
static double bisect (pointf pp, pointf cp, pointf np)
 
static void mkSegPts (const pointf *prv, pointf cur, const pointf *nxt, pointf *p1, pointf *p2, double w2)
 
static void map_output_bspline (points_t *pbs, pbs_size_t *pbs_n, bezier *bp, double w2)
 
static bool is_natural_number (const char *sstr)
 
static int layer_index (GVC_t *gvc, char *str, int all)
 
static bool selectedLayer (GVC_t *gvc, int layerNum, int numLayers, char *spec)
 
static bool selectedlayer (GVJ_t *job, char *spec)
 
static int * parse_layerselect (GVC_t *gvc, char *p)
 
static int parse_layers (GVC_t *gvc, graph_t *g, char *p)
 
static int chkOrder (graph_t *g)
 
static void init_layering (GVC_t *gvc, graph_t *g)
 
static int numPhysicalLayers (GVJ_t *job)
 Return number of physical layers to be emitted.
 
static void firstlayer (GVJ_t *job, int **listp)
 
static bool validlayer (GVJ_t *job)
 
static void nextlayer (GVJ_t *job, int **listp)
 
static point pagecode (GVJ_t *job, char c)
 
static void init_job_pagination (GVJ_t *job, graph_t *g)
 
static void firstpage (GVJ_t *job)
 
static bool validpage (GVJ_t *job)
 
static void nextpage (GVJ_t *job)
 
static bool write_edge_test (Agraph_t *g, Agedge_t *e)
 
static bool write_node_test (Agraph_t *g, Agnode_t *n)
 
static pointfcopyPts (xdot_point *inpts, size_t numpts)
 
static void emit_xdot (GVJ_t *job, xdot *xd)
 
static void emit_background (GVJ_t *job, graph_t *g)
 
static void setup_page (GVJ_t *job)
 
static bool node_in_layer (GVJ_t *job, graph_t *g, node_t *n)
 
static bool edge_in_layer (GVJ_t *job, edge_t *e)
 
static bool clust_in_layer (GVJ_t *job, graph_t *sg)
 
static bool node_in_box (node_t *n, boxf b)
 
static void emit_begin_node (GVJ_t *job, node_t *n)
 
static void emit_end_node (GVJ_t *job)
 
static void emit_node (GVJ_t *job, node_t *n)
 
static pointf computeoffset_p (pointf p, pointf q, double d)
 
static pointf computeoffset_qr (pointf p, pointf q, pointf r, pointf s, double d)
 
static void emit_attachment (GVJ_t *job, textlabel_t *lp, splines *spl)
 
static char * default_pencolor (agxbuf *buf, const char *pencolor, const char *deflt)
 
static double approxLen (pointf *pts)
 
static void splitBSpline (bezier *bz, double t, bezier *left, bezier *right)
 
static int multicolor (GVJ_t *job, edge_t *e, char **styles, const char *colors, double arrowsize, double penwidth)
 
static void free_stroke (stroke_t sp)
 
static double forfunc (double curlen, double totallen, double initwid)
 
static double revfunc (double curlen, double totallen, double initwid)
 
static double nonefunc (double curlen, double totallen, double initwid)
 
static double bothfunc (double curlen, double totallen, double initwid)
 
static radfunc_t taperfun (edge_t *e)
 
static void emit_edge_graphics (GVJ_t *job, edge_t *e, char **styles)
 
static bool edge_in_box (edge_t *e, boxf b)
 
static void emit_begin_edge (GVJ_t *job, edge_t *e, char **styles)
 
static void emit_edge_label (GVJ_t *job, textlabel_t *lbl, emit_state_t lkind, int explicit, char *url, char *tooltip, char *target, char *id, splines *spl)
 
static void nodeIntersect (GVJ_t *job, pointf p, bool explicit_iurl, char *iurl, bool explicit_itooltip)
 
static void emit_end_edge (GVJ_t *job)
 
static void emit_edge (GVJ_t *job, edge_t *e)
 
static void expandBB (boxf *bb, pointf p)
 
static boxf ptsBB (xdot_point *inpts, size_t numpts, boxf *bb)
 
static boxf textBB (double x, double y, textspan_t *span)
 
static void freePara (xdot_op *xop)
 
boxf xdotBB (Agraph_t *g)
 
static void init_gvc (GVC_t *gvc, graph_t *g)
 
static void init_job_pad (GVJ_t *job)
 
static void init_job_margin (GVJ_t *job)
 
static void init_job_dpi (GVJ_t *job, graph_t *g)
 
static void init_job_viewport (GVJ_t *job, graph_t *g)
 
static void emit_cluster_colors (GVJ_t *job, graph_t *g)
 
static void emit_colors (GVJ_t *job, graph_t *g)
 
static void emit_view (GVJ_t *job, graph_t *g, int flags)
 
static void emit_begin_graph (GVJ_t *job, graph_t *g)
 
static void emit_end_graph (GVJ_t *job)
 
static void emit_page (GVJ_t *job, graph_t *g)
 
void emit_graph (GVJ_t *job, graph_t *g)
 
bool emit_once (char *str)
 
void emit_once_reset (void)
 
static void emit_begin_cluster (GVJ_t *job, Agraph_t *sg)
 
static void emit_end_cluster (GVJ_t *job)
 
void emit_clusters (GVJ_t *job, Agraph_t *g, int flags)
 
static bool is_style_delim (int c)
 
static token_t style_token (char **s)
 
char ** parse_style (char *s)
 
static boxf bezier_bb (bezier bz)
 
static void init_splines_bb (splines *spl)
 
static void init_bb_edge (edge_t *e)
 
static void init_bb_node (graph_t *g, node_t *n)
 
static void init_bb (graph_t *g)
 
void gv_fixLocale (int set)
 
int gvRenderJobs (GVC_t *gvc, graph_t *g)
 
bool findStopColor (const char *colorlist, char *clrs[2], double *frac)
 

Variables

static char * defaultlinestyle [3] = { "solid\0", "setlinewidth\0001\0", 0 }
 
static char * saved_color_scheme
 
static const char adjust [] = {'l', 'n', 'r'}
 
static Dict_tstrings
 
static Dtdisc_t stringdict
 
gvevent_key_binding_t gvevent_key_binding []
 
const size_t gvevent_key_binding_size
 
gvdevice_callbacks_t gvdevice_callbacks
 

Macro Definition Documentation

◆ AEQ0

#define AEQ0 (   x)    (((x) < EPS) && ((x) > -EPS))

Definition at line 450 of file emit.c.

◆ EPS

#define EPS   1E-5

Definition at line 449 of file emit.c.

◆ EPSILON

#define EPSILON   .0001

Definition at line 53 of file emit.c.

◆ FINISH

#define FINISH ( )     GV_DEBUG("gvRenderJobs %s: %.2f secs.", agnameof(g), elapsed_sec())

Definition at line 3828 of file emit.c.

◆ FUNLIMIT

#define FUNLIMIT   64

Definition at line 3630 of file emit.c.

◆ FUZZ

#define FUZZ   3

Definition at line 52 of file emit.c.

◆ HW

#define HW   2.0 /* maximum distance away from line, in points */

Definition at line 737 of file emit.c.

◆ NotFirstPage

#define NotFirstPage (   j)    (((j)->layerNum>1)||((j)->pagesArrayElem.x > 0)||((j)->pagesArrayElem.x > 0))

Definition at line 3229 of file emit.c.

◆ P2RECT

#define P2RECT (   p,
  pr,
  sx,
  sy 
)    (pr[0].x = p.x - sx, pr[0].y = p.y - sy, pr[1].x = p.x + sx, pr[1].y = p.y + sy)

Definition at line 51 of file emit.c.

◆ SEP

#define SEP   2.0

◆ SID

#define SID   1

Definition at line 3591 of file emit.c.

◆ THIN_LINE

#define THIN_LINE   0.5

Definition at line 536 of file emit.c.

Typedef Documentation

◆ radfunc_t

typedef double(* radfunc_t) (double, double, double)

Definition at line 2067 of file emit.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
debug 

Definition at line 58 of file emit.c.

Function Documentation

◆ approx_bezier()

static void approx_bezier ( pointf cp,
points_t *  lp 
)
static

Definition at line 830 of file emit.c.

References approx_bezier(), Bezier(), check_control_points(), left, LIST_APPEND, LIST_IS_EMPTY, and right.

Referenced by approx_bezier(), and map_output_bspline().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ approxLen()

static double approxLen ( pointf pts)
static

Definition at line 1915 of file emit.c.

References DIST.

Referenced by splitBSpline().

Here is the caller graph for this function:

◆ bezier_bb()

static boxf bezier_bb ( bezier  bz)
static

Definition at line 3705 of file emit.c.

References expandbp(), bezier::list, boxf::LL, bezier::size, boxf::UR, pointf_s::x, and pointf_s::y.

Referenced by init_splines_bb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ bisect()

static double bisect ( pointf  pp,
pointf  cp,
pointf  np 
)
static

Definition at line 848 of file emit.c.

References M_PI, pointf_s::x, and pointf_s::y.

Referenced by mkSegPts().

Here is the caller graph for this function:

◆ bothfunc()

static double bothfunc ( double  curlen,
double  totallen,
double  initwid 
)
static

Definition at line 2087 of file emit.c.

Referenced by taperfun().

Here is the caller graph for this function:

◆ check_control_points()

static bool check_control_points ( pointf cp)
static

Definition at line 744 of file emit.c.

References HW, and ptToLine2().

Referenced by approx_bezier(), and update_bb_bz().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ checkClusterStyle()

static char ** checkClusterStyle ( graph_t sg,
graphviz_polygon_style_t flagp 
)
static

Definition at line 365 of file emit.c.

References agget(), graphviz_polygon_style_t::filled, NULL, parse_style(), graphviz_polygon_style_t::radial, graphviz_polygon_style_t::rounded, and graphviz_polygon_style_t::striped.

Referenced by emit_background(), and emit_clusters().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ chkOrder()

static int chkOrder ( graph_t g)
static

Definition at line 1080 of file emit.c.

References agget(), EMIT_EDGE_SORTED, and EMIT_SORTED.

Referenced by gvRenderJobs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clust_in_layer()

static bool clust_in_layer ( GVJ_t job,
graph_t sg 
)
static

Definition at line 1625 of file emit.c.

References agattr_text(), agfstnode(), agnxtnode(), AGRAPH, late_string(), node_in_layer(), GVJ_s::numLayers, and selectedlayer().

Referenced by emit_clusters().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeoffset_p()

static pointf computeoffset_p ( pointf  p,
pointf  q,
double  d 
)
static

Definition at line 1843 of file emit.c.

References EPSILON, pointf_s::x, and pointf_s::y.

Referenced by emit_edge_graphics().

Here is the caller graph for this function:

◆ computeoffset_qr()

static pointf computeoffset_qr ( pointf  p,
pointf  q,
pointf  r,
pointf  s,
double  d 
)
static

Definition at line 1856 of file emit.c.

References EPSILON, len(), pointf_s::x, and pointf_s::y.

Referenced by emit_edge_graphics().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copyPts()

static pointf * copyPts ( xdot_point inpts,
size_t  numpts 
)
static

Definition at line 1351 of file emit.c.

References gv_calloc(), pointf_s::x, xdot_point::x, pointf_s::y, and xdot_point::y.

Referenced by emit_xdot().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ default_pencolor()

static char * default_pencolor ( agxbuf buf,
const char *  pencolor,
const char *  deflt 
)
static

Definition at line 1905 of file emit.c.

References agxbprint(), agxbput(), and agxbuse().

Referenced by emit_edge_graphics().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ edge_in_box()

static bool edge_in_box ( edge_t e,
boxf  b 
)
static

Definition at line 2332 of file emit.c.

References splines::bb, boxf_overlap(), ED_label, ED_spl, ED_xlabel, overlap_label(), and textlabel_t::set.

Referenced by emit_edge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ edge_in_layer()

static bool edge_in_layer ( GVJ_t job,
edge_t e 
)
static

Definition at line 1605 of file emit.c.

References aghead, agtail, cnt(), E_layer, late_string(), N_layer, GVJ_s::numLayers, and selectedlayer().

Referenced by emit_edge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_attachment()

static void emit_attachment ( GVJ_t job,
textlabel_t lp,
splines spl 
)
static

Definition at line 1877 of file emit.c.

References GVC_s::defaultlinestyle, textlabel_t::dimen, dotneato_closest(), textlabel_t::fontcolor, gv_isspace(), GVJ_s::gvc, gvrender_polyline(), gvrender_set_pencolor(), gvrender_set_style(), textlabel_t::pos, textlabel_t::text, pointf_s::x, and pointf_s::y.

Referenced by emit_edge_label().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_background()

static void emit_background ( GVJ_t job,
graph_t g 
)
static

Definition at line 1474 of file emit.c.

References agget(), checkClusterStyle(), GVJ_s::clip, DEFAULT_COLOR, emit_xdot(), FILL, findStopColor(), GVJ_s::flags, free(), G_gradientangle, GD_drawing, GRADIENT, GVDEVICE_DOES_TRUECOLOR, gvrender_box(), GVRENDER_NO_WHITE_BG, gvrender_set_fillcolor(), gvrender_set_gradient_vals(), gvrender_set_pencolor(), late_int(), graphviz_polygon_style_t::radial, RGRADIENT, str, streq(), and xd.

Referenced by emit_page().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_begin_cluster()

static void emit_begin_cluster ( GVJ_t job,
Agraph_t sg 
)
static

Definition at line 3387 of file emit.c.

References CLUSTER_OBJTYPE, EMIT_CDRAW, obj_state_s::emit_state, GD_label, gvrender_begin_cluster(), initObjMapData(), push_obj_state(), obj_state_s::sg, obj_state_s::type, and obj_state_s::u.

Referenced by emit_clusters().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_begin_edge()

static void emit_begin_edge ( GVJ_t job,
edge_t e,
char **  styles 
)
static

Definition at line 2352 of file emit.c.

References agget(), aghead, agraphof(), agtail, agxbfree(), agxget(), obj_state_s::e, E_penwidth, ED_head_label, ED_label, ED_spl, ED_tail_label, ED_xlabel, EDGE_OBJTYPE, EMIT_EDRAW, obj_state_s::emit_state, obj_state_s::explicit_edgetarget, obj_state_s::explicit_headtarget, obj_state_s::explicit_headtooltip, obj_state_s::explicit_headurl, obj_state_s::explicit_labeltooltip, obj_state_s::explicit_tailtarget, obj_state_s::explicit_tailtooltip, obj_state_s::explicit_tailurl, obj_state_s::explicit_tooltip, flags, GVJ_s::flags, free(), GD_odim, getObjId(), gv_strdup(), gvrender_begin_anchor(), gvrender_begin_edge(), GVRENDER_DOES_LABELS, GVRENDER_DOES_MAP_POLYGON, GVRENDER_DOES_MAPS, GVRENDER_DOES_TARGETS, GVRENDER_DOES_TOOLTIPS, GVRENDER_DOES_TRANSFORM, GVRENDER_DOES_Z, gvrender_ptf_A(), gvrender_set_penwidth(), gvrender_set_style(), obj_state_s::head_z, obj_state_s::headlabel, obj_state_s::headtarget, obj_state_s::headtooltip, obj_state_s::headurl, obj_state_s::id, obj_state_s::label, obj_state_s::labeledgealigned, obj_state_s::labeltarget, obj_state_s::labeltooltip, obj_state_s::labelurl, late_double(), splines::list, LIST_DETACH, LIST_FRONT, LIST_GET, LIST_SIZE, map_output_bspline(), MAP_POLYGON, mapbool(), ND_pos, NULL, GVJ_s::obj, obj_state_s::penwidth, penwidth, POINTS, preprocessTooltip(), push_obj_state(), splines::size, strdup_and_subst_obj(), obj_state_s::tail_z, obj_state_s::taillabel, obj_state_s::tailtarget, obj_state_s::tailtooltip, obj_state_s::tailurl, obj_state_s::target, textlabel_t::text, obj_state_s::tooltip, obj_state_s::type, obj_state_s::u, obj_state_s::url, obj_state_s::url_bsplinemap_n, obj_state_s::url_bsplinemap_p, obj_state_s::url_bsplinemap_poly_n, obj_state_s::url_map_n, obj_state_s::url_map_p, obj_state_s::url_map_shape, and obj_state_s::xlabel.

Referenced by emit_edge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_begin_graph()

static void emit_begin_graph ( GVJ_t job,
graph_t g 
)
static

Definition at line 3209 of file emit.c.

References EMIT_GDRAW, obj_state_s::emit_state, obj_state_s::g, GD_label, gvrender_begin_graph(), initObjMapData(), push_obj_state(), ROOTGRAPH_OBJTYPE, obj_state_s::type, and obj_state_s::u.

Referenced by emit_graph().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_begin_node()

static void emit_begin_node ( GVJ_t job,
node_t n 
)
static

◆ emit_cluster_colors()

static void emit_cluster_colors ( GVJ_t job,
graph_t g 
)
static

Definition at line 3069 of file emit.c.

References agget(), emit_cluster_colors(), GD_clust, GD_n_cluster, gvrender_set_fillcolor(), gvrender_set_pencolor(), and str.

Referenced by emit_cluster_colors(), and emit_colors().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_clusters()

void emit_clusters ( GVJ_t job,
Agraph_t g,
int  flags 
)

Definition at line 3406 of file emit.c.

References agerr(), agfstnode(), agfstout(), agget(), agnameof(), agnxtnode(), agnxtout(), AGPREV, agxget(), checkClusterStyle(), clust_in_layer(), color(), DEFAULT_ACTIVEFILLCOLOR, DEFAULT_ACTIVEPENCOLOR, DEFAULT_COLOR, DEFAULT_DELETEDFILLCOLOR, DEFAULT_DELETEDPENCOLOR, DEFAULT_FILL, DEFAULT_SELECTEDFILLCOLOR, DEFAULT_SELECTEDPENCOLOR, DEFAULT_VISITEDFILLCOLOR, DEFAULT_VISITEDPENCOLOR, emit_begin_cluster(), EMIT_CLABEL, emit_clusters(), EMIT_CLUSTERS_LAST, emit_edge(), emit_end_cluster(), emit_label(), emit_map_rect(), emit_node(), EMIT_PREORDER, obj_state_s::explicit_tooltip, FILL, graphviz_polygon_style_t::filled, findStopColor(), flags, free(), G_gradientangle, G_penwidth, G_peripheries, GD_bb, GD_clust, GD_gui_state, GD_label, GD_n_cluster, GRADIENT, GUI_STATE_ACTIVE, GUI_STATE_DELETED, GUI_STATE_SELECTED, GUI_STATE_VISITED, gvrender_begin_anchor(), gvrender_box(), gvrender_end_anchor(), gvrender_set_fillcolor(), gvrender_set_gradient_vals(), gvrender_set_pencolor(), gvrender_set_penwidth(), gvrender_set_style(), obj_state_s::id, late_double(), late_int(), GVJ_s::obj, penwidth, graphviz_polygon_style_t::radial, RGRADIENT, round_corners(), graphviz_polygon_style_t::rounded, setColorScheme(), graphviz_polygon_style_t::striped, stripedBox(), obj_state_s::target, obj_state_s::tooltip, obj_state_s::url, pointf_s::x, and pointf_s::y.

Referenced by emit_clusters(), and emit_view().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_colors()

static void emit_colors ( GVJ_t job,
graph_t g 
)
static

Definition at line 3091 of file emit.c.

References agfstnode(), agfstout(), agget(), agnxtnode(), agnxtout(), DEFAULT_FILL, emit_cluster_colors(), free(), gv_strdup(), gvrender_set_fillcolor(), gvrender_set_pencolor(), and str.

Referenced by emit_graph().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_edge()

static void emit_edge ( GVJ_t job,
edge_t e 
)
static

Definition at line 2677 of file emit.c.

References aghead, agisdirected(), agnameof(), agraphof(), agtail, agxbfree(), agxbput(), agxbuse(), GVJ_s::clip, E_comment, E_style, edge, edge_in_box(), edge_in_layer(), emit_begin_edge(), emit_edge_graphics(), emit_end_edge(), gvrender_comment(), late_string(), NULL, parse_style(), and streq().

Referenced by emit_clusters(), and emit_view().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_edge_graphics()

◆ emit_edge_label()

static void emit_edge_label ( GVJ_t job,
textlabel_t lbl,
emit_state_t  lkind,
int  explicit,
char *  url,
char *  tooltip,
char *  target,
char *  id,
splines spl 
)
static

Definition at line 2528 of file emit.c.

References agxbfree(), agxbprint(), agxbuse(), emit_attachment(), EMIT_CLUSTERS_LAST, EMIT_ELABEL, EMIT_HLABEL, emit_label(), obj_state_s::emit_state, EMIT_TLABEL, flags, GVJ_s::flags, gvrender_begin_anchor(), gvrender_end_anchor(), map_label(), NULL, GVJ_s::obj, textlabel_t::set, type, and UNREACHABLE.

Referenced by emit_end_edge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_end_cluster()

static void emit_end_cluster ( GVJ_t job)
static

Definition at line 3401 of file emit.c.

References gvrender_end_cluster(), and pop_obj_state().

Referenced by emit_clusters().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_end_edge()

◆ emit_end_graph()

static void emit_end_graph ( GVJ_t job)
static

Definition at line 3223 of file emit.c.

References gvrender_end_graph(), and pop_obj_state().

Referenced by emit_graph().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_end_node()

static void emit_end_node ( GVJ_t job)
static

Definition at line 1792 of file emit.c.

References free(), gvrender_end_node(), NULL, pop_obj_state(), saved_color_scheme, and setColorScheme().

Referenced by emit_node().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_graph()

void emit_graph ( GVJ_t job,
graph_t g 
)

Definition at line 3310 of file emit.c.

References agattr_text(), agfstnode(), agnxtnode(), AGRAPH, GVJ_s::devscale, GVJ_s::dpi, emit_begin_graph(), emit_colors(), EMIT_COLORS, emit_end_graph(), emit_page(), firstlayer(), firstpage(), flags, GVJ_s::flags, gvrender_begin_layer(), gvrender_comment(), gvrender_end_layer(), GVRENDER_Y_GOES_DOWN, GVJ_s::height, late_string(), GVJ_s::layerNum, ND_state, nextlayer(), nextpage(), numPhysicalLayers(), POINTS_PER_INCH, GVJ_s::rotation, GVJ_s::scale, validlayer(), validpage(), GVJ_s::view, GVJ_s::width, pointf_s::x, pointf_s::y, Y_invert, and GVJ_s::zoom.

Referenced by gvevent_refresh(), and gvRenderJobs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_map_rect()

void emit_map_rect ( GVJ_t job,
boxf  b 
)

Definition at line 638 of file emit.c.

References flags, GVJ_s::flags, free(), gv_calloc(), GVRENDER_DOES_MAP_RECTANGLE, GVRENDER_DOES_MAPS, GVRENDER_DOES_TOOLTIPS, GVRENDER_DOES_TRANSFORM, gvrender_ptf_A(), boxf::LL, MAP_POLYGON, MAP_RECTANGLE, GVJ_s::obj, rect2poly(), boxf::UR, obj_state_s::url_map_n, obj_state_s::url_map_p, and obj_state_s::url_map_shape.

Referenced by emit_clusters(), emit_page(), and initAnchor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_node()

static void emit_node ( GVJ_t job,
node_t n 
)
static

Definition at line 1804 of file emit.c.

References agnameof(), agraphof(), GVJ_s::clip, GVC_s::common, emit_begin_node(), emit_end_node(), emit_label(), EMIT_NLABEL, GVJ_s::gvc, gvc, gvrender_comment(), late_string(), N_comment, N_style, ND_shape, ND_state, ND_xlabel, node_in_box(), node_in_layer(), NULL, parse_style(), streq(), and GVCOMMON_s::viewNum.

Referenced by emit_clusters(), and emit_view().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_once()

bool emit_once ( char *  str)

Definition at line 3369 of file emit.c.

References dtinsert, dtopen(), Dtoset, dtsearch, gv_strdup(), str, stringdict, and strings.

Referenced by get_metrics_for_font_family(), gvrender_resolve_color(), and textspan_size().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_once_reset()

void emit_once_reset ( void  )

Definition at line 3379 of file emit.c.

References dtclose(), and strings.

Referenced by gvFreeContext().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_page()

◆ emit_view()

static void emit_view ( GVJ_t job,
graph_t g,
int  flags 
)
static

Definition at line 3146 of file emit.c.

References agfstnode(), agfstout(), aghead, agnxtnode(), agnxtout(), GVC_s::common, emit_clusters(), EMIT_CLUSTERS_LAST, emit_edge(), EMIT_EDGE_SORTED, emit_node(), EMIT_PREORDER, EMIT_SORTED, flags, GVJ_s::gvc, gvc, gvrender_begin_edges(), gvrender_begin_nodes(), gvrender_end_edges(), gvrender_end_nodes(), GVCOMMON_s::viewNum, write_edge_test(), and write_node_test().

Referenced by emit_page().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emit_xdot()

static void emit_xdot ( GVJ_t job,
xdot xd 
)
static

Definition at line 1360 of file emit.c.

References agwarningf(), exdot_op::bb, _xdot_op::bezier, boxf_overlap(), GVJ_s::clip, xdot_polyline::cnt, xdot_color_stop::color, _xdot_op::color, copyPts(), GVC_s::defaultlinestyle, _xdot_op::ellipse, FILL, xdot_color_stop::frac, free(), _xdot_op::grad_color, GRADIENT, GVJ_s::gvc, gvrender_beziercurve(), gvrender_ellipse(), gvrender_polygon(), gvrender_polyline(), gvrender_set_fillcolor(), gvrender_set_gradient_vals(), gvrender_set_pencolor(), gvrender_set_style(), gvrender_textspan(), xdot_rect::h, _xdot_op::kind, xdot_color::ling, M_PI, NULL, exdot_op::op, parse_style(), _xdot_op::polygon, _xdot_op::polyline, xdot_polyline::pts, xdot_radial_grad::r0, RGRADIENT, xdot_color::ring, exdot_op::span, xdot_linear_grad::stops, xdot_radial_grad::stops, _xdot_op::style, _xdot_op::text, xdot_color::type, xdot_color::u, _xdot_op::u, UNREACHABLE, xdot_rect::w, pointf_s::x, xdot_rect::x, xdot_text::x, xdot_linear_grad::x0, xdot_radial_grad::x0, xdot_linear_grad::x1, xdot_radial_grad::x1, xd, xd_fill_color, xd_filled_bezier, xd_filled_ellipse, xd_filled_polygon, xd_font, xd_fontchar, xd_grad_fill_color, xd_grad_pen_color, xd_image, xd_pen_color, xd_polyline, xd_radial, xd_style, xd_text, xd_unfilled_bezier, xd_unfilled_ellipse, xd_unfilled_polygon, xdot_rect::y, xdot_text::y, xdot_linear_grad::y0, xdot_radial_grad::y0, xdot_linear_grad::y1, and xdot_radial_grad::y1.

Referenced by emit_background().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ expandBB()

static void expandBB ( boxf bb,
pointf  p 
)
static

Definition at line 2723 of file emit.c.

References boxf::LL, boxf::UR, pointf_s::x, and pointf_s::y.

Referenced by ptsBB(), and xdotBB().

Here is the caller graph for this function:

◆ findStopColor()

bool findStopColor ( const char *  colorlist,
char *  clrs[2],
double *  frac 
)

Definition at line 3964 of file emit.c.

References agwarningf(), color(), freeSeg(), gv_strdup(), LIST_FREE, LIST_FRONT, LIST_GET, LIST_SIZE, NULL, and parseSegs().

Referenced by emit_background(), emit_clusters(), poly_gencode(), record_gencode(), and setFill().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ firstlayer()

static void firstlayer ( GVJ_t job,
int **  listp 
)
static

Definition at line 1124 of file emit.c.

References agwarningf(), cnt(), GVJ_s::flags, GVJ_s::gvc, GVDEVICE_DOES_LAYERS, GVC_s::layerlist, GVJ_s::layerNum, NULL, GVC_s::numLayers, GVJ_s::numLayers, and GVJ_s::output_langname.

Referenced by emit_graph().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ firstpage()

static void firstpage ( GVJ_t job)
static

Definition at line 1300 of file emit.c.

References GVJ_s::pagesArrayElem, and GVJ_s::pagesArrayFirst.

Referenced by emit_graph().

Here is the caller graph for this function:

◆ forfunc()

static double forfunc ( double  curlen,
double  totallen,
double  initwid 
)
static

Definition at line 2069 of file emit.c.

Referenced by taperfun().

Here is the caller graph for this function:

◆ free_stroke()

static void free_stroke ( stroke_t  sp)
static

Definition at line 2063 of file emit.c.

References free(), and stroke_t::vertices.

Referenced by emit_edge_graphics().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ freePara()

static void freePara ( xdot_op xop)
static

Definition at line 2778 of file emit.c.

References free_textspan(), _xdot_op::kind, exdot_op::op, exdot_op::span, and xd_text.

Referenced by xdotBB().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ freeSeg()

static void freeSeg ( colorseg_t  seg)
static

Definition at line 415 of file emit.c.

References colorseg_t::color, and free().

Referenced by findStopColor(), and parseSegs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getObjId()

char * getObjId ( GVJ_t job,
void *  obj,
agxbuf xb 
)

Definition at line 207 of file emit.c.

References AGEDGE, agget(), AGNODE, agobjkind(), AGRAPH, AGSEQ, agxbprint(), agxbput(), agxbuse(), GVC_s::g, GD_drawing, GVJ_s::gvc, id, layerPagePrefix(), and NULL.

Referenced by emit_begin_edge(), initAnchor(), and initObjMapData().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gv_fixLocale()

void gv_fixLocale ( int  set)

Definition at line 3806 of file emit.c.

References cnt(), free(), gv_strdup(), and NULL.

Referenced by attach_attrs_and_arrows(), gvLayoutJobs(), and gvRenderJobs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_bb()

static void init_bb ( graph_t g)
static

Definition at line 3786 of file emit.c.

References agfstnode(), agnxtnode(), and init_bb_node().

Referenced by gvRenderJobs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_bb_edge()

static void init_bb_edge ( edge_t e)
static

Definition at line 3756 of file emit.c.

References ED_spl, and init_splines_bb().

Referenced by init_bb_node().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_bb_node()

static void init_bb_node ( graph_t g,
node_t n 
)
static

Definition at line 3765 of file emit.c.

References agfstout(), agnxtout(), init_bb_edge(), ND_bb, ND_coord, ND_ht, ND_lw, and ND_rw.

Referenced by init_bb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_gvc()

static void init_gvc ( GVC_t gvc,
graph_t g 
)
static

Definition at line 2861 of file emit.c.

References agfindgraphattr, agget(), agnameof(), GVC_s::bb, DEFAULT_FONTNAME, DEFAULT_FONTSIZE, GVC_s::defaultfontname, GVC_s::defaultfontsize, defaultlinestyle, GVC_s::defaultlinestyle, GVC_s::g, G_penwidth, G_peripheries, GD_bb, GD_drawing, GVC_s::graph_sets_margin, GVC_s::graph_sets_pad, GVC_s::graph_sets_pageSize, GVC_s::graphname, gvc, late_double(), late_nnstring(), GVC_s::margin, MIN_FONTSIZE, N_fontname, N_fontsize, NULL, GVC_s::pad, GVC_s::pagedir, GVC_s::pageSize, POINTS_PER_INCH, GVC_s::rotation, pointf_s::x, and pointf_s::y.

Referenced by gvRenderJobs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_job_dpi()

static void init_job_dpi ( GVJ_t job,
graph_t g 
)
static

Definition at line 2973 of file emit.c.

References GVC_s::active_jobs, gvdevice_features_t::default_dpi, GVJ_s::device, GVJ_s::device_dpi, GVJ_s::device_sets_dpi, GVJ_s::dpi, gvplugin_active_device_s::features, GD_drawing, GVJ_s::gvc, GVRENDER_PLUGIN, GVJ_s::output_lang, pointf_s::x, and pointf_s::y.

Referenced by gvRenderJobs().

Here is the caller graph for this function:

◆ init_job_margin()

static void init_job_margin ( GVJ_t job)
static

Definition at line 2949 of file emit.c.

References DEFAULT_EMBED_MARGIN, gvdevice_features_t::default_margin, DEFAULT_PRINT_MARGIN, GVJ_s::device, gvplugin_active_device_s::features, GVC_s::graph_sets_margin, GVJ_s::gvc, gvc, GVRENDER_PLUGIN, GVC_s::margin, GVJ_s::margin, METAPOST, MIF, GVJ_s::output_lang, PCL, QPDF, VTX, pointf_s::x, and pointf_s::y.

Referenced by gvRenderJobs().

Here is the caller graph for this function:

◆ init_job_pad()

static void init_job_pad ( GVJ_t job)
static

Definition at line 2930 of file emit.c.

References DEFAULT_GRAPH_PAD, gvrender_features_t::default_pad, gvplugin_active_render_s::features, GVC_s::graph_sets_pad, GVJ_s::gvc, gvc, GVRENDER_PLUGIN, GVJ_s::output_lang, GVC_s::pad, GVJ_s::pad, GVJ_s::render, pointf_s::x, and pointf_s::y.

Referenced by gvRenderJobs().

Here is the caller graph for this function:

◆ init_job_pagination()

static void init_job_pagination ( GVJ_t job,
graph_t g 
)
static

◆ init_job_viewport()

static void init_job_viewport ( GVJ_t job,
graph_t g 
)
static

Definition at line 2996 of file emit.c.

References add_pointf(), agfindnode, agget(), GVC_s::bb, GVJ_s::bb, GVJ_s::focus, free(), GD_drawing, gv_alloc(), GVJ_s::gvc, gvc, boxf::LL, ND_coord, NULL, GVJ_s::pad, Agraph_s::root, GVC_s::rotation, GVJ_s::rotation, scale(), str, sub_pointf(), boxf::UR, GVJ_s::view, pointf_s::x, pointf_s::y, and GVJ_s::zoom.

Referenced by gvRenderJobs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_layering()

static void init_layering ( GVC_t gvc,
graph_t g 
)
static

Definition at line 1092 of file emit.c.

References agget(), free(), gvc, GVC_s::layerIDs, GVC_s::layerlist, GVC_s::layers, NULL, GVC_s::numLayers, parse_layers(), parse_layerselect(), and str.

Referenced by gvRenderJobs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_splines_bb()

static void init_splines_bb ( splines spl)
static

Definition at line 3730 of file emit.c.

References arrow_bb(), splines::bb, bezier_bb(), bezier::eflag, bezier::ep, EXPANDBB, bezier::list, splines::list, bezier::sflag, bezier::size, splines::size, and bezier::sp.

Referenced by init_bb_edge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_xdot()

void * init_xdot ( Agraph_t g)

Definition at line 67 of file emit.c.

References agerr(), agget(), agnameof(), AGPREV, agwarningf(), xdot_stats::cnt, debug, elapsed_sec(), xdot_stats::n_bezier, xdot_stats::n_bezier_pts, xdot_stats::n_ellipse, xdot_stats::n_polygon, xdot_stats::n_polygon_pts, xdot_stats::n_polyline, xdot_stats::n_polyline_pts, xdot_stats::n_text, NULL, parseXDotF(), PRISIZE_T, start_timer(), statXDot(), Verbose, and xd.

Referenced by graph_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initMapData()

bool initMapData ( GVJ_t job,
char *  lbl,
char *  url,
char *  tooltip,
char *  target,
char *  id,
void *  gobj 
)

Definition at line 161 of file emit.c.

References obj_state_s::explicit_tooltip, flags, GVJ_s::flags, gv_strdup(), GVRENDER_DOES_LABELS, GVRENDER_DOES_MAPS, GVRENDER_DOES_TARGETS, GVRENDER_DOES_TOOLTIPS, obj_state_s::id, obj_state_s::label, GVJ_s::obj, strdup_and_subst_obj(), obj_state_s::target, obj_state_s::tooltip, and obj_state_s::url.

Referenced by initAnchor(), and initObjMapData().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initObjMapData()

static void initObjMapData ( GVJ_t job,
textlabel_t lab,
void *  gobj 
)
static

Definition at line 318 of file emit.c.

References agget(), agxbfree(), free(), getObjId(), id, initMapData(), NULL, preprocessTooltip(), and textlabel_t::text.

Referenced by emit_begin_cluster(), emit_begin_graph(), and emit_begin_node().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ interpretCRNL()

static char * interpretCRNL ( char *  ins)
static

Definition at line 257 of file emit.c.

References ins().

Referenced by preprocessTooltip().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_natural_number()

static bool is_natural_number ( const char *  sstr)
static

Definition at line 930 of file emit.c.

References gv_isdigit(), and str.

Referenced by layer_index().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_style_delim()

static bool is_style_delim ( int  c)
static

Definition at line 3578 of file emit.c.

Referenced by style_token().

Here is the caller graph for this function:

◆ isFilled()

static bool isFilled ( node_t n)
static

Definition at line 703 of file emit.c.

References late_nnstring(), N_style, and parse_style().

Referenced by emit_begin_node().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isRect()

static bool isRect ( polygon_t p)
static

Definition at line 693 of file emit.c.

References polygon_t::distortion, is_exactly_zero(), polygon_t::orientation, polygon_t::sides, and polygon_t::skew.

Referenced by emit_begin_node().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ layer_index()

static int layer_index ( GVC_t gvc,
char *  str,
int  all 
)
static

Definition at line 940 of file emit.c.

References gvc, is_natural_number(), GVC_s::layerIDs, GVC_s::numLayers, str, and streq().

Referenced by selectedLayer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ layerPagePrefix()

static void layerPagePrefix ( GVJ_t job,
agxbuf xb 
)
static

Definition at line 195 of file emit.c.

References agxbprint(), GVJ_s::gvc, GVC_s::layerIDs, GVJ_s::layerNum, GVJ_s::pagesArrayElem, point::x, and point::y.

Referenced by emit_page(), and getObjId().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LIST() [1/3]

typedef LIST ( colorseg_t  )

Definition at line 420 of file emit.c.

◆ LIST() [2/3]

typedef LIST ( pointf  )

Definition at line 789 of file emit.c.

References LIST_GET, ps, pointf_s::x, and pointf_s::y.

◆ LIST() [3/3]

typedef LIST ( size_t  )

Definition at line 801 of file emit.c.

References LIST_APPEND, LIST_SIZE, and UNUSED.

◆ map_label()

static void map_label ( GVJ_t job,
textlabel_t lab 
)
static

Definition at line 664 of file emit.c.

References textlabel_t::dimen, flags, GVJ_s::flags, free(), gv_calloc(), GVRENDER_DOES_MAP_RECTANGLE, GVRENDER_DOES_MAPS, GVRENDER_DOES_TOOLTIPS, GVRENDER_DOES_TRANSFORM, gvrender_ptf_A(), MAP_POLYGON, MAP_RECTANGLE, GVJ_s::obj, P2RECT, textlabel_t::pos, rect2poly(), obj_state_s::url_map_n, obj_state_s::url_map_p, obj_state_s::url_map_shape, pointf_s::x, and pointf_s::y.

Referenced by emit_edge_label().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ map_output_bspline()

static void map_output_bspline ( points_t *  pbs,
pbs_size_t *  pbs_n,
bezier bp,
double  w2 
)
static

Definition at line 900 of file emit.c.

References approx_bezier(), cnt(), bezier::list, LIST_AT, LIST_FREE, LIST_GET, LIST_SIZE, mkSegPts(), NULL, prev, and bezier::size.

Referenced by emit_begin_edge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ map_point()

static void map_point ( GVJ_t job,
pointf  pf 
)
static

Definition at line 340 of file emit.c.

References flags, GVJ_s::flags, free(), FUZZ, gv_calloc(), GVRENDER_DOES_MAP_RECTANGLE, GVRENDER_DOES_MAPS, GVRENDER_DOES_TOOLTIPS, GVRENDER_DOES_TRANSFORM, gvrender_ptf_A(), MAP_POLYGON, MAP_RECTANGLE, GVJ_s::obj, P2RECT, rect2poly(), obj_state_s::url_map_n, obj_state_s::url_map_p, and obj_state_s::url_map_shape.

Referenced by nodeIntersect().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mkSegPts()

static void mkSegPts ( const pointf prv,
pointf  cur,
const pointf nxt,
pointf p1,
pointf p2,
double  w2 
)
static

Definition at line 866 of file emit.c.

References add_pointf(), bisect(), del(), scale(), sub_pointf(), and pointf_s::x.

Referenced by map_output_bspline().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ multicolor()

static int multicolor ( GVJ_t job,
edge_t e,
char **  styles,
const char *  colors,
double  arrowsize,
double  penwidth 
)
static

Definition at line 1985 of file emit.c.

References AEQ0, agerr(), aghead, agisdirected(), agnameof(), AGPREV, agraphof(), agtail, arrow_gen(), color(), ED_spl, bezier::eflag, EMIT_HDRAW, EMIT_TDRAW, bezier::ep, free(), gvrender_beziercurve(), gvrender_set_fillcolor(), gvrender_set_pencolor(), gvrender_set_style(), left, bezier::list, LIST_FREE, LIST_FRONT, LIST_GET, LIST_SIZE, NULL, parseSegs(), penwidth, bezier::sflag, bezier::size, bezier::sp, and splitBSpline().

Referenced by emit_edge_graphics().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nextlayer()

static void nextlayer ( GVJ_t job,
int **  listp 
)
static

Definition at line 1154 of file emit.c.

References GVJ_s::layerNum.

Referenced by emit_graph().

Here is the caller graph for this function:

◆ nextpage()

static void nextpage ( GVJ_t job)
static

Definition at line 1313 of file emit.c.

References add_point(), GVJ_s::pagesArrayElem, GVJ_s::pagesArrayFirst, GVJ_s::pagesArrayMajor, GVJ_s::pagesArrayMinor, validpage(), point::x, and point::y.

Referenced by emit_graph().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ node_in_box()

static bool node_in_box ( node_t n,
boxf  b 
)
static

Definition at line 1643 of file emit.c.

References boxf_overlap(), and ND_bb.

Referenced by emit_node().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ node_in_layer()

static bool node_in_layer ( GVJ_t job,
graph_t g,
node_t n 
)
static

Definition at line 1583 of file emit.c.

References agfstedge(), agnxtedge(), E_layer, late_string(), N_layer, NULL, GVJ_s::numLayers, and selectedlayer().

Referenced by clust_in_layer(), and emit_node().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nodeIntersect()

static void nodeIntersect ( GVJ_t job,
pointf  p,
bool  explicit_iurl,
char *  iurl,
bool  explicit_itooltip 
)
static

Definition at line 2587 of file emit.c.

References obj_state_s::explicit_tooltip, map_point(), GVJ_s::obj, and obj_state_s::url.

Referenced by emit_end_edge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nonefunc()

static double nonefunc ( double  curlen,
double  totallen,
double  initwid 
)
static

Definition at line 2079 of file emit.c.

Referenced by taperfun().

Here is the caller graph for this function:

◆ numPhysicalLayers()

static int numPhysicalLayers ( GVJ_t job)
static

Definition at line 1114 of file emit.c.

References GVJ_s::gvc, GVC_s::layerlist, and GVJ_s::numLayers.

Referenced by emit_graph().

Here is the caller graph for this function:

◆ pagecode()

static point pagecode ( GVJ_t job,
char  c 
)
static

Definition at line 1165 of file emit.c.

References GVJ_s::pagesArrayFirst, GVJ_s::pagesArraySize, point::x, and point::y.

Referenced by init_job_pagination().

Here is the caller graph for this function:

◆ parse_layers()

static int parse_layers ( GVC_t gvc,
graph_t g,
char *  p 
)
static

Definition at line 1038 of file emit.c.

References agget(), agwarningf(), DEFAULT_LAYERLISTSEP, DEFAULT_LAYERSEP, gv_strdup(), gvc, GVC_s::layerDelims, GVC_s::layerIDs, GVC_s::layerListDelims, GVC_s::layers, LIST, LIST_APPEND, LIST_DETACH, LIST_FREE, LIST_SIZE, NULL, and tok().

Referenced by init_layering().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_layerselect()

static int * parse_layerselect ( GVC_t gvc,
char *  p 
)
static

Definition at line 1012 of file emit.c.

References agwarningf(), cnt(), free(), gv_calloc(), gvc, NULL, GVC_s::numLayers, and selectedLayer().

Referenced by init_layering().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_style()

char ** parse_style ( char *  s)

Definition at line 3639 of file emit.c.

References agerrorf(), agwarningf(), agxblen(), agxbput_n(), agxbputc(), agxbuse(), FUNLIMIT, NULL, token_t::size, token_t::start, style_token(), and token_t::type.

Referenced by checkClusterStyle(), checkStyle(), emit_edge(), emit_node(), emit_xdot(), and isFilled().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parseSegs()

static int parseSegs ( const char *  clrs,
colorsegs_t *  psegs 
)
static

Definition at line 468 of file emit.c.

References AEQ0, agerrorf(), agwarningf(), color(), del(), delta, freeSeg(), left, LIST_APPEND, LIST_AT, LIST_BACK, LIST_DROP_BACK, LIST_FREE, LIST_GET, LIST_IS_EMPTY, LIST_SIZE, strview_str(), tok(), tok_end(), tok_get(), and tok_next().

Referenced by findStopColor(), multicolor(), stripedBox(), and wedgedEllipse().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pEllipse()

static pointf * pEllipse ( double  a,
double  b,
size_t  np 
)
static

Definition at line 724 of file emit.c.

References gv_calloc(), M_PI, and ps.

Referenced by emit_begin_node().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pop_obj_state()

void pop_obj_state ( GVJ_t job)

Definition at line 130 of file emit.c.

References free(), obj_state_s::headtarget, obj_state_s::headtooltip, obj_state_s::headurl, obj_state_s::id, obj_state_s::labeltarget, obj_state_s::labeltooltip, obj_state_s::labelurl, GVJ_s::obj, obj_state_s::parent, obj_state_s::tailtarget, obj_state_s::tailtooltip, obj_state_s::tailurl, obj_state_s::target, obj_state_s::tooltip, obj_state_s::url, obj_state_s::url_bsplinemap_n, obj_state_s::url_bsplinemap_p, and obj_state_s::url_map_p.

Referenced by emit_end_cluster(), emit_end_edge(), emit_end_graph(), emit_end_node(), and freeObj().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ preprocessTooltip()

static char * preprocessTooltip ( char *  s,
void *  gobj 
)
static

Definition at line 300 of file emit.c.

References agroot(), CHAR_LATIN1, GD_charset, htmlEntityUTF8(), interpretCRNL(), and latin1ToUTF8().

Referenced by emit_begin_edge(), and initObjMapData().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ptsBB()

static boxf ptsBB ( xdot_point inpts,
size_t  numpts,
boxf bb 
)
static

Definition at line 2731 of file emit.c.

References expandBB(), boxf::LL, boxf::UR, pointf_s::x, xdot_point::x, pointf_s::y, and xdot_point::y.

Referenced by xdotBB().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ push_obj_state()

obj_state_t * push_obj_state ( GVJ_t job)

Definition at line 106 of file emit.c.

References obj_state_s::fill, FILL_NONE, obj_state_s::fillcolor, obj_state_s::gradient_angle, gv_alloc(), GVJ_s::obj, obj_state_s::parent, parent, obj_state_s::pen, PEN_SOLID, obj_state_s::pencolor, obj_state_s::penwidth, PENWIDTH_NORMAL, and obj_state_s::stopcolor.

Referenced by allocObj(), emit_begin_cluster(), emit_begin_edge(), emit_begin_graph(), and emit_begin_node().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ revfunc()

static double revfunc ( double  curlen,
double  totallen,
double  initwid 
)
static

Definition at line 2074 of file emit.c.

Referenced by taperfun().

Here is the caller graph for this function:

◆ selectedLayer()

static bool selectedLayer ( GVC_t gvc,
int  layerNum,
int  numLayers,
char *  spec 
)
static

Definition at line 955 of file emit.c.

References BETWEEN, free(), gv_strdup(), gvc, layer_index(), GVC_s::layerDelims, GVC_s::layerListDelims, NULL, and SWAP.

Referenced by parse_layerselect(), and selectedlayer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ selectedlayer()

static bool selectedlayer ( GVJ_t job,
char *  spec 
)
static

Definition at line 992 of file emit.c.

References GVJ_s::gvc, GVJ_s::layerNum, GVJ_s::numLayers, and selectedLayer().

Referenced by clust_in_layer(), edge_in_layer(), and node_in_layer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setup_page()

static void setup_page ( GVJ_t job)
static

Definition at line 1530 of file emit.c.

References GVJ_s::boundingBox, GVJ_s::canvasBox, GVJ_s::clip, GVJ_s::common, exch_xy(), EXPANDBB, GVJ_s::flags, GVJ_s::focus, GVDEVICE_EVENTS, GVRENDER_Y_GOES_DOWN, boxf::LL, GVJ_s::pad, GVJ_s::pageBoundingBox, GVJ_s::pageBox, GVJ_s::pagesArrayElem, GVJ_s::pagesArraySize, GVJ_s::pageSize, GVJ_s::rotation, GVJ_s::translation, boxf::UR, GVJ_s::view, GVCOMMON_s::viewNum, point::x, pointf_s::x, point::y, pointf_s::y, Y_invert, and GVJ_s::zoom.

Referenced by emit_page().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ splitBSpline()

static void splitBSpline ( bezier bz,
double  t,
bezier left,
bezier right 
)
static

Definition at line 1931 of file emit.c.

References approxLen(), Bezier(), cnt(), free(), gv_calloc(), last, left, len(), bezier::list, right, and bezier::size.

Referenced by multicolor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stripedBox()

int stripedBox ( GVJ_t job,
pointf AF,
const char *  clrs,
int  rotate 
)

Definition at line 593 of file emit.c.

References FILL, gvrender_polygon(), gvrender_set_fillcolor(), gvrender_set_penwidth(), LIST_FREE, LIST_GET, LIST_SIZE, NULL, GVJ_s::obj, parseSegs(), obj_state_s::penwidth, rotate(), THIN_LINE, and pointf_s::x.

Referenced by emit_clusters(), and poly_gencode().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ style_token()

static token_t style_token ( char **  s)
static

Definition at line 3603 of file emit.c.

References gv_isspace(), is_style_delim(), and SID.

Referenced by parse_style().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taperfun()

static radfunc_t taperfun ( edge_t e)
static

Definition at line 2095 of file emit.c.

References aghead, agisdirected(), agraphof(), agxget(), bothfunc(), E_dir, forfunc(), nonefunc(), revfunc(), and streq().

Referenced by emit_edge_graphics().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ textBB()

static boxf textBB ( double  x,
double  y,
textspan_t span 
)
static

Definition at line 2754 of file emit.c.

References textspan_t::just, boxf::LL, textspan_t::size, boxf::UR, pointf_s::x, pointf_s::y, and textspan_t::yoffset_layout.

Referenced by xdotBB().

Here is the caller graph for this function:

◆ update_bb_bz()

void update_bb_bz ( boxf bb,
pointf cp 
)

Definition at line 752 of file emit.c.

References Bezier(), check_control_points(), left, boxf::LL, right, update_bb_bz(), boxf::UR, pointf_s::x, and pointf_s::y.

Referenced by clip_and_install(), make_flat_adj_edges(), and update_bb_bz().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ validlayer()

static bool validlayer ( GVJ_t job)
static

Definition at line 1149 of file emit.c.

References GVJ_s::layerNum, and GVJ_s::numLayers.

Referenced by emit_graph().

Here is the caller graph for this function:

◆ validpage()

static bool validpage ( GVJ_t job)
static

Definition at line 1305 of file emit.c.

References GVJ_s::pagesArrayElem, GVJ_s::pagesArraySize, point::x, and point::y.

Referenced by emit_graph(), and nextpage().

Here is the caller graph for this function:

◆ wedgedEllipse()

int wedgedEllipse ( GVJ_t job,
pointf pf,
const char *  clrs 
)

Definition at line 547 of file emit.c.

References ellipticWedge(), freePath(), gvrender_beziercurve(), gvrender_set_fillcolor(), gvrender_set_penwidth(), LIST_FREE, LIST_GET, LIST_SIZE, M_PI, mid_pointf(), NULL, GVJ_s::obj, parseSegs(), obj_state_s::penwidth, Ppoly_t::pn, Ppoly_t::ps, sub_pointf(), THIN_LINE, pointf_s::x, and pointf_s::y.

Referenced by poly_gencode().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ write_edge_test()

static bool write_edge_test ( Agraph_t g,
Agedge_t e 
)
static

Definition at line 1325 of file emit.c.

References agcontains(), GD_clust, and GD_n_cluster.

Referenced by emit_view().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ write_node_test()

static bool write_node_test ( Agraph_t g,
Agnode_t n 
)
static

Definition at line 1338 of file emit.c.

References agcontains(), GD_clust, and GD_n_cluster.

Referenced by emit_view().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xdotBB()

Variable Documentation

◆ adjust

const char adjust[] = {'l', 'n', 'r'}
static

Definition at line 2720 of file emit.c.

Referenced by fdp_tLayout(), init_nop(), x_layout(), and xdotBB().

◆ defaultlinestyle

char* defaultlinestyle[3] = { "solid\0", "setlinewidth\0001\0", 0 }
static

Definition at line 103 of file emit.c.

Referenced by init_gvc().

◆ gvdevice_callbacks

gvdevice_callbacks_t gvdevice_callbacks
extern

Definition at line 541 of file gvevent.c.

Referenced by gvRenderJobs().

◆ gvevent_key_binding

gvevent_key_binding_t gvevent_key_binding[]
extern

Definition at line 521 of file gvevent.c.

Referenced by gvRenderJobs().

◆ gvevent_key_binding_size

const size_t gvevent_key_binding_size
extern

Definition at line 538 of file gvevent.c.

Referenced by gvRenderJobs().

◆ saved_color_scheme

char* saved_color_scheme
static

Definition at line 1648 of file emit.c.

Referenced by emit_begin_node(), and emit_end_node().

◆ stringdict

Dtdisc_t stringdict
static
Initial value:
= {
.link = -1,
.freef = free,
}
void free(void *)

Definition at line 3364 of file emit.c.

Referenced by emit_once().

◆ strings

Dict_t* strings
static

Definition at line 3363 of file emit.c.

Referenced by emit_once(), and emit_once_reset().