|
|
researchv10 Norman
/*% cyntax % && cc -go # %
*/
#include <stdio.h>
#include <libc.h>
#include "3610op.h"
main(argc, argv)
char *argv[];
{
register r0=0, g0=0, b0=0, a0=255;
register dr, dg, db, da;
register x0=0, y0=0, x1=1280, y1=1024;
register r1=255, g1=255, b1=255, a1=255;
register i, n, d;
register vert=0;
while(argc>1 && argv[1][0]=='-') switch(argv[1][1]){
default:
Usage:
fprintf(stderr,
"Usage: ramp [-w x0 y0 x1 y1] [-v] [[r0 [g0 b0 [a0]]] r1 [g1 b1 [a1]]]\n");
exit(1);
case 'w':
if(argv[1][2])
argv[1]+=2;
else{
--argc;
argv++;
}
if(argc<5) goto Usage;
x0=atoi(argv[1]);
y0=atoi(argv[2]);
x1=atoi(argv[3]);
y1=atoi(argv[4]);
argc-=4;
argv+=4;
break;
case 'v':
vert++;
--argc;
argv++;
break;
}
switch(argc){
case 1:
break;
case 2:
r1=g1=b1=atoi(argv[1]);
break;
case 3:
r0=g0=b0=atoi(argv[1]);
r1=g1=b1=atoi(argv[2]);
break;
case 4:
r1=atoi(argv[1]); g1=atoi(argv[2]); b1=atoi(argv[3]);
break;
case 5:
r0=atoi(argv[1]); g0=atoi(argv[2]); b0=atoi(argv[3]);
a0=atoi(argv[4]);
break;
case 7:
r0=atoi(argv[1]); g0=atoi(argv[2]); b0=atoi(argv[3]);
r1=atoi(argv[4]); g1=atoi(argv[5]); b1=atoi(argv[6]);
break;
case 9:
r0=atoi(argv[1]); g0=atoi(argv[2]); b0=atoi(argv[3]);
a0=atoi(argv[4]);
r1=atoi(argv[5]); g1=atoi(argv[6]); b1=atoi(argv[7]);
a1=atoi(argv[8]);
break;
default:
goto Usage;
}
msnare();
if(x0>x1){ d=x0; x0=x1; x1=d; }
if(y0>y1){ d=y0; y0=y1; y1=d; }
dr=r1-r0;
dg=g1-g0;
db=b1-b0;
da=a1-a0;
mcmd(WRMSKL); mlong(0xffffffff);
mcmd(WRBANK); mbyte(15);
if(vert){
n=y1-y0;
d=n>1?n-1:1;
for(i=0;i!=n;i++)
rect(x0, i+y0, x1, i+y0+1,
r0+dr*i/d, g0+dg*i/d, b0+db*i/d, a0+da*i/d);
}
else{
n=x1-x0;
d=n>1?n-1:1;
for(i=0;i!=n;i++)
rect(i+x0, y0, i+x0+1, y1,
r0+dr*i/d, g0+dg*i/d, b0+db*i/d, a0+da*i/d);
}
mflush();
exit(0);
}
rect(x0, y0, x1, y1, r, g, b, a){
mcmd(MOVP1); mword(x0); mword(y0);
mcmd(MOVP2); mword(x1-1); mword(y1-1);
mcmd(SETCLL); mbyte(a); mbyte(r); mbyte(g); mbyte(b);
mcmd(FFILL);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.