ftp.nice.ch/pub/next/unix/developer/plplot.3.0.s.tar.gz#/plplot/src/plstrl.c

This is plstrl.c in view mode; [Download] [Up]

/* Computes the length of a string in mm, including escape sequences  */

#include "plplot.h"
#include <math.h>

double plstrl(string)
char *string;
{
   short int *symbol;
   SCHAR *xygrid;
   int ch, i, length, level;
   double width, xorg, dscale, scale, def, ht;
   double xscl, xoff, yscl, yoff;

   width = 0.0;
   gchr(&def,&ht);
   dscale = 0.05*ht;
   scale = dscale;
   gmp(&xscl,&xoff,&yscl,&yoff);

   pldeco(&symbol,&length,string);
   xorg = 0.0;
   level = 0;

   for (i=0; i<length; i++) {
     ch = symbol[i];
     if (ch == -1) {
       level = level + 1;
       scale = dscale * pow(0.75,(double)ABS(level));
     }
     else if (ch == -2) {
       level = level - 1;
       scale = dscale * pow(0.75,(double)ABS(level));
     }
     else if (ch == -3)
       xorg = xorg - width * scale;
     else if (ch == -4 || ch == -5)
       ;
     else {
       if (plcvec(ch,&xygrid)) {
         width = xygrid[3] - xygrid[2];
         xorg = xorg + width*scale;
       }
     }
   }
   return((double)xorg);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.