home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume14 / vplot / part14 < prev    next >
Encoding:
Internet Message Format  |  1988-03-31  |  46.7 KB

  1. Subject:  v14i019:  Device-independant graphics system, with drivers
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: Joe Dellinger <joe@hanauma.STANFORD.EDU>
  7. Posting-number: Volume 14, Issue 19
  8. Archive-name: vplot/part14
  9.  
  10. #! /bin/sh
  11. # This is a shell archive.  Remove anything before this line, then unpack
  12. # it by saving it into a file and typing "sh file".  To overwrite existing
  13. # files, type "sh file -c".  You can also feed this as standard input via
  14. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  15. # will see the following message at the end:
  16. #        "End of archive 14 (of 24)."
  17. # Wrapped by rsalz@fig.bbn.com on Fri Mar 25 11:47:23 1988
  18. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  19. if test -f 'Imagen_device/imaglib/imagpoly.c' -a "${1}" != "-c" ; then 
  20.   echo shar: Will not clobber existing file \"'Imagen_device/imaglib/imagpoly.c'\"
  21. else
  22. echo shar: Extracting \"'Imagen_device/imaglib/imagpoly.c'\" \(5904 characters\)
  23. sed "s/^X//" >'Imagen_device/imaglib/imagpoly.c' <<'END_OF_FILE'
  24. X/*
  25. X * Copyright 1987 the Board of Trustees of the Leland Stanford Junior
  26. X * University. Official permission to use this software is included in
  27. X * the documentation. It authorizes you to use this file for any
  28. X * non-commercial purpose, provided that this copyright notice is not
  29. X * removed and that any modifications made to this file are commented
  30. X * and dated in the style of my example below.
  31. X */
  32. X
  33. X/*
  34. X *
  35. X *  source file:   ./filters/imaglib/imagpoly.c
  36. X *
  37. X * Joe Dellinger (SEP), June 11 1987
  38. X *    Inserted this sample edit history entry.
  39. X *    Please log any further modifications made to this file:
  40. X */
  41. X
  42. X#include <stdio.h>
  43. X#include "imagen.h"
  44. X#include "../include/extern.h"
  45. X#include "../include/err.h"
  46. X#include "../include/params.h"
  47. X#include "../include/pat.h"
  48. extern FILE    *pltout;
  49. X
  50. extern int      ipat;
  51. extern struct pat pat[];
  52. X
  53. static int      loaded[NPAT];
  54. static int      lastcolor = BLACK, lastxmask = 0, lastymask = 0, lasttexture = 0;
  55. static int      loadm[96][3], ldnum = 1;
  56. X
  57. static int      draw;
  58. X
  59. imagstartpoly (npts)
  60. X    int             npts;
  61. X{
  62. unsigned int    imask[32];
  63. int             ix, iy, nx, ny, xmax, ymax, i, n, xmask, ymask;
  64. int            *bptr;
  65. char            cbuf[80];
  66. X
  67. X    draw = 0;
  68. X    endpath (DRAW_PATH, imag_curcolor);    /* sets lost=1 for us as well */
  69. X/*
  70. X * Don't go more than a PATHLENGTH worth or addpath will draw it as a path!
  71. X * This is no limitation, because the imagen can't hold paths any longer
  72. X * than that anyway. So it is up to the user to fragment his polygon.
  73. X */
  74. X    if (npts > PATHLENGTH - 2)
  75. X    ERR (FATAL, name, "Too many points in this polygon for the imagen!");
  76. X
  77. X/* pattern filling stuff */
  78. X    if (ipat == 0)
  79. X    {                /* masking -- old area command */
  80. X    xmask = pat[0].xdim;
  81. X    ymask = pat[0].ydim;
  82. X    if (lasttexture >= 0 || lastxmask != xmask || lastymask != ymask || lastcolor != imag_curcolor)
  83. X    {
  84. X        for (n = 1; n < ldnum; n++)
  85. X        {            /* check to see if the pattern is already
  86. X                 * downloaded */
  87. X        if (loadm[n][0] == xmask && loadm[n][1] == ymask
  88. X            && loadm[n][2] == imag_curcolor)
  89. X            break;
  90. X        }
  91. X        if (n == ldnum && n < 96)
  92. X        {            /* not loaded yet */
  93. X        for (i = 0; i < 32; i++)
  94. X            imask[i] = 0;
  95. X        if (xmask && ymask && imag_curcolor == BLACK)
  96. X        {
  97. X            for (iy = 0; iy < 32; iy += ymask)
  98. X            imask[0] |= (01 << iy);
  99. X            for (ix = xmask; ix < 32; ix += xmask)
  100. X            imask[ix] = imask[0];
  101. X        }
  102. X        loadglyph (11, n, imask);
  103. X        loadm[n][0] = xmask;
  104. X        loadm[n][1] = ymask;
  105. X        loadm[n][2] = imag_curcolor;
  106. X        ldnum++;
  107. X        }
  108. X        settexture (11, n);
  109. X        lasttexture = -n;
  110. X        lastxmask = xmask;
  111. X        lastymask = ymask;
  112. X        lastcolor = imag_curcolor;
  113. X    }
  114. X    }
  115. X    else
  116. X    {                /* loaded patterns */
  117. X    if (pat[ipat].patbits == NULL)
  118. X    {
  119. X        sprintf (cbuf, "Pattern number %d not loaded.", ipat);
  120. X        ERR (WARN, name, cbuf);
  121. X        settexture (0, 0);
  122. X        lasttexture = 0;
  123. X        return;
  124. X    }
  125. X    if (ipat < 0)
  126. X    {
  127. X        settexture (0, 0);
  128. X        lasttexture = 0;
  129. X        return;
  130. X    }
  131. X    if (lasttexture != ipat)
  132. X    {
  133. X        if (!loaded[ipat])
  134. X        {
  135. X        nx = pat[ipat].xdim;
  136. X        ny = pat[ipat].ydim;
  137. X        bptr = pat[ipat].patbits;
  138. X        if (nx > 32 || ny > 32)
  139. X        {
  140. X            ERR (WARN, name, "Imagen pattern fill is 32 bits by 32 bits;\n\tGot %d by %d, so truncating.", nx, ny);
  141. X        }
  142. X        if ((nx < 32 && nx != 16 && nx != 8 && nx != 4 && nx != 2 && nx != 1) ||
  143. X            (ny < 32 && ny != 16 && ny != 8 && ny != 4 && ny != 2 && ny != 1))
  144. X        {
  145. X            ERR (WARN, name, "Imagen pattern fill is 32 bits by 32 bits;\n\tGot %d by %d, so partially replicating.", nx, ny);
  146. X        }
  147. X        xmax = (nx < 32) ? nx : 32;
  148. X        ymax = (ny < 32) ? ny : 32;
  149. X        for (i = 0; i < 32; i++)
  150. X            imask[i] = 0;
  151. X/*
  152. X * IMPRESS bit order for pattern filling starts at lower left and scans upward
  153. X * along the left edge, then left to right by columns.  This would be standard
  154. X * order for a page oriented for text, but not for our graphics convention
  155. X * of x-direction is paper-feed direction.
  156. X */
  157. X
  158. X        for (iy = 0; iy < ymax; iy++)
  159. X        {
  160. X            for (ix = 0; ix < xmax; ix++)
  161. X            {
  162. X            if (*bptr++)
  163. X            {
  164. X                imask[ix] |= (01 << iy);
  165. X            }
  166. X            }
  167. X            if (nx > 32)
  168. X            {
  169. X            for (; ix < nx; ix++)
  170. X                bptr++;    /* discard extra y-bits */
  171. X            }
  172. X        }
  173. X        if (ny < 32)
  174. X        {        /* replicate in y-direction */
  175. X            do
  176. X            {
  177. X            for (ix = 0; ix < xmax; ix++)
  178. X                imask[ix] |= (imask[ix] << iy);
  179. X            iy *= 2;
  180. X            } while (iy < 32);
  181. X        }
  182. X        for (ix = xmax; ix < 32; ix++)
  183. X        {        /* replicate in x-direction */
  184. X            imask[ix] = imask[ix - nx];
  185. X        }
  186. X        loadglyph (10, ipat, imask);
  187. X        loaded[ipat] = 1;
  188. X        }
  189. X        settexture (10, ipat);
  190. X        lasttexture = ipat;
  191. X    }
  192. X    }
  193. X}
  194. X
  195. X
  196. imagmidpoly (x, y)
  197. X    int             x, y;
  198. X{
  199. X    imagplot (x, y, draw);
  200. X    draw = 1;
  201. X}
  202. X
  203. imagendpoly (done)
  204. X    int             done;
  205. X{
  206. extern int      overlay;
  207. int             overlay_im;
  208. X
  209. X    switch (overlay)
  210. X    {
  211. X    case 0:
  212. X    overlay_im = OPAQUE;
  213. X    break;
  214. X    case 1:
  215. X    overlay_im = OR;
  216. X    break;
  217. X    }
  218. X    endpath (FILL_PATH, overlay_im);
  219. X}
  220. X
  221. settexture (family, member)
  222. X{
  223. X    putc (SET_TEXTURE, pltout);
  224. X    putrfm (0, family, member);
  225. X}
  226. X
  227. loadglyph (family, member, imask)
  228. X    unsigned int    imask[];
  229. X{
  230. int             i;
  231. X
  232. X    putc (BGLY, pltout);
  233. X    putrfm (0, family, member);
  234. X    put2byte (0);
  235. X    put2byte (32);
  236. X    put2byte (0);
  237. X    put2byte (32);
  238. X    put2byte (0);
  239. X    for (i = 0; i < 32; i++)
  240. X    {
  241. X    put4byte (imask[i]);
  242. X    }
  243. X}
  244. X
  245. putrfm (rot, fam, mem)
  246. X{
  247. char            rfm1, rfm2;
  248. X
  249. X    rfm1 = ((rot & 03) << 6) | ((unsigned) (fam & 0177) >> 1);
  250. X    rfm2 = ((fam & 01) << 7) | (mem & 0177);
  251. X    putc (rfm1, pltout);
  252. X    putc (rfm2, pltout);
  253. X}
  254. X
  255. put2byte (in)
  256. X    unsigned int    in;
  257. X{
  258. char            c;
  259. X
  260. X    c = (in >> 8) & 0xff;
  261. X    putc (c, pltout);
  262. X    c = (in & 0xff);
  263. X    putc (c, pltout);
  264. X}
  265. X
  266. put4byte (in)
  267. X    unsigned int    in;
  268. X{
  269. char            c;
  270. X
  271. X    c = (in >> 24) & 0xff;
  272. X    putc (c, pltout);
  273. X    c = (in >> 16) & 0xff;
  274. X    putc (c, pltout);
  275. X    c = (in >> 8) & 0xff;
  276. X    putc (c, pltout);
  277. X    c = (in & 0xff);
  278. X    putc (c, pltout);
  279. X}
  280. END_OF_FILE
  281. if test 5904 -ne `wc -c <'Imagen_device/imaglib/imagpoly.c'`; then
  282.     echo shar: \"'Imagen_device/imaglib/imagpoly.c'\" unpacked with wrong size!
  283. fi
  284. # end of 'Imagen_device/imaglib/imagpoly.c'
  285. fi
  286. if test -f 'Imagen_device/imaglib/imagraster.c' -a "${1}" != "-c" ; then 
  287.   echo shar: Will not clobber existing file \"'Imagen_device/imaglib/imagraster.c'\"
  288. else
  289. echo shar: Extracting \"'Imagen_device/imaglib/imagraster.c'\" \(8746 characters\)
  290. sed "s/^X//" >'Imagen_device/imaglib/imagraster.c' <<'END_OF_FILE'
  291. X/*
  292. X * Copyright 1987 the Board of Trustees of the Leland Stanford Junior
  293. X * University. Official permission to use this software is included in
  294. X * the documentation. It authorizes you to use this file for any
  295. X * non-commercial purpose, provided that this copyright notice is not
  296. X * removed and that any modifications made to this file are commented
  297. X * and dated in the style of my example below.
  298. X */
  299. X
  300. X/*
  301. X *
  302. X *  source file:   ./filters/imaglib/imagraster.c
  303. X *
  304. X * Joe Dellinger (SEP), June 11 1987
  305. X *    Inserted this sample edit history entry.
  306. X *    Please log any further modifications made to this file:
  307. X * Joe Dellinger Feb 16 1988
  308. X *    Update to new raster call.
  309. X */
  310. X
  311. X#include <stdio.h>
  312. X#include "../include/extern.h"
  313. X#include "../include/enum.h"
  314. X#include "../include/err.h"
  315. X#include "imagen.h"
  316. X
  317. extern int      overlay;
  318. extern char    *calloc ();
  319. extern FILE    *pltout;
  320. extern int      overlay;
  321. X
  322. X/*
  323. X * raster for the (barf) imagen-300, which can only align things on multiples
  324. X * of 32 by 32! This routine does what is necessary to make the imagen ACT
  325. X * as if it could place it arbitrarily. - Joe Dellinger, Nov 1986
  326. X */
  327. X
  328. imagraster (count, out_of, xout, yout, length, orient, raster, dummy1, dummy2)
  329. X    int             count, out_of, xout, yout, length, orient, dummy1, dummy2;
  330. X    char           *raster;
  331. X{
  332. int             ii, jj, kk, ll, base;
  333. int             xgoof_s, ygoof_s, xgoof_e, ygoof_e, length_x, length_y;
  334. char            byte;
  335. static int      num_lines;
  336. static char    *array;
  337. static int      ylength, length_p;
  338. static int      xgoof, ygoof, xpatch;
  339. static int      overlay_im;
  340. X
  341. X    if (count == 0)
  342. X    {
  343. X/*
  344. X * First time through. Do various things that need to be done once at the
  345. X * beginning:
  346. X */
  347. X
  348. X    switch (overlay)
  349. X    {
  350. X    case 0:
  351. X        overlay_im = OPAQUE;
  352. X        break;
  353. X    case 1:
  354. X        overlay_im = OR;
  355. X        break;
  356. X    }
  357. X
  358. X    /*
  359. X     * Treasure the raster up into 32 byte blocks. This is actually a
  360. X     * constant, but I'll let it be a variable so that the similarity of
  361. X     * this code to genraster1.c is more clear. 
  362. X     */
  363. X    num_lines = 32;
  364. X
  365. X    /* End any unfinished path */
  366. X    endpath (DRAW_PATH, imag_curcolor);
  367. X
  368. X    /*
  369. X     * Imagen can only position raster every 32 pixels... 
  370. X     *
  371. X     * The complexity here comes about because the truncation occurs in
  372. X     * physical, unrotated coordinates, whereas we're working in
  373. X     * (possibly) rotated and opposite-handed ones. Ug! 
  374. X     */
  375. X
  376. X    /* Dimensions in each direction in Imagen physical coordinates  */
  377. X    if (orient == 1 || orient == 3)
  378. X    {
  379. X        length_x = out_of;
  380. X        length_y = length;
  381. X    }
  382. X    else
  383. X    {
  384. X        length_x = length;
  385. X        length_y = out_of;
  386. X    }
  387. X
  388. X    /* Find extremes of padded raster area */
  389. X    if (orient == 0 || orient == 3)
  390. X    {
  391. X        /* X direction start truncates down */
  392. X        xgoof_s = num_lines * div_round (xout, num_lines);
  393. X        xgoof = xout - xgoof_s;
  394. X        /* X direction end truncates up */
  395. X        xgoof_e = num_lines * div_round ((xout + (length_x - 1) + num_lines), num_lines);
  396. X    }
  397. X    else
  398. X    {
  399. X        /* X direction start truncates up */
  400. X        xgoof_s = num_lines * div_round ((xout + num_lines), num_lines);
  401. X        xgoof = -(xout - xgoof_s) - 1;
  402. X        /* X direction end truncates down */
  403. X        xgoof_e = num_lines * div_round ((xout - (length_x - 1)), num_lines);
  404. X    }
  405. X
  406. X    if (orient == 0 || orient == 1)
  407. X    {
  408. X        /* Y direction start truncates up */
  409. X        ygoof_s = num_lines * div_round ((yout + num_lines), num_lines);
  410. X        ygoof = -(yout - ygoof_s) - 1;
  411. X        /* Y direction end truncates down */
  412. X        ygoof_e = num_lines * div_round ((yout - (length_y - 1)), num_lines);
  413. X    }
  414. X    else
  415. X    {
  416. X        /* Y direction start truncates down */
  417. X        ygoof_s = num_lines * div_round (yout, num_lines);
  418. X        ygoof = yout - ygoof_s;
  419. X        /* Y direction end truncates up */
  420. X        ygoof_e = num_lines * div_round ((yout + (length_y - 1) + num_lines), num_lines);
  421. X    }
  422. X
  423. X    /*
  424. X     * Tell the imagen where to put it while we're still in physical
  425. X     * coord's 
  426. X     */
  427. X    putc (SET_ABS_H, pltout);
  428. X    putc (hib (ygoof_s), pltout);
  429. X    putc (lob (ygoof_s), pltout);
  430. X    putc (SET_ABS_V, pltout);
  431. X    putc (hib (xgoof_s), pltout);
  432. X    putc (lob (xgoof_s), pltout);
  433. X
  434. X    if (orient == 1 || orient == 3)
  435. X    {
  436. X        ii = xgoof;
  437. X        xgoof = ygoof;
  438. X        ygoof = ii;
  439. X        ii = xgoof_s;
  440. X        xgoof_s = ygoof_s;
  441. X        ygoof_s = ii;
  442. X        ii = xgoof_e;
  443. X        xgoof_e = ygoof_e;
  444. X        ygoof_e = ii;
  445. X        ii = xout;
  446. X        xout = yout;
  447. X        yout = ii;
  448. X    }
  449. X/* 
  450. X * xgoof and ygoof now tell us how much padding we have to insert to
  451. X * correct for the imagen's mispositioning goofs.
  452. X */
  453. X
  454. X    /*
  455. X     * Rotate the imagen's internal coordinate system so that the main
  456. X     * thrust of its raster direction is in the same direction as
  457. X     * Vplot's. 
  458. X     */
  459. X    putc (SET_HV_SYSTEM, pltout);
  460. X    putc (0x01, pltout);
  461. X
  462. X    /*
  463. X     * If rotated coordinates, then rotate on top of this to match 
  464. X     */
  465. X    if (orient == 1 || orient == 3)
  466. X    {
  467. X        putc (SET_HV_SYSTEM, pltout);
  468. X        putc (0x01, pltout);
  469. X    }
  470. X
  471. X    /*
  472. X     * If flipped coordinates, then flip on top of this to match 
  473. X     */
  474. X    if (orient == 2 || orient == 3)
  475. X    {
  476. X        putc (SET_HV_SYSTEM, pltout);
  477. X        putc (0x02, pltout);
  478. X    }
  479. X
  480. X    /*
  481. X     * Allocate an array to hold 32 raster lines at a time. Use calloc so
  482. X     * that we start out full of 0's, some of which we'll need for
  483. X     * padding. length_p gives length rounded to the correct multiple of
  484. X     * 32, which is needed for the raster plus the padding. xpatch tells
  485. X     * us how many patches we'll need per line. 
  486. X     */
  487. X
  488. X    length_p = abs (xgoof_e - xgoof_s);
  489. X    xpatch = length_p / num_lines;
  490. X    array = (char *) calloc (num_lines * length_p, sizeof (char));
  491. X    if (array == NULL)
  492. X        ERR (FATAL, name, "Can't allocate %d bytes for imagen raster buffer",
  493. X         num_lines * length_p * sizeof (char));
  494. X
  495. X    /*
  496. X     * Displace where we start into the block the first time through to
  497. X     * do the required padding. 
  498. X     */
  499. X    ylength = ygoof;
  500. X    }
  501. X
  502. X/*
  503. X * Each time we're called, we get another line of the raster image.
  504. X * Save this line in the block we're currently storing up, converting
  505. X * to monochrome as we do so.
  506. X */
  507. X    for (ii = 0; ii < length; ii++)
  508. X    {
  509. X    array[length_p * ylength + ii + xgoof] = (raster[ii] > 0);
  510. X    }
  511. X    ylength++;
  512. X
  513. X/*
  514. X * See if we've saved up an entire block yet. Also, if this is the last
  515. X * call, we'd better not wait around either.
  516. X */
  517. X    if (ylength >= num_lines || count == out_of - 1)
  518. X    {
  519. X    if (count == out_of - 1)
  520. X    {
  521. X        /*
  522. X         * Clear out any garbage left in the part of the patch that's
  523. X         * padding. Only need to worry about this the last time, when we
  524. X         * may not have filled in the entire patch. 
  525. X         */
  526. X        for (jj = ylength; jj < num_lines; jj++)
  527. X        {
  528. X        for (ii = 0; ii < length; ii++)
  529. X        {
  530. X            array[length_p * jj + ii + xgoof] = 0;
  531. X        }
  532. X        }
  533. X    }
  534. X
  535. X    /*
  536. X     * Tell the imagen a bitmap is coming 
  537. X     */
  538. X    putc (BITMAP, pltout);
  539. X    /* Set the overlay mode as given in Vplot */
  540. X    putc (overlay_im, pltout);
  541. X    /* How many patches needed to draw this line */
  542. X    putc (xpatch, pltout);
  543. X    /* Each Y line gets a separate call of its own */
  544. X    putc (1, pltout);
  545. X
  546. X    /* Finally, here are the actual bits */
  547. X    for (ii = 0; ii < xpatch; ii++)
  548. X    {
  549. X        /* Loop over patches */
  550. X        for (jj = 0; jj < num_lines; jj++)
  551. X        {
  552. X        /* Loop over 32 rows in a patch */
  553. X        for (kk = 0; kk < 4; kk++)
  554. X        {
  555. X            /*
  556. X             * 4 for the 4 bytes encoding 32 bits for the 32 pixels
  557. X             * in each row of a patch 
  558. X             */
  559. X/*
  560. X * Here we calculate base offset into our array. The bizarre ordering
  561. X * is due to the bizarre order in which the imagen wants the bits.
  562. X */
  563. X            base = ii * num_lines + jj * length_p + kk * 8;
  564. X
  565. X            byte = 0x0;
  566. X            for (ll = 0; ll < 8; ll++)
  567. X            {
  568. X            /* Loop over the 8 bits in each byte */
  569. X
  570. X            byte = (byte << 1) | (array[base + ll] & 0x1);
  571. X            }
  572. X            /* Another byte rides the bus */
  573. X            putc (byte, pltout);
  574. X        }
  575. X        }
  576. X    }
  577. X
  578. X    if (count != out_of - 1)
  579. X    {
  580. X/*
  581. X * Now we've done a block. Reset our position in a block to 0 again, and
  582. X * advance the imagen's current position one block-length. (Drawing raster
  583. X * doesn't change the imagen's "current pen position".) Pointless to do this
  584. X * stuff if we're never coming back.
  585. X */
  586. X        ylength = 0;
  587. X        putc (SET_REL_V, pltout);
  588. X        putc (hib (num_lines), pltout);
  589. X        putc (lob (num_lines), pltout);
  590. X    }
  591. X    else
  592. X    {
  593. X/*
  594. X * Things that have to be done before we exit the last time.
  595. X */
  596. X        /* Free up the array */
  597. X        free (array);
  598. X        /* Put the imagen's coordinate system back again */
  599. X        if (orient == 2 || orient == 3)
  600. X        {
  601. X        putc (SET_HV_SYSTEM, pltout);
  602. X        putc (0x02, pltout);
  603. X        }
  604. X        if (orient == 1 || orient == 3)
  605. X        {
  606. X        putc (SET_HV_SYSTEM, pltout);
  607. X        putc (0x03, pltout);
  608. X        }
  609. X        putc (SET_HV_SYSTEM, pltout);
  610. X        putc (0x03, pltout);
  611. X    }
  612. X    }
  613. X}
  614. X
  615. div_round (a, b)
  616. X    int             a, b;
  617. X{
  618. X    if ((a >= 0) == (b >= 0))
  619. X    return (a / b);
  620. X    else
  621. X    {
  622. X    if (b > 0)
  623. X        return (a - (b - 1)) / b;
  624. X    else
  625. X        return (-a - (-b - 1)) / -b;
  626. X    }
  627. X}
  628. END_OF_FILE
  629. if test 8746 -ne `wc -c <'Imagen_device/imaglib/imagraster.c'`; then
  630.     echo shar: \"'Imagen_device/imaglib/imagraster.c'\" unpacked with wrong size!
  631. fi
  632. # end of 'Imagen_device/imaglib/imagraster.c'
  633. fi
  634. if test -f 'Virtual_device/vplib/vpdovplot.c' -a "${1}" != "-c" ; then 
  635.   echo shar: Will not clobber existing file \"'Virtual_device/vplib/vpdovplot.c'\"
  636. else
  637. echo shar: Extracting \"'Virtual_device/vplib/vpdovplot.c'\" \(6843 characters\)
  638. sed "s/^X//" >'Virtual_device/vplib/vpdovplot.c' <<'END_OF_FILE'
  639. X/*
  640. X * Copyright 1987 the Board of Trustees of the Leland Stanford Junior
  641. X * University. Official permission to use this software is included in
  642. X * the documentation. It authorizes you to use this file for any
  643. X * non-commercial purpose, provided that this copyright notice is not
  644. X * removed and that any modifications made to this file are commented
  645. X * and dated in the style of my example below.
  646. X */
  647. X
  648. X/*
  649. X *
  650. X *  source file:   ./filters/vplib/vpdovplot.c
  651. X *
  652. X * Joe Dellinger (SEP), Jan 9 1988
  653. X *    Inserted this sample edit history entry.
  654. X *    Please log any further modifications made to this file:
  655. X */
  656. X
  657. X#include <stdio.h>
  658. X#include <vplot.h>
  659. X#include "../include/enum.h"
  660. X#include "../include/extern.h"
  661. X#include "../include/params.h"
  662. X#include "../include/err.h"
  663. X#include "vp.h"
  664. X
  665. extern FILE    *pltout;
  666. extern int      first_time;
  667. extern int      style;
  668. extern int      default_style;
  669. X
  670. extern int
  671. vecarea (), genmarker (), gentext (), genraster ();
  672. extern int
  673. genmessage (), genvector (), vp_do_dovplot (), nulldev ();
  674. extern int
  675. vplogvector (), vplogmessage ();
  676. extern int      (*genreader) ();
  677. X
  678. extern int
  679. vpopen (), vpreset (), vpmessage (), vperase (), vpclose ();
  680. extern int
  681. vpattributes (), vpvector (), vpplot ();
  682. extern int
  683. vpstartpoly (), vpmidpoly (), vpendpoly ();
  684. extern int
  685. vpraster (), vpmarker (), vptext ();
  686. extern int
  687. genarea (), genpoint ();
  688. X
  689. int             vpxmax, vpxmin, vpymax, vpymin;
  690. static int      vpxmaxs, vpxmins, vpymaxs, vpymins;
  691. X
  692. vp_do_dovplot (nn, inpltin, innames)
  693. X    int             nn;
  694. X    FILE          **inpltin;
  695. X    char            innames[][MAXFLEN + 1];
  696. X{
  697. int             ii;
  698. int             save_wantras;
  699. int             save_shade;
  700. char            string[80];
  701. static int      it_got_clipped;
  702. float           hh, ww;
  703. X
  704. X    if (nn == 0)
  705. X    return;
  706. X
  707. X/*
  708. X * If they want statistics, make one "dummy" pass through first
  709. X * before you really do it.
  710. X */
  711. X    if (vpalign)
  712. X    {
  713. X    /*
  714. X     * Turn on automatic processing 
  715. X     */
  716. X    smart_clip = NO;
  717. X    smart_raster = NO;
  718. X
  719. X    /*
  720. X     * Just outline polygons and raster with vectors 
  721. X     */
  722. X    save_wantras = wantras;
  723. X    save_shade = shade;
  724. X
  725. X    wantras = NO;
  726. X    shade = NO;
  727. X
  728. X    /*
  729. X     * Turn off any actual output 
  730. X     */
  731. X    dev.reset = nulldev;
  732. X    dev.message = vplogmessage;
  733. X    message = dev.message;
  734. X    dev.erase = nulldev;
  735. X    dev.close = nulldev;
  736. X    dev.vector = vplogvector;
  737. X    dev.marker = genmarker;
  738. X    dev.text = gentext;
  739. X    dev.area = nulldev;
  740. X    dev.raster = nulldev;
  741. X    dev.point = genpoint;
  742. X    dev.attributes = nulldev;
  743. X
  744. X/*
  745. X * Now do the trial pass
  746. X */
  747. X
  748. X    vpxmaxs = dev_xmin;
  749. X    vpxmins = dev_xmax;
  750. X    vpymaxs = dev_ymin;
  751. X    vpymins = dev_ymax;
  752. X
  753. X    it_got_clipped = NO;
  754. X
  755. X    for (ii = 0; ii < nn; ii++)
  756. X    {
  757. X        vpxmax = dev_xmin;
  758. X        vpxmin = dev_xmax;
  759. X        vpymax = dev_ymin;
  760. X        vpymin = dev_ymax;
  761. X
  762. X        pltin = inpltin[ii];
  763. X        strcpy (pltname, innames[ii]);
  764. X        dovplot ();
  765. X        rewind (pltin);
  766. X
  767. X        if (vpxmaxs < vpxmax)
  768. X        vpxmaxs = vpxmax;
  769. X        if (vpymaxs < vpymax)
  770. X        vpymaxs = vpymax;
  771. X        if (vpxmins > vpxmin)
  772. X        vpxmins = vpxmin;
  773. X        if (vpymins > vpymin)
  774. X        vpymins = vpymin;
  775. X
  776. X        if (vpstat)
  777. X        {
  778. X        hh = (float) (vpymax - vpymin) / RPERIN;
  779. X        ww = (float) (vpxmax - vpxmin) / RPERIN;
  780. X
  781. X        if (hh < 0. || ww < 0.)
  782. X        {
  783. X            fprintf (pltout,
  784. X                 "%17s: clipped away. ",
  785. X                 innames[ii]);
  786. X        }
  787. X        else
  788. X        {
  789. X            fprintf (pltout,
  790. X                 "%17s: h=%6.2f w=%6.2f;  x=(%6.2f,%6.2f) y=(%6.2f,%6.2f) ",
  791. X                 innames[ii],
  792. X                 hh, ww,
  793. X                 (float) vpxmin / RPERIN,
  794. X                 (float) vpxmax / RPERIN,
  795. X                 (float) vpymin / RPERIN,
  796. X                 (float) vpymax / RPERIN);
  797. X        }
  798. X
  799. X        if (vpxmax == dev_xmin || vpxmax == dev_xmax ||
  800. X            vpxmin == dev_xmax || vpxmin == dev_xmin ||
  801. X            vpymax == dev_ymin || vpymax == dev_ymax ||
  802. X            vpymin == dev_ymax || vpymin == dev_ymin)
  803. X        {
  804. X            fprintf (pltout, "*\n");
  805. X            it_got_clipped = YES;
  806. X        }
  807. X        else
  808. X        {
  809. X            fprintf (pltout, "\n");
  810. X        }
  811. X        }
  812. X    }
  813. X
  814. X    if (vpstat && nn > 1)
  815. X    {
  816. X        sprintf (string, "All %d", nn);
  817. X        fprintf (pltout,
  818. X        "%17s: h=%6.2f w=%6.2f;  x=(%6.2f,%6.2f) y=(%6.2f,%6.2f)\n",
  819. X             string,
  820. X             (float) (vpymaxs - vpymins) / RPERIN,
  821. X             (float) (vpxmaxs - vpxmins) / RPERIN,
  822. X             (float) vpxmins / RPERIN,
  823. X             (float) vpxmaxs / RPERIN,
  824. X             (float) vpymins / RPERIN,
  825. X             (float) vpymaxs / RPERIN);
  826. X    }
  827. X
  828. X    if (vpstat)
  829. X    {
  830. X        if (it_got_clipped)
  831. X        {
  832. X        if (vpbig)
  833. X        {
  834. X            fprintf (pltout,
  835. X             "\nA * indicates a plot that has been clipped.\n");
  836. X            fprintf (pltout,
  837. X                 "Remember rotated style plots go to the top of the screen,\n");
  838. X            fprintf (pltout,
  839. X                 "which is infinitely far away if big=y.\n");
  840. X        }
  841. X        else
  842. X        {
  843. X            fprintf (pltout,
  844. X            "\nA * indicates a plot that has been clipped at the\n");
  845. X            fprintf (pltout,
  846. X             "virtual screen boundaries. You may not want this.\n");
  847. X            fprintf (pltout,
  848. X            "This clipping can be disabled by the big=y option.\n");
  849. X        }
  850. X        }
  851. X
  852. X        for (ii = 0; ii < nn; ii++)
  853. X        {
  854. X        pltin = inpltin[ii];
  855. X        fclose (pltin);
  856. X        }
  857. X        return;
  858. X/*
  859. X * Statistics get changed by re-aligning anyways,
  860. X * So might as well just exit.
  861. X */
  862. X    }
  863. X
  864. X    switch (vpaligns[0])
  865. X    {
  866. X    case 'l':
  867. X        default_hshift += (0 - vpxmins);
  868. X        break;
  869. X    case 'r':
  870. X        default_hshift += (0 - vpxmaxs);
  871. X        break;
  872. X    case 'c':
  873. X        default_hshift += (0 - ((vpxmaxs + vpxmins) / 2));
  874. X        break;
  875. X    case 'u':
  876. X        break;
  877. X    default:
  878. X        ERR (WARN, name, "Unknown left-right alignment type %c.",
  879. X         vpaligns[0]);
  880. X        break;
  881. X    }
  882. X
  883. X    switch (vpaligns[1])
  884. X    {
  885. X    case 'b':
  886. X        default_vshift += (0 - vpymins);
  887. X        break;
  888. X    case 't':
  889. X        default_vshift += (0 - vpymaxs);
  890. X        break;
  891. X    case 'c':
  892. X        default_vshift += (0 - ((vpymaxs + vpymins) / 2));
  893. X        break;
  894. X    case 'u':
  895. X        break;
  896. X    default:
  897. X        ERR (WARN, name, "Unknown top-bottom alignment type %c.",
  898. X         vpaligns[1]);
  899. X        break;
  900. X    }
  901. X
  902. X    style = default_style;
  903. X
  904. X    reset_parameters ();
  905. X
  906. X    /*
  907. X     * Lie to dovplot, tell it to start from scratch again 
  908. X     */
  909. X    first_time = YES;
  910. X
  911. X    /*
  912. X     * Undo the damage from the first pass 
  913. X     */
  914. X    wantras = save_wantras;
  915. X    shade = save_shade;
  916. X
  917. X    dev.reset = vpreset;
  918. X    dev.message = vpmessage;
  919. X    message = dev.message;
  920. X    dev.erase = vperase;
  921. X    dev.close = vpclose;
  922. X    dev.vector = vpvector;
  923. X    dev.marker = vpmarker;
  924. X    dev.text = vptext;
  925. X    dev.area = genarea;
  926. X    dev.raster = vpraster;
  927. X    dev.point = genpoint;
  928. X    dev.attributes = vpattributes;
  929. X    }
  930. X
  931. X/*
  932. X *********************************************************************
  933. X * "Real" pass
  934. X *********************************************************************
  935. X */
  936. X
  937. X    if (vpdumb)
  938. X    {
  939. X    dev.message = genmessage;
  940. X    dev.vector = genvector;
  941. X    dev.marker = genmarker;
  942. X    dev.text = gentext;
  943. X    dev.area = vecarea;
  944. X    dev.raster = genraster;
  945. X    smart_clip = NO;
  946. X    smart_raster = NO;
  947. X    }
  948. X    else
  949. X    {
  950. X    smart_clip = YES;
  951. X    smart_raster = YES;
  952. X    }
  953. X
  954. X/* Second (or first) pass */
  955. X    for (ii = 0; ii < nn; ii++)
  956. X    {
  957. X    pltin = inpltin[ii];
  958. X    strcpy (pltname, innames[ii]);
  959. X    dovplot ();
  960. X    fclose (pltin);
  961. X    }
  962. X}
  963. END_OF_FILE
  964. if test 6843 -ne `wc -c <'Virtual_device/vplib/vpdovplot.c'`; then
  965.     echo shar: \"'Virtual_device/vplib/vpdovplot.c'\" unpacked with wrong size!
  966. fi
  967. # end of 'Virtual_device/vplib/vpdovplot.c'
  968. fi
  969. if test -f 'Vplot_Kernel/filters/Tests/DEMO_Graph' -a "${1}" != "-c" ; then 
  970.   echo shar: Will not clobber existing file \"'Vplot_Kernel/filters/Tests/DEMO_Graph'\"
  971. else
  972. echo shar: Extracting \"'Vplot_Kernel/filters/Tests/DEMO_Graph'\" \(6754 characters\)
  973. sed "s/^X//" >'Vplot_Kernel/filters/Tests/DEMO_Graph' <<'END_OF_FILE'
  974. e
  975. S s
  976. w 0 0 7560 5580
  977. f 1
  978. c 7
  979. m 1380 690
  980. d 6180 690
  981. p
  982. m 1380 900
  983. d 6180 900
  984. p
  985. m 1380 1110
  986. d 6180 1110
  987. p
  988. m 1380 1320
  989. d 6180 1320
  990. p
  991. m 1380 1530
  992. d 6180 1530
  993. p
  994. m 1380 1740
  995. d 6180 1740
  996. p
  997. m 1380 1950
  998. d 6180 1950
  999. p
  1000. m 1380 2160
  1001. d 6180 2160
  1002. p
  1003. m 1380 2370
  1004. d 6180 2370
  1005. p
  1006. m 1380 2580
  1007. d 6180 2580
  1008. p
  1009. m 1380 2790
  1010. d 6180 2790
  1011. p
  1012. m 1380 3000
  1013. d 6180 3000
  1014. p
  1015. m 1380 3210
  1016. d 6180 3210
  1017. p
  1018. m 1380 3420
  1019. d 6180 3420
  1020. p
  1021. m 1380 3630
  1022. d 6180 3630
  1023. p
  1024. m 1380 3840
  1025. d 6180 3840
  1026. p
  1027. m 1380 4050
  1028. d 6180 4050
  1029. p
  1030. m 1380 4260
  1031. d 6180 4260
  1032. p
  1033. m 1380 4470
  1034. d 6180 4470
  1035. p
  1036. m 1380 4680
  1037. d 6180 4680
  1038. p
  1039. m 1380 4890
  1040. d 6180 4890
  1041. p
  1042. f 2
  1043. m 1380 690
  1044. d 6180 690
  1045. p
  1046. f 0
  1047. J 3 3
  1048. m 1260 690
  1049. T 6 0
  1050. X0
  1051. p
  1052. f 2
  1053. m 1380 1530
  1054. d 6180 1530
  1055. p
  1056. f 0
  1057. m 1260 1530
  1058. T 6 0
  1059. X200
  1060. p
  1061. f 2
  1062. m 1380 2370
  1063. d 6180 2370
  1064. p
  1065. f 0
  1066. m 1260 2370
  1067. T 6 0
  1068. X400
  1069. p
  1070. f 2
  1071. m 1380 3210
  1072. d 6180 3210
  1073. p
  1074. f 0
  1075. m 1260 3210
  1076. T 6 0
  1077. X600
  1078. p
  1079. f 2
  1080. m 1380 4050
  1081. d 6180 4050
  1082. p
  1083. f 0
  1084. m 1260 4050
  1085. T 6 0
  1086. X800
  1087. p
  1088. f 2
  1089. m 1380 4890
  1090. d 6180 4890
  1091. p
  1092. f 0
  1093. m 1260 4890
  1094. T 6 0
  1095. X1000
  1096. p
  1097. J 2 -2
  1098. m 660 2790
  1099. T 6 90
  1100. Pressure (psia)
  1101. p
  1102. f 1
  1103. m 1380 690
  1104. d 1380 4890
  1105. p
  1106. m 1540 690
  1107. d 1540 4890
  1108. p
  1109. m 1700 690
  1110. d 1700 4890
  1111. p
  1112. m 1860 690
  1113. d 1860 4890
  1114. p
  1115. m 2020 690
  1116. d 2020 4890
  1117. p
  1118. m 2180 690
  1119. d 2180 4890
  1120. p
  1121. m 2340 690
  1122. d 2340 4890
  1123. p
  1124. m 2500 690
  1125. d 2500 4890
  1126. p
  1127. m 2660 690
  1128. d 2660 4890
  1129. p
  1130. m 2820 690
  1131. d 2820 4890
  1132. p
  1133. m 2980 690
  1134. d 2980 4890
  1135. p
  1136. m 3140 690
  1137. d 3140 4890
  1138. p
  1139. m 3300 690
  1140. d 3300 4890
  1141. p
  1142. m 3460 690
  1143. d 3460 4890
  1144. p
  1145. m 3620 690
  1146. d 3620 4890
  1147. p
  1148. m 3780 690
  1149. d 3780 4890
  1150. p
  1151. m 3940 690
  1152. d 3940 4890
  1153. p
  1154. m 4100 690
  1155. d 4100 4890
  1156. p
  1157. m 4260 690
  1158. d 4260 4890
  1159. p
  1160. m 4420 690
  1161. d 4420 4890
  1162. p
  1163. m 4580 690
  1164. d 4580 4890
  1165. p
  1166. m 4740 690
  1167. d 4740 4890
  1168. p
  1169. m 4900 690
  1170. d 4900 4890
  1171. p
  1172. m 5060 690
  1173. d 5060 4890
  1174. p
  1175. m 5220 690
  1176. d 5220 4890
  1177. p
  1178. m 5380 690
  1179. d 5380 4890
  1180. p
  1181. m 5540 690
  1182. d 5540 4890
  1183. p
  1184. m 5700 690
  1185. d 5700 4890
  1186. p
  1187. m 5860 690
  1188. d 5860 4890
  1189. p
  1190. m 6020 690
  1191. d 6020 4890
  1192. p
  1193. m 6180 690
  1194. d 6180 4890
  1195. p
  1196. f 2
  1197. m 1380 690
  1198. d 1380 4890
  1199. p
  1200. f 0
  1201. J 2 6
  1202. m 1380 570
  1203. T 6 0
  1204. X200
  1205. p
  1206. f 2
  1207. m 2180 690
  1208. d 2180 4890
  1209. p
  1210. f 0
  1211. m 2180 570
  1212. T 6 0
  1213. X250
  1214. p
  1215. f 2
  1216. m 2980 690
  1217. d 2980 4890
  1218. p
  1219. f 0
  1220. m 2980 570
  1221. T 6 0
  1222. X300
  1223. p
  1224. f 2
  1225. m 3780 690
  1226. d 3780 4890
  1227. p
  1228. f 0
  1229. m 3780 570
  1230. T 6 0
  1231. X350
  1232. p
  1233. f 2
  1234. m 4580 690
  1235. d 4580 4890
  1236. p
  1237. f 0
  1238. m 4580 570
  1239. T 6 0
  1240. X400
  1241. p
  1242. f 2
  1243. m 5380 690
  1244. d 5380 4890
  1245. p
  1246. f 0
  1247. m 5380 570
  1248. T 6 0
  1249. X450
  1250. p
  1251. f 2
  1252. m 6180 690
  1253. d 6180 4890
  1254. p
  1255. f 0
  1256. m 6180 570
  1257. T 6 0
  1258. X500
  1259. p
  1260. J 2 8
  1261. m 3780 330
  1262. T 6 0
  1263. Temperature
  1264. p
  1265. J 2 -2
  1266. m 3780 5070
  1267. T 9 0
  1268. Binary P-T Diagram   C2 - nC5
  1269. p
  1270. w 1380 690 6180 4890
  1271. f 3
  1272. c 6
  1273. m 4449 1307
  1274. d 4777 1616
  1275. d 4858 1708
  1276. d 5215 2201
  1277. d 5472 2680
  1278. d 5587 2987
  1279. d 5590 3011
  1280. d 5588 3024
  1281. d 5580 3030
  1282. d 5526 2986
  1283. d 5268 2650
  1284. d 4801 2083
  1285. d 4307 1616
  1286. d 4093 1455
  1287. d 3483 1111
  1288. d 2958 921
  1289. d 2513 817
  1290. p
  1291. c 5
  1292. m 3864 1307
  1293. d 4307 1616
  1294. d 4417 1708
  1295. d 5048 2368
  1296. d 5431 2867
  1297. d 5535 2996
  1298. d 5580 3030
  1299. d 5585 3028
  1300. d 5588 3024
  1301. d 5590 3011
  1302. d 5582 2963
  1303. d 5530 2813
  1304. d 5370 2474
  1305. d 5133 2074
  1306. d 4777 1616
  1307. d 4680 1515
  1308. d 4277 1181
  1309. d 3922 983
  1310. d 3608 865
  1311. p
  1312. f 5
  1313. c 4
  1314. m 4241 1307
  1315. d 4536 1616
  1316. d 4609 1708
  1317. d 5003 2368
  1318. d 5275 3104
  1319. d 5289 3160
  1320. d 5336 3414
  1321. d 5343 3518
  1322. d 5330 3622
  1323. d 5324 3637
  1324. d 5268 3677
  1325. d 5237 3672
  1326. d 5031 3507
  1327. d 4734 3160
  1328. d 4663 3072
  1329. d 4312 2641
  1330. d 3992 2270
  1331. d 3703 1964
  1332. d 3442 1714
  1333. d 3331 1616
  1334. d 3206 1512
  1335. d 2991 1349
  1336. d 2702 1160
  1337. d 2446 1024
  1338. d 2218 925
  1339. d 1919 828
  1340. p
  1341. c 3
  1342. m 2932 1307
  1343. d 3305 1595
  1344. d 3331 1616
  1345. d 3746 2007
  1346. d 4271 2592
  1347. d 4733 3160
  1348. d 4884 3342
  1349. d 5189 3648
  1350. d 5267 3677
  1351. d 5303 3665
  1352. d 5324 3637
  1353. d 5331 3620
  1354. d 5342 3544
  1355. d 5343 3518
  1356. d 5333 3384
  1357. d 5289 3160
  1358. d 5266 3070
  1359. d 5148 2710
  1360. d 4991 2343
  1361. d 4705 1842
  1362. d 4536 1616
  1363. d 4430 1493
  1364. d 4173 1250
  1365. d 3934 1080
  1366. d 3609 917
  1367. p
  1368. f 3
  1369. c 2
  1370. m 4124 1307
  1371. d 4404 1616
  1372. d 4472 1708
  1373. d 4840 2368
  1374. d 5108 3160
  1375. d 5110 3165
  1376. d 5194 3746
  1377. d 5188 3851
  1378. d 5158 3970
  1379. d 5083 4026
  1380. d 4914 3930
  1381. d 4725 3731
  1382. d 4531 3485
  1383. d 4340 3227
  1384. d 4291 3160
  1385. d 4155 2973
  1386. d 3978 2733
  1387. d 3729 2405
  1388. d 3498 2119
  1389. d 3284 1874
  1390. d 3035 1616
  1391. d 2992 1575
  1392. d 2730 1345
  1393. d 2494 1170
  1394. d 2179 986
  1395. p
  1396. c 1
  1397. m 2683 1307
  1398. d 2994 1577
  1399. d 3035 1616
  1400. d 3349 1946
  1401. d 3755 2438
  1402. d 4220 3063
  1403. d 4291 3160
  1404. d 4736 3743
  1405. d 4986 3984
  1406. d 5079 4017
  1407. d 5156 3965
  1408. d 5172 3928
  1409. d 5193 3763
  1410. d 5194 3748
  1411. d 5180 3544
  1412. d 5137 3289
  1413. d 5108 3160
  1414. d 5031 2879
  1415. d 4885 2473
  1416. d 4711 2099
  1417. d 4452 1680
  1418. d 4404 1616
  1419. d 4205 1386
  1420. d 3973 1179
  1421. d 3757 1034
  1422. d 3460 893
  1423. p
  1424. f 5
  1425. c 6
  1426. m 3995 1307
  1427. d 4258 1616
  1428. d 4322 1708
  1429. d 4665 2368
  1430. d 4915 3160
  1431. d 4974 3457
  1432. d 5020 3950
  1433. d 5020 3979
  1434. d 4957 4290
  1435. d 4938 4311
  1436. d 4872 4338
  1437. d 4864 4338
  1438. d 4779 4306
  1439. d 4686 4233
  1440. d 4590 4130
  1441. d 4442 3941
  1442. d 4294 3728
  1443. d 4077 3393
  1444. d 3929 3160
  1445. d 3868 3064
  1446. d 3670 2755
  1447. d 3392 2342
  1448. d 3138 1994
  1449. d 2903 1707
  1450. d 2821 1616
  1451. d 2585 1378
  1452. d 2301 1146
  1453. d 2046 986
  1454. d 1712 840
  1455. p
  1456. c 5
  1457. m 2506 1307
  1458. d 2777 1568
  1459. d 2821 1616
  1460. d 3078 1918
  1461. d 3597 2644
  1462. d 3929 3160
  1463. d 4208 3597
  1464. d 4851 4337
  1465. d 4873 4339
  1466. d 4958 4292
  1467. d 5020 3955
  1468. d 5020 3916
  1469. d 4915 3160
  1470. d 4895 3077
  1471. d 4623 2268
  1472. d 4339 1733
  1473. d 4258 1616
  1474. d 4065 1380
  1475. d 3810 1146
  1476. d 3573 991
  1477. d 3253 852
  1478. p
  1479. f 3
  1480. c 4
  1481. m 3847 1307
  1482. d 4094 1616
  1483. d 4153 1708
  1484. d 4471 2368
  1485. d 4700 3160
  1486. d 4756 3457
  1487. d 4818 4126
  1488. d 4796 4394
  1489. d 4766 4498
  1490. d 4716 4583
  1491. d 4667 4611
  1492. d 4646 4613
  1493. d 4606 4606
  1494. d 4541 4571
  1495. d 4438 4475
  1496. d 4372 4394
  1497. d 4278 4264
  1498. d 4116 4007
  1499. d 3956 3728
  1500. d 3724 3307
  1501. d 3643 3160
  1502. d 3504 2908
  1503. d 3295 2546
  1504. d 3005 2082
  1505. d 2737 1712
  1506. d 2660 1616
  1507. d 2491 1426
  1508. d 2156 1125
  1509. d 1859 939
  1510. d 1596 828
  1511. p
  1512. c 3
  1513. m 2371 1307
  1514. d 2614 1562
  1515. d 2660 1616
  1516. d 2877 1898
  1517. d 3317 2582
  1518. d 3643 3160
  1519. d 3818 3478
  1520. d 4370 4392
  1521. d 4372 4394
  1522. d 4632 4612
  1523. d 4647 4613
  1524. d 4717 4585
  1525. d 4794 4394
  1526. d 4806 4303
  1527. d 4815 4109
  1528. d 4785 3664
  1529. d 4700 3160
  1530. d 4659 2982
  1531. d 4503 2456
  1532. d 4337 2051
  1533. d 4172 1739
  1534. d 4094 1616
  1535. d 4009 1498
  1536. d 3776 1237
  1537. d 3558 1060
  1538. d 3355 940
  1539. d 3077 829
  1540. p
  1541. f 5
  1542. c 2
  1543. m 3672 1307
  1544. d 3899 1616
  1545. d 3954 1708
  1546. d 4244 2368
  1547. d 4452 3160
  1548. d 4502 3457
  1549. d 4563 4202
  1550. d 4563 4243
  1551. d 4557 4394
  1552. d 4516 4652
  1553. d 4471 4750
  1554. d 4423 4790
  1555. d 4417 4793
  1556. d 4391 4797
  1557. d 4356 4791
  1558. d 4292 4752
  1559. d 4189 4642
  1560. d 4030 4397
  1561. d 4028 4394
  1562. d 3869 4098
  1563. d 3710 3775
  1564. d 3479 3290
  1565. d 3417 3160
  1566. d 3258 2837
  1567. d 3048 2431
  1568. d 2749 1925
  1569. d 2532 1616
  1570. d 2471 1539
  1571. d 2213 1256
  1572. d 1861 984
  1573. d 1552 835
  1574. p
  1575. c 1
  1576. m 2265 1307
  1577. d 2485 1556
  1578. d 2532 1616
  1579. d 2719 1878
  1580. d 3096 2521
  1581. d 3417 3160
  1582. d 3508 3351
  1583. d 3955 4262
  1584. d 4028 4394
  1585. d 4182 4633
  1586. d 4391 4797
  1587. d 4393 4797
  1588. d 4423 4790
  1589. d 4480 4736
  1590. d 4543 4527
  1591. d 4557 4394
  1592. d 4563 4207
  1593. d 4562 4122
  1594. d 4503 3462
  1595. d 4452 3160
  1596. d 4403 2928
  1597. d 4286 2498
  1598. d 4164 2150
  1599. d 4039 1869
  1600. d 3915 1642
  1601. d 3899 1616
  1602. d 3734 1381
  1603. d 3560 1191
  1604. d 3315 1000
  1605. d 3091 882
  1606. p
  1607. f 3
  1608. c 6
  1609. m 3119 1307
  1610. d 3297 1616
  1611. d 3339 1708
  1612. d 3560 2368
  1613. d 3714 3160
  1614. d 3749 3457
  1615. d 3783 4056
  1616. d 3782 4138
  1617. d 3761 4394
  1618. d 3744 4465
  1619. d 3685 4538
  1620. d 3672 4536
  1621. d 3629 4504
  1622. d 3579 4434
  1623. d 3557 4394
  1624. d 3475 4219
  1625. d 3362 3934
  1626. d 3241 3609
  1627. d 3115 3265
  1628. d 3075 3160
  1629. d 2915 2750
  1630. d 2599 2060
  1631. d 2340 1616
  1632. d 2279 1528
  1633. d 1968 1167
  1634. d 1632 919
  1635. p
  1636. c 5
  1637. m 2104 1307
  1638. d 2287 1539
  1639. d 2340 1616
  1640. d 2473 1830
  1641. d 2752 2374
  1642. d 3075 3160
  1643. d 3108 3246
  1644. d 3427 4102
  1645. d 3556 4394
  1646. d 3629 4506
  1647. d 3684 4538
  1648. d 3687 4538
  1649. d 3761 4394
  1650. d 3769 4343
  1651. d 3783 4062
  1652. d 3764 3626
  1653. d 3715 3160
  1654. d 3523 2230
  1655. d 3380 1805
  1656. d 3297 1616
  1657. d 3236 1498
  1658. d 3096 1275
  1659. d 2960 1114
  1660. d 2831 997
  1661. d 2649 879
  1662. p
  1663. w 0 0 7560 5580
  1664. f 0
  1665. c 7
  1666. m 1380 690
  1667. d 1380 4890
  1668. p
  1669. m 1380 690
  1670. d 6180 690
  1671. p
  1672. m 6180 4890
  1673. d 6180 690
  1674. p
  1675. m 6180 4890
  1676. d 1380 4890
  1677. p
  1678. END_OF_FILE
  1679. if test 6754 -ne `wc -c <'Vplot_Kernel/filters/Tests/DEMO_Graph'`; then
  1680.     echo shar: \"'Vplot_Kernel/filters/Tests/DEMO_Graph'\" unpacked with wrong size!
  1681. fi
  1682. # end of 'Vplot_Kernel/filters/Tests/DEMO_Graph'
  1683. fi
  1684. if test -f 'Vplot_Kernel/filters/genlib/polysubs.c' -a "${1}" != "-c" ; then 
  1685.   echo shar: Will not clobber existing file \"'Vplot_Kernel/filters/genlib/polysubs.c'\"
  1686. else
  1687. echo shar: Extracting \"'Vplot_Kernel/filters/genlib/polysubs.c'\" \(7470 characters\)
  1688. sed "s/^X//" >'Vplot_Kernel/filters/genlib/polysubs.c' <<'END_OF_FILE'
  1689. X/*
  1690. X * Copyright 1987 the Board of Trustees of the Leland Stanford Junior
  1691. X * University. Official permission to use this software is included in
  1692. X * the documentation. It authorizes you to use this file for any
  1693. X * non-commercial purpose, provided that this copyright notice is not
  1694. X * removed and that any modifications made to this file are commented
  1695. X * and dated in the style of my example below.
  1696. X */
  1697. X
  1698. X/*
  1699. X *
  1700. X *  source file:   ./filters/genlib/polysubs.c
  1701. X *
  1702. X * Joe Dellinger (SEP), June 11 1987
  1703. X *    Inserted this sample edit history entry.
  1704. X *    Please log any further modifications made to this file:
  1705. X */
  1706. X
  1707. X#include <stdio.h>
  1708. X#include "../include/extern.h"
  1709. X#define OUT 0
  1710. X#define IN  1
  1711. X#define UNSET -1
  1712. X
  1713. X/*
  1714. X * Do a simple-minded polygon clipping. If it goes out, draw it to where it
  1715. X * crossed the edge. When it comes back in, draw it from where it hit the
  1716. X * edge. This is complicated if you have to deal with several edges, but
  1717. X * very easy for one edge. So, since I'm lazy, I did it four times, each
  1718. X * routine reading in points, clipping, and sending the output on for
  1719. X * further clipping. Finally, it sends it on to polyfix which does
  1720. X * complicated processing. JAD 5-11-84
  1721. X */
  1722. X
  1723. inter (x1, x2, y1, y2, x)
  1724. X    int             x1, x2, y1, y2, x;
  1725. X{
  1726. X    return y1 + (y2 - y1) * (x - x1) / (x2 - x1);
  1727. X}
  1728. X
  1729. xminclip (xin, yin, first)
  1730. X    int             xin, yin, *first;
  1731. X{
  1732. static int      xstart, ystart;
  1733. static int      ostatus;
  1734. int             status;
  1735. static int      firstout;
  1736. static int      xold, yold;
  1737. X
  1738. X    if (*first == 2)
  1739. X    {
  1740. X    ostatus = UNSET;
  1741. X    firstout = 2;
  1742. X    yminclip (0, 0, &firstout);
  1743. X    return;
  1744. X    }
  1745. X
  1746. X    if (*first == -1)
  1747. X    {
  1748. X    if (ostatus == UNSET)
  1749. X    {
  1750. X        /* We never got anything! */
  1751. X        return;
  1752. X    }
  1753. X    /* finish up */
  1754. X    xin = xstart;
  1755. X    yin = ystart;
  1756. X    }
  1757. X
  1758. X    status = IN;
  1759. X    if (xin < xwmin)
  1760. X    status = OUT;
  1761. X
  1762. X    if (*first == 1)
  1763. X    {
  1764. X    /* This is the first time we have been called */
  1765. X    xstart = xin;
  1766. X    ystart = yin;
  1767. X    firstout = 1;
  1768. X    *first = 0;
  1769. X    ostatus = status;
  1770. X    xold = xin;
  1771. X    yold = yin;
  1772. X    return;
  1773. X    }
  1774. X/* Not our first time */
  1775. X
  1776. X    switch (status)
  1777. X    {
  1778. X    case IN:
  1779. X    switch (ostatus)
  1780. X    {
  1781. X    case IN:
  1782. X        /* in this time, in last time */
  1783. X        yminclip (xin, yin, &firstout);
  1784. X        break;
  1785. X    case OUT:
  1786. X        /* out last time, in now */
  1787. X        /* find where we came in! */
  1788. X        yminclip (xwmin, inter (xold, xin, yold, yin, xwmin), &firstout);
  1789. X        yminclip (xin, yin, &firstout);
  1790. X        break;
  1791. X    }
  1792. X    break;
  1793. X    case OUT:
  1794. X    switch (ostatus)
  1795. X    {
  1796. X    case IN:
  1797. X        /* in last time, out now */
  1798. X        /* find where we went out */
  1799. X        yminclip (xwmin, inter (xold, xin, yold, yin, xwmin), &firstout);
  1800. X        break;
  1801. X    case OUT:
  1802. X        /* out last time, still out */
  1803. X        /* don't output anything */
  1804. X        break;
  1805. X    }
  1806. X    break;
  1807. X    }
  1808. X    if (*first == -1)
  1809. X    {
  1810. X    firstout = -1;
  1811. X    yminclip (0, 0, &firstout);
  1812. X    }
  1813. X    else
  1814. X    {
  1815. X    xold = xin;
  1816. X    yold = yin;
  1817. X    ostatus = status;
  1818. X    }
  1819. X}
  1820. X
  1821. X
  1822. yminclip (xin, yin, first)
  1823. X    int             xin, yin, *first;
  1824. X{
  1825. static int      xstart, ystart;
  1826. static int      ostatus;
  1827. int             status;
  1828. static int      firstout;
  1829. static int      xold, yold;
  1830. X
  1831. X    if (*first == 2)
  1832. X    {
  1833. X    ostatus = UNSET;
  1834. X    firstout = 2;
  1835. X    xmaxclip (0, 0, &firstout);
  1836. X    return;
  1837. X    }
  1838. X
  1839. X    if (*first == -1)
  1840. X    {
  1841. X    if (ostatus == UNSET)
  1842. X    {
  1843. X        /* We never got anything! */
  1844. X        return;
  1845. X    }
  1846. X    /* finish up */
  1847. X    xin = xstart;
  1848. X    yin = ystart;
  1849. X    }
  1850. X
  1851. X    status = IN;
  1852. X    if (yin < ywmin)
  1853. X    status = OUT;
  1854. X
  1855. X    if (*first == 1)
  1856. X    {
  1857. X    /* This is the first time we have been called */
  1858. X    xstart = xin;
  1859. X    ystart = yin;
  1860. X    firstout = 1;
  1861. X    *first = 0;
  1862. X    ostatus = status;
  1863. X    xold = xin;
  1864. X    yold = yin;
  1865. X    return;
  1866. X    }
  1867. X/* Not our first time */
  1868. X
  1869. X    switch (status)
  1870. X    {
  1871. X    case IN:
  1872. X    switch (ostatus)
  1873. X    {
  1874. X    case IN:
  1875. X        /* in this time, in last time */
  1876. X        xmaxclip (xin, yin, &firstout);
  1877. X        break;
  1878. X    case OUT:
  1879. X        /* out last time, in now */
  1880. X        /* find where we came in! */
  1881. X        xmaxclip (inter (yold, yin, xold, xin, ywmin), ywmin, &firstout);
  1882. X        xmaxclip (xin, yin, &firstout);
  1883. X        break;
  1884. X    }
  1885. X    break;
  1886. X    case OUT:
  1887. X    switch (ostatus)
  1888. X    {
  1889. X    case IN:
  1890. X        /* in last time, out now */
  1891. X        /* find where we went out */
  1892. X        xmaxclip (inter (yold, yin, xold, xin, ywmin), ywmin, &firstout);
  1893. X        break;
  1894. X    case OUT:
  1895. X        /* out last time, still out */
  1896. X        /* don't output anything */
  1897. X        break;
  1898. X    }
  1899. X    break;
  1900. X    }
  1901. X    if (*first == -1)
  1902. X    {
  1903. X    firstout = -1;
  1904. X    xmaxclip (0, 0, &firstout);
  1905. X    }
  1906. X    else
  1907. X    {
  1908. X    xold = xin;
  1909. X    yold = yin;
  1910. X    ostatus = status;
  1911. X    }
  1912. X}
  1913. X
  1914. xmaxclip (xin, yin, first)
  1915. X    int             xin, yin, *first;
  1916. X{
  1917. static int      xstart, ystart;
  1918. static int      ostatus;
  1919. int             status;
  1920. static int      firstout;
  1921. static int      xold, yold;
  1922. X
  1923. X    if (*first == 2)
  1924. X    {
  1925. X    ostatus = UNSET;
  1926. X    firstout = 2;
  1927. X    ymaxclip (0, 0, &firstout);
  1928. X    return;
  1929. X    }
  1930. X
  1931. X    if (*first == -1)
  1932. X    {
  1933. X    if (ostatus == UNSET)
  1934. X    {
  1935. X        /* We never got anything! */
  1936. X        return;
  1937. X    }
  1938. X    /* finish up */
  1939. X    xin = xstart;
  1940. X    yin = ystart;
  1941. X    }
  1942. X
  1943. X    status = IN;
  1944. X    if (xin > xwmax)
  1945. X    status = OUT;
  1946. X
  1947. X    if (*first == 1)
  1948. X    {
  1949. X    /* This is the first time we have been called */
  1950. X    xstart = xin;
  1951. X    ystart = yin;
  1952. X    firstout = 1;
  1953. X    *first = 0;
  1954. X    ostatus = status;
  1955. X    xold = xin;
  1956. X    yold = yin;
  1957. X    return;
  1958. X    }
  1959. X/* Not our first time */
  1960. X
  1961. X    switch (status)
  1962. X    {
  1963. X    case IN:
  1964. X    switch (ostatus)
  1965. X    {
  1966. X    case IN:
  1967. X        /* in this time, in last time */
  1968. X        ymaxclip (xin, yin, &firstout);
  1969. X        break;
  1970. X    case OUT:
  1971. X        /* out last time, in now */
  1972. X        /* find where we came in! */
  1973. X        ymaxclip (xwmax, inter (xold, xin, yold, yin, xwmax), &firstout);
  1974. X        ymaxclip (xin, yin, &firstout);
  1975. X        break;
  1976. X    }
  1977. X    break;
  1978. X    case OUT:
  1979. X    switch (ostatus)
  1980. X    {
  1981. X    case IN:
  1982. X        /* in last time, out now */
  1983. X        /* find where we went out */
  1984. X        ymaxclip (xwmax, inter (xold, xin, yold, yin, xwmax), &firstout);
  1985. X        break;
  1986. X    case OUT:
  1987. X        /* out last time, still out */
  1988. X        /* don't output anything */
  1989. X        break;
  1990. X    }
  1991. X    break;
  1992. X    }
  1993. X    if (*first == -1)
  1994. X    {
  1995. X    firstout = -1;
  1996. X    ymaxclip (0, 0, &firstout);
  1997. X    }
  1998. X    else
  1999. X    {
  2000. X    xold = xin;
  2001. X    yold = yin;
  2002. X    ostatus = status;
  2003. X    }
  2004. X}
  2005. X
  2006. X
  2007. ymaxclip (xin, yin, first)
  2008. X    int             xin, yin, *first;
  2009. X{
  2010. static int      xstart, ystart;
  2011. static int      ostatus;
  2012. int             status;
  2013. static int      firstout;
  2014. static int      xold, yold;
  2015. X
  2016. X    if (*first == 2)
  2017. X    {
  2018. X    ostatus = UNSET;
  2019. X    return;
  2020. X    }
  2021. X
  2022. X    if (*first == -1)
  2023. X    {
  2024. X    if (ostatus == UNSET)
  2025. X    {
  2026. X        /* We never got anything! */
  2027. X        return;
  2028. X    }
  2029. X    /* finish up */
  2030. X    xin = xstart;
  2031. X    yin = ystart;
  2032. X    }
  2033. X
  2034. X    status = IN;
  2035. X    if (yin > ywmax)
  2036. X    status = OUT;
  2037. X
  2038. X    if (*first == 1)
  2039. X    {
  2040. X    /* This is the first time we have been called */
  2041. X    xstart = xin;
  2042. X    ystart = yin;
  2043. X    firstout = 1;
  2044. X    *first = 0;
  2045. X    ostatus = status;
  2046. X    xold = xin;
  2047. X    yold = yin;
  2048. X    return;
  2049. X    }
  2050. X/* Not our first time */
  2051. X
  2052. X    switch (status)
  2053. X    {
  2054. X    case IN:
  2055. X    switch (ostatus)
  2056. X    {
  2057. X    case IN:
  2058. X        /* in this time, in last time */
  2059. X        polyfix (xin, yin, &firstout);
  2060. X        break;
  2061. X    case OUT:
  2062. X        /* out last time, in now */
  2063. X        /* find where we came in! */
  2064. X        polyfix (inter (yold, yin, xold, xin, ywmax), ywmax, &firstout);
  2065. X        polyfix (xin, yin, &firstout);
  2066. X        break;
  2067. X    }
  2068. X    break;
  2069. X    case OUT:
  2070. X    switch (ostatus)
  2071. X    {
  2072. X    case IN:
  2073. X        /* in last time, out now */
  2074. X        /* find where we went out */
  2075. X        polyfix (inter (yold, yin, xold, xin, ywmax), ywmax, &firstout);
  2076. X        break;
  2077. X    case OUT:
  2078. X        /* out last time, still out */
  2079. X        /* don't output anything */
  2080. X        break;
  2081. X    }
  2082. X    break;
  2083. X    }
  2084. X    if (*first == -1)
  2085. X    {
  2086. X    /* We're done! */
  2087. X    return;
  2088. X    }
  2089. X    else
  2090. X    {
  2091. X    xold = xin;
  2092. X    yold = yin;
  2093. X    ostatus = status;
  2094. X    }
  2095. X}
  2096. END_OF_FILE
  2097. if test 7470 -ne `wc -c <'Vplot_Kernel/filters/genlib/polysubs.c'`; then
  2098.     echo shar: \"'Vplot_Kernel/filters/genlib/polysubs.c'\" unpacked with wrong size!
  2099. fi
  2100. # end of 'Vplot_Kernel/filters/genlib/polysubs.c'
  2101. fi
  2102. if test -f 'Vplot_Kernel/filters/include/vplotfonts/pen.vplot_font' -a "${1}" != "-c" ; then 
  2103.   echo shar: Will not clobber existing file \"'Vplot_Kernel/filters/include/vplotfonts/pen.vplot_font'\"
  2104. else
  2105. echo shar: Extracting \"'Vplot_Kernel/filters/include/vplotfonts/pen.vplot_font'\" \(6248 characters\)
  2106. sed "s/^X//" >'Vplot_Kernel/filters/include/vplotfonts/pen.vplot_font' <<'END_OF_FILE'
  2107. X30 131
  2108. X2 3 7
  2109. X8 6 3 0 -2
  2110. X
  2111. e 5555 5555 " 5555 (Out of order, but order doesn't matter)
  2112. m -1 6
  2113. d -1 5
  2114. m 0 6
  2115. d 0 5
  2116. e 1 1 \127 4 (Character number 127... no good ASCII representation)
  2117. A 4
  2118. X    -1 3
  2119. X    -1 5
  2120. X    1 5
  2121. X    1 3
  2122. X/* This line is a comment */
  2123. e 5555 5555 $ (The final "5555" can just be dropped, if you wish)
  2124. m -2 2
  2125. d -1 1
  2126. d 1 1
  2127. d 2 2
  2128. d 1 3
  2129. d -1 3
  2130. d -2 4
  2131. d -1 5
  2132. d 1 5
  2133. d 2 4
  2134. m 0 6
  2135. d -1 0
  2136. m 1 6
  2137. d 0 0
  2138. e 1 1 ! (This character needs a bit of extra space over the default)
  2139. m 0 7
  2140. d 0 2
  2141. d 1 7
  2142. d 0 7
  2143. m 0 1
  2144. d 0 0
  2145. d 1 1
  2146. d 0 1
  2147. e 5555 5555 ~
  2148. m -2 4
  2149. d -1 5
  2150. d 1 4
  2151. d 2 5
  2152. e 5555 5555 #
  2153. m -2 0
  2154. d 0 6
  2155. m 0 0
  2156. d 2 6
  2157. m -2 4
  2158. d 2 4
  2159. m -2 2
  2160. d 2 2
  2161. e 5555 5555 %
  2162. m -2 0
  2163. d 2 6
  2164. d -1 6
  2165. d -2 5
  2166. d -1 4
  2167. d 0 5
  2168. d -1 6
  2169. m 1 0
  2170. d 0 1
  2171. d 1 2
  2172. d 2 1
  2173. d 1 0
  2174. e 5555 5555 &
  2175. m 2 1
  2176. d 1 0
  2177. d -1 0
  2178. d -2 1
  2179. d -2 2
  2180. d -1 3
  2181. d 1 3
  2182. d 2 4
  2183. d 2 5
  2184. d 1 6
  2185. d 0 6
  2186. d -1 5
  2187. d -1 4
  2188. d 2 0
  2189. e 5555 5555 '
  2190. m -1 4
  2191. d 0 6
  2192. e 5555 5555 (
  2193. m 1 0
  2194. d 0 1
  2195. d 0 5
  2196. d 1 6
  2197. e 5555 5555 )
  2198. m -1 0
  2199. d 0 1
  2200. d 0 5
  2201. d -1 6
  2202. e 5555 5555 *
  2203. m -2 1
  2204. d 2 5
  2205. m -2 5
  2206. d 2 1
  2207. m 0 0
  2208. d 0 6
  2209. m -2 3
  2210. d 2 3
  2211. e 5555 5555 +
  2212. m -2 3
  2213. d 2 3
  2214. m 0 5
  2215. d 0 1
  2216. e 5555 5555 ,
  2217. m -1 -1
  2218. d 1 1
  2219. d 0 2
  2220. d -1 1
  2221. d 0 0
  2222. e 5555 5555 -
  2223. m -2 3
  2224. d 2 3
  2225. e 5555 5555 .
  2226. m 0 0
  2227. d 1 1
  2228. d 0 2
  2229. d -1 1
  2230. d 0 0
  2231. e 5555 5555 /
  2232. m -2 0
  2233. d 2 6
  2234. e 5555 5555 0
  2235. m -1 0
  2236. d -2 1
  2237. d -2 5
  2238. d -1 6
  2239. d 1 6
  2240. d 2 5
  2241. d 2 1
  2242. d 1 0
  2243. d -1 0
  2244. e 5555 5555 1
  2245. m -1 5
  2246. d 0 6
  2247. d 0 0
  2248. m -1 0
  2249. d 1 0
  2250. e 5555 5555 2
  2251. m -2 5
  2252. d -1 6
  2253. d 1 6
  2254. d 2 5
  2255. d 2 4
  2256. d 1 3
  2257. d -1 3
  2258. d -2 2
  2259. d -2 0
  2260. d 2 0
  2261. d 2 1
  2262. e 5555 5555 3
  2263. m -2 1
  2264. d -1 0
  2265. d 1 0
  2266. d 2 1
  2267. d 2 2
  2268. d 1 3
  2269. d -1 3
  2270. m 1 3
  2271. d 2 4
  2272. d 2 5
  2273. d 1 6
  2274. d -1 6
  2275. d -2 5
  2276. e 5555 5555 4
  2277. m 1 0
  2278. d 1 6
  2279. d -2 2
  2280. d 2 2
  2281. e 5555 5555 5
  2282. m -2 1
  2283. d -1 0
  2284. d 1 0
  2285. d 2 1
  2286. d 2 2
  2287. d 1 3
  2288. d -2 3
  2289. d -2 6
  2290. d 2 6
  2291. e 5555 5555 6
  2292. m 2 5
  2293. d 1 6
  2294. d -1 6
  2295. d -2 5
  2296. d -2 1
  2297. d -1 0
  2298. d 1 0
  2299. d 2 1
  2300. d 2 2
  2301. d 1 3
  2302. d -1 3
  2303. d -2 2
  2304. e 5555 5555 7
  2305. m -2 6
  2306. d 2 6
  2307. d -2 0
  2308. m -1 3
  2309. d 1 3
  2310. e 5555 5555 8
  2311. m -1 0
  2312. d -2 1
  2313. d -2 2
  2314. d -1 3
  2315. d 1 3
  2316. d 2 2
  2317. d 2 1
  2318. d 1 0
  2319. d -1 0
  2320. m -1 3
  2321. d -2 4
  2322. d -2 5
  2323. d -1 6
  2324. d 1 6
  2325. d 2 5
  2326. d 2 4
  2327. d 1 3
  2328. e 5555 5555 9
  2329. m -2 1
  2330. d -1 0
  2331. d 1 0
  2332. d 2 1
  2333. d 2 5
  2334. d 1 6
  2335. d -1 6
  2336. d -2 5
  2337. d -2 3
  2338. d -1 2
  2339. d 1 2
  2340. d 2 3
  2341. e 5555 5555 :
  2342. m 0 1
  2343. d 1 2
  2344. d -1 4
  2345. d 0 5
  2346. d 1 4
  2347. d -1 2
  2348. d 0 1
  2349. e 5555 5555 ;
  2350. m -1 -1
  2351. d 1 1
  2352. d -1 3
  2353. d 0 4
  2354. d 1 3
  2355. d -1 1
  2356. d 0 0
  2357. e 5555 5555 <
  2358. m 2 5
  2359. d -2 3
  2360. d 2 1
  2361. e 5555 5555 =
  2362. m -2 4
  2363. d 2 4
  2364. m -2 2
  2365. d 2 2
  2366. e 5555 5555 >
  2367. m -2 5
  2368. d 2 3
  2369. d -2 1
  2370. e 5555 5555 ?
  2371. m -2 5
  2372. d -1 6
  2373. d 1 6
  2374. d 2 5
  2375. d 2 4
  2376. d 1 3
  2377. d 0 3
  2378. d 0 2
  2379. m 0 1
  2380. d 0 0
  2381. e 5555 5555 @
  2382. m 0 1
  2383. d 1 2
  2384. d 1 4
  2385. d 0 5
  2386. d -1 4
  2387. d -1 2
  2388. d 0 1
  2389. d 1 1
  2390. d 2 2
  2391. d 2 5
  2392. d 1 6
  2393. d -1 6
  2394. d -2 5
  2395. d -2 1
  2396. d -1 0
  2397. d 1 0
  2398. d 2 1
  2399. e 5555 5555 A
  2400. m -2 0
  2401. d -2 5
  2402. d -1 6
  2403. d 1 6
  2404. d 2 5
  2405. d 2 0
  2406. m -2 2
  2407. d 2 2
  2408. e 5555 5555 B
  2409. m -2 0
  2410. d -2 6
  2411. d 1 6
  2412. d 2 5
  2413. d 2 4
  2414. d 1 3
  2415. d -2 3
  2416. m 1 3
  2417. d 2 2
  2418. d 2 1
  2419. d 1 0
  2420. d -2 0
  2421. e 5555 5555 C
  2422. m 2 1
  2423. d 1 0
  2424. d -1 0
  2425. d -2 1
  2426. d -2 5
  2427. d -1 6
  2428. d 1 6
  2429. d 2 5
  2430. e 5555 5555 D
  2431. m -2 0
  2432. d -2 6
  2433. d 1 6
  2434. d 2 5
  2435. d 2 1
  2436. d 1 0
  2437. d -2 0
  2438. e 5555 5555 E
  2439. m -2 0
  2440. d -2 6
  2441. d 2 6
  2442. m -2 3
  2443. d 1 3
  2444. m -2 0
  2445. d 2 0
  2446. e 5555 5555 F
  2447. m -2 0
  2448. d -2 6
  2449. d 2 6
  2450. m -2 3
  2451. d 1 3
  2452. e 5555 5555 G
  2453. m 1 2
  2454. d 2 2
  2455. d 2 1
  2456. d 1 0
  2457. d -1 0
  2458. d -2 1
  2459. d -2 5
  2460. d -1 6
  2461. d 1 6
  2462. d 1 6
  2463. d 2 5
  2464. e 5555 5555 H
  2465. m -2 0
  2466. d -2 6
  2467. m -2 3
  2468. d 2 3
  2469. m 2 6
  2470. d 2 0
  2471. e 5555 5555 I
  2472. m -1 0
  2473. d 1 0
  2474. m 0 0
  2475. d 0 6
  2476. m -1 6
  2477. d 1 6
  2478. e 5555 5555 J
  2479. m -2 1
  2480. d -1 0
  2481. d 0 0
  2482. d 1 1
  2483. d 1 6
  2484. e 5555 5555 K
  2485. m -2 0
  2486. d -2 6
  2487. m -2 2
  2488. d 2 6
  2489. m 0 4
  2490. d 2 0
  2491. e 5555 5555 L
  2492. m -2 6
  2493. d -2 0
  2494. d 2 0
  2495. d 2 1
  2496. e 5555 5555 M
  2497. m -2 0
  2498. d -2 6
  2499. d 0 3
  2500. d 2 6
  2501. d 2 0
  2502. e 5555 5555 N
  2503. m -2 0
  2504. d -2 6
  2505. d 2 0
  2506. d 2 6
  2507. e 5555 5555 O
  2508. m -1 0
  2509. d -2 1
  2510. d -2 5
  2511. d -1 6
  2512. d 1 6
  2513. d 2 5
  2514. d 2 1
  2515. d 1 0
  2516. d -1 0
  2517. e 5555 5555 P
  2518. m -2 0
  2519. d -2 6
  2520. d 1 6
  2521. d 2 5
  2522. d 2 4
  2523. d 1 3
  2524. d -2 3
  2525. e 5555 5555 Q
  2526. m -1 0
  2527. d -2 1
  2528. d -2 5
  2529. d -1 6
  2530. d 1 6
  2531. d 2 5
  2532. d 2 1
  2533. d 1 0
  2534. d -1 0
  2535. m 1 1
  2536. d 2 0
  2537. e 5555 5555 R
  2538. m -2 0
  2539. d -2 6
  2540. d 1 6
  2541. d 2 5
  2542. d 2 4
  2543. d 1 3
  2544. d -2 3
  2545. m 0 3
  2546. d 2 0
  2547. e 5555 5555 S
  2548. m -2 1
  2549. d -1 0
  2550. d 1 0
  2551. d 2 1
  2552. d 2 2
  2553. d 1 3
  2554. d -1 3
  2555. d -2 4
  2556. d -2 5
  2557. d -1 6
  2558. d 1 6
  2559. d 2 5
  2560. e 5555 5555 T
  2561. m -2 6
  2562. d 2 6
  2563. m 0 6
  2564. d 0 0
  2565. e 5555 5555 U
  2566. m -2 6
  2567. d -2 1
  2568. d -1 0
  2569. d 1 0
  2570. d 2 1
  2571. d 2 6
  2572. e 5555 5555 V
  2573. m -2 6
  2574. d 0 0
  2575. d 2 6
  2576. e 5555 5555 W
  2577. m -2 6
  2578. d -1 0
  2579. d 0 3
  2580. d 1 0
  2581. d 2 6
  2582. e 5555 5555 X
  2583. m -2 0
  2584. d 2 6
  2585. m -2 6
  2586. d 2 0
  2587. e 5555 5555 Y
  2588. m -2 6
  2589. d 0 3
  2590. d 2 6
  2591. m 0 3
  2592. d 0 0
  2593. e 5555 5555 Z
  2594. m -2 6
  2595. d 2 6
  2596. d -2 0
  2597. d 2 0
  2598. e 5555 5555 [
  2599. m 2 6
  2600. d 0 6
  2601. d 0 0
  2602. d 2 0
  2603. e 5555 5555 \
  2604. m -2 6
  2605. d 2 0
  2606. e 5555 5555 ]
  2607. m -2 0
  2608. d 0 0
  2609. d 0 6
  2610. d -2 6
  2611. e 5555 5555 ^
  2612. m -2 4
  2613. d 0 6
  2614. d 2 4
  2615. e 5555 5555 _
  2616. m -3 -1
  2617. d 3 -1
  2618. e 5555 5555 `
  2619. m 0 6
  2620. d 1 4
  2621. e 5555 5555 a
  2622. m -1 0
  2623. d -2 1
  2624. d -2 3
  2625. d -1 4
  2626. d 1 4
  2627. d 2 3
  2628. d 2 1
  2629. d 2 1
  2630. d 1 0
  2631. d -1 0
  2632. m 2 4
  2633. d 2 0
  2634. e 5555 5555 b
  2635. m -2 0
  2636. d -2 6
  2637. m -2 3
  2638. d -1 4
  2639. d 1 4
  2640. d 2 3
  2641. d 2 1
  2642. d 1 0
  2643. d -1 0
  2644. d -2 1
  2645. e 5555 5555 c
  2646. m 2 3
  2647. d 1 4
  2648. d -1 4
  2649. d -2 3
  2650. d -2 1
  2651. d -1 0
  2652. d 1 0
  2653. d 2 1
  2654. e 5555 5555 d
  2655. m 2 6
  2656. d 2 0
  2657. m 2 1
  2658. d 1 0
  2659. d -1 0
  2660. d -2 1
  2661. d -2 3
  2662. d -1 4
  2663. d 1 4
  2664. d 2 3
  2665. e 5555 5555 e
  2666. m 2 1
  2667. d 1 0
  2668. d -1 0
  2669. d -2 1
  2670. d -2 3
  2671. d -1 4
  2672. d 1 4
  2673. d 2 3
  2674. d 2 2
  2675. d -2 2
  2676. e 5555 5555 f
  2677. m -1 0
  2678. d -1 5
  2679. d 0 6
  2680. d 1 6
  2681. d 2 5
  2682. m -2 3
  2683. d 0 3
  2684. e 5555 5555 g
  2685. m -2 -1
  2686. d -1 -2
  2687. d 1 -2
  2688. d 2 -1
  2689. d 2 4
  2690. m 2 3
  2691. d 1 4
  2692. d -1 4
  2693. d -2 3
  2694. d -2 1
  2695. d -1 0
  2696. d 1 0
  2697. d 2 1
  2698. e 5555 5555 h
  2699. m -2 0
  2700. d -2 6
  2701. m -2 3
  2702. d -1 4
  2703. d 1 4
  2704. d 2 3
  2705. d 2 0
  2706. e 5555 5555 i
  2707. m 0 0
  2708. d 0 4
  2709. m 0 6
  2710. d 0 7
  2711. e 5555 5555 j
  2712. m -2 -1
  2713. d -1 -2
  2714. d 0 -2
  2715. d 1 -1
  2716. d 1 3
  2717. m 1 4
  2718. d 1 5
  2719. e 5555 5555 k
  2720. m -2 0
  2721. d -2 6
  2722. m -2 2
  2723. d 2 4
  2724. m 0 3
  2725. d 2 0
  2726. e 5555 5555 l
  2727. m 0 0
  2728. d 0 5
  2729. e 5555 5555 m
  2730. m -2 0
  2731. d -2 4
  2732. m -2 3
  2733. d -1 4
  2734. d 0 3
  2735. d 0 0
  2736. m 0 3
  2737. d 1 4
  2738. d 2 3
  2739. d 2 0
  2740. e 5555 5555 n
  2741. m -2 0
  2742. d -2 4
  2743. m -2 3
  2744. d -1 4
  2745. d 1 4
  2746. d 2 3
  2747. d 2 0
  2748. e 5555 5555 o
  2749. m -1 0
  2750. d -2 1
  2751. d -2 3
  2752. d -1 4
  2753. d 1 4
  2754. d 2 3
  2755. d 2 1
  2756. d 1 0
  2757. d -1 0
  2758. e 5555 5555 p
  2759. m -2 4
  2760. d -2 -2
  2761. m -2 3
  2762. d -1 4
  2763. d 1 4
  2764. d 2 3
  2765. d 2 1
  2766. d 1 0
  2767. d -1 0
  2768. d -2 1
  2769. e 5555 5555 q
  2770. m 2 -2
  2771. d 2 4
  2772. m 2 3
  2773. d 1 4
  2774. d -1 4
  2775. d -2 3
  2776. d -2 1
  2777. d -1 0
  2778. d 1 0
  2779. d 2 1
  2780. e 5555 5555 r
  2781. m -2 0
  2782. d -2 4
  2783. m -2 3
  2784. d -1 4
  2785. d 1 4
  2786. d 2 3
  2787. e 5555 5555 s
  2788. m -2 1
  2789. d -1 0
  2790. d 1 0
  2791. d 2 1
  2792. d 1 2
  2793. d -1 2
  2794. d -2 3
  2795. d -1 4
  2796. d 1 4
  2797. d 2 3
  2798. e 5555 5555 t
  2799. m 0 0
  2800. d 0 5
  2801. m -1 4
  2802. d 1 4
  2803. e 5555 5555 u
  2804. m -2 4
  2805. d -2 1
  2806. d -1 0
  2807. d 1 0
  2808. d 2 1
  2809. d 2 4
  2810. e 5555 5555 v
  2811. m -2 4
  2812. d 0 0
  2813. d 2 4
  2814. e 5555 5555 w
  2815. m -2 4
  2816. d -1 0
  2817. d 0 4
  2818. d 1 0
  2819. d 2 4
  2820. e 5555 5555 x
  2821. m -2 0
  2822. d 2 4
  2823. m -2 4
  2824. d 2 0
  2825. e 5555 5555 y
  2826. m -1 -2
  2827. d 1 -2
  2828. d 2 -1
  2829. d 2 4
  2830. m 2 1
  2831. d 1 0
  2832. d -1 0
  2833. d -2 1
  2834. d -2 4
  2835. e 5555 5555 z
  2836. m -2 4
  2837. d 2 4
  2838. d -2 0
  2839. d 2 0
  2840. e 5555 5555 {
  2841. m 2 6
  2842. d 1 6
  2843. d 0 5
  2844. d 0 4
  2845. d -1 3
  2846. d 0 2
  2847. d 0 1
  2848. d 1 0
  2849. d 2 0
  2850. e 5555 5555 |
  2851. m 0 7
  2852. d 0 5
  2853. m 0 2
  2854. d 0 0
  2855. e 5555 5555 }
  2856. m -2 0
  2857. d -1 0
  2858. d 0 1
  2859. d 0 2
  2860. d 1 3
  2861. d 0 4
  2862. d 0 5
  2863. d -1 6
  2864. d -2 6
  2865. e 5555 5555 \128
  2866. m -2 3
  2867. d 0 2
  2868. A 5
  2869. X    -2 3
  2870. X    -2 5
  2871. X    0 6
  2872. X    2 5
  2873. X    2 3
  2874. m 2 3
  2875. d 0 2
  2876. e 5555 5555 \129
  2877. m 0 3
  2878. d -1 5
  2879. d -1 3
  2880. d 0 3
  2881. A 3
  2882. X    0 3
  2883. X    1 5
  2884. X    1 3
  2885. e 5555 5555 \130
  2886. A 4
  2887. X    -1 3
  2888. X    1 5
  2889. X    -1 5
  2890. X    1 3
  2891. m -2 2
  2892. d 2 6
  2893. d -2 6
  2894. d 2 2
  2895. d -2 2
  2896. e 5555 5555 \131
  2897. m -2 2
  2898. d -2 6
  2899. d 2 6
  2900. d 2 2
  2901. d -2 2
  2902. A 4
  2903. X    -1 3
  2904. X    -1 5
  2905. X    1 5
  2906. X    1 3
  2907. e 5555 5555 \30    # The "error" glyph
  2908. m -2 5
  2909. d -1 6
  2910. d 1 6
  2911. d 2 5
  2912. d 2 4
  2913. d 1 3
  2914. d 0 3
  2915. d 0 2
  2916. m 0 1
  2917. d 0 0
  2918. m 0 -2
  2919. d -5 3
  2920. d 0 8
  2921. d 5 3
  2922. d 0 -2
  2923. END_OF_FILE
  2924. if test 6248 -ne `wc -c <'Vplot_Kernel/filters/include/vplotfonts/pen.vplot_font'`; then
  2925.     echo shar: \"'Vplot_Kernel/filters/include/vplotfonts/pen.vplot_font'\" unpacked with wrong size!
  2926. fi
  2927. # end of 'Vplot_Kernel/filters/include/vplotfonts/pen.vplot_font'
  2928. fi
  2929. echo shar: End of archive 14 \(of 24\).
  2930. cp /dev/null ark14isdone
  2931. MISSING=""
  2932. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ; do
  2933.     if test ! -f ark${I}isdone ; then
  2934.     MISSING="${MISSING} ${I}"
  2935.     fi
  2936. done
  2937. if test "${MISSING}" = "" ; then
  2938.     echo You have unpacked all 24 archives.
  2939.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2940. else
  2941.     echo You still need to unpack the following archives:
  2942.     echo "        " ${MISSING}
  2943. fi
  2944. ##  End of shell archive.
  2945. exit 0
  2946.