Ejemplo n.º 1
0
int svg_init(char *filename, int color)
{ 
	FILE *fp;
    	
	init_svg();
	char css[256];
	
	
	LastPSX=-10000;
        LastPSY=-10000;
	
	if((svgfile=fopen(filename,"w"))==NULL){
	  err_msg("Cannot open file ");
	  return(0);
	}
	PltFmtFlag=SVGFMT;

	fprintf(svgfile,"<!-- Uncomment following when using your own custom external stylesheet.-->\n");
	fprintf(svgfile,"<!--\n");
	fprintf(svgfile,"<?xml-stylesheet type=\"text/css\" href=\"xppaut-stylesheet.css\" ?>\n");
	fprintf(svgfile,"-->\n");
	fprintf(svgfile,"<svg  xmlns=\"http://www.w3.org/2000/svg\"\n");
	fprintf(svgfile,"      xmlns:xlink=\"http://www.w3.org/1999/xlink\" font-size=\"12pt\" width=\"640\" height=\"400\">\n");
	fprintf(svgfile,"\n\n      <defs>\n");
	fprintf(svgfile,"          <circle class=\"xpppointP\" id = \"xpppointP\"  r = \"1\"  stroke-width = \"1\"/>\n");
	fprintf(svgfile,"          <circle class=\"xppbead\" id = \"xppbead\"  r = \"1\"  stroke-width = \"1\"/>\n");
	fprintf(svgfile,"          <circle class=\"xpppointD\" id = \"xpppointD\"  r = \"1\"  stroke-width = \"1\"/>\n");
	fprintf(svgfile,"          <circle class=\"xpppointA\" id = \"xpppointA\"  r = \"1\"  stroke-width = \"1\"/>\n");
	fprintf(svgfile,"          <circle class=\"xpppointB\" id = \"xpppointB\"  r = \"1\"  stroke-width = \"1\"/>\n");
	fprintf(svgfile,"          <circle class=\"xpppointC\" id = \"xpppointC\"  r = \"1\"  stroke-width = \"1\"/>\n");
	fprintf(svgfile,"          <circle class=\"xpppointT\" id = \"xpppointT\"  r = \"1\"  stroke-width = \"1\"/>\n");
	fprintf(svgfile,"          <circle class=\"xpppointS\" id = \"xpppointS\"  r = \"1\"  stroke-width = \"1\"/>\n");
	fprintf(svgfile,"          <circle class=\"xpppointK\" id = \"xpppointK\"  r = \"3\"  stroke-width = \"0.75\"/>\n");
	fprintf(svgfile,"          <circle class=\"xpppointF\" id = \"xpppointF\"  r = \"2\"  stroke-width = \"0\"/>\n");
	fprintf(svgfile,"      </defs>\n\n");
	fprintf(svgfile,"\n\n");
	fprintf(svgfile,"      <!-- Comment out the following style block when using your own custom external stylesheet.-->\n");
	fprintf(svgfile,"      <!-- As a starting point for your custom external stylesheet, consider copying the style \n");
	fprintf(svgfile,"           information (between but not including CDATA tags) to a file named xppaut-stylesheet.css \n");
	fprintf(svgfile,"       -->\n");
	fprintf(svgfile,"      <style type=\"text/css\">\n");
	fprintf(svgfile,"           <![CDATA[\n");
	fprintf(svgfile,"      \n");

 
	
		fprintf(svgfile,"                 circle.xpppointP {\n");
		fprintf(svgfile,"                    stroke-width: 1.0;\n");
		fprintf(svgfile,"                 }\n\n");
		fprintf(svgfile,"                 circle.xpppointD {\n");
		fprintf(svgfile,"                    stroke-width: 1.0;\n");
		fprintf(svgfile,"                 }\n\n");
		fprintf(svgfile,"                 circle.xpppointA {\n");
		fprintf(svgfile,"                    stroke-width: 1.0;\n");
		fprintf(svgfile,"                 }\n\n");
		fprintf(svgfile,"                 circle.xpppointB {\n");
		fprintf(svgfile,"                    stroke-width: 1.0;\n");
		fprintf(svgfile,"                 }\n\n");
		fprintf(svgfile,"                 circle.xpppointC {\n");
		fprintf(svgfile,"                    stroke-width: 1.0;\n");
		fprintf(svgfile,"                 }\n\n");
		fprintf(svgfile,"                 circle.xpppointT {\n");
		fprintf(svgfile,"                    stroke-width: 1.0;\n");
		fprintf(svgfile,"                 }\n\n");
		fprintf(svgfile,"                 circle.xpppointS {\n");
		fprintf(svgfile,"                    stroke-width: 1.0;\n");
		fprintf(svgfile,"                 }\n\n");
		fprintf(svgfile,"                 circle.xpppointK {\n");
		fprintf(svgfile,"                    stroke-width: 1.0;\n");
		fprintf(svgfile,"                 }\n\n");
		fprintf(svgfile,"                 circle.xpppointF {\n");
		fprintf(svgfile,"                    stroke-width: 1.0;\n");
		fprintf(svgfile,"                 }\n\n");
		fprintf(svgfile,"                 line.xppaxes {\n");
		fprintf(svgfile,"                    stroke: #000000;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppboxaxes {\n");
		fprintf(svgfile,"                    stroke: #000000;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppdfield {\n");
		fprintf(svgfile,"                    stroke: #000000;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xpplineb {\n");
		fprintf(svgfile,"                    stroke: #000000;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xpplinea {\n");
		fprintf(svgfile,"                    stroke-dasharray: 2,8;\n");
		fprintf(svgfile,"                    stroke-width: 2;\n");
		fprintf(svgfile,"                    stroke: #000000;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline0 {\n");
		fprintf(svgfile,"                    stroke: #000000;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline1 {\n");
		fprintf(svgfile,"                    stroke-width: 1;\n");
		fprintf(svgfile,"                    stroke: #FF0000;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline2 {\n");
		fprintf(svgfile,"                    stroke: #F06400;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline3 {\n");
		fprintf(svgfile,"                    stroke: #FFA500;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline4 {\n");
		fprintf(svgfile,"                    stroke: #FFCD00;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline5 {\n");
		fprintf(svgfile,"                    stroke: #C8C800;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline6 {\n");
		fprintf(svgfile,"                    stroke: #00FF00;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline7 {\n");
		fprintf(svgfile,"                    stroke: #32CD32;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline8 {\n");
		fprintf(svgfile,"                    stroke: #00C8C8;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xppline9 {\n");
		fprintf(svgfile,"                    stroke: #0000FF;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 line.xpplinec {\n");
		fprintf(svgfile,"                    stroke: #000000;\n");
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 \n");
		fprintf(svgfile,"                 text.xpptext {\n");
		fprintf(svgfile,"                    font-family: sans-serif;\n");
		fprintf(svgfile,"                    font-size  : 1em;\n");
		fprintf(svgfile,"                    stroke	: #000000;\n");
		fprintf(svgfile,"                    fill	: #000000;\n"); /*Need to support more than 1 vertical centering tactic!*/ 
		fprintf(svgfile,"                    baseline-shift:-33%%;\n"); /*Supported in Inkscape v0.48.2, but not in Firefox v13*/
		fprintf(svgfile,"                    dominant-baseline: central;\n");/*Supported in Firefox v13, but not in Inkscape v0.48.2*/
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 text.xppyaxislabelh {\n");
		fprintf(svgfile,"                    font-family: sans-serif;\n");
		fprintf(svgfile,"                    font-size  : 1em;\n");
		fprintf(svgfile,"                    stroke	: none;\n");
		fprintf(svgfile,"                    fill	: none;\n"); /*Need to support more than 1 vertical centering tactic!*/ 
		fprintf(svgfile,"                    baseline-shift:-33%%;\n"); /*Supported in Inkscape v0.48.2, but not in Firefox v13*/
		fprintf(svgfile,"                    dominant-baseline: central;\n");/*Supported in Firefox v13, but not in Inkscape v0.48.2*/
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 text.xppyaxislabelv {\n");
		fprintf(svgfile,"                    font-family: sans-serif;\n");
		fprintf(svgfile,"                    font-size  : 1em;\n");
		fprintf(svgfile,"                    stroke	: #000000;\n");
		fprintf(svgfile,"                    fill	: #000000;\n"); /*Need to support more than 1 vertical centering tactic!*/ 
		fprintf(svgfile,"                    baseline-shift:-33%%;\n"); /*Supported in Inkscape v0.48.2, but not in Firefox v13*/
		fprintf(svgfile,"                    dominant-baseline: central;\n");/*Supported in Firefox v13, but not in Inkscape v0.48.2*/
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 text.xppaxestext {\n");
		fprintf(svgfile,"                    font-family: sans-serif;\n");
		fprintf(svgfile,"                    font-size  : 1em;\n");
		fprintf(svgfile,"                    stroke	: #000000;\n");
		fprintf(svgfile,"                    fill	: #000000;\n"); /*Need to support more than 1 vertical centering tactic!*/ 
		fprintf(svgfile,"                    baseline-shift:-33%%;\n"); /*Supported in Inkscape v0.48.2, but not in Firefox v13*/
		fprintf(svgfile,"                    dominant-baseline: central;\n");/*Supported in Firefox v13, but not in Inkscape v0.48.2*/
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 \n");
		fprintf(svgfile,"                 text.xpptext0 {\n");
		fprintf(svgfile,"                    font-family: sans-serif;\n");
		fprintf(svgfile,"                    font-size  : 0.5em;\n");
		fprintf(svgfile,"                    stroke	: #000000;\n");
		fprintf(svgfile,"                    fill	: #000000;\n"); /*Need to support more than 1 vertical centering tactic!*/ 
		fprintf(svgfile,"                    baseline-shift:-33%%;\n"); /*Supported in Inkscape v0.48.2, but not in Firefox v13*/
		fprintf(svgfile,"                    dominant-baseline: central;\n");/*Supported in Firefox v13, but not in Inkscape v0.48.2*/
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 \n");
		fprintf(svgfile,"                 text.xpptext1 {\n");
		fprintf(svgfile,"                    font-family: sans-serif;\n");
		fprintf(svgfile,"                    font-size  : 0.75em;\n");
		fprintf(svgfile,"                    stroke	: #000000;\n");
		fprintf(svgfile,"                    fill	: #000000;\n"); /*Need to support more than 1 vertical centering tactic!*/ 
		fprintf(svgfile,"                    baseline-shift:-33%%;\n"); /*Supported in Inkscape v0.48.2, but not in Firefox v13*/
		fprintf(svgfile,"                    dominant-baseline: central;\n");/*Supported in Firefox v13, but not in Inkscape v0.48.2*/
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 \n");
		fprintf(svgfile,"                 text.xpptext2 {\n");
		fprintf(svgfile,"                    font-family: sans-serif;\n");
		fprintf(svgfile,"                    font-size  : 1em;\n");
		fprintf(svgfile,"                    stroke	: #000000;\n");
		fprintf(svgfile,"                    fill	: #000000;\n"); /*Need to support more than 1 vertical centering tactic!*/ 
		fprintf(svgfile,"                    baseline-shift:-33%%;\n"); /*Supported in Inkscape v0.48.2, but not in Firefox v13*/
		fprintf(svgfile,"                    dominant-baseline: central;\n");/*Supported in Firefox v13, but not in Inkscape v0.48.2*/
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 \n");
		fprintf(svgfile,"                 text.xpptext3 {\n");
		fprintf(svgfile,"                    font-family: sans-serif;\n");
		fprintf(svgfile,"                    font-size  : 1.25em;\n");
		fprintf(svgfile,"                    stroke	: #000000;\n");
		fprintf(svgfile,"                    fill	: #000000;\n"); /*Need to support more than 1 vertical centering tactic!*/ 
		fprintf(svgfile,"                    baseline-shift:-33%%;\n"); /*Supported in Inkscape v0.48.2, but not in Firefox v13*/
		fprintf(svgfile,"                    dominant-baseline: central;\n");/*Supported in Firefox v13, but not in Inkscape v0.48.2*/
		fprintf(svgfile,"                 }\n");
		fprintf(svgfile,"                 \n");
		fprintf(svgfile,"                 text.xpptext4 {\n");
		fprintf(svgfile,"                    font-family: sans-serif;\n");
		fprintf(svgfile,"                    font-size  : 1.5em;\n");
		fprintf(svgfile,"                    stroke	: #000000;\n");
		fprintf(svgfile,"                    fill	: #000000;\n"); /*Need to support more than 1 vertical centering tactic!*/ 
		fprintf(svgfile,"                    baseline-shift:-33%%;\n"); /*Supported in Inkscape v0.48.2, but not in Firefox v13*/
		fprintf(svgfile,"                    dominant-baseline: central;\n");/*Supported in Firefox v13, but not in Inkscape v0.48.2*/
		fprintf(svgfile,"                 }\n");
	
		sprintf(css,"%s/xppaut-stylesheet.css",getenv("HOME"));
		fp=fopen(css,"r");
		if(fp!=NULL)
		{
			plintf("Styling svg image according to %s\n",css);
			char bob[256];
			while(!feof(fp))
			{ 
				bob[0]='\0';
				fgets(bob,255,fp);
        			fprintf(svgfile,"%s",bob);

			}
			
			fclose(fp);
		}
	
	
	fprintf(svgfile,"           ]]>\n");
	fprintf(svgfile,"      </style>\n\n");

        return(1);
}
Ejemplo n.º 2
0
void args_handle(config *cfg, int argc, char **argv) {
    int fl;
    while ((fl = getopt(argc, argv, "Acd:fhl:m:rsSx")) != -1) {
        switch (fl) {
        case 'A':               /* no axis */
            cfg->axis = false;
            break;
        case 'c':               /* use colorblind-safe default colors */
            cfg->colorblind = true;
            break;
        case 'd':               /* dimensions */
            parse_dims(cfg, optarg);
            break;
        case 'f':               /* flip x/y */
            cfg->flip_xy = true;
            break;
        case 'h':               /* help */
            usage(NULL);
            break;
        case 'l':               /* log */
            if (strchr(optarg, 'x')) {
                cfg->log_x = true;
            }
            if (strchr(optarg, 'y')) {
                cfg->log_y = true;
            }
            if (strchr(optarg, 'c')) {
                cfg->log_count = true;
            }
            break;
        case 'm':               /* mode */
            switch (optarg[0]) {
            case 'c':
                cfg->mode = MODE_COUNT;
                break;
            case 'd':
                cfg->mode = MODE_DOT;
                break;
            case 'l':
                cfg->mode = MODE_LINE;
                break;
            default:
                usage("Bad argument to -m: must be 'count', 'dot', or 'line'.");
            }
            break;
        case 'r':               /* linear regression */
            cfg->regression = true;
            break;
        case 's':               /* SVG */
            cfg->plot_type = PLOT_SVG;
            break;
        case 'S':               /* disable stream mode */
            cfg->stream_mode = false;
            break;
        case 'x':               /* col 0 is X value */
            cfg->x_column = true;
            break;
        case '?':
        default:
            usage(NULL);
        }
    }

    argc -= (optind - 1);
    argv += (optind - 1);
    if (argc > 1) {
        cfg->in_path = argv[1];
        if (0 != strcmp("-", cfg->in_path)) {
            cfg->in = fopen(cfg->in_path, "r");
            if (cfg->in == NULL) {
                err(1, "fopen");
            }
        }
    }

    if (cfg->plot_type == PLOT_SVG) {
        init_svg(cfg);
    } else {
        init_ascii(cfg);
    }
}
Ejemplo n.º 3
0
/* -- output a EPS (-E) or SVG (-g) file -- */
void write_eps(void)
{
	unsigned i;
	char *p, title[80];

	if (mbf == outbuf
	 || !info['X' - 'A'])
		return;

	p_fmt = &cfmt;				/* tune format */

	if (epsf != 3) {			/* if not -z */
		strcpy(outfnam, outfn);
		if (outfnam[0] == '\0')
			strcpy(outfnam, OUTPUTFILE);
		cutext(outfnam);
		i = strlen(outfnam) - 1;
		if (i == 0 && outfnam[0] == '-') {
			if (epsf == 1) {
				error(1, NULL, "Cannot use stdout with '-E' - abort");
				exit(EXIT_FAILURE);
			}
			fout = stdout;
		} else {
			if (outfnam[i] == '=') {
				p = &info['T' - 'A']->text[2];
				while (isspace((unsigned char) *p))
					p++;
				strncpy(&outfnam[i], p, sizeof outfnam - i - 4);
				outfnam[sizeof outfnam - 5] = '\0';
				epsf_fn_adj(&outfnam[i]);
			} else {
				if (i >= sizeof outfnam - 4 - 3)
					i = sizeof outfnam - 4 - 3;
				sprintf(&outfnam[i + 1], "%03d", ++nepsf);
			}
			strcat(outfnam, epsf == 1 ? ".eps" : ".svg");
			if ((fout = fopen(outfnam, "w")) == NULL) {
				error(1, NULL, "Cannot open output file %s - abort",
						outfnam);
				exit(EXIT_FAILURE);
			}
		}
	}
	epsf_title(title, sizeof title);
	if (epsf == 1) {
		init_ps(title);
		fprintf(fout, "0.75 dup scale 0 %.1f T\n", -bposy);
		write_buffer();
		fprintf(fout, "showpage\nrestore\n");
	} else {
		if (epsf == 3 && file_initialized == 0)
			fputs("<br/>\n", fout);	/* new image in the same flow */
		init_svg(title);
		write_buffer();
		svg_close();
	}
	if (epsf != 3)
		close_fout();
	else
		file_initialized = 0;
	cur_lmarg = 0;
	cur_scale = 1.0;
}