Graphviz  2.31.20130519.0446
lib/common/render.h
Go to the documentation of this file.
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