Annotation of researchv10no/cmd/view2d/Tri/pack.c, revision 1.1.1.1

1.1       root        1: /*
                      2:   ...dump vector in two-digit base-64 compressed format...
                      3: */
                      4: 
                      5: #include <stdio.h>
                      6: #include "../view2d.h"
                      7: #define INF 1e25
                      8: 
                      9: pack(n,f)
                     10:   int n;
                     11:   float f[];
                     12: {
                     13:   float *t;
                     14:   float fmin = INF, fmax = -INF;
                     15:   float floor = -INF;
                     16:   for(t=f+n; t!=f; t--){
                     17:     if( *t<fmin) fmin= *t;
                     18:     if( *t>fmax) fmax= *t;
                     19:     }
                     20:   printf("%d %e %e\n",n,fmin,fmax);
                     21:   v2pack(n,f,fmin,fmax,floor);
                     22: }
                     23: 
                     24: /* write compressed values */
                     25: v2pack(n,data,fmin,fmax,floor)
                     26:   int n;
                     27:   float *data;
                     28:   float fmin, fmax;  /* data range before compression */
                     29:   float floor;  /* value to flag out of bounds */
                     30: {
                     31:   int code, hi, lo, i;
                     32:   float frange, slope, t;
                     33:   frange = fmax - fmin;
                     34:   if(frange==0.) frange=1.;
                     35:   slope = 4095 / frange;
                     36:   for(i=1; i<=n; i++, data++){
                     37:     t = *data;
                     38:     if( t <= floor ){
                     39:       putchar('~');
                     40:       putchar('~');
                     41:     }else{
                     42:       code = slope*(t-fmin);
                     43:          if(code>4095){ code=4095; }else if(code<0){ code = 0; }
                     44:       lo = code%64;
                     45:       hi = code/64;
                     46:       putchar(hi+33);
                     47:       putchar(lo+33);
                     48:     }
                     49:     if(i%38==0) putchar('\n');
                     50:   }
                     51:   if(n%38!=0) putchar('\n');
                     52: }

unix.superglobalmegacorp.com

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