#endif
}
+#define SVG_COLORS_P 0
+
+static int dia_comparestr(const void *s1, const void *s2)
+{
+ return strcmp(*(char **) s1, *(char **) s2);
+}
+
+static char *dia_resolve_color(char *name)
+{
+/* color names from http://www.w3.org/TR/SVG/types.html */
+/* NB. List must be LANG_C sorted */
+ static char *svg_known_colors[] = {
+ "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure",
+ "beige", "bisque", "black", "blanchedalmond", "blue",
+ "blueviolet", "brown", "burlywood",
+ "cadetblue", "chartreuse", "chocolate", "coral",
+ "cornflowerblue", "cornsilk", "crimson", "cyan",
+ "darkblue", "darkcyan", "darkgoldenrod", "darkgray",
+ "darkgreen", "darkgrey", "darkkhaki", "darkmagenta",
+ "darkolivegreen", "darkorange", "darkorchid", "darkred",
+ "darksalmon", "darkseagreen", "darkslateblue", "darkslategray",
+ "darkslategrey", "darkturquoise", "darkviolet", "deeppink",
+ "deepskyblue", "dimgray", "dimgrey", "dodgerblue",
+ "firebrick", "floralwhite", "forestgreen", "fuchsia",
+ "gainsboro", "ghostwhite", "gold", "goldenrod", "gray",
+ "green", "greenyellow", "grey",
+ "honeydew", "hotpink", "indianred",
+ "indigo", "ivory", "khaki",
+ "lavender", "lavenderblush", "lawngreen", "lemonchiffon",
+ "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow",
+ "lightgray", "lightgreen", "lightgrey", "lightpink",
+ "lightsalmon", "lightseagreen", "lightskyblue",
+ "lightslategray", "lightslategrey", "lightsteelblue",
+ "lightyellow", "lime", "limegreen", "linen",
+ "magenta", "maroon", "mediumaquamarine", "mediumblue",
+ "mediumorchid", "mediumpurple", "mediumseagreen",
+ "mediumslateblue", "mediumspringgreen", "mediumturquoise",
+ "mediumvioletred", "midnightblue", "mintcream",
+ "mistyrose", "moccasin",
+ "navajowhite", "navy", "oldlace",
+ "olive", "olivedrab", "orange", "orangered", "orchid",
+ "palegoldenrod", "palegreen", "paleturquoise",
+ "palevioletred", "papayawhip", "peachpuff", "peru", "pink",
+ "plum", "powderblue", "purple",
+ "red", "rosybrown", "royalblue",
+ "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell",
+ "sienna", "silver", "skyblue", "slateblue", "slategray",
+ "slategrey", "snow", "springgreen", "steelblue",
+ "tan", "teal", "thistle", "tomato", "turquoise",
+ "violet",
+ "wheat", "white", "whitesmoke",
+ "yellow", "yellowgreen",
+ };
+
+ static char buf[SMALLBUF];
+ char *tok;
+ gvcolor_t color;
+
+ tok = canontoken(name);
+ if (!SVG_COLORS_P || (bsearch(&tok, svg_known_colors,
+ sizeof(svg_known_colors) / sizeof(char *),
+ sizeof(char *), dia_comparestr) == NULL)) {
+ /* if tok was not found in known_colors */
+ if (streq(tok, "transparent")) {
+ tok = "none";
+ } else {
+ colorxlate(name, &color, RGBA_BYTE);
+ sprintf(buf, "#%02x%02x%02x",
+ color.u.rgba[0], color.u.rgba[1], color.u.rgba[2]);
+ tok = buf;
+ }
+ }
+ return tok;
+}
+
static void dia_reset(void)
{
return rv;
}
-static char *dia_resolve_color(char *name)
-{
- extern char *svg_resolve_color(char *, int);
-#ifdef DIA_KNOWS_SVG_COLORNAMES
- return svg_resolve_color(name, 1);
-#else
- return svg_resolve_color(name, 0);
-#endif
-}
-
static void dia_grstyle(context_t * cp)
{
if (cp->pencolor != DEFAULT_COLOR) {
extern codegen_t QPDF_CodeGen, QEPDF_CodeGen, QBM_CodeGen;
#endif
- extern codegen_t FIG_CodeGen, HPGL_CodeGen, MAP_CodeGen,
+ extern codegen_t FIG_CodeGen, HPGL_CodeGen,
MIF_CodeGen, XDot_CodeGen, MP_CodeGen, PIC_CodeGen,
- PS_CodeGen, DIA_CodeGen, SVG_CodeGen, VTX_CodeGen;
-#ifdef HAVE_LIBGD
- extern codegen_t GD_CodeGen, memGD_CodeGen, VRML_CodeGen;
-#endif
+ DIA_CodeGen, VTX_CodeGen;
#endif
/*
#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},
-#ifdef HAVE_LIBGD
- {&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
-#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