/* pwrit.f -- translated by f2c (version 19961017). You must link the resulting object file with the libraries: -lf2c -lm (in that order) */ /* #include "f2c.h" */ #include "coxplot.h" /* Common Block Declarations */ /* get these structs from coxplot.h [13 Aug 2021 rickr] */ #if 0 extern struct { real xpgmin, ypgmin, xpgmax, ypgmax, xclbot, yclbot, xcltop, ycltop, xbot, ybot, xtop, ytop, xmin, ymin, xmax, ymax; integer ixcoor, iycoor; real alphxx, betaxx, alphyy, betayy, tmajx, tminx, tmajy, tminy; integer majrx, minrx, majry, minry, isizx, isizy; real xphold, yphold; } zzzplt_; extern struct { real xphmax, yphmax; integer ixpmax, iypmax; real xpscal, ypscal; integer iflip, nplotr; char cfile[64]; } zzpltr_; #endif #define zzzplt_1 zzzplt_ #define zzpltr_1 zzpltr_ /* Subroutine */ int pwrit_(real *x, real *y, char *ch, integer *nch, integer *isiz, integer *ior, integer *icent, ftnlen ch_len) { /* System generated locals */ integer i__1; /* Local variables */ static integer i__, nchar; static real width; static integer isize; static real ct, dx, dy, oor, st, xx, yy; extern /* Subroutine */ int zzchar_(char *, real *, real *, real *, real * , ftnlen), zzphys_(real *, real *); /* Additional options besides NCAR's choices: */ /* NCH < 0 ==> use absolute coordinates rather than user coords. */ /* [this is because the use of integer absolute ] */ /* [coordinates is not implemented in this package] */ /* ABS(NCH) = 999 ==> find length of string by looking for a 0 byte. */ /* ICENT = -2 ==> (X,Y) is lower left corner of string to plot. */ /* ....................................................................... */ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ /* Calculate character width in terms of 1/1000 of the x-width. */ /* Internal Data for PLOTPAK */ /* Parameter adjustments */ --ch; /* Function Body */ isize = *isiz; if (isize <= 0) { isize = 8; } else if (isize == 1) { isize = 12; } else if (isize == 2) { isize = 16; } else if (isize == 3) { isize = 24; } width = isize * .001f * (zzzplt_1.xpgmax - zzzplt_1.xpgmin); /* Rotation/scaling factors for digitization. Include factor of 1/6 */ /* to allow for digitization scale in ZZCHAR. */ oor = *ior * .017453292f; dx = width * cos(oor); dy = width * sin(oor); ct = dx * .1666667f; st = dy * .1666667f; /* Starting location for first character. */ xx = *x; yy = *y; if (*nch > 0) { zzphys_(&xx, &yy); } /* Get no. of characters in string. Special option 999 must be checked. */ nchar = abs(*nch); if (nchar == 999) { i__1 = nchar; for (i__ = 1; i__ <= i__1; ++i__) { if (*(unsigned char *)&ch[i__] == '\0') { goto L20; } /* L10: */ } L20: nchar = i__ - 1; } /* If centering option is not lower-left corner, must calculate */ /* location of lower left corner. */ if (*icent != -2) { /* Move from center of character down to bottom (aspect ratio = 7/6) */ xx += dy * .5833333f; yy -= dx * .5833333f; if (*icent == 0) { xx -= nchar * .5f * dx; yy -= nchar * .5f * dy; } else if (*icent == 1) { xx -= nchar * dx; yy -= nchar * dy; } } /* ....................................................................... */ i__1 = nchar; for (i__ = 1; i__ <= i__1; ++i__) { zzchar_(ch + i__, &xx, &yy, &ct, &st, 1L); xx += dx; yy += dy; /* L100: */ } /* ....................................................................... */ zzzplt_1.xphold = xx; zzzplt_1.yphold = yy; return 0; } /* pwrit_ */