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

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

#include "incl.h"

extern FILE   *fpo, *fpi;
extern char   *word1, *word2, buffer[], newbuf[];
extern int     inlinecount, outlinecount, EndProlog;
extern int     Width, Height, Vspace;
extern double  width, height, top_space, bottom_space;
extern double  llx, lly, urx, ury, mm2pt;
extern double  xfac, yfac, scx, scy;

dperfect ()
{
double dpoffset;
/*
** Replace first line
*/
   fgets (buffer, MAXBUF, fpi);
   inlinecount++;
   fprintf (fpo, "%s", FIRSTLINE);
   outlinecount++;

   scx = 1.0;
   scy = 1.0;
/*
** Offset Boundingbox values.
** Picture coordinates are relative to origin of the display, which
** has an offset of DP_OFFSET mm, in x and y-direction, from the real origin.
*/
   dpoffset = DP_OFFSET * mm2pt;
   llx -= dpoffset;
   lly -= dpoffset;
   urx -= dpoffset;
   ury -= dpoffset;

/*
** Adjust BoundingBox and scale values depending on width (-w)
** height (-h) and space (-s) options.
** Write BoundingBox statement to the output file.
*/
   if (adj_bbox (urx - llx) == EXIT_FAILURE) return (EXIT_FAILURE);

   fprintf (fpo, "%s %d %d %d %d\n", PPBOUNDINGBOXC,
                    (int)llx, (int)lly, (int)urx, (int)ury);
   outlinecount++;
/*
** Insert next statement for use with program ``dvialw''
*/
   fprintf (fpo, "%s", DVIALW_BEGIN);
   outlinecount++;

   for (fgets (buffer, MAXBUF, fpi); (!(feof (fpi)));
                                     fgets (buffer, MAXBUF, fpi)) {
      inlinecount++;
      if (buffer[0] == '%' && buffer[1] == '%') {
         strcpy (newbuf, buffer);
         word1 = strtok (newbuf, " :\n");
         word2 = strtok ('\0', " \n\t");
         if (strcmp (word1, PPBOUNDINGBOX) == 0) {
/*
**          BoundingBox statement has already been written to the output
**          file with values read from the command line.
*/
            sprintf (buffer, "");
         }
         else if (strcmp (word1, PPENDPROLOG) == 0) {
            fprintf (fpo, "%s\n", PPENDPROLOG);
            outlinecount++;
            sprintf (buffer, "%.3lf %.3lf %s\n", scx, scy, SCALE);
            EndProlog = TRUE;
         }
      }

      fprintf (fpo, "%s", buffer);
      outlinecount++;
   }

   if (!EndProlog) {
      fprintf (stderr, "\n*** No EndProlog statement found.\n\n");
      return (EXIT_FAILURE);
   }
/*
** Insert next statement for use with program ``dvialw''
*/
   fprintf (fpo, "%s", DVIALW_END);
   outlinecount++;

   fprintf (stderr, "\n%s\n%s\n%s\n%s\n\n",
           "     ********* WARNING **********     ",
           "When using program `dvialw' the `%end(plot)'",
           "statement must be >>before<< a possible",
           "`showpage' statement.");
   return (EXIT_SUCCESS);
}

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