home *** CD-ROM | disk | FTP | other *** search
- /*
- * ps.h -- Include file for PostScript routines.
- * Copyright (C) 1992 Timothy O. Theisen
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * Author: Tim Theisen Systems Programmer
- * Internet: tim@cs.wisc.edu Department of Computer Sciences
- * UUCP: uwvax!tim University of Wisconsin-Madison
- * Phone: (608)262-0438 1210 West Dayton Street
- * FAX: (608)262-9777 Madison, WI 53706
- */
-
- #ifndef NeedFunctionPrototypes
- #if defined(FUNCPROTO) || defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
- #define NeedFunctionPrototypes 1
- #else
- #define NeedFunctionPrototypes 0
- #endif /* __STDC__ */
- #endif /* NeedFunctionPrototypes */
-
- /* Constants used to index into the bounding box array. */
-
- #define LLX 0
- #define LLY 1
- #define URX 2
- #define URY 3
-
- /* Constants used to store keywords that are scanned. */
- /* NONE is not a keyword, it tells when a field was not set */
-
- enum {ATEND = -1, NONE = 0, PORTRAIT, LANDSCAPE, ASCEND, DESCEND, SPECIAL};
-
- #define PSLINELENGTH 257 /* 255 characters + 1 newline + 1 NULL */
-
- struct document {
- int epsf; /* Encapsulated PostScript flag. */
- char *title; /* Title of document. */
- char *date; /* Creation date. */
- int pageorder; /* ASCEND, DESCEND, SPECIAL */
- long beginheader, endheader; /* offsets into file */
- unsigned int lenheader;
- long beginpreview, endpreview;
- unsigned int lenpreview;
- long begindefaults, enddefaults;
- unsigned int lendefaults;
- long beginprolog, endprolog;
- unsigned int lenprolog;
- long beginsetup, endsetup;
- unsigned int lensetup;
- long begintrailer, endtrailer;
- unsigned int lentrailer;
- int boundingbox[4];
- int default_page_boundingbox[4];
- int orientation; /* PORTRAIT, LANDSCAPE */
- int default_page_orientation; /* PORTRAIT, LANDSCAPE */
- unsigned int nummedia;
- struct documentmedia *media;
- struct documentmedia *default_page_media;
- unsigned int numpages;
- struct page *pages;
- };
-
- struct page {
- char *label;
- int boundingbox[4];
- struct documentmedia *media;
- int orientation; /* PORTRAIT, LANDSCAPE */
- long begin, end; /* offsets into file */
- unsigned int len;
- };
-
- struct documentmedia {
- char *name;
- int width, height;
- };
-
- /* list of standard paper sizes from Adobe's PPD. */
-
- extern struct documentmedia papersizes[];
-
- /* scans a PostScript file and return a pointer to the document
- structure. Returns NULL if file does not Conform to commenting
- conventions . */
-
- #if NeedFunctionPrototypes
- struct document *psscan(FILE *);
- #else
- struct document *psscan();
- #endif
-
- /* free data structure malloc'ed by psscan */
-
- #if NeedFunctionPrototypes
- void psfree(struct document *);
- #else
- void psfree();
- #endif
-
- /* Copy a portion of the PostScript file */
-
- #if NeedFunctionPrototypes
- void pscopy(FILE *from, FILE *to, long begin, long end);
- #else
- void pscopy();
- #endif
-
- /* Copy a portion of the PostScript file upto a comment */
-
- #if NeedFunctionPrototypes
- char *pscopyuntil(FILE *from, FILE *to, long begin, long end,
- const char *comment);
- #else
- char *pscopyuntil();
- #endif
-