Example #1
0
void
save_range(FILE *fp, AXIS_INDEX axis)
{
    fprintf(fp, "set %srange [ ", axis_defaults[axis].name);
    if (axis_array[axis].set_autoscale & AUTOSCALE_MIN) {
	if (axis_array[axis].min_constraint & CONSTRAINT_LOWER ) {
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].min_lb, axis);
	    fputs(" < ", fp);
	}
	putc('*', fp);
	if (axis_array[axis].min_constraint & CONSTRAINT_UPPER ) {
	    fputs(" < ", fp);
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].min_ub, axis);
	}
    } else {
	SAVE_NUM_OR_TIME(fp, axis_array[axis].set_min, axis);
    }
    fputs(" : ", fp);
    if (axis_array[axis].set_autoscale & AUTOSCALE_MAX) {
	if (axis_array[axis].max_constraint & CONSTRAINT_LOWER ) {
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].max_lb, axis);
	    fputs(" < ", fp);
	}
	putc('*', fp);
	if (axis_array[axis].max_constraint & CONSTRAINT_UPPER ) {
	    fputs(" < ", fp);
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].max_ub, axis);
	}
    } else {
	SAVE_NUM_OR_TIME(fp, axis_array[axis].set_max, axis);
    }

    fprintf(fp, " ] %sreverse %swriteback",
	    axis_array[axis].range_flags & RANGE_REVERSE ? "" : "no",
	    axis_array[axis].range_flags & RANGE_WRITEBACK ? "" : "no");

    if (axis_array[axis].set_autoscale && fp == stderr) {
	/* add current (hidden) range as comments */
	fputs("  # (currently [", fp);
	if (axis_array[axis].set_autoscale & AUTOSCALE_MIN) {
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].min, axis);
	}
	putc(':', fp);
	if (axis_array[axis].set_autoscale & AUTOSCALE_MAX) {
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].max, axis);
	}
	fputs("] )\n", fp);
    } else
	putc('\n', fp);

    if (axis_array[axis].set_autoscale & (AUTOSCALE_FIXMIN))
	fprintf(fp, "set autoscale %sfixmin\n", axis_defaults[axis].name);
    if (axis_array[axis].set_autoscale & AUTOSCALE_FIXMAX)
	fprintf(fp, "set autoscale %sfixmax\n", axis_defaults[axis].name);
}
Example #2
0
static void
save_tics(FILE *fp, AXIS_INDEX axis)
{
    if ((axis_array[axis].ticmode & TICS_MASK) == NO_TICS) {
	fprintf(fp, "set no%stics\n", axis_defaults[axis].name);
	return;
    }
    fprintf(fp, "set %stics %s %s scale %g,%g %smirror %s ",
	    axis_defaults[axis].name,
	    ((axis_array[axis].ticmode & TICS_MASK) == TICS_ON_AXIS)
	    ? "axis" : "border",
	    (axis_array[axis].tic_in) ? "in" : "out",
	    axis_array[axis].ticscale, axis_array[axis].miniticscale,
	    (axis_array[axis].ticmode & TICS_MIRROR) ? "" : "no",
	    axis_array[axis].tic_rotate ? "rotate" : "norotate");
    if (axis_array[axis].tic_rotate)
    	fprintf(fp,"by %d ",axis_array[axis].tic_rotate);
    save_position(fp, &axis_array[axis].ticdef.offset, TRUE);
    if (axis_array[axis].manual_justify) {
    	switch (axis_array[axis].label.pos) {
    	case LEFT:{
		fputs(" left", fp);
		break;
	    }
    	case RIGHT:{
		fputs(" right", fp);
		break;
	    }
    	case CENTRE:{
		fputs(" center", fp);
		break;
	    }
    	}
    } else 
        fputs(" autojustify", fp);
    fprintf(fp, "\nset %stics ", axis_defaults[axis].name);
    switch (axis_array[axis].ticdef.type) {
    case TIC_COMPUTED:{
	    fputs("autofreq ", fp);
	    break;
	}
    case TIC_MONTH:{
	    fprintf(fp, "\nset %smtics", axis_defaults[axis].name);
	    break;
	}
    case TIC_DAY:{
	    fprintf(fp, "\nset %sdtics", axis_defaults[axis].name);
	    break;
	}
    case TIC_SERIES:
	if (axis_array[axis].ticdef.def.series.start != -VERYLARGE) {
	    SAVE_NUM_OR_TIME(fp,
			     (double) axis_array[axis].ticdef.def.series.start,
			     axis);
	    putc(',', fp);
	}
	fprintf(fp, "%g", axis_array[axis].ticdef.def.series.incr);
	if (axis_array[axis].ticdef.def.series.end != VERYLARGE) {
	    putc(',', fp);
	    SAVE_NUM_OR_TIME(fp,
			     (double) axis_array[axis].ticdef.def.series.end,
			     axis);
	}
	break;
    case TIC_USER:
	break;
    }

    fprintf(fp, (axis_array[axis].ticdef.rangelimited)?" rangelimit":" norangelimit");

    if (axis_array[axis].ticdef.font && *axis_array[axis].ticdef.font)
        fprintf(fp, " font \"%s\"", axis_array[axis].ticdef.font);

    if (axis_array[axis].ticdef.textcolor.type != TC_DEFAULT)
        save_textcolor(fp, &axis_array[axis].ticdef.textcolor);

    putc('\n', fp);

    if (axis_array[axis].ticdef.def.user) { 
	struct ticmark *t;
	fprintf(fp, "set %stics %s ", axis_defaults[axis].name,
		(axis_array[axis].ticdef.type == TIC_USER) ? "" : "add");
	fputs(" (", fp);
	for (t = axis_array[axis].ticdef.def.user; t != NULL; t = t->next) {
	    if (t->level < 0)	/* Don't save ticlabels read from data file */
		continue;
	    if (t->label)
		fprintf(fp, "\"%s\" ", conv_text(t->label));
	    SAVE_NUM_OR_TIME(fp, (double) t->position, axis);
	    if (t->level)
		fprintf(fp, " %d", t->level);
	    if (t->next) {
		fputs(", ", fp);
	    }
	}
	fputs(")\n", fp);
    }

}
Example #3
0
void
save_range(FILE *fp, AXIS_INDEX axis)
{
    if (axis_array[axis].linked_to_primary) {
	fprintf(fp, "set link %c2 ", axis_name(axis)[0]);
	if (axis_array[axis].link_udf->at)
	    fprintf(fp, "via %s ", axis_array[axis].link_udf->definition);
	if (axis_array[axis-SECOND_AXES].link_udf->at)
	    fprintf(fp, "inverse %s ", axis_array[axis-SECOND_AXES].link_udf->definition);
	fputs("\n\t", fp);
    }

    if (axis < PARALLEL_AXES)
	fprintf(fp, "set %srange [ ", axis_name(axis));
    else
	fprintf(fp, "set paxis %d range [ ", axis-PARALLEL_AXES+1);
    if (axis_array[axis].set_autoscale & AUTOSCALE_MIN) {
	if (axis_array[axis].min_constraint & CONSTRAINT_LOWER ) {
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].min_lb, axis);
	    fputs(" < ", fp);
	}
	putc('*', fp);
	if (axis_array[axis].min_constraint & CONSTRAINT_UPPER ) {
	    fputs(" < ", fp);
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].min_ub, axis);
	}
    } else {
	SAVE_NUM_OR_TIME(fp, axis_array[axis].set_min, axis);
    }
    fputs(" : ", fp);
    if (axis_array[axis].set_autoscale & AUTOSCALE_MAX) {
	if (axis_array[axis].max_constraint & CONSTRAINT_LOWER ) {
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].max_lb, axis);
	    fputs(" < ", fp);
	}
	putc('*', fp);
	if (axis_array[axis].max_constraint & CONSTRAINT_UPPER ) {
	    fputs(" < ", fp);
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].max_ub, axis);
	}
    } else {
	SAVE_NUM_OR_TIME(fp, axis_array[axis].set_max, axis);
    }

    fprintf(fp, " ] %sreverse %swriteback",
	    ((axis_array[axis].range_flags & RANGE_IS_REVERSED)) ? "" : "no",
	    axis_array[axis].range_flags & RANGE_WRITEBACK ? "" : "no");

    if (axis >= PARALLEL_AXES)
	return;

    if (axis_array[axis].set_autoscale && fp == stderr) {
	/* add current (hidden) range as comments */
	fputs("  # (currently [", fp);
	if (axis_array[axis].set_autoscale & AUTOSCALE_MIN) {
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].min, axis);
	}
	putc(':', fp);
	if (axis_array[axis].set_autoscale & AUTOSCALE_MAX) {
	    SAVE_NUM_OR_TIME(fp, axis_array[axis].max, axis);
	}
	fputs("] )\n", fp);
    } else
	putc('\n', fp);

    if (fp != stderr) {
	if (axis_array[axis].set_autoscale & (AUTOSCALE_FIXMIN))
	    fprintf(fp, "set autoscale %sfixmin\n", axis_name(axis));
	if (axis_array[axis].set_autoscale & AUTOSCALE_FIXMAX)
	    fprintf(fp, "set autoscale %sfixmax\n", axis_name(axis));
    }
}