home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1987 Regents of the University of California */
-
- #ifndef lint
- static char SCCSid[] = "@(#)colorscale.c 2.2 12/19/91 LBL";
- #endif
-
- /*
- * colorscale.c - program to produce color pallets
- *
- * 9/9/87
- */
-
- #include <stdio.h>
-
- #include "color.h"
-
- int primary = -1;
- double prival = 0.0;
-
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- int i;
-
- for (i = 1; i < argc && argv[i][0] == '-'; i++)
- switch (argv[i][1]) {
- case 'r':
- primary = RED;
- prival = atof(argv[++i]);
- break;
- case 'g':
- primary = GRN;
- prival = atof(argv[++i]);
- break;
- case 'b':
- primary = BLU;
- prival = atof(argv[++i]);
- break;
- default:
- goto userr;
- }
- if (primary < 0 || i < argc)
- goto userr;
- printargs(argc, argv, stdout);
- printf("\n");
- printf("-Y 256 +X 256\n");
- colorscale();
- exit(0);
- userr:
- fprintf(stderr, "Usage: %s -r|-g|-b value\n", argv[0]);
- exit(1);
- }
-
-
- colorscale() /* output our color scale */
- {
- COLOR scanline[256];
- int j;
- register int i;
-
- for (j = 256-1; j >= 0; j--) {
- for (i = 0; i < 256; i++)
- switch (primary) {
- case RED:
- setcolor(scanline[i],prival,i/256.0,j/256.0);
- break;
- case GRN:
- setcolor(scanline[i],i/256.0,prival,j/256.0);
- break;
- case BLU:
- setcolor(scanline[i],i/256.0,j/256.0,prival);
- break;
- }
- if (fwritescan(scanline, 256, stdout) < 0)
- goto writerr;
- }
- return;
- writerr:
- fprintf(stderr, "write error in colorscale\n");
- exit(1);
- }
-
-
- printargs(ac, av, fp) /* print arguments to a file */
- int ac;
- char **av;
- FILE *fp;
- {
- while (ac-- > 0) {
- fputs(*av++, fp);
- putc(' ', fp);
- }
- putc('\n', fp);
- }
-