123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- /*************************************************************************
- * Copyright (c) 2011 AT&T Intellectual Property
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors: Details at https://graphviz.org
- *************************************************************************/
- /* Common header used by both clients and plugins */
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "cdt.h"
- #include "gvcommon.h"
- #include "gvcjob.h"
- #include "color.h"
- #include <stdbool.h>
- #ifdef GVDLL
- #ifdef GVC_EXPORTS
- #define GVCINT_API __declspec(dllexport)
- #else
- #define GVCINT_API __declspec(dllimport)
- #endif
- #endif
- #ifndef GVCINT_API
- #define GVCINT_API /* nothing */
- #endif
- /* active plugin headers */
- typedef struct gvplugin_active_layout_s {
- gvlayout_engine_t *engine;
- int id;
- gvlayout_features_t *features;
- const char *type;
- } gvplugin_active_layout_t;
- typedef struct gvplugin_active_textlayout_s {
- gvtextlayout_engine_t *engine;
- int id;
- char *type;
- } gvplugin_active_textlayout_t;
- typedef struct gvplugin_package_s gvplugin_package_t;
- struct gvplugin_package_s {
- gvplugin_package_t *next;
- char *path;
- char *name;
- };
- struct gvplugin_available_s {
- gvplugin_available_t *next; /* next plugin in linked list, or NULL */
- char *typestr; /* type string, e.g. "png" or "ps" */
- int quality; /* Programmer assigned quality ranking within type (+ve or -ve int).
- First implementation of type should be given "0" quality */
- gvplugin_package_t *package; /* details of library containing plugin */
- gvplugin_installed_t *typeptr; /* pointer to jumptable for plugin,
- or NULL if not yet loaded */
- };
- struct GVG_s {
- GVC_t *gvc; /* parent gvc */
- GVG_t *next; /* next gvg in list */
- char *input_filename; /* or NULL if stdin */
- int graph_index; /* index of graph within input_file */
- graph_t *g;
- };
- #define MAXNEST 4
- struct GVC_s {
- GVCOMMON_t common;
- char *config_path;
- bool config_found;
- /* gvParseArgs */
- char **input_filenames; /* null terminated array of input filenames */
- int fidx; /* index of input_filenames to be processed next */
- /* gvNextInputGraph() */
- GVG_t *gvgs; /* linked list of graphs */
- GVG_t *gvg; /* current graph */
- /* plugins */
- #define ELEM(x) +1
- /* APIS expands to "+1 +1 ... +1" to give the number of APIs */
- gvplugin_available_t *apis[ APIS ]; /* array of linked-list of plugins per api */
- gvplugin_available_t *api[ APIS ]; /* array of current plugins per api */
- #undef ELEM
- gvplugin_package_t *packages; /* list of available packages */
- /* externally provided write() displine */
- size_t (*write_fn) (GVJ_t *job, const char *s, size_t len);
- /* fonts and textlayout */
- Dtdisc_t textfont_disc;
- Dt_t *textfont_dt;
- gvplugin_active_textlayout_t textlayout; /* always use best avail for all jobs */
- // void (*free_layout) (void *layout); /* function for freeing layouts (mostly used by pango) */
-
- /* FIXME - everything below should probably move to GVG_t */
- /* gvrender_config() */
- GVJ_t *jobs; /* linked list of jobs */
- GVJ_t *job; /* current job */
- graph_t *g; /* current graph */
- /* gvrender_begin_job() */
- gvplugin_active_layout_t layout;
- char *graphname; /* name from graph */
- GVJ_t *active_jobs; /* linked list of active jobs */
- /* pagination */
- char *pagedir; /* pagination order */
- pointf margin; /* margins in graph units */
- pointf pad; /* pad in graph units */
- pointf pageSize; /* pageSize in graph units, not including margins */
- point pb; /* page size - including margins (inches) */
- boxf bb; /* graph bb in graph units, not including margins */
- int rotation; /* rotation - 0 = portrait, 90 = landscape */
- bool graph_sets_pad, graph_sets_margin, graph_sets_pageSize;
- /* layers */
- char *layerDelims; /* delimiters in layer names */
- char *layerListDelims; /* delimiters between layer ranges */
- char *layers; /* null delimited list of layer names */
- char **layerIDs; /* array of layer names */
- int numLayers; /* number of layers */
- int *layerlist;
- /* default font */
- char *defaultfontname;
- double defaultfontsize;
- /* default line style */
- char **defaultlinestyle;
- /* render defaults set from graph */
- gvcolor_t bgcolor; /* background color */
- /* whether to mangle font names (at least in SVG), usually false */
- int fontrenaming;
- };
- GVCINT_API GVC_t* gvCloneGVC (GVC_t *);
- GVCINT_API void gvFreeCloneGVC (GVC_t *);
- #ifdef _WIN32
- #define DIRSEP "\\"
- #else
- #define DIRSEP "/"
- #endif
- #undef GVCINT_API
- #ifdef __cplusplus
- }
- #endif
|