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