|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include "tr.h" ! 3: /* arrange by incremental plotting that an initial ! 4: * character such as +, X, *, etc will fall ! 5: * right on the point, and undo it so that further ! 6: * labels will fall properly in place ! 7: */ ! 8: text(s) ! 9: char *s; ! 10: { ! 11: register int n; ! 12: register char *p; ! 13: int centered, right, newline, more, tweek; ! 14: double y; ! 15: ! 16: while(1){ ! 17: n = centered = right = newline = more = tweek = 0; ! 18: for(p=s; *p != '\0'; p++){ ! 19: if(*p == '\\'){ ! 20: switch(*(++p)){ ! 21: case 'C': centered++; ! 22: s = p+1; ! 23: continue; ! 24: case 'R': right++; ! 25: s = p+1; ! 26: continue; ! 27: case 'n': newline++; ! 28: *(p-1) = '\0'; ! 29: if(*(p+1) != '\0')more++; ! 30: goto output; ! 31: case 'L': s=p+1; ! 32: continue; ! 33: } ! 34: } ! 35: else if( (n==0) && (*p=='+' || *p == '*' || *p == 'x' || ! 36: *p == 'X' || *p == '.' || *p == 'o'))tweek++; ! 37: else n = 1; ! 38: } ! 39: output: ! 40: if(tweek) ! 41: printf("\\h'-0.m'\\v'.2m'"); /*shift down & left */ ! 42: *p = '\0'; ! 43: if(right) ! 44: printf("\\h\\(ts-\\w\\(ts%s\\(tsu\\(ts%s", s, s); ! 45: else if(centered) ! 46: printf("\\h\\(ts-\\w\\(ts%s\\(tsu/2u\\(ts%s\\h\\(ts-\\w\\(ts%s\\(tsu/2u\\(ts", s, s, s); ! 47: else ! 48: printf("%s", s); ! 49: if(newline){ ! 50: y = SCY(e1->copyy) ; ! 51: y -= e1->psize * linespace; ! 52: e1->copyy = (y - e1->bottom)/e1->scaley + e1->ymin; ! 53: } ! 54: move(e1->copyx, e1->copyy); ! 55: if(!more)break; ! 56: s = p+1; ! 57: } ! 58: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.