| 1 |  | 
| 2 |  | 
| 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 |  * http://www.eclipse.org/legal/epl-v10.html | 
| 9 |  * | 
| 10 |  * Contributors: See CVS logs. Details at http://www.graphviz.org/ | 
| 11 |  *************************************************************************/ | 
| 12 |  | 
| 13 | #ifndef GV_RENDER_H | 
| 14 | #define GV_RENDER_H | 
| 15 |  | 
| 16 | #ifdef __cplusplus | 
| 17 | extern "C"  { | 
| 18 | #endif | 
| 19 |  | 
| 20 | #include "config.h" | 
| 21 |  | 
| 22 | #ifdef HAVE_SYS_TYPES_H | 
| 23 | #include <sys/types.h> | 
| 24 | #endif | 
| 25 | #if !defined(_WIN32) && !defined(DARWIN) | 
| 26 | #define __USE_GNU | 
| 27 | #include <stdlib.h> | 
| 28 | #undef __USE_GNU | 
| 29 | #else | 
| 30 | #include <stdlib.h> | 
| 31 | #endif | 
| 32 | #include <stddef.h> | 
| 33 | #ifdef HAVE_STRINGS_H | 
| 34 | #include <strings.h> | 
| 35 | #endif | 
| 36 | #include <string.h> | 
| 37 |  | 
| 38 | #include <inttypes.h> | 
| 39 |  | 
| 40 | #include "types.h" | 
| 41 | #include "macros.h" | 
| 42 | #include "const.h" | 
| 43 | #include "globals.h" | 
| 44 | #include "memory.h" | 
| 45 | #include "colorprocs.h"		/* must collow color.h (in types.h) */ | 
| 46 | #include "geomprocs.h"		/* must follow geom.h (in types.h) */ | 
| 47 | #include "agxbuf.h" | 
| 48 | #include "utils.h"		/* must follow types.h and agxbuf.h */ | 
| 49 | #include "gvplugin.h"		/* must follow gvcext.h (in types.h) */ | 
| 50 | #include "gvcjob.h"		/* must follow gvcext.h (in types.h) */ | 
| 51 | #include "gvcint.h"		/* must follow gvcext.h (in types.h) */ | 
| 52 | #include "gvcproc.h"		/* must follow gvcext.h (in types.h) */ | 
| 53 |  | 
| 54 |     typedef struct epsf_s { | 
| 55 | 	int macro_id; | 
| 56 | 	point offset; | 
| 57 |     } epsf_t; | 
| 58 |  | 
| 59 | /*visual studio*/ | 
| 60 | #ifdef _WIN32 | 
| 61 | #ifndef GVC_EXPORTS | 
| 62 | #define extern __declspec(dllimport) | 
| 63 | #endif | 
| 64 | #endif | 
| 65 | /*end visual studio*/ | 
| 66 |  | 
| 67 | 	extern void add_box(path *, boxf); | 
| 68 |     extern void arrow_flags(Agedge_t * e, int *sflag, int *eflag); | 
| 69 |     extern boxf arrow_bb(pointf p, pointf u, double arrowsize, int flag); | 
| 70 |     extern void arrow_gen(GVJ_t * job, emit_state_t emit_state, pointf p, pointf u, | 
| 71 | 			  double arrowsize, double penwidth, int flag); | 
| 72 |     extern double arrow_length(edge_t * e, int flag); | 
| 73 |     extern int arrowEndClip(edge_t*, pointf*, int, int , bezier*, int eflag); | 
| 74 |     extern int arrowStartClip(edge_t*, pointf* ps, int, int, bezier*, int sflag); | 
| 75 |     extern void arrowOrthoClip(edge_t*, pointf* ps, int, int, bezier*, int sflag, int eflag); | 
| 76 |     extern void beginpath(path *, Agedge_t *, int, pathend_t *, boolean); | 
| 77 |     extern void bezier_clip(inside_t * inside_context, | 
| 78 | 			    boolean(*insidefn) (inside_t * inside_context, | 
| 79 | 						pointf p), pointf * sp, | 
| 80 | 			    boolean left_inside); | 
| 81 |     extern shape_desc *bind_shape(char *name, node_t *); | 
| 82 |     extern void makeStraightEdge(graph_t * g, edge_t * e, int edgetype, splineInfo * info); | 
| 83 |     extern void makeStraightEdges(graph_t* g, edge_t** edges, int e_cnt, int et, splineInfo* sinfo); | 
| 84 |     extern void clip_and_install(edge_t * fe, node_t * hn, | 
| 85 | 	pointf * ps, int pn, splineInfo * info); | 
| 86 |     extern char* charsetToStr (int c); | 
| 87 |     extern pointf coord(node_t * n); | 
| 88 |     extern void do_graph_label(graph_t * sg); | 
| 89 |     extern void graph_init(graph_t * g, boolean use_rankdir); | 
| 90 |     extern void graph_cleanup(graph_t * g); | 
| 91 |     extern int dotneato_args_initialize(GVC_t * gvc, int, char **); | 
| 92 |     extern int dotneato_usage(int); | 
| 93 |     extern void dotneato_postprocess(Agraph_t *); | 
| 94 |     extern void gv_postprocess(Agraph_t *, int); | 
| 95 |     extern void dotneato_set_margins(GVC_t * gvc, Agraph_t *); | 
| 96 |     extern void dotneato_write(GVC_t * gvc, graph_t *g); | 
| 97 |     extern void dotneato_write_one(GVC_t * gvc, graph_t *g); | 
| 98 |     extern Ppolyline_t* ellipticWedge (pointf ctr, double major, double minor, double angle0, double angle1); | 
| 99 |     extern void emit_clusters(GVJ_t * job, Agraph_t * g, int flags); | 
| 100 |     extern char* getObjId (GVJ_t* job, void* obj, agxbuf* xb); | 
| 101 |     /* extern void emit_begin_edge(GVJ_t * job, edge_t * e, char**); */ | 
| 102 |     /* extern void emit_end_edge(GVJ_t * job); */ | 
| 103 |     extern void emit_graph(GVJ_t * job, graph_t * g); | 
| 104 |     extern void emit_label(GVJ_t * job, emit_state_t emit_state, textlabel_t *); | 
| 105 |     extern int emit_once(char *message); | 
| 106 |     extern void emit_jobs_eof(GVC_t * gvc); | 
| 107 |     extern void emit_map_rect(GVJ_t *job, boxf b); | 
| 108 |     extern void endpath(path *, Agedge_t *, int, pathend_t *, boolean); | 
| 109 |     extern void epsf_init(node_t * n); | 
| 110 |     extern void epsf_free(node_t * n); | 
| 111 |     extern shape_desc *find_user_shape(const char *); | 
| 112 |     extern void free_line(textspan_t *); | 
| 113 |     extern void free_label(textlabel_t *); | 
| 114 |     extern void free_textspan(textspan_t * tl, int); | 
| 115 |     extern void getdouble(graph_t * g, char *name, double *result); | 
| 116 |     extern splines *getsplinepoints(edge_t * e); | 
| 117 |     extern void gv_fixLocale (int set); | 
| 118 |     extern void gv_free_splines(edge_t * e); | 
| 119 |     extern void gv_cleanup_edge(Agedge_t * e); | 
| 120 |     extern void gv_cleanup_node(Agnode_t * n); | 
| 121 |     extern void* init_xdot (Agraph_t* g); | 
| 122 |     extern int initMapData (GVJ_t*, char*, char*, char*, char*, char*, void*); | 
| 123 |     extern boolean isPolygon(node_t *); | 
| 124 |     extern void makeSelfEdge(path * P, edge_t * edges[], int ind, int cnt, | 
| 125 | 	double sizex, double sizey, splineInfo * sinfo); | 
| 126 |     extern textlabel_t *make_label(void *obj, char *str, int kind, double fontsize, char *fontname, char *fontcolor); | 
| 127 |     extern bezier *new_spline(edge_t * e, int sz); | 
| 128 |     extern char **parse_style(char *s); | 
| 129 |     extern void place_graph_label(Agraph_t *); | 
| 130 |     extern int place_portlabel(edge_t * e, boolean head_p); | 
| 131 |     extern void makePortLabels(edge_t * e); | 
| 132 |     extern pointf edgeMidpoint(graph_t* g, edge_t * e); | 
| 133 |     extern void addEdgeLabels(graph_t* g, edge_t * e, pointf rp, pointf rq); | 
| 134 |     extern void pop_obj_state(GVJ_t *job); | 
| 135 |     extern obj_state_t* push_obj_state(GVJ_t *job); | 
| 136 |     extern int rank(graph_t * g, int balance, int maxiter); | 
| 137 |     extern port resolvePort(node_t*  n, node_t* other, port* oldport); | 
| 138 |     extern void resolvePorts (edge_t* e); | 
| 139 |     extern void round_corners(GVJ_t * job, pointf * AF, int sides, int style, int filled); | 
| 140 |     extern int routesplinesinit(void); | 
| 141 |     extern pointf *routesplines(path *, int *); | 
| 142 |     extern void routesplinesterm(void); | 
| 143 |     extern pointf* simpleSplineRoute (pointf, pointf, Ppoly_t, int*, int); | 
| 144 |     extern pointf *routepolylines(path* pp, int* npoints); | 
| 145 |     extern int selfRightSpace (edge_t* e); | 
| 146 |     extern void setup_graph(GVC_t * gvc, graph_t * g); | 
| 147 |     extern shape_kind shapeOf(node_t *); | 
| 148 |     extern void shape_clip(node_t * n, pointf curve[4]); | 
| 149 |     extern void make_simple_label (GVC_t * gvc, textlabel_t* rv); | 
| 150 |     extern int stripedBox (GVJ_t * job, pointf* AF, char* clrs, int rotate); | 
| 151 |     extern stroke_t* taper (bezier*, double (*radfunc_t)(double,double,double), double initwid, int linejoin, int linecap); | 
| 152 |     extern stroke_t* taper0 (bezier* bez, double initwid); | 
| 153 |     extern pointf textspan_size(GVC_t * gvc, textspan_t * span); | 
| 154 |     extern Dt_t * textfont_dict_open(GVC_t *gvc); | 
| 155 |     extern void textfont_dict_close(GVC_t *gvc); | 
| 156 |     extern void translate_bb(Agraph_t *, int); | 
| 157 |     extern int wedgedEllipse (GVJ_t* job, pointf * pf, char* clrs); | 
| 158 |     extern void update_bb_bz(boxf *bb, pointf *cp); | 
| 159 |     extern void write_attributed_dot(graph_t *g, FILE *f); | 
| 160 |     extern void write_canonical_dot(graph_t *g, FILE *f); | 
| 161 |     extern boxf xdotBB (graph_t* g); | 
| 162 |     extern char *findAttrColor(void *obj, attrsym_t *colorattr, char *dflt); | 
| 163 |  | 
| 164 | #undef extern | 
| 165 |  | 
| 166 | #ifdef __cplusplus | 
| 167 | } | 
| 168 | #endif | 
| 169 |  | 
| 170 | #endif | 
| 171 |  |