Annotation of researchv10no/cmd/view2d/ramp.c, revision 1.1.1.1

1.1       root        1: /*% cyntax % && cc -go # %
                      2:  */
                      3: #include <stdio.h>
                      4: #include <libc.h>
                      5: #include "3610op.h"
                      6: main(argc, argv)
                      7: char *argv[];
                      8: {
                      9:        register r0=0, g0=0, b0=0, a0=255;
                     10:        register dr, dg, db, da;
                     11:        register x0=0, y0=0, x1=1280, y1=1024;
                     12:        register r1=255, g1=255, b1=255, a1=255;
                     13:        register i, n, d;
                     14:        register vert=0;
                     15:        while(argc>1 && argv[1][0]=='-') switch(argv[1][1]){
                     16:        default:
                     17:        Usage:
                     18:                fprintf(stderr,
                     19: "Usage: ramp [-w x0 y0 x1 y1] [-v] [[r0 [g0 b0 [a0]]] r1 [g1 b1 [a1]]]\n");
                     20:                exit(1);
                     21:        case 'w':
                     22:                if(argv[1][2])
                     23:                        argv[1]+=2;
                     24:                else{
                     25:                        --argc;
                     26:                        argv++;
                     27:                }
                     28:                if(argc<5) goto Usage;
                     29:                x0=atoi(argv[1]);
                     30:                y0=atoi(argv[2]);
                     31:                x1=atoi(argv[3]);
                     32:                y1=atoi(argv[4]);
                     33:                argc-=4;
                     34:                argv+=4;
                     35:                break;
                     36:        case 'v':
                     37:                vert++;
                     38:                --argc;
                     39:                argv++;
                     40:                break;
                     41:        }
                     42:        switch(argc){
                     43:        case 1:
                     44:                break;
                     45:        case 2:
                     46:                r1=g1=b1=atoi(argv[1]);
                     47:                break;
                     48:        case 3:
                     49:                r0=g0=b0=atoi(argv[1]);
                     50:                r1=g1=b1=atoi(argv[2]);
                     51:                break;
                     52:        case 4:
                     53:                r1=atoi(argv[1]); g1=atoi(argv[2]); b1=atoi(argv[3]);
                     54:                break;
                     55:        case 5:
                     56:                r0=atoi(argv[1]); g0=atoi(argv[2]); b0=atoi(argv[3]);
                     57:                a0=atoi(argv[4]);
                     58:                break;
                     59:        case 7:
                     60:                r0=atoi(argv[1]); g0=atoi(argv[2]); b0=atoi(argv[3]);
                     61:                r1=atoi(argv[4]); g1=atoi(argv[5]); b1=atoi(argv[6]);
                     62:                break;
                     63:        case 9:
                     64:                r0=atoi(argv[1]); g0=atoi(argv[2]); b0=atoi(argv[3]);
                     65:                a0=atoi(argv[4]);
                     66:                r1=atoi(argv[5]); g1=atoi(argv[6]); b1=atoi(argv[7]);
                     67:                a1=atoi(argv[8]);
                     68:                break;
                     69:        default:
                     70:                goto Usage;
                     71:        }
                     72:        msnare();
                     73:        if(x0>x1){ d=x0; x0=x1; x1=d; }
                     74:        if(y0>y1){ d=y0; y0=y1; y1=d; }
                     75:        dr=r1-r0;
                     76:        dg=g1-g0;
                     77:        db=b1-b0;
                     78:        da=a1-a0;
                     79:        mcmd(WRMSKL); mlong(0xffffffff);
                     80:        mcmd(WRBANK); mbyte(15);
                     81:        if(vert){
                     82:                n=y1-y0;
                     83:                d=n>1?n-1:1;
                     84:                for(i=0;i!=n;i++)
                     85:                        rect(x0, i+y0, x1, i+y0+1,
                     86:                                r0+dr*i/d, g0+dg*i/d, b0+db*i/d, a0+da*i/d);
                     87:        }
                     88:        else{
                     89:                n=x1-x0;
                     90:                d=n>1?n-1:1;
                     91:                for(i=0;i!=n;i++)
                     92:                        rect(i+x0, y0, i+x0+1, y1,
                     93:                                r0+dr*i/d, g0+dg*i/d, b0+db*i/d, a0+da*i/d);
                     94:        }
                     95:        mflush();
                     96:        exit(0);
                     97: }
                     98: rect(x0, y0, x1, y1, r, g, b, a){
                     99:        mcmd(MOVP1); mword(x0); mword(y0);
                    100:        mcmd(MOVP2); mword(x1-1); mword(y1-1);
                    101:        mcmd(SETCLL); mbyte(a); mbyte(r); mbyte(g); mbyte(b);
                    102:        mcmd(FFILL);
                    103: }

unix.superglobalmegacorp.com

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