V10/libplot/libpen/color.c

#include "pen.h"
color(s)
char *s;
{
	register float f;
	register char **p;
	char *sp, *bp;
	if(s == (char *)0) {
		fprintf(pltout,"SP0\n");
		return;
	}
	while(*s != NULL){
		if(*s >= '0' && *s <= '9'){
			e1->pen = atoi(&s[1]);
			penUp();
			fprintf(pltout,"SP %d ",(e1->pen>0)?e1->pen:1);
		}
		else if(*s == 'S'){
			s++;
			f = atof(s);
			e1->charsz = f;
			fprintf(pltout,"SR %8.2f,%8.2f ",
			    ((f * CH_RATIO)),(f));
		}
		else if(*s == 'P'){
			s++;
			continue;
		}
		else if(*s == 'A'){
			e1->pslant = atof(++s)/RADIANS;
		}
		else if(*s == 'G'){
			e1->pgap = atoi(++s);
		}
		else if(*s == 's'){
			/* scribe or scratch pen */
			s++;
			e1->pen = 8;
			penUp();
			fprintf(pltout, "SP 8\nVS 5,8\nFS 8,8\n");
		}
		else {
			if(*s == 'T')sp=s+1;
			else sp = s;
			if(*sp == 'b')sp+=2;
			for(p=pens; p<&pens[4];p++){
				bp = *p;
				if(*bp == 'b')bp+=2;
				if(*sp == *bp){
					e1->pen = p - pens;
					e1->pen++;
					if(*s == 'T')e1->pen += 4;
					penUp();
					fprintf(pltout,"SP %d ",e1->pen);
				}
			}
		}
		while(*++s != NULL)
			if(*s == '/'){
				s++;
				break;
			}
	}
}