|
Graphviz
2.31.20130519.0446
|
00001 00002 00003 /************************************************************************* 00004 * Copyright (c) 2011 AT&T Intellectual Property 00005 * All rights reserved. This program and the accompanying materials 00006 * are made available under the terms of the Eclipse Public License v1.0 00007 * which accompanies this distribution, and is available at 00008 * http://www.eclipse.org/legal/epl-v10.html 00009 * 00010 * Contributors: See CVS logs. Details at http://www.graphviz.org/ 00011 *************************************************************************/ 00012 00013 #ifndef GV_RENDER_H 00014 #define GV_RENDER_H 00015 00016 #ifdef __cplusplus 00017 extern "C" { 00018 #endif 00019 00020 #ifdef HAVE_CONFIG_H 00021 #include "config.h" 00022 #endif 00023 00024 #ifdef HAVE_SYS_TYPES_H 00025 #include <sys/types.h> 00026 #endif 00027 #ifdef HAVE_STDLIB_H 00028 #include <stdlib.h> 00029 #endif 00030 #ifdef HAVE_STDDEF_H 00031 #include <stddef.h> 00032 #endif 00033 #ifdef HAVE_STRINGS_H 00034 #include <strings.h> 00035 #endif 00036 #ifdef HAVE_STRING_H 00037 #include <string.h> 00038 #endif 00039 00040 #include "types.h" 00041 #include "macros.h" 00042 #include "const.h" 00043 #include "globals.h" 00044 #include "memory.h" 00045 #include "colorprocs.h" /* must collow color.h (in types.h) */ 00046 #include "geomprocs.h" /* must follow geom.h (in types.h) */ 00047 #include "agxbuf.h" 00048 #include "utils.h" /* must follow types.h and agxbuf.h */ 00049 #include "gvplugin.h" /* must follow gvcext.h (in types.h) */ 00050 #include "gvcjob.h" /* must follow gvcext.h (in types.h) */ 00051 #include "gvcint.h" /* must follow gvcext.h (in types.h) */ 00052 #include "gvcproc.h" /* must follow gvcext.h (in types.h) */ 00053 00054 typedef struct epsf_s { 00055 int macro_id; 00056 point offset; 00057 } epsf_t; 00058 00059 typedef void (*nodesizefn_t) (Agnode_t *, boolean); 00060 #ifdef GVDLL 00061 #define extern __declspec(dllexport) 00062 #else 00063 #define extern 00064 #endif 00065 00066 /*visual studio*/ 00067 #ifdef WIN32_DLL 00068 #ifndef GVC_EXPORTS 00069 #define extern __declspec(dllimport) 00070 #endif 00071 #endif 00072 /*end visual studio*/ 00073 00074 extern void add_box(path *, boxf); 00075 extern void arrow_flags(Agedge_t * e, int *sflag, int *eflag); 00076 extern boxf arrow_bb(pointf p, pointf u, double arrowsize, int flag); 00077 extern void arrow_gen(GVJ_t * job, emit_state_t emit_state, pointf p, pointf u, 00078 double arrowsize, double penwidth, int flag); 00079 extern double arrow_length(edge_t * e, int flag); 00080 extern int arrowEndClip(edge_t*, pointf*, int, int , bezier*, int eflag); 00081 extern int arrowStartClip(edge_t*, pointf* ps, int, int, bezier*, int sflag); 00082 extern void arrowOrthoClip(edge_t*, pointf* ps, int, int, bezier*, int sflag, int eflag); 00083 extern void beginpath(path *, Agedge_t *, int, pathend_t *, boolean); 00084 extern void bezier_clip(inside_t * inside_context, 00085 boolean(*insidefn) (inside_t * inside_context, 00086 pointf p), pointf * sp, 00087 boolean left_inside); 00088 extern shape_desc *bind_shape(char *name, node_t *); 00089 extern void makeStraightEdge(graph_t * g, edge_t * e, int edgetype, splineInfo * info); 00090 extern void clip_and_install(edge_t * fe, node_t * hn, 00091 pointf * ps, int pn, splineInfo * info); 00092 extern char* charsetToStr (int c); 00093 extern pointf coord(node_t * n); 00094 extern void do_graph_label(graph_t * sg); 00095 extern void graph_init(graph_t * g, boolean use_rankdir); 00096 extern void graph_cleanup(graph_t * g); 00097 extern int dotneato_args_initialize(GVC_t * gvc, int, char **); 00098 extern int dotneato_usage(int); 00099 extern void dotneato_postprocess(Agraph_t *); 00100 extern void gv_postprocess(Agraph_t *, int); 00101 extern void dotneato_set_margins(GVC_t * gvc, Agraph_t *); 00102 extern void dotneato_write(GVC_t * gvc, graph_t *g); 00103 extern void dotneato_write_one(GVC_t * gvc, graph_t *g); 00104 extern Ppolyline_t* ellipticWedge (pointf ctr, double major, double minor, double angle0, double angle1); 00105 extern void emit_clusters(GVJ_t * job, Agraph_t * g, int flags); 00106 extern char* getObjId (GVJ_t* job, void* obj, agxbuf* xb); 00107 /* extern void emit_begin_edge(GVJ_t * job, edge_t * e, char**); */ 00108 /* extern void emit_end_edge(GVJ_t * job); */ 00109 extern void emit_graph(GVJ_t * job, graph_t * g); 00110 extern void emit_label(GVJ_t * job, emit_state_t emit_state, textlabel_t *); 00111 extern int emit_once(char *message); 00112 extern void emit_jobs_eof(GVC_t * gvc); 00113 extern void emit_map_rect(GVJ_t *job, boxf b); 00114 extern void enqueue_neighbors(nodequeue *, Agnode_t *, int); 00115 extern void endpath(path *, Agedge_t *, int, pathend_t *, boolean); 00116 extern void epsf_init(node_t * n); 00117 extern void epsf_free(node_t * n); 00118 extern shape_desc *find_user_shape(const char *); 00119 extern void free_line(textpara_t *); 00120 extern void free_label(textlabel_t *); 00121 extern void free_textpara(textpara_t * tl, int); 00122 extern void getdouble(graph_t * g, char *name, double *result); 00123 extern splines *getsplinepoints(edge_t * e); 00124 extern void gv_fixLocale (int set); 00125 extern void gv_free_splines(edge_t * e); 00126 extern void gv_cleanup_edge(Agedge_t * e); 00127 extern void gv_cleanup_node(Agnode_t * n); 00128 extern void* init_xdot (Agraph_t* g); 00129 extern int initMapData (GVJ_t*, char*, char*, char*, char*, char*, void*); 00130 extern boolean isPolygon(node_t *); 00131 extern void makeSelfEdge(path * P, edge_t * edges[], int ind, int cnt, 00132 double sizex, double sizey, splineInfo * sinfo); 00133 extern textlabel_t *make_label(void *obj, char *str, int kind, double fontsize, char *fontname, char *fontcolor); 00134 extern bezier *new_spline(edge_t * e, int sz); 00135 extern char **parse_style(char *s); 00136 extern void place_graph_label(Agraph_t *); 00137 extern int place_portlabel(edge_t * e, boolean head_p); 00138 extern void makePortLabels(edge_t * e); 00139 extern pointf edgeMidpoint(graph_t* g, edge_t * e); 00140 extern void addEdgeLabels(graph_t* g, edge_t * e, pointf rp, pointf rq); 00141 extern void pop_obj_state(GVJ_t *job); 00142 extern obj_state_t* push_obj_state(GVJ_t *job); 00143 extern int rank(graph_t * g, int balance, int maxiter); 00144 extern port resolvePort(node_t* n, node_t* other, port* oldport); 00145 extern void resolvePorts (edge_t* e); 00146 extern void round_corners(GVJ_t * job, pointf * AF, int sides, int style, int filled); 00147 extern int routesplinesinit(void); 00148 extern pointf *routesplines(path *, int *); 00149 extern void routesplinesterm(void); 00150 extern pointf* simpleSplineRoute (pointf, pointf, Ppoly_t, int*, int); 00151 extern pointf *routepolylines(path* pp, int* npoints); 00152 extern int selfRightSpace (edge_t* e); 00153 extern void setup_graph(GVC_t * gvc, graph_t * g); 00154 extern shape_kind shapeOf(node_t *); 00155 extern void shape_clip(node_t * n, pointf curve[4]); 00156 extern void make_simple_label (graph_t* g, textlabel_t* rv); 00157 extern int stripedBox (GVJ_t * job, pointf* AF, char* clrs, int rotate); 00158 extern stroke_t* taper (bezier*, double (*radfunc_t)(double,double,double), double initwid, int linejoin, int linecap); 00159 extern stroke_t* taper0 (bezier* bez, double initwid); 00160 extern pointf textsize(graph_t *g, textpara_t * para, char *fontname, double fontsize); 00161 extern void translate_bb(Agraph_t *, int); 00162 extern int wedgedEllipse (GVJ_t* job, pointf * pf, char* clrs); 00163 extern void update_bb_bz(boxf *bb, pointf *cp); 00164 extern void write_attributed_dot(graph_t *g, FILE *f); 00165 extern void write_canonical_dot(graph_t *g, FILE *f); 00166 extern boxf xdotBB (graph_t* g); 00167 extern char *findAttrColor(void *obj, attrsym_t *colorattr, char *dflt); 00168 00169 #undef extern 00170 00171 #ifdef __cplusplus 00172 } 00173 #endif 00174 00175 #endif
1.7.5