|
|
1.1 root 1: #include <stdio.h>
2: #include "tek.h"
3: #define N 0104
4: #define E 0101
5: #define NE 0105
6: #define S 0110
7: #define W 0102
8: #define SW 0112
9: /* arrange by incremental plotting that an initial
10: * character such as +, X, *, etc will fall
11: * right on the point, and undo it so that further
12: * labels will fall properly in place
13: */
14: #define POINTPL 036
15: #define BACKSP ''
16: char lbl_mv[] = {
17: POINTPL,040,S,S,S,S,S,S,SW,SW,SW,SW,SW,SW,SW,SW,SW,SW,PLOTOUT,0
18: };
19: char lbl_umv[] = {
20: POINTPL,040,N,N,N,N,N,N,NE,NE,NE,NE,NE,NE,NE,NE,NE,NE,PLOTOUT,0
21: };
22: char plotout[] = {
23: PLOTOUT,0
24: };
25: text(s)
26: char *s;
27: {
28: register int n;
29: register char *p;
30: int centered, right, newline, more, tweek;
31: double y;
32:
33: while(1){
34: n = centered = right = newline = more = tweek = 0;
35: for(p=s; *p != '\0'; p++){
36: if(*p == '\\'){
37: switch(*(++p)){
38: case 'C': centered++;
39: s = p+1;
40: continue;
41: case 'R': right++;
42: s = p+1;
43: continue;
44: case 'n': newline++;
45: *(p-1) = '\0';
46: if(*(p+1) != '\0')more++;
47: goto output;
48: case 'L': s=p+1;
49: continue;
50: }
51: }
52: else if( (n==0) && (*p=='+' || *p == '*' || *p == 'x' ||
53: *p == 'X' || *p == '.' || *p == 'o'))tweek++;
54: else n = 1;
55: }
56: output:
57: if(tweek)
58: printf("%s",lbl_mv);
59: else printf("%s",plotout);
60: n = 0;
61: if(centered) n = (p - s)/2 + 1;
62: else if(right)n = p - s +1;
63: if(n > 0)
64: while(--n)
65: putchar(BACKSP);
66: *p = '\0';
67: printf("%s", s);
68: if(tweek)
69: printf("%s",lbl_umv);
70: if(newline){
71: y = SCY(e1->copyy) ;
72: y -= 34.;
73: e1->copyy = (y - e1->bottom)/e1->scaley + e1->ymin;
74: }
75: move(e1->copyx, e1->copyy);
76: if(!more)break;
77: s = p+1;
78: }
79: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.