[comp.windows.x] xpr.c.diff

grunwald@flute.cs.uiuc.edu (Dirk Grunwald) (06/08/89)

The following diffs to xpr add a %%BoundingBox definition to the
postscript output from xps. It also implements a -psfig option that
suppresses the ``translate'' used to center the picture.

these options allow you to directly include xpr output into TeX documents
(and I would suspect TROFF) using psfig.

*** /tmp/,RCSt1a00993	Wed Jun  7 13:35:13 1989
--- xpr.c	Wed Jun  7 13:23:18 1989
***************
*** 69,74 ****
--- 69,75 ----
  #define F_REPORT 64
  #define F_COMPACT 128
  #define F_INVERT 256
+ #define F_PSFIG 512 
  
  char *infilename = "stdin", *whoami;
  
***************
*** 320,325 ****
--- 321,329 ----
  	    if (!bcmp(*argv, "-portrait", len)) {
  		*flags |= F_PORTRAIT;
  	    }
+ 	    else if (!bcmp(*argv, "-psfig", len)) {
+ 		*flags |= F_PSFIG;
+ 	    }
  	    break;
  
  	case 'c':		/* -compact */
***************
*** 860,866 ****
--- 864,872 ----
      long    clock;
      int lm, bm; /* left (bottom) margin (paper in portrait orientation) */
  
+ 
      printf ("%%!%s\n", COMMENTVERSION);
+     printf ("%%%%BoundingBox: 0 0 %d %d\n", (iw * 72)/300, (ih * 72)/300);
      pswd = getpwuid (getuid ());
      (void) gethostname (hostname, sizeof hostname);
      printf ("%%%%Creator: %s:%s (%s)\n", hostname,
***************
*** 868,873 ****
--- 874,882 ----
      printf ("%%%%Title: %s (%s)\n", infilename,name);
      printf ("%%%%CreationDate: %s",
  		(time (&clock), ctime (&clock)));
+ 
+     /* include the bounding box for psfig */
+ 
      printf ("%%%%EndComments\n");
  
      dump_prolog(flags);
***************
*** 897,904 ****
  	}
  	/* set resolution to device units (300/inch) */
  	printf("72 300 div dup scale\n");
! 	/* move to lower left corner of image */
! 	printf("%d %d translate\n",lm,bm);
  	/* dump the bitmap */
  	printf("%d %d %d bitdump\n",iw,ih,scale);
      } else { /* orientation == LANDSCAPE */
--- 906,917 ----
  	}
  	/* set resolution to device units (300/inch) */
  	printf("72 300 div dup scale\n");
! 
! 	if ( !(flags & F_PSFIG) ) {
! 	  /* move to lower left corner of image */
! 	  printf("%d %d translate\n",lm,bm);
! 	}
! 
  	/* dump the bitmap */
  	printf("%d %d %d bitdump\n",iw,ih,scale);
      } else { /* orientation == LANDSCAPE */
***************
*** 931,938 ****
  	}
  	/* set resolution to device units (300/inch) */
  	printf("72 300 div dup scale\n");
  	/* move to lower left corner of image */
! 	printf("%d %d translate\n",lm,bm);
  	/* dump the bitmap */
  	printf("%d %d %d bitdump\n",ih,iw,scale);
      }
--- 944,956 ----
  	}
  	/* set resolution to device units (300/inch) */
  	printf("72 300 div dup scale\n");
+ 
  	/* move to lower left corner of image */
! 	if ( !(flags & F_PSFIG) ) {
! 	  /* move to lower left corner of image */
! 	  printf("%d %d translate\n",lm,bm);
! 	}
! 
  	/* dump the bitmap */
  	printf("%d %d %d bitdump\n",ih,iw,scale);
      }
--
Dirk Grunwald -- Univ. of Illinois 		  (grunwald@flute.cs.uiuc.edu)