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

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

/* Prints out text along a vertical axis for a 3d plot joining         */
/*  world coordinates (wx,wy1) to (wx,wy2).                            */

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

void plztx(opt,dx,dy,wx,wy1,wy2,disp,pos,just,text)
double dx,dy,wx,wy1,wy2,disp,pos,just;
char *opt, *text;
{
      int refx, refy;
      int vert;
      double shift, cc, ss, def, ht;
      double xform[4], diag;
      double xscl, xoff, yscl, yoff, wy;

      gchr(&def,&ht);
      gwm(&xscl,&xoff,&yscl,&yoff);
      cc = xscl * dx;
      ss = yscl * dy;
      diag = sqrt(cc*cc + ss*ss);
      cc = cc/diag;
      ss = ss/diag;
      gmp(&xscl,&xoff,&yscl,&yoff);

      shift = 0.0;
      if (just != 0.0) shift = plstrl(text) * just;
      wy = wy1 + pos * (wy2 - wy1);

	vert = 0;
	refy = 0;
	refx = 0;
      if (stsearch(opt,'v')) {
        vert = 0;
        refx = mmpcx((double)(wcmmx(wx) - (disp * ht + shift) * cc));
        refy = mmpcy((double)(wcmmy(wy) - (disp * ht + shift) * ss));
      }
      else if (stsearch(opt,'h')) {
        vert = 1;
        refy = wcpcy(wy) - yscl*(disp*ht*ss+shift);
        refx = mmpcx((double)(wcmmx(wx) - disp*ht*cc));
      }
      if (vert) {
        xform[0] = 0.0;
        xform[1] = -cc;
        xform[2] = 1.0;
        xform[3] = -ss;
      }
      else {
        xform[0] = cc;
        xform[1] = 0.0;
        xform[2] = ss;
        xform[3] = 1.0;
      }
      plstr(0,xform,refx,refy,text);
}

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