home *** CD-ROM | disk | FTP | other *** search
- /* Writes the Hershey symbol "ch" centred at the physical */
- /* coordinate (x,y) */
-
- #include "plplot.h"
-
- void plhrsh(ch,x,y)
- PLINT ch, x, y;
- {
- PLINT cx, cy, k, penup;
- SCHAR *xygrid;
- PLFLT 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));
- }
- }
- }
-
-