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

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

/* Writes the Hershey symbol "ch" centred at the physical */
/* coordinate (x,y) */

#include "plplot.h"

void plhrsh(ch,x,y)
int ch, x, y;
{
   int cx, cy, k, penup;
   SCHAR *xygrid;
   double symdef, symht, scale, xscale, yscale, xpmm, ypmm;

   gsym(&symdef,&symht);
   gpixmm(&xpmm,&ypmm);
   penup = 1;
   scale = 0.05 * symht;

   if (!plcvec(ch,&xygrid)) {
     movphy(x,y);
     return;
   }

   /* Compute how many physical pixels correspond to a character pixel */

   xscale = scale * xpmm;
   yscale = scale * ypmm;

   k = 4;
   for(;;) {
      cx = xygrid[k++];
      cy = xygrid[k++];
      if (cx == 64 && cy == 64) {
         movphy(x,y);
         return;
      }
      else if (cx == 64 && cy == 0)
         penup = 1;
      else  {
         if (penup != 0) {
            movphy(round(x+xscale*cx),round(y+yscale*cy));
            penup = 0;
         }
         else
            draphy(round(x+xscale*cx),round(y+yscale*cy));
      }
   }
}

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