Annotation of researchv10no/cmd/view2d/Old/level.c, revision 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.