Annotation of researchv10no/cmd/pico/2bit.c, revision 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.