/* $Id: checkon.c,v 1.1.1.1 2003/07/21 16:18:41 pturner Exp $ * * routines for sanity checks * */ #include #include #include "globals.h" #include "noxprotos.h" int check_err = 0; int checkon_ticks(int gno) { /* TODO this is done in drawticks.c and the following may be unnecessary int i, n1, n2; double dx = g[gno].w.xg2 - g[gno].w.xg1; double dy = g[gno].w.yg2 - g[gno].w.yg1; for (i = 0; i < MAXAXES; i++) { if (g[gno].t[i].active == ON) { n1 = n2 = 0; if (g[gno].t[i].t_flag == ON) { if (i % 2 == 0) { n1 = dx / g[gno].t[i].tmajor; n2 = dx / g[gno].t[i].tminor; if (n1 > 500) { errwin("Too many X-axis major ticks (> 500)"); return 0; } if (n2 > 1000) { errwin("Too many X-axis minor ticks (> 1000)"); return 0; } } else { n1 = dy / g[gno].t[i].tmajor; n2 = dy / g[gno].t[i].tminor; if (n1 > 500) { errwin("Too many Y-axis major ticks (> 500)"); return 0; } if (n2 > 1000) { errwin("Too many Y-axis minor ticks (> 1000)"); return 0; } } } } } */ return 1; } int checkon_world(int gno) { double dx = g[gno].w.xg2 - g[gno].w.xg1; double dy = g[gno].w.yg2 - g[gno].w.yg1; if (g[gno].type == LOGX || g[gno].type == LOGXY) { if (g[gno].w.xg1 <= 0) { errwin("World X-min <= 0.0"); return 0; } if (g[gno].w.xg2 <= 0) { errwin("World X-max <= 0.0"); return 0; } } if (dx <= 0.0) { errwin("World DX <= 0.0"); return 0; } if (g[gno].type == LOGY || g[gno].type == LOGXY) { if (g[gno].w.yg1 <= 0.0) { errwin("World Y-min <= 0.0"); return 0; } if (g[gno].w.yg2 <= 0.0) { errwin("World Y-max <= 0.0"); return 0; } } if (dy <= 0.0) { errwin("World DY <= 0.0"); return 0; } return 1; } /* possibly defunct as reversal of axes depends on xv1 > xv2 */ int checkon_viewport(int gno) { double dx = g[gno].v.xv2 - g[gno].v.xv1; double dy = g[gno].v.yv2 - g[gno].v.yv1; if (dx <= 0.0) { errwin("Viewport DX <= 0.0"); return 0; } if (dy <= 0.0) { errwin("Viewport DY <= 0.0"); return 0; } return 1; } #define MAX_FONT 10 #define MAX_JUST 2 #define MAX_ARROW 3 #define MAX_PATTERN 30 #define MAX_PREC 10 int checkon(int prop, int old_val, int new_val) { char buf[256]; int retval = old_val; check_err = 0; switch (prop) { case LINEWIDTH: if (new_val >= 0 && new_val <= MAX_LINEWIDTH) { retval = new_val; } else { sprintf(buf, "LINEWIDTH out of bounds, should be from 0 to %d", MAX_LINEWIDTH); check_err = 1; } break; case LINESTYLE: if (new_val >= 0 && new_val <= MAX_LINESTYLE) { retval = new_val; } else { sprintf(buf, "LINESTYLE out of bounds, should be from 0 to %d", MAX_LINESTYLE); check_err = 1; } break; case COLOR: /* TODO use MAX_COLOR */ if (new_val >= 0 && new_val < 16) { retval = new_val; } else { sprintf(buf, "COLOR out of bounds, should be from 0 to %d", 16 - 1); check_err = 1; } break; case JUST: if (new_val >= 0 && new_val <= MAX_JUST) { retval = new_val; } else { sprintf(buf, "JUST out of bounds, should be from 0 to %d", MAX_JUST); check_err = 1; } break; case FONTP: if (new_val >= 0 && new_val < MAX_FONT) { retval = new_val; } else { sprintf(buf, "FONT out of bounds, should be from 0 to %d", MAX_FONT - 1); check_err = 1; } break; case ARROW: if (new_val >= 0 && new_val <= MAX_ARROW) { retval = new_val; } else { sprintf(buf, "ARROW out of bounds, should be from 0 to %d", MAX_ARROW); check_err = 1; } break; case PATTERN: if (new_val >= 0 && new_val < MAX_PATTERN) { retval = new_val; } else { sprintf(buf, "PATTERN out of bounds, should be from 0 to %d", MAX_PATTERN - 1); check_err = 1; } break; case SYMBOL: if (new_val >= 0 && new_val < MAXSYM) { retval = new_val; } else { sprintf(buf, "SYMBOL out of bounds, should be from 0 to %d", MAXSYM - 1); check_err = 1; } break; case PREC: if (new_val >= 0 && new_val < MAX_PREC) { retval = new_val; } else { sprintf(buf, "PREC out of bounds, should be from 0 to %d", MAX_PREC - 1); check_err = 1; } break; } if (check_err) { errwin(buf); } return retval; }