Annotation of researchv10no/cmd/view2d/Old/level.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #include <math.h>
                      3: #include "view2d.h"
                      4: 
                      5: extern Rd2d rd;
                      6: char *progname;
                      7: short timewarp;
                      8: double ts, te;
                      9: int verbose;
                     10: int debug;
                     11: 
                     12: main(argc,argv)
                     13:   int argc;
                     14:   char **argv;
                     15: {
                     16:   register char *p;
                     17:   register int prange;
                     18:   register short *q;
                     19:   register int r, rmin;
                     20:   short *qend;
                     21:   char *pict;
                     22:   int ip;
                     23:   short *v;
                     24:   char *map;
                     25:   int black;
                     26:   int ncolor = 32;
                     27:   int ps;
                     28:   int wid;
                     29:   int coldstart = 1;
                     30:   int blanking = 1;
                     31:   int singstep = 0;
                     32:   int staticd = 0;
                     33:   int blueback = 0;
                     34:   int holly = 0;
                     35:   int i, j;
                     36:   short nx, ny, fru, frv;
                     37:   int frame, nframe, fx, fy, fz;
                     38:                     /*   RED  GREEN  BLUE */
                     39:   static int bankl[] = { 0x7E, 0x75, 0x53 };
                     40:   static int bankc[] = { 0x4,  0x2,  0x1 };
                     41:   int mapr[256], mapg[256], mapb[256];
                     42:   int period = 5;
                     43:   int printcol = 0;
                     44:   long ring, ttim;
                     45:   int nf;
                     46:   double frtime;
                     47:   double tim[201];
                     48:   char *Malloc();
                     49:   FILE *terminal = NULL;
                     50:   char junk[150];
                     51:   double cleft, cright;
                     52:   timewarp = -1;
                     53:   verbose = 0;
                     54:   progname=argv[0];
                     55:   map = NULL;
                     56:   debug = 0;
                     57: 
                     58:   for(argc--, argv++; *argv && (**argv == '-' ); argv++){
                     59:     switch(argv[0][1]){
                     60:      case 'B':
                     61:        blueback++;
                     62:        break;
                     63:      case 'D':
                     64:        debug++;
                     65:        break;
                     66:      case 'S':
                     67:        switch(argv[0][2]){
                     68:         case 'a': 
                     69:         case 'A': singstep = 1;
                     70:                   terminal=NULL;
                     71:                   break;
                     72:         case 'f': 
                     73:         case 'F': singstep = 1;
                     74:                   terminal = fopen("/dev/tty","r");
                     75:                   if(terminal==NULL) error("can't open /dev/tty");
                     76:                   break;
                     77:         case 'M': singstep = 1;
                     78:                   if(argv[0][3]!='\0') holly = atoi(&argv[0][3]);
                     79:                   else holly = 1;
                     80:                   break;
                     81:         case 'S': staticd = 1;
                     82:                   blanking = 1-blanking;
                     83:                   break;
                     84:        }
                     85:        break;
                     86:      case 'b':
                     87:        blanking = 1-blanking;
                     88:        break;
                     89:      case 'c':
                     90:        ncolor = atoi(&argv[0][2]);
                     91:        break;
                     92:      case 'm':
                     93:        map = &argv[0][2];
                     94:        break;
                     95:      case 'p':
                     96:        sscanf(&argv[0][2], "%d",&period);
                     97:        break;
                     98:      case 't':
                     99:        i = sscanf(&argv[0][2], "%he, %he", &ts, &te);
                    100:        if(i<=0) error("bad TS,TE");
                    101:        timewarp = i;
                    102:        break;
                    103:      case 'v':
                    104:        verbose++;
                    105:        if(argv[0][2]=='c') printcol++;
                    106:        break;
                    107:      case 'w':
                    108:        coldstart = 0;
                    109:        break;
                    110:      case 'T':
                    111:      case 'g':
                    112:      case 's':
                    113:        break;
                    114:      default:
                    115:      err:
                    116:        fprintf(stderr,"unrecognized option: %s\n",argv[0]);
                    117:        exit(1);
                    118:      }
                    119:    }
                    120: 
                    121:   if(*map=='a'){ ncolor=63; }
                    122:   if((timewarp>=0)&&verbose)
                    123:     fprintf(stderr,"timewarp=%d ts=%g te=%g\n",timewarp,ts,te);
                    124:   rd2dh(0,&nx,&ny);
                    125:   if((timewarp>=0)&&verbose)
                    126:     fprintf(stderr,"timewarp=%d ts=%g te=%g\n",timewarp,ts,te);
                    127:   if(verbose){
                    128:     fprintf(stderr,"nx=%d ny=%d\n",nx,ny);
                    129:     fprintf(stderr,"fmin=%g fmax=%g\n",rd.fmin,rd.fmax);
                    130:     if(holly) fprintf(stderr,"snap %d\n",holly);
                    131:     fprintf(stderr,"blanking=%d\n",blanking);
                    132:   }
                    133:   if((nx>512)||(ny>512)) error("picture too large %d,%d\n",nx,ny);
                    134:   v = (short *)Malloc(nx*ny*sizeof(short));
                    135:   pict = (char *)Malloc(nx*ny*sizeof(char));
                    136:   if(!debug) cvinit(coldstart);
                    137: 
                    138:   j = (nx>ny)?nx:ny;
                    139:   if     ( j>256 ){ ps=512; wid=1; }
                    140:   else if( j>128 ){ ps=256; wid=2; }
                    141:   else if( j> 64 ){ ps=128; wid=4; }
                    142:   else            { ps= 64; wid=8; }
                    143: 
                    144:   prange = ((int)rd.pmax)-rd.pmin;
                    145:   if(prange==0) prange = 1;
                    146:   if(!debug){
                    147:     black = cvmap(map,ncolor-1,mapr,mapg,mapb);
                    148:     if(blueback){ cvput(0x1C);cvput(black);cvput(0);cvput(0);cvput(120); }
                    149:     cvvalue(black,black,black);
                    150:     cvflood();
                    151:     j = (nx>ny)?nx:ny;
                    152:     if(!staticd){
                    153:       if     ( j>256 ){ zoom(1); }
                    154:       else if( j>128 ){ zoom(2); }
                    155:       else if( j> 64 ){ zoom(4); }
                    156:       else            { zoom(8); }
                    157:     }
                    158:     if(printcol){
                    159:       for(j=0; j<=ncolor-1; j++){
                    160:         cleft  = rd.fmin +     j*(rd.fmax-rd.fmin)/ncolor;
                    161:         cright = rd.fmin + (j+1)*(rd.fmax-rd.fmin)/ncolor;
                    162:         fprintf(stderr,"color %4d%4d%4d = %g to %g\n",
                    163:             mapr[j], mapg[j], mapb[j], cleft, cright );
                    164:       }
                    165:     }
                    166:   }
                    167: 
                    168:   frame=blanking;
                    169:   while(rd2di(&frtime,v)){
                    170:     if(verbose) fprintf(stderr,"time=%.9g frame %d\n",frtime,frame);
                    171:     if(frame<200) tim[frame]=frtime;
                    172:     if(coldstart!=0){
                    173:       fx = frame%wid;
                    174:       fy = wid-1 - (frame/wid)%wid;
                    175:       fz = frame/(wid*wid);
                    176:       if(singstep){ fx=1; fy=1; fz=1; }
                    177:       if(fz>2) error("too many frames %d  time=%g",frame,frtime);
                    178:       p = pict;
                    179:       q = v;
                    180:       if(*map=='a'){
                    181:         qend = q+nx*ny;
                    182:         for(; q<qend; q++,p++){
                    183:           *p = *q;
                    184:         }
                    185:       }else{
                    186:         rmin = rd.pmin;
                    187:         qend = q+nx*ny;
                    188:         for(; q<qend; q++,p++){
                    189:           r = *q;
                    190:           if( r < -BIG ){ *p = black; }
                    191:            else{
                    192:             *p = ((r-rmin)*ncolor)/prange;
                    193:             if(*p>=ncolor) *p = ncolor-1;
                    194:            }
                    195:         }
                    196:       }
                    197:       if(!debug){
                    198:         if(!staticd) cvload(4,ps*fx+nx/2,ps*fy+ny/2);
                    199:         lutrte(bankl[fz]);
                    200:         image(pict, ps*fx, ps*fy, ps*fx + nx-1, ps*fy + ny-1, bankc[fz]);
                    201:         cvflush();
                    202:       }
                    203:       if(singstep){
                    204:         if(holly){
                    205:           /*  ***commented out because rd.nfr no longer defined***
                    206:           fprintf(stderr,"time=%g  %.1f\n",frtime,
                    207:                   holly*13.5*(rd.nfr-frame+1)/60.);  /**/
                    208:           sprintf(junk,"snap %d",holly);
                    209:           system(junk);
                    210:         }else if(terminal==NULL){
                    211:           fprintf(stderr,"time=%g frame %d\n",frtime,frame);
                    212:         }else{
                    213:           fprintf(stderr,"time=%g frame %d   GO? ",frtime,frame);
                    214:           fgets(junk,100,terminal);
                    215:           if((junk[0]=='s')||(junk[0]=='S')){
                    216:             system("snap");
                    217:             junk[0]=' ';
                    218:           }
                    219:           if(sscanf(junk,"%d",&j)==1){
                    220:             if(verbose) fprintf(stderr," skipping %d.. ",j);
                    221:             frame += j-1;
                    222:             rd2dj(j-1);
                    223:           }
                    224:         }
                    225:       }
                    226:     }
                    227:     frame++;
                    228:   }
                    229:   nframe = frame-blanking;
                    230:   if(verbose) fprintf(stderr,"%d frames\n%d colors\n",nframe,ncolor);
                    231:   if(debug||singstep||staticd){ exit(0); }
                    232: 
                    233:   if(nframe>1){
                    234:     if(nframe>200) nframe = 200;
                    235:     period *= 1000;  /* convert to milliseconds */
                    236:     ttim = (tim[nframe]-tim[blanking]);
                    237:     if(ttim<=0){  /* if user gave unreasonable times, fake it */
                    238:       for(i=blanking+1; i<=nframe; i++){
                    239:         tim[i] = tim[i-1]+1;
                    240:       }
                    241:     }
                    242:     if(blanking) tim[0] = 2*tim[1]-tim[2];
                    243:     tim[nframe+1] = 2*tim[nframe]-tim[nframe-1];
                    244:     ttim = (tim[nframe]-tim[1] + (tim[2]-tim[1]+tim[nframe]-tim[nframe-1])/2);
                    245:   }
                    246:   frame=blanking;
                    247:   while(1){  /**** infinite loop ****/
                    248:     fx = frame%wid;
                    249:     fy = wid-1 - (frame/wid)%wid;
                    250:     fz = frame/(wid*wid);
                    251:     cvload(4,ps*fx+nx/2,ps*fy+ny/2);
                    252:     lutrte(bankl[fz]);
                    253:     cvflush();
                    254:     if(nframe==1) exit(0);
                    255:     ring = (frame==0)? 500: (period*(tim[frame+1]-tim[frame-1])) / (2*ttim);
                    256:       /* conceptually, display frame i from halfway between (i-1,i) until
                    257:          halfway between (i,i+1).    ring = delay time in ms. */
                    258:     ring = (ring*60)/1000;  /* convert to 1/60 sec ticks */
                    259:     while( ring>=120 ){
                    260:       nap(119);
                    261:       ring -= 119;
                    262:      }
                    263:     nap(ring);
                    264:     if(++frame>nframe-1+blanking) frame = 0;
                    265:   }
                    266: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.