/* * File: prefs.c * Project: DXF to RIB * (c) SPDsoft Tuesday, June 21, 1994, GTIC */ #include #ifdef MYGETOPT char getopt( int argc, char *argv[], char *format ); #else #include #endif #include "taylor.h" #include "prefs.h" #include "errors.h" #include "version.h" static void usage(char *name); static void usage(char *name) { DoError(NO_ERR,INFO_ERR, "Usage: %s [-hVcs][-vRtMS][files]",name); DoError(NO_ERR,INFO_ERR,"Translate DXF to RIB"); DoError(NO_ERR,INFO_ERR,"-h: This text"); DoError(NO_ERR,INFO_ERR,"-V: Print Version"); DoError(NO_ERR,INFO_ERR,"-c: To stdout"); DoError(NO_ERR,INFO_ERR,"-v n: Verbose Level (7 for quiet)"); DoError(NO_ERR,INFO_ERR,"-s: Make not-structured RIB"); DoError(NO_ERR,INFO_ERR,"-R n: Use n as radius in LINES"); DoError(NO_ERR,INFO_ERR,"-t n: 0=use polygon, 1=use triangles, 2=use bilinear patch"); DoError(NO_ERR,INFO_ERR,"-M n: Max vertex memory"); DoError(NO_ERR,INFO_ERR,"-B n: Max BLOCKS"); DoError(NO_ERR,INFO_ERR,"-S file: Use shaders in LAYERS"); DoError(NO_ERR,INFO_ERR,"-p: Generate Normals for Poly*Mesh"); exit(1); } boolean GetPrefs(PrefsType *PrefsPtr, int argc, char *argv[] ) { int opcion,i; float f; extern char *optarg; extern int optind,opterr; PrefsPtr->verbose=2; PrefsPtr->tostdout=false; PrefsPtr->fromstdin=false; PrefsPtr->structured=true; PrefsPtr->phong=false; PrefsPtr->P4=0; PrefsPtr->max_vertex=256; PrefsPtr->max_blocks=256; PrefsPtr->radius=0.0; PrefsPtr->shaderf=NULL; while ( (opcion=getopt(argc,argv,"hVcspv:R:t:M:B:S:")) != EOF ) { switch(opcion) { case 'V': DoError(NO_ERR,INFO_ERR,VERS_STR); exit(0); break; case 'h': usage(argv[0]); exit(0); break; case 'c': PrefsPtr->tostdout=true; break; case 's': PrefsPtr->structured=false; break; case 'p': PrefsPtr->phong=true; break; case 'v': i = atoi(optarg); if(( i < 0 )||(i>ASK_ERR)) DoError(INPUT_ERR,WARN_ERR,"Verbose: %d-%d,ignored ", 0,ASK_ERR); else PrefsPtr->verbose = i; break; case 'R': f = atof(optarg); if( f < 0.0 ) DoError(INPUT_ERR,WARN_ERR,"Radius: %f<0.0,ignored ", f); else PrefsPtr->radius = f; break; case 't': i = atoi(optarg); if(( i < 0 )||( i > 2 )) DoError(INPUT_ERR,WARN_ERR,"-t: %d out of range,ignored ", i); else PrefsPtr->P4 = i; break; case 'M': i = atoi(optarg); if( i < 0 ) DoError(INPUT_ERR,WARN_ERR,"-M: %d out of range,ignored ", i); else PrefsPtr->max_vertex = i; break; case 'B': i = atoi(optarg); if( i < 0 ) DoError(INPUT_ERR,WARN_ERR,"-B: %d out of range,ignored ", i); else PrefsPtr->max_blocks = i; break; case 'S': if((PrefsPtr->shaderf = FOPEN(optarg,"r"))==NULL) DoError(SYS_ERR,WARN_ERR,"%s: can't open ",optarg); break; default: usage(argv[0]); break; } } if(argc==optind) { PrefsPtr->fromstdin=true; PrefsPtr->tostdout=true; optind--; } return( true ); }