static void spitbox(int ix, int y, char *s) { float bw; /* box width */ char d[256], *t, *z; int a, i, x = ix+1; char *color = "black"; if (y > 0) { stepnumber(y); } bw = (float)1.8*(float)strlen(s); /* guess at default font width */ colbox(x, y, (int) (bw+1.0), 5, "black"); if (s[0] == '~') { switch (s[1]) { default : case 'R': color = "red"; break; case 'B': color = "blue"; break; case 'G': color = "green"; break; } s += 2; } else if (strchr(s, '!')) { color = "ivory"; } else if (strchr(s, '?')) { color = "azure"; } else { color = "pink"; if (sscanf(s, "%d:%250s", &a, d) == 2 && a >= 0 && a < TotSteps) { if (!I[a] || strlen(I[a]) <= strlen(s)) { I[a] = (char *) emalloc((int) strlen(s)+1); } strcpy(I[a], s); } } colbox(x, y, (int) bw, 4, color); z = t = (char *) emalloc(2*strlen(s)+1); for (i = 0; i < strlen(s); i++) { if (s[i] == '\n') { continue; } if (s[i] == '[' || s[i] == ']') { *t++ = '\\'; } *t++ = s[i]; } fprintf(pfd, ".c create text %d %d -text \"%s\"\n", xscale*x*WW-20, yscale*y*HH+20, z); }
void spitbox(int x, int dx, int y, char *s) { float r,g,b, bw; int a; char d[256]; if (!dx) { stepnumber(y); putgrid(x); } bw = (float)2.7*(float)strlen(s); colbox(x*WW+dx, MH-(y*HH)%MH, (int) (bw+1.0), 5, (float) 0.,(float) 0.,(float) 0.); if (s[0] == '~') { switch (s[1]) { case 'B': r = (float) 0.2; g = (float) 0.2; b = (float) 1.; break; case 'G': r = (float) 0.2; g = (float) 1.; b = (float) 0.2; break; case 'R': default : r = (float) 1.; g = (float) 0.2; b = (float) 0.2; break; } s += 2; } else if (strchr(s, '!')) { r = (float) 1.; g = (float) 1.; b = (float) 1.; } else if (strchr(s, '?')) { r = (float) 0.; g = (float) 1.; b = (float) 1.; } else { r = (float) 1.; g = (float) 1.; b = (float) 0.; if (!dx && sscanf(s, "%d:%250s", &a, d) == 2 /* was &d */ && a >= 0 && a < TotSteps) { if (!I[a] || strlen(I[a]) <= strlen(s)) I[a] = emalloc((int) strlen(s)+1); strcpy(I[a], s); } } colbox(x*WW+dx, MH-(y*HH)%MH, (int) bw, 4, r,g,b); fprintf(pfd, "gsave\n"); fprintf(pfd, "/Courier-Bold findfont 8 scalefont "); fprintf(pfd, "ISOEncode setfont\n"); fprintf(pfd, "0.000 0.000 0.000 setrgbcolor AdjustColor\n"); fprintf(pfd, "%d %d [\n", x*WW+dx, MH-(y*HH)%MH); fprintf(pfd, " (%s)\n] 10 -0.5 0.5 0 ", s); fprintf(pfd, "false DrawText\ngrestore\n"); }