/* * Copyright 1989 Dirk Grunwald * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Dirk Grunwald or M.I.T. * not be used in advertising or publicity pertaining to distribution of * the software without specific, written prior permission. Dirk * Grunwald and M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" without express * or implied warranty. * * DIRK GRUNWALD AND M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS, IN NO EVENT SHALL M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT * OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE * OR PERFORMANCE OF THIS SOFTWARE. * * Author: * Dr. Dirk Grunwald * Dept. of Computer Science * Campus Box 430 * Univ. of Colorado, Boulder * Boulder, CO 80309 * * grunwald@colorado.edu * */ static char *dvistuff_header_rcsid="$Header: /home/reed/grunwald/Iptex/drivers/RCS/dvistuff.h,v 1.11 89/02/15 16:31:56 grunwald Exp $" ; /* * Include the following from the CTex distribution */ #include #include "types.h" #include "font.h" #include "conv.h" /* * We use the following flags to keep track of shrunk fonts */ #define GF_SHRUNK GF_USR0 #define GLYPH_SHRUNK(g) ((g) -> g_flags & GF_SHRUNK) #define SHRUNK_GLYPH_BYTES_WIDE(g) ((((g) -> g_width + 15) >> 4) * 2) typedef struct font DviFont; typedef struct glyph DviGlyph; #define MAX_GLYPH 128 #define MAX_FONTFAMILY 128 #define DEFAULT_DPI 300 #define DEFAULT_HHMARGIN DEFAULT_DPI #define DEFAULT_VVMARGIN DEFAULT_DPI #define DEFAULT_MAX_DRIFT 3 #define DEFAULT_BLACKNESS 3 struct fontinfo { struct font *f; /* the font */ i32 pspace; /* boundary between `small & `large spaces (for positive horizontal motion) */ i32 nspace; /* -4 * pspace, for negative motion */ i32 vspace; /* 5 * pspace, for vertical motion */ int family; /* Imagen family number (we pick one) */ }; typedef struct fontinfo DviFontInfo; /* DVI file info */ /* * Units of distance are stored in scaled points, but we can convert to * units of 10^-7 meters by multiplying by the numbers in the preamble. */ /* the structure of the stack used to hold the values (h,v,w,x,y,z) */ typedef struct dvi_stack { i32 h; /* the saved h */ i32 v; /* the saved v */ i32 w; /* etc */ i32 x; i32 y; i32 z; } DviStack; extern DviStack dvi_current; /* the current values of h, v, etc */ extern int dvi_f; /* the current font */ #define dvi_h dvi_current.h #define dvi_v dvi_current.v #define dvi_w dvi_current.w #define dvi_x dvi_current.x #define dvi_y dvi_current.y #define dvi_z dvi_current.z extern int dviHH; /* current horizontal position, in DEVs */ extern int dviVV; /* current vertical position, in DEVs */ #define DVI_COUNT 10 /* count0 .. count9 */ extern long *dviCount[DVI_COUNT]; /* values of count */ extern Conv Conversion; extern int dviHHMargin; extern int dviVVMargin; extern int dviDPI; extern int dviTallestPage; extern int dviWidestPage; extern int dviTotalPages; extern int dviCurrentPage; extern int dviMaxDrift; extern char *dviPrintEngine; extern int dviBlackness; extern int dviFontRotation; extern int dviUserMag; extern DviFontInfo *dviCurrentFont; extern char *DVIFileName; extern FILE *dviFile; /* user's file */ extern char *ProgName; extern int dviInit(); extern void dviFini(); extern void dviPreparePage( /* int */ ); extern struct glyph *dviShrinkGlyph(); void applicationPutChar( /* hh, vv, charCode */ ); DviFont *applicationNewFont( /* font structure */); void applicationResetFont(/* font info, key */); void applicationSetRule( /* hh, vv, height, width : long*/ ); void applicationDoSpecial();