*** gs.c.org Sun Oct 24 18:47:50 1993 --- gs.c Sun Oct 24 18:48:00 1993 *************** *** 25,30 **** --- 25,31 ---- #include "string_.h" /* Capture stdin/out/err before gs.h redefines them. */ #include + #include static FILE *real_stdin, *real_stdout, *real_stderr; static void get_real(void) *************** *** 108,116 **** --- 109,127 ---- private int quiet; private int batch; + /* Icky kludgy global flags */ + char svgalib_detected = 0; + char video_resolution[25]; + float size_multiplier = 1.0; + float adjust_xo = 0.0; + float adjust_yo = 0.0; + char xo_units = 'i'; + char yo_units = 'i'; + main(int argc, const char *argv[]) { int argi; char cstr[128]; + strcpy(video_resolution,"1024x768x256"); get_real(); gs_init0(real_stdin, real_stdout, real_stderr, argc); { char *lib = getenv(GS_LIB); *************** *** 204,209 **** --- 215,221 ---- private int swproc(const char *arg) { char sw = arg[1]; + char optionbuf[20], *ptr; arg += 2; /* skip - and letter */ switch ( sw ) { *************** *** 296,301 **** --- 308,358 ---- } } /* Enter the name in systemdict. */ + if (!strncmp(arg,"DEVICE=linux",12)) svgalib_detected = 1; + if (svgalib_detected == 1) { + if (!strncmp(arg,"MAGSTEP=",8)) { + strcpy(optionbuf,arg); + ptr = optionbuf; + ptr += 8; + size_multiplier=atof(ptr); + } + if (!strncmp(arg,"XO=",3)) { + strcpy(optionbuf,arg); + ptr = optionbuf; + ptr += 3; + adjust_xo=atof(ptr); + ptr++; + while (*ptr != 0) { + ptr++; + } + ptr--; + if (*ptr == 'n') { + xo_units = 'i'; + } else if (*ptr == 'm') { + xo_units = 'c'; + } else if (*ptr == '%') { + xo_units = '%'; + } + } + if (!strncmp(arg,"YO=",3)) { + strcpy(optionbuf,arg); + ptr = optionbuf; + ptr += 3; + adjust_yo=atof(ptr); + ptr++; + while (*ptr != 0) { + ptr++; + } + ptr--; + if (*ptr == 'n') { + yo_units = 'i'; + } else if (*ptr == 'm') { + yo_units = 'c'; + } else if (*ptr == '%') { + yo_units = '%'; + } + } + } initial_enter_string(arg, nlen, &value); break; } *************** *** 324,347 **** } break; case 'r': /* define device resolution */ ! { float xres, yres; ! ref value; ! gs_init1(); ! switch ( sscanf((char *)arg, "%fx%f", &xres, &yres) ) ! { ! default: ! puts("-r must be followed by or x"); ! gs_exit(1); ! case 1: /* -r */ ! yres = xres; ! case 2: /* -rx */ ! make_real(&value, xres); ! initial_enter_name("DEVICEXRESOLUTION", &value); ! make_real(&value, yres); ! initial_enter_name("DEVICEYRESOLUTION", &value); ! } break; ! } case 'v': /* print revision */ print_revision(); gs_exit(0); --- 381,410 ---- } break; case 'r': /* define device resolution */ ! if (svgalib_detected == 0) { ! { float xres, yres; ! ref value; ! gs_init1(); ! switch ( sscanf((char *)arg, "%fx%f", &xres, &yres) ) ! { ! default: ! puts("-r must be followed by or x"); ! gs_exit(1); ! case 1: /* -r */ ! yres = xres; ! case 2: /* -rx */ ! make_real(&value, xres); ! initial_enter_name("DEVICEXRESOLUTION", &value); ! make_real(&value, yres); ! initial_enter_name("DEVICEYRESOLUTION", &value); ! } ! break; ! } ! } else { ! strcpy(video_resolution,arg); ! video_resolution[24] = 0; break; ! } case 'v': /* print revision */ print_revision(); gs_exit(0);