| 1 | /* $Id$ $Revision$ */ |
| 2 | /* vim:set shiftwidth=4 ts=8: */ |
| 3 | |
| 4 | /************************************************************************* |
| 5 | * Copyright (c) 2011 AT&T Intellectual Property |
| 6 | * All rights reserved. This program and the accompanying materials |
| 7 | * are made available under the terms of the Eclipse Public License v1.0 |
| 8 | * which accompanies this distribution, and is available at |
| 9 | * http://www.eclipse.org/legal/epl-v10.html |
| 10 | * |
| 11 | * Contributors: See CVS logs. Details at http://www.graphviz.org/ |
| 12 | *************************************************************************/ |
| 13 | |
| 14 | #ifndef GVC_H |
| 15 | #define GVC_H |
| 16 | |
| 17 | #include "types.h" |
| 18 | #include "gvplugin.h" |
| 19 | |
| 20 | #ifdef __cplusplus |
| 21 | extern "C" { |
| 22 | #endif |
| 23 | |
| 24 | #ifdef GVDLL |
| 25 | #define extern __declspec(dllexport) |
| 26 | #else |
| 27 | #define extern |
| 28 | #endif |
| 29 | |
| 30 | /*visual studio*/ |
| 31 | #ifdef _WIN32 |
| 32 | #ifndef GVC_EXPORTS |
| 33 | #undef extern |
| 34 | #define extern __declspec(dllimport) |
| 35 | #endif |
| 36 | #endif |
| 37 | /*end visual studio*/ |
| 38 | |
| 39 | #define LAYOUT_DONE(g) (agbindrec(g, "Agraphinfo_t", 0, TRUE) && GD_drawing(g)) |
| 40 | |
| 41 | /* misc */ |
| 42 | /* FIXME - this needs eliminating or renaming */ |
| 43 | extern void gvToggle(int); |
| 44 | |
| 45 | /* set up a graphviz context */ |
| 46 | extern GVC_t *gvNEWcontext(const lt_symlist_t *builtins, int demand_loading); |
| 47 | |
| 48 | /* set up a graphviz context - and init graph - retaining old API */ |
| 49 | extern GVC_t *gvContext(void); |
| 50 | /* set up a graphviz context - and init graph - with builtins */ |
| 51 | extern GVC_t *gvContextPlugins(const lt_symlist_t *builtins, int demand_loading); |
| 52 | |
| 53 | /* get information associated with a graphviz context */ |
| 54 | extern char **gvcInfo(GVC_t*); |
| 55 | extern char *gvcVersion(GVC_t*); |
| 56 | extern char *gvcBuildDate(GVC_t*); |
| 57 | |
| 58 | /* parse command line args - minimally argv[0] sets layout engine */ |
| 59 | extern int gvParseArgs(GVC_t *gvc, int argc, char **argv); |
| 60 | extern graph_t *gvNextInputGraph(GVC_t *gvc); |
| 61 | extern graph_t *gvPluginsGraph(GVC_t *gvc); |
| 62 | |
| 63 | /* Compute a layout using a specified engine */ |
| 64 | extern int gvLayout(GVC_t *gvc, graph_t *g, const char *engine); |
| 65 | |
| 66 | /* Compute a layout using layout engine from command line args */ |
| 67 | extern int gvLayoutJobs(GVC_t *gvc, graph_t *g); |
| 68 | |
| 69 | /* Render layout into string attributes of the graph */ |
| 70 | extern void attach_attrs(graph_t *g); |
| 71 | |
| 72 | /* Render layout in a specified format to an open FILE */ |
| 73 | extern int gvRender(GVC_t *gvc, graph_t *g, const char *format, FILE *out); |
| 74 | |
| 75 | /* Render layout in a specified format to a file with the given name */ |
| 76 | extern int gvRenderFilename(GVC_t *gvc, graph_t *g, const char *format, const char *filename); |
| 77 | |
| 78 | /* Render layout in a specified format to an external context */ |
| 79 | extern int gvRenderContext(GVC_t *gvc, graph_t *g, const char *format, void *context); |
| 80 | |
| 81 | /* Render layout in a specified format to a malloc'ed string */ |
| 82 | extern int gvRenderData(GVC_t *gvc, graph_t *g, const char *format, char **result, unsigned int *length); |
| 83 | |
| 84 | /* Free memory allocated and pointed to by *result in gvRenderData */ |
| 85 | extern void gvFreeRenderData (char* data); |
| 86 | |
| 87 | /* Render layout according to -T and -o options found by gvParseArgs */ |
| 88 | extern int gvRenderJobs(GVC_t *gvc, graph_t *g); |
| 89 | |
| 90 | /* Clean up layout data structures - layouts are not nestable (yet) */ |
| 91 | extern int gvFreeLayout(GVC_t *gvc, graph_t *g); |
| 92 | |
| 93 | /* Clean up graphviz context */ |
| 94 | extern void gvFinalize(GVC_t *gvc); |
| 95 | extern int gvFreeContext(GVC_t *gvc); |
| 96 | |
| 97 | /* Return list of plugins of type kind. |
| 98 | * kind would normally be "render" "layout" "textlayout" "device" "loadimage" |
| 99 | * The size of the list is stored in sz. |
| 100 | * The caller is responsible for freeing the storage. This involves |
| 101 | * freeing each item, then the list. |
| 102 | * Returns NULL on error, or if there are no plugins. |
| 103 | * In the former case, sz is unchanged; in the latter, sz = 0. |
| 104 | * |
| 105 | * At present, the str argument is unused, but may be used to modify |
| 106 | * the search as in gvplugin_list above. |
| 107 | */ |
| 108 | extern char** gvPluginList (GVC_t *gvc, const char* kind, int* sz, char*); |
| 109 | |
| 110 | /** Add a library from your user application |
| 111 | * @param gvc Graphviz context to add library to |
| 112 | * @param lib library to add |
| 113 | */ |
| 114 | extern void gvAddLibrary(GVC_t *gvc, gvplugin_library_t *lib); |
| 115 | |
| 116 | /** Perform a Transitive Reduction on a graph |
| 117 | * @param g graph to be transformed. |
| 118 | */ |
| 119 | extern int gvToolTred(graph_t *g); |
| 120 | |
| 121 | #undef extern |
| 122 | |
| 123 | #ifdef __cplusplus |
| 124 | } |
| 125 | #endif |
| 126 | |
| 127 | #endif /* GVC_H */ |
| 128 | |