ftp.nice.ch/pub/next/unix/postscript/ps2eps.1.0.NIHS.bsd.tar.gz#/ps2eps-1.0/src/pspice.c

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

#include "incl.h"

extern FILE   *fpo, *fpi;
extern char    buffer[];
extern int     inlinecount, outlinecount;
extern int     DateTempLine;
extern double  scx, scy, mm2pt, defaultwidth;
extern double  llx, lly, urx, ury;

pspice ()
{
char   str[MAXWORD+1];
int    translaterotateflag, datetemplinesflag;

   translaterotateflag = datetemplinesflag = FALSE;
/*
** Default BoundingBox and scale values for default width.
**
** In the PS file from Pspice there is no BoundingBox statement.
** The boundingbox dimensions always are that of an A4 page in
** landscape position.
** The picture is transformed to default dimensions in portrait
** position by commenting out the 'rotate' and 'translate' statements
** in the Pspice PS file and inserting a scale statement.
*/
   llx = PSPICE_BBOX_LLX * mm2pt;
   lly = PSPICE_BBOX_LLY * mm2pt;
   urx = PSPICE_BBOX_URX * mm2pt;
   ury = PSPICE_BBOX_URY * mm2pt;
   scx = PSPICE_SCX;
   scy = PSPICE_SCY;
/*
** Adjust BoundingBox and scale values depending on width (-w)
** height (-h) and space (-s) options.
*/
   if (adj_bbox (defaultwidth) == EXIT_FAILURE) return (EXIT_FAILURE);
/*
** Replace first line
*/
   fgets (buffer, MAXBUF, fpi);
   inlinecount++;
   fprintf (fpo, "%s", FIRSTLINE);
   fprintf (fpo, "%s %d %d %d %d\n",
                 PPBOUNDINGBOXC, (int)llx, (int)lly, (int)urx, (int)ury);

   fprintf (fpo, "%s: 0 1\n", PPPAGES);
   fprintf (fpo, "%s\n", PPENDCOMMENTS);
/*
** Insert next statement for use with program ``dvialw''
*/
   fprintf (fpo, "%s\n", "%begin(plot)");
   outlinecount += 5;

   for (fgets (buffer, MAXBUF, fpi); (!(feof (fpi)));
                                     fgets (buffer, MAXBUF, fpi)) {
      inlinecount++;
      sscanf (buffer, "%s", str);
      if ((strcmp (str, "612")) == 0) {
         sscanf (buffer, "%*s%s", str);
         if ((strcmp (str, "0")) == 0) {
            sscanf (buffer, "%*s%*s%s", str);
            if ((strcmp (str, TRANSLATE)) == 0) {
               fprintf (fpo, "%s%s", PPP, buffer);
               fgets (buffer, MAXBUF, fpi);
               inlinecount++;
               fprintf (fpo, "%s%s", PPP, buffer);
               outlinecount += 2;
               translaterotateflag = TRUE;
               fprintf (fpo, "%.3lf %.3lf %s\n", scx, scy, SCALE);
               outlinecount++;
               break;
            }
         }
      }
      if (!translaterotateflag) {
         fprintf (fpo, "%s", buffer);
         outlinecount++;
      }
   }

   for (fgets (buffer, MAXBUF, fpi); (!(feof (fpi)));
                                     fgets (buffer, MAXBUF, fpi)) {
      inlinecount++;
      if (DateTempLine || datetemplinesflag) {
/*
**       Insert next statement for use with program ``dvialw''
*/
         sscanf (buffer, "%s", str);
         if ((strcmp (str, SHOWPAGE)) == 0)
            fprintf (fpo, "%s", DVIALW_END);

         fprintf (fpo, "%s", buffer);
         outlinecount++;
      }
      else {
         sscanf (buffer, "%s", str);
         if ((strcmp (str, "36")) == 0) {
            sscanf (buffer, "%*s%s", str);
            if ((strcmp (str, "545")) == 0) {
               sscanf (buffer, "%*s%*s%s", str);
               if ((strcmp (str, MOVETO)) == 0) {
                  fprintf (fpo, "%s%s", PPP, buffer);
                  fgets (buffer, MAXBUF, fpi);
                  inlinecount++;
                  fprintf (fpo, "%s%s", PPP, buffer);
                  outlinecount += 2;
                  datetemplinesflag = TRUE;
               }
            }
         }
         if (!datetemplinesflag) {
            fprintf (fpo, "%s", buffer);
            outlinecount++;
         }
      }
   }
   if (!translaterotateflag) {
      fprintf (stderr, "\n*** Didn't find statement: 612 0 translate\n\n");
      return (EXIT_FAILURE);
   }
   return (EXIT_SUCCESS);
}

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