Annotation of researchv10no/cmd/pico/2bit.c, revision 1.1.1.1

1.1       root        1: ulong floyd[FSIZE+1][FSIZE+1];
                      2: ulong contab[RES+1];
                      3: Bitmap *icon;
                      4: 
                      5: drawface(lo, hi, facep)
                      6:        Point facep;
                      7: {
                      8: 
                      9:        ulong *p, *f;
                     10:        char *sq;
                     11:        int v, h, s, e, t, i;
                     12:        if (!icon)
                     13:                icon=balloc(Rect(0, 0, FSIZE, FSIZE), 1);
                     14:        if (!icon)
                     15:                return;
                     16:        if (hi<lo){e=hi; hi=lo; lo=e;}
                     17:        if (lo<0) lo=0; else if (RES<lo) lo=RES;
                     18:        if (hi<0) hi=0; else if (RES<hi) hi=RES;
                     19:        t = hi-lo;
                     20:        p = contab;
                     21:        for (v = 0;v !=lo; v++)
                     22:                *p++ = 0;
                     23:        for (;v !=hi; v++)
                     24:                *p++ = (v-lo)*RES/t;
                     25:        for (;v <= RES;v++)
                     26:                *p++ = RES;
                     27:        sq=squash[0];
                     28:        for (v=0;v!=FSIZE;v++) for(h=0,f=floyd[v];h!=FSIZE;h++)
                     29:                *f++ = contab[*sq++&0xFF];
                     30:        for (v = 0;v != FSIZE; v++)
                     31:        {       f = floyd[v];
                     32:                for (h=0,p=addr(icon, Pt(0, v));h<FSIZE;h+=16,p++)
                     33:                {       *p=0;
                     34:                        for(s=0;s!=16 && s+h!=FSIZE;s++,f++)
                     35:                        {       e=f[0];
                     36:                                e+=dithmat[s&7][v&7];
                     37:                                i=e/72;
                     38:                                if (i<0)
                     39:                                        i=0;
                     40:                                else if (i>3)
                     41:                                        i=3;
                     42:                                e-=(i*RES)/3;
                     43:                                *p|=(3-i)<<(30-2*s);
                     44: #ifndef THRESH
                     45:                                t=3*e/8;
                     46:                                f[FSIZE+1]+=t;
                     47:                                f[FSIZE+2]+=e-2*t;
                     48:                                f[1]+=t;
                     49: #endif
                     50:                        }
                     51:                }
                     52:        }
                     53:        bitblt(&display, facep, icon, icon->rect, S);
                     54: }
                     55: 

unix.superglobalmegacorp.com

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