home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
s
/
stex2-18.zip
/
SeeTeX
/
libtex
/
dvistuff.h
< prev
next >
Wrap
C/C++ Source or Header
|
1990-07-10
|
4KB
|
146 lines
/*
* 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 <stdio.h>
#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();