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

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

#include "incl.h"

extern int     Width, Height, Vspace;
extern int     GemPS, DrawPerfectPS; 
extern double  width, height;
extern double  top_space, bottom_space;
extern double  llx, lly, urx, ury, mm2pt;
extern double  xfac, yfac, scx, scy;

adj_bbox (ini_width)
double ini_width;
{
double  ini_height, width_mm, height_mm;

/*
** Compute initial height and initial x and y factors
** based on initial width.
*/
   xfac = ini_width / (urx - llx);
   yfac = xfac;
   ini_height = xfac * (ury - lly);
/*
** Compute initial BoundingBox and scale values.
*/
   llx *= xfac;
   lly *= yfac;
   urx *= xfac;
   ury *= yfac;
   scx *= xfac;
   scy *= yfac;
/*
** Compute x and y factors based on width (-w) and/or height (-h) options.
** Compute resulting BoundingBox and scale values.
*/
   if (Width || Height) {
      if (Width && !Height) {
         xfac = width / ini_width;
         yfac = xfac;
      }
      else if (Height && !Width) {
         yfac = height / ini_height;
         xfac = yfac;
      }
      else {
         xfac = width / ini_width;
         yfac = height / ini_height;
      }
      llx *= xfac;
      lly *= yfac;
      urx *= xfac;
      ury *= yfac;
      scx *= xfac;
      scy *= yfac;
   }
/*
** Add some space between character bottom and top of boundingbox.
*/
   ury += TOP_SPACE;
/*
** Adjust BoundingBox values to additional space above and
** below the picture supplied by means of the -s option.
*/
   if (Vspace) {
      lly -= bottom_space;
      ury += top_space;
   }
/*
** With the -G (Gem) and -D (DrawPerfect) option the -b (boundingbox)
** option is required.
** Test on maximum Boundingbox dimensions.
*/
   if (GemPS || DrawPerfectPS) {
      width_mm = (urx - llx) / mm2pt;
      if (width_mm > MAX_WIDTH) {
         fprintf (stderr, "\n*** Boundingbox width too large.\n");
         fprintf (stderr, "Width = %.2lf\n", width_mm);
         fprintf (stderr, "Maximum width = %d\n", MAX_WIDTH);
         fprintf (stderr, "Adjust boundingbox or use the -w# option!\n\n");
         return (EXIT_FAILURE);
      }
      height_mm = (ury - lly) / mm2pt;
      if (height_mm > MAX_HEIGHT) {
         fprintf (stderr, "\n*** Boundingbox height too large.\n");
         fprintf (stderr, "Height = %.2lf\n", height_mm);
         fprintf (stderr, "Maximum height = %d\n", MAX_HEIGHT);
         fprintf (stderr, "Adjust boundingbox or use the -h# option!\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.