|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.