From: ellson Date: Mon, 11 Jul 2005 19:06:55 +0000 (+0000) Subject: move codegen config code to gvconfig.c X-Git-Tag: LAST_LIBGRAPH~32^2~7471 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=09d4fdfbd9215b455e4f1a0a7b605df628be8470;p=graphviz move codegen config code to gvconfig.c --- diff --git a/lib/common/globals.h b/lib/common/globals.h index 39f174b1c..8d0aedc5b 100644 --- a/lib/common/globals.h +++ b/lib/common/globals.h @@ -62,14 +62,6 @@ extern "C" { EXTERN int Output_lang; /* POSTSCRIPT, DOT, etc. */ EXTERN FILE *Output_file; EXTERN int Obj; - - extern codegen_t FIG_CodeGen, HPGL_CodeGen, MAP_CodeGen, - MIF_CodeGen, XDot_CodeGen, MP_CodeGen, PIC_CodeGen, - PS_CodeGen, DIA_CodeGen, SVG_CodeGen, VRML_CodeGen, - VTX_CodeGen, GD_CodeGen, memGD_CodeGen; -#ifdef QUARTZ_RENDER - extern codegen_t QPDF_CodeGen, QEPDF_CodeGen, QBM_CodeGen; -#endif #endif EXTERN boolean Verbose, Reduce, UseRankdir, MemTest; diff --git a/lib/common/input.c b/lib/common/input.c index 91acf440d..4f0e5d7c4 100644 --- a/lib/common/input.c +++ b/lib/common/input.c @@ -19,18 +19,12 @@ #include "render.h" #include "htmltable.h" -#ifdef QUARTZ_RENDER -#include -#endif - -#define MAX_CODEGENS 100 +char *Gvfilepath; #if !defined(DISABLE_CODEGENS) && !defined(HAVE_GD_FREETYPE) codegen_t *Output_codegen; #endif -char *Gvfilepath; - static char *usageFmt = "Usage: %s [-Vv?] [-(GNE)name=val] [-(KTlso)] \n"; @@ -750,137 +744,3 @@ void dotneato_terminate(GVC_t * gvc) emit_jobs_eof(gvc); exit(graphviz_errors + agerrors()); } - -#ifndef DISABLE_CODEGENS -static codegen_info_t cg[MAX_CODEGENS] = { - {&PS_CodeGen, "ps", POSTSCRIPT}, - {&PS_CodeGen, "ps2", PDF}, - {&HPGL_CodeGen, "hpgl", HPGL}, - {&HPGL_CodeGen, "pcl", PCL}, - {&MIF_CodeGen, "mif", MIF}, - {&PIC_CodeGen, "pic", PIC_format}, - - {&GD_CodeGen, "gd", GD}, -#ifdef HAVE_LIBZ - {&GD_CodeGen, "gd2", GD2}, -#endif -#ifdef HAVE_GD_GIF - {&GD_CodeGen, "gif", GIF}, -#endif -#ifdef HAVE_GD_JPEG - {&GD_CodeGen, "jpg", JPEG}, - {&GD_CodeGen, "jpeg", JPEG}, -#endif -#ifdef HAVE_GD_PNG - {&GD_CodeGen, "png", PNG}, - {&VRML_CodeGen, "vrml", VRML}, -#endif - {&GD_CodeGen, "wbmp", WBMP}, -#ifdef HAVE_GD_XPM - {&GD_CodeGen, "xbm", XBM}, - {&GD_CodeGen, "xpm", XBM}, -#endif - -#ifdef QUARTZ_RENDER - {&QPDF_CodeGen, "pdf", QPDF}, - {&QEPDF_CodeGen, "epdf", QEPDF}, -#endif /* QUARTZ_RENDER */ - - {&MAP_CodeGen, "ismap", ISMAP}, - {&MAP_CodeGen, "imap", IMAP}, - {&MAP_CodeGen, "cmap", CMAP}, - {&MAP_CodeGen, "cmapx", CMAPX}, - {&VTX_CodeGen, "vtx", VTX}, - {&MP_CodeGen, "mp", METAPOST}, - {&FIG_CodeGen, "fig", FIG}, - {&SVG_CodeGen, "svg", SVG}, -#ifdef HAVE_LIBZ - {&SVG_CodeGen, "svgz", SVGZ}, - {&DIA_CodeGen, "dia", DIA}, -#endif -#define DUMMY_CodeGen XDot_CodeGen - {&DUMMY_CodeGen, "dot", ATTRIBUTED_DOT}, - {&DUMMY_CodeGen, "canon", CANONICAL_DOT}, - {&DUMMY_CodeGen, "plain", PLAIN}, - {&DUMMY_CodeGen, "plain-ext", PLAIN_EXT}, - {&DUMMY_CodeGen, "xdot", EXTENDED_DOT}, - {NULL, NULL, 0} -}; - -codegen_info_t *first_codegen(void) -{ - return cg; -} - -codegen_info_t *next_codegen(codegen_info_t * p) -{ - ++p; - -#ifdef QUARTZ_RENDER - static boolean unscanned = TRUE; - if (!p->name && unscanned) { - /* reached end of codegens but haven't yet scanned for Quicktime codegens... */ - - unscanned = FALSE; /* don't scan again */ - - ComponentDescription criteria; - criteria.componentType = GraphicsExporterComponentType; - criteria.componentSubType = 0; - criteria.componentManufacturer = 0; - criteria.componentFlags = 0; - criteria.componentFlagsMask = graphicsExporterIsBaseExporter; - - codegen_info_t *next_cg; - int next_id; - Component next_component; - - /* make each discovered Quicktime format into a codegen */ - for (next_cg = p, next_id = QBM_FIRST, next_component = - FindNextComponent(0, &criteria); - next_cg < cg + MAX_CODEGENS - 1 && next_id <= QBM_LAST - && next_component; - ++next_cg, ++next_id, next_component = - FindNextComponent(next_component, &criteria)) { - next_cg->cg = &QBM_CodeGen; - next_cg->id = next_id; - next_cg->info = next_component; - - /* get four chars of extension, trim and convert to lower case */ - char extension[5]; - GraphicsExportGetDefaultFileNameExtension((GraphicsExportComponent) next_component, (OSType *) & extension); - extension[4] = '\0'; - - char *extension_ptr; - for (extension_ptr = extension; *extension_ptr; - ++extension_ptr) - *extension_ptr = - *extension_ptr == ' ' ? '\0' : tolower(*extension_ptr); - next_cg->name = strdup(extension); - } - - /* add new sentinel at end of dynamic codegens */ - next_cg->cg = (codegen_t *) 0; - next_cg->id = 0; - next_cg->info = (void *) 0; - next_cg->name = (char *) 0; - } -#endif - return p; -} -#endif - -void config_codegen_builtins(GVC_t * gvc) -{ -#ifndef DISABLE_CODEGENS - codegen_info_t *p; - - for (p = cg; p->name; ++p) - gvplugin_install(gvc, - API_render, - p->name, - 0, - "cg", - NULL, - (gvplugin_installed_t *) p); -#endif -} diff --git a/lib/common/renderprocs.h b/lib/common/renderprocs.h index b163f4b80..4b5f704a6 100644 --- a/lib/common/renderprocs.h +++ b/lib/common/renderprocs.h @@ -61,7 +61,6 @@ extern "C" { extern void common_init_node(node_t * n); extern int common_init_edge(edge_t * e); extern void compute_bb(Agraph_t *); - extern void config_codegen_builtins(GVC_t * gvc); extern point coord(node_t * n); extern pointf cvt2ptf(point); extern point cvt2pt(pointf); diff --git a/lib/common/shapes.c b/lib/common/shapes.c index ac5cb62b8..05e2317f5 100644 --- a/lib/common/shapes.c +++ b/lib/common/shapes.c @@ -22,6 +22,10 @@ #include "htmltable.h" #include +#ifndef DISABLE_CODEGENS +extern codegen_t VRML_CodeGen; +#endif + #define FILLED (1 << 0) #define ROUNDED (1 << 1) #define DIAGONALS (1 << 2) diff --git a/lib/gvc/gvconfig.c b/lib/gvc/gvconfig.c index c8c082067..39fb4b57e 100644 --- a/lib/gvc/gvconfig.c +++ b/lib/gvc/gvconfig.c @@ -21,6 +21,7 @@ #include #include #include + #ifndef DISABLE_LTDL #include #include @@ -30,11 +31,20 @@ #include "types.h" #include "macros.h" +#include "const.h" #include "gvc.h" #include "graph.h" #ifndef DISABLE_CODEGENS -extern void config_codegen_builtins(GVC_t *gvc); +#ifdef QUARTZ_RENDER +#include + + extern codegen_t QPDF_CodeGen, QEPDF_CodeGen, QBM_CodeGen; +#endif + extern codegen_t FIG_CodeGen, HPGL_CodeGen, MAP_CodeGen, + MIF_CodeGen, XDot_CodeGen, MP_CodeGen, PIC_CodeGen, + PS_CodeGen, DIA_CodeGen, SVG_CodeGen, VRML_CodeGen, + VTX_CodeGen, GD_CodeGen, memGD_CodeGen; #endif #ifndef DISABLE_LTDL @@ -261,6 +271,127 @@ static void config_rescan(GVC_t *gvc, char *config_path) } #endif +#ifndef DISABLE_CODEGENS + +#define MAX_CODEGENS 100 + +static codegen_info_t cg[MAX_CODEGENS] = { + {&PS_CodeGen, "ps", POSTSCRIPT}, + {&PS_CodeGen, "ps2", PDF}, + {&HPGL_CodeGen, "hpgl", HPGL}, + {&HPGL_CodeGen, "pcl", PCL}, + {&MIF_CodeGen, "mif", MIF}, + {&PIC_CodeGen, "pic", PIC_format}, + + {&GD_CodeGen, "gd", GD}, +#ifdef HAVE_LIBZ + {&GD_CodeGen, "gd2", GD2}, +#endif +#ifdef HAVE_GD_GIF + {&GD_CodeGen, "gif", GIF}, +#endif +#ifdef HAVE_GD_JPEG + {&GD_CodeGen, "jpg", JPEG}, + {&GD_CodeGen, "jpeg", JPEG}, +#endif +#ifdef HAVE_GD_PNG + {&GD_CodeGen, "png", PNG}, + {&VRML_CodeGen, "vrml", VRML}, +#endif + {&GD_CodeGen, "wbmp", WBMP}, +#ifdef HAVE_GD_XPM + {&GD_CodeGen, "xbm", XBM}, + {&GD_CodeGen, "xpm", XBM}, +#endif + +#ifdef QUARTZ_RENDER + {&QPDF_CodeGen, "pdf", QPDF}, + {&QEPDF_CodeGen, "epdf", QEPDF}, +#endif /* QUARTZ_RENDER */ + + {&MAP_CodeGen, "ismap", ISMAP}, + {&MAP_CodeGen, "imap", IMAP}, + {&MAP_CodeGen, "cmap", CMAP}, + {&MAP_CodeGen, "cmapx", CMAPX}, + {&VTX_CodeGen, "vtx", VTX}, + {&MP_CodeGen, "mp", METAPOST}, + {&FIG_CodeGen, "fig", FIG}, + {&SVG_CodeGen, "svg", SVG}, +#ifdef HAVE_LIBZ + {&SVG_CodeGen, "svgz", SVGZ}, + {&DIA_CodeGen, "dia", DIA}, +#endif +#define DUMMY_CodeGen XDot_CodeGen + {&DUMMY_CodeGen, "dot", ATTRIBUTED_DOT}, + {&DUMMY_CodeGen, "canon", CANONICAL_DOT}, + {&DUMMY_CodeGen, "plain", PLAIN}, + {&DUMMY_CodeGen, "plain-ext", PLAIN_EXT}, + {&DUMMY_CodeGen, "xdot", EXTENDED_DOT}, + {NULL, NULL, 0} +}; + +codegen_info_t *first_codegen(void) +{ + return cg; +} + +codegen_info_t *next_codegen(codegen_info_t * p) +{ + ++p; + +#ifdef QUARTZ_RENDER + static boolean unscanned = TRUE; + if (!p->name && unscanned) { + /* reached end of codegens but haven't yet scanned for Quicktime codegens... */ + + unscanned = FALSE; /* don't scan again */ + + ComponentDescription criteria; + criteria.componentType = GraphicsExporterComponentType; + criteria.componentSubType = 0; + criteria.componentManufacturer = 0; + criteria.componentFlags = 0; + criteria.componentFlagsMask = graphicsExporterIsBaseExporter; + + codegen_info_t *next_cg; + int next_id; + Component next_component; + + /* make each discovered Quicktime format into a codegen */ + for (next_cg = p, next_id = QBM_FIRST, next_component = + FindNextComponent(0, &criteria); + next_cg < cg + MAX_CODEGENS - 1 && next_id <= QBM_LAST + && next_component; + ++next_cg, ++next_id, next_component = + FindNextComponent(next_component, &criteria)) { + next_cg->cg = &QBM_CodeGen; + next_cg->id = next_id; + next_cg->info = next_component; + + /* get four chars of extension, trim and convert to lower case */ + char extension[5]; + GraphicsExportGetDefaultFileNameExtension((GraphicsExportComponent) next_component, (OSType *) & extension); + extension[4] = '\0'; + + char *extension_ptr; + for (extension_ptr = extension; *extension_ptr; + ++extension_ptr) + *extension_ptr = + *extension_ptr == ' ' ? '\0' : tolower(*extension_ptr); + next_cg->name = strdup(extension); + } + + /* add new sentinel at end of dynamic codegens */ + next_cg->cg = (codegen_t *) 0; + next_cg->id = 0; + next_cg->info = (void *) 0; + next_cg->name = (char *) 0; + } +#endif + return p; +} +#endif + /* gvconfig - parse a config file and install the identified plugins */ @@ -280,7 +411,11 @@ void gvconfig(GVC_t * gvc) #endif #ifndef DISABLE_CODEGENS - config_codegen_builtins(gvc); + codegen_info_t *p; + + for (p = cg; p->name; ++p) + gvplugin_install(gvc, API_render, p->name, 0, + "cg", NULL, (gvplugin_installed_t *) p); #endif #ifdef DISABLE_LTDL diff --git a/lib/gvc/gvrender.c b/lib/gvc/gvrender.c index 1ff4b368a..6193c9bfc 100644 --- a/lib/gvc/gvrender.c +++ b/lib/gvc/gvrender.c @@ -39,6 +39,10 @@ #include "gvplugin_render.h" #include "gvc.h" +#ifndef DISABLE_CODEGENS +extern codegen_t PS_CodeGen; +#endif + /* FIXME - need these but without rest of crap in common/ */ extern void colorxlate(char *str, color_t * color, color_type_t target_type);