Graphviz  2.29.20120524.0446
lib/common/utils.h
Go to the documentation of this file.
00001 /* $Id$ $Revision$ */
00002 /* vim:set shiftwidth=4 ts=8: */
00003 
00004 /*************************************************************************
00005  * Copyright (c) 2011 AT&T Intellectual Property 
00006  * All rights reserved. This program and the accompanying materials
00007  * are made available under the terms of the Eclipse Public License v1.0
00008  * which accompanies this distribution, and is available at
00009  * http://www.eclipse.org/legal/epl-v10.html
00010  *
00011  * Contributors: See CVS logs. Details at http://www.graphviz.org/
00012  *************************************************************************/
00013 
00014 #ifndef _UTILS_H
00015 #define _UTILS_H 1
00016 
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020 
00021 
00022 #ifdef GVDLL
00023 #define extern __declspec(dllexport)
00024 #else
00025 #define extern
00026 #endif
00027 
00028 /*visual studio*/
00029 #ifdef WIN32_DLL
00030 #ifndef GVC_EXPORTS
00031 #define extern __declspec(dllimport)
00032 #endif
00033 #endif
00034 /*end visual studio*/
00035 
00036 #ifndef HAVE_STRCASECMP
00037     extern int strcasecmp(const char *s1, const char *s2);
00038 #endif
00039 #ifndef HAVE_STRNCASECMP
00040     extern int strncasecmp(const char *s1, const char *s2, size_t n);
00041 #endif
00042 
00043     extern nodequeue *new_queue(int);
00044     extern void free_queue(nodequeue *);
00045     extern void enqueue(nodequeue *, Agnode_t *);
00046     extern Agnode_t *dequeue(nodequeue *);
00047     extern pointf Bezier(pointf *, int, double, pointf *, pointf *);
00048     extern void attach_attrs(graph_t * g);
00049     extern void attach_attrs_and_arrows(graph_t*, int*, int*);
00050     extern char *xml_string(char *str);
00051     extern void write_plain(GVJ_t * job, graph_t * g, FILE * f, boolean extend);
00052     extern void output_point(agxbuf *xbuf, pointf p);
00053     extern char *ps_string(char *s, int);
00054     extern char *strdup_and_subst_obj(char *str, void *obj);
00055     extern char *xml_url_string(char *s);
00056     extern void epsf_emit_body(GVJ_t *job, usershape_t *us);
00057     extern void epsf_define(GVJ_t * job);
00058     extern void undoClusterEdges(graph_t * g);
00059 #ifndef WITH_CGRAPH
00060     extern attrsym_t* safe_dcl(graph_t*, void*, char*, char*,
00061              attrsym_t * (*fun) (Agraph_t *, char *, char *));
00062 #else
00063     extern Dt_t* mkClustMap (Agraph_t* g);
00064     extern Agraph_t* findCluster (Dt_t* map, char* name);
00065     extern attrsym_t* safe_dcl(graph_t * g, int obj_kind, char *name, char *def);
00066 #endif
00067 
00068     extern int late_int(void *, Agsym_t *, int, int);
00069     extern double late_double(void *, Agsym_t *, double, double);
00070     extern char *late_nnstring(void *, Agsym_t *, char *);
00071     extern char *late_string(void *, Agsym_t *, char *);
00072         extern boolean late_bool(void *, Agsym_t *, int);
00073 
00074     extern Agnode_t *UF_find(Agnode_t *);
00075     extern Agnode_t *UF_union(Agnode_t *, Agnode_t *);
00076     extern void UF_remove(Agnode_t *, Agnode_t *);
00077     extern void UF_singleton(Agnode_t *);
00078     extern void UF_setname(Agnode_t *, Agnode_t *);
00079 
00080     extern char *Fgets(FILE * fp);
00081     extern const char *safefile(const char *filename);
00082 
00083     extern boolean mapBool(char *, boolean);
00084     extern boolean mapbool(char *);
00085     extern int maptoken(char *, char **, int *);
00086 
00087     extern boolean findStopColor (char* colorlist, char* clrs[2]);
00088     extern int test_toggle(void);
00089 
00090     extern void common_init_node(node_t * n);
00091     extern int common_init_edge(edge_t * e);
00092 
00093     extern void updateBB(graph_t * g, textlabel_t * lp);
00094     extern void compute_bb(Agraph_t *);
00095     extern boolean overlap_node(node_t *n, boxf b);
00096     extern boolean overlap_label(textlabel_t *lp, boxf b);
00097     extern boolean overlap_edge(edge_t *e, boxf b);
00098 
00099     extern void get_gradient_points(pointf * A, pointf * G, int n, float angle, boolean isRadial);
00100 
00101     extern int processClusterEdges(graph_t * g);
00102 
00103     extern char *latin1ToUTF8(char *);
00104     extern char *htmlEntityUTF8(char *, graph_t* g);
00105     extern char* utf8ToLatin1 (char* ins);
00106     extern char* scanEntity (char* t, agxbuf* xb);
00107 
00108     extern pointf dotneato_closest(splines * spl, pointf p);
00109     extern pointf neato_closest(splines * spl, pointf p);
00110     extern pointf spline_at_y(splines * spl, double y);
00111 
00112     extern Agsym_t *setAttr(graph_t*, void*, char*name, char *value, Agsym_t*);
00113     extern void setEdgeType (graph_t* g, int dflt);
00114     extern int edgeType (char* s, int dflt);
00115     extern int is_a_cluster (Agraph_t* g);
00116 
00117     /* from postproc.c */ 
00118     extern void gv_nodesize(Agnode_t * n, boolean flip);
00119 
00120     /* from timing.c */
00121     extern void start_timer(void);
00122     extern double elapsed_sec(void);
00123 
00124     /* from psusershape.c */
00125     extern void cat_libfile(GVJ_t * job, const char **arglib, const char **stdlib);
00126 
00127     
00128 #ifdef WIN32    
00129         extern void fix_fc(void);
00130 #endif
00131 
00132 #undef extern
00133 
00134 #ifdef __cplusplus
00135 }
00136 #endif
00137 
00138 #endif /* _UTILS_H */