xref: /plan9/sys/src/cmd/plot/libplot/subr.c (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1*3e12c5d1SDavid du Colombier #include "mplot.h"
2*3e12c5d1SDavid du Colombier #define pSMALL    0.5
3*3e12c5d1SDavid du Colombier struct penvir  E[9] = {
4*3e12c5d1SDavid du Colombier { 0., 1024., 0., 0., 1., -1.,1024., -1024., 0., 0., pSMALL, 1., 1, 0.,1, ZERO, WHITE},
5*3e12c5d1SDavid du Colombier { 0., 1024., 0., 0., 1., -1.,1024., -1024., 0., 0., pSMALL, 1., 1, 0.,1, ZERO, WHITE},
6*3e12c5d1SDavid du Colombier { 0., 1024., 0., 0., 1., -1.,1024., -1024., 0., 0., pSMALL, 1., 1, 0.,1, ZERO, WHITE},
7*3e12c5d1SDavid du Colombier { 0., 1024., 0., 0., 1., -1.,1024., -1024., 0., 0., pSMALL, 1., 1, 0.,1, ZERO, WHITE},
8*3e12c5d1SDavid du Colombier { 0., 1024., 0., 0., 1., -1.,1024., -1024., 0., 0., pSMALL, 1., 1, 0.,1, ZERO, WHITE},
9*3e12c5d1SDavid du Colombier { 0., 1024., 0., 0., 1., -1.,1024., -1024., 0., 0., pSMALL, 1., 1, 0.,1, ZERO, WHITE},
10*3e12c5d1SDavid du Colombier { 0., 1024., 0., 0., 1., -1.,1024., -1024., 0., 0., pSMALL, 1., 1, 0.,1, ZERO, WHITE},
11*3e12c5d1SDavid du Colombier { 0., 1024., 0., 0., 1., -1.,1024., -1024., 0., 0., pSMALL, 1., 1, 0.,1, ZERO, WHITE}
12*3e12c5d1SDavid du Colombier };
13*3e12c5d1SDavid du Colombier struct penvir *e0 = E, *e1 = &E[1], *esave;
14*3e12c5d1SDavid du Colombier bcolor(char *s){
15*3e12c5d1SDavid du Colombier 	int c;
16*3e12c5d1SDavid du Colombier 	while (*s != NULL) {
17*3e12c5d1SDavid du Colombier 		switch (*s) {
18*3e12c5d1SDavid du Colombier 		case '0': case '1': case '2': case '3': case '4':
19*3e12c5d1SDavid du Colombier 		case '5': case '6': case '7': case '8': case '9':
20*3e12c5d1SDavid du Colombier 			c=0;
21*3e12c5d1SDavid du Colombier 			while('0'<=*s && *s<='9')
22*3e12c5d1SDavid du Colombier 				c=c*10+*s++-'0';
23*3e12c5d1SDavid du Colombier 			return c<0?0:c;
24*3e12c5d1SDavid du Colombier 		case 'z':
25*3e12c5d1SDavid du Colombier 			return(ZERO);
26*3e12c5d1SDavid du Colombier 		case 'r':
27*3e12c5d1SDavid du Colombier 			return(RED);
28*3e12c5d1SDavid du Colombier 		case 'g':
29*3e12c5d1SDavid du Colombier 			return(GREEN);
30*3e12c5d1SDavid du Colombier 		case 'b':
31*3e12c5d1SDavid du Colombier 			return(BLUE);
32*3e12c5d1SDavid du Colombier 		case 'm':
33*3e12c5d1SDavid du Colombier 			return(MAGENTA);
34*3e12c5d1SDavid du Colombier 		case 'y':
35*3e12c5d1SDavid du Colombier 			return(YELLOW);
36*3e12c5d1SDavid du Colombier 		case 'c':
37*3e12c5d1SDavid du Colombier 			return(CYAN);
38*3e12c5d1SDavid du Colombier 		case 'w':
39*3e12c5d1SDavid du Colombier 			return(WHITE);
40*3e12c5d1SDavid du Colombier 		case 'R':
41*3e12c5d1SDavid du Colombier 			return(atoi(s + 1));
42*3e12c5d1SDavid du Colombier 		case 'G':
43*3e12c5d1SDavid du Colombier 			e1->pgap = atof(s + 1);
44*3e12c5d1SDavid du Colombier 			return(-1);
45*3e12c5d1SDavid du Colombier 		case 'A':
46*3e12c5d1SDavid du Colombier 			e1->pslant = (180. - atof(s + 1)) / RADIAN;
47*3e12c5d1SDavid du Colombier 			return(-1);
48*3e12c5d1SDavid du Colombier 		}
49*3e12c5d1SDavid du Colombier 		while (*++s != NULL)
50*3e12c5d1SDavid du Colombier 			if (*s == '/') {
51*3e12c5d1SDavid du Colombier 				s++;
52*3e12c5d1SDavid du Colombier 				break;
53*3e12c5d1SDavid du Colombier 			}
54*3e12c5d1SDavid du Colombier 	}
55*3e12c5d1SDavid du Colombier 	return(-1);
56*3e12c5d1SDavid du Colombier }
57*3e12c5d1SDavid du Colombier void sscpy(struct penvir *a, struct penvir *b){ /* copy 'a' onto 'b' */
58*3e12c5d1SDavid du Colombier 	b->left = a->left;
59*3e12c5d1SDavid du Colombier 	b->bottom = a->bottom;
60*3e12c5d1SDavid du Colombier 	b->xmin = a->xmin;
61*3e12c5d1SDavid du Colombier 	b->ymin = a->ymin;
62*3e12c5d1SDavid du Colombier 	b->scalex = a->scalex;
63*3e12c5d1SDavid du Colombier 	b->scaley = a->scaley;
64*3e12c5d1SDavid du Colombier 	b->sidex = a->sidex;
65*3e12c5d1SDavid du Colombier 	b->sidey = a->sidey;
66*3e12c5d1SDavid du Colombier 	b->copyx = a->copyx;
67*3e12c5d1SDavid du Colombier 	b->copyy = a->copyy;
68*3e12c5d1SDavid du Colombier 	b->quantum = a->quantum;
69*3e12c5d1SDavid du Colombier 	b->grade = a->grade;
70*3e12c5d1SDavid du Colombier 	b->pmode = a->pmode;
71*3e12c5d1SDavid du Colombier 	b->foregr = a->foregr;
72*3e12c5d1SDavid du Colombier 	b->backgr = a->backgr;
73*3e12c5d1SDavid du Colombier }
74*3e12c5d1SDavid du Colombier void idle(void){}
75*3e12c5d1SDavid du Colombier 
76*3e12c5d1SDavid du Colombier void ptype(char *s){USED(s);}
77