DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T x

⟦0c378bcba⟧ TextFile

    Length: 6280 (0x1888)
    Types: TextFile
    Names: »xdvi.h«

Derivation

└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦af5ba6c8e⟧ »unix3.0/DVIWARE.tar.Z« 
        └─⟦ca79c7339⟧ 
            └─⟦this⟧ »DVIware/crt-viewers/X/xdvi/xdvi.h« 

TextFile

/*
 *	Written by Eric C. Cooper, CMU
 */
/* $Header: xdvi.h,v 10.5 86/02/01 15:45:03 tony Rel $ */

#ifndef X10
#include <X11/Xos.h>	/* same as below */
#else	/* X10 */
#include <sys/types.h>	/* for sites without X11 */
#ifdef	SYSV
#include <string.h>
#define	index	strchr
#define	rindex	strrchr
#include <fcntl.h>
#else /* SYSV */
#include <strings.h>
#endif /* SYSV */
#include <sys/file.h>
#endif	/* X10 */

#ifdef	VMS
#include <string.h>
#define	index	strchr
#define	rindex	strrchr
#define	bzero(a, b)	(void) memset ((void *) (a), 0, (size_t) (b))
#endif

#include <setjmp.h>

#ifndef	OPEN_MODE
#ifndef	VMS
#define	OPEN_MODE	"r"
#else	/* VMS */
#define	OPEN_MODE	"r", "ctx=stm"
#endif	/* VMS */
#endif	/* OPEN_MODE */

#define	Printf	(void) printf
#define	Fprintf	(void) fprintf
#define	Sprintf	(void) sprintf
#define	Fseek	(void) fseek
#define	Fread	(void) fread
#define	Fclose	(void) fclose

unsigned long num();
long snum();

#define one(fp)		((unsigned long) getc(fp) & 0xff)
#define sone(fp)	((long) getc(fp))
#define two(fp)		num (fp, 2)
#define stwo(fp)	snum(fp, 2)
#define four(fp)	num (fp, 4)
#define sfour(fp)	snum(fp, 4)

typedef	unsigned char ubyte;
#define	Boolean	char
#define	True	1
#define	False	0

#define	MAXDIM		32767

/*
 *	pixel_conv is currently used only for converting absolute positions
 *	to pixel values; although normally it should be
 *		((int) ((x) / shrink_factor + (1 << 15) >> 16)),
 *	the rounding is achieved instead by moving the constant 1 << 15 to
 *	PAGE_OFFSET in dvi_draw.c.
 */
#define	pixel_conv(x)	((int) ((x) / shrink_factor >> 16))
#define	pixel_round(x)	((int) ROUNDUP(x, shrink_factor << 16))
#define	spellfour(f)	((long) (sfour(f) * fraction))
#define	spellnum(f,n)	((long) (snum(f,n) * fraction))

#ifdef X10
#undef	MSBITFIRST
#undef	BMLONG
#define	BMSHORT
#endif

#ifndef	SYSV
#ifndef	VMS
#define	HAS_SIGIO		/* has SIGIO on _sockets_ */
#endif
#endif

#ifdef	BMLONG
#define	BMUNIT			unsigned long
#define	BITS_PER_BMUNIT		32
#define	BYTES_PER_BMUNIT	4
#else	/* BMLONG */
#ifdef	BMSHORT
#define	BMUNIT			unsigned short
#define	BITS_PER_BMUNIT		16
#define	BYTES_PER_BMUNIT	2
#else	/* BMSHORT */
#define	BMUNIT			unsigned char
#define	BITS_PER_BMUNIT		8
#define	BYTES_PER_BMUNIT	1
#endif	/* BMSHORT */
#endif	/* BMLONG */

#define	ADD(a, b)	((BMUNIT *) (((char *) a) + b))
#define	SUB(a, b)	((BMUNIT *) (((char *) a) - b))

extern	BMUNIT	bit_masks[BITS_PER_BMUNIT + 1];

struct frame {
	long dvi_h, dvi_v, w, x, y, z;
	int pxl_v;
};

extern	struct frame 	*stack;
extern	struct frame 	*stackp;

/* entries below with the characters 'dvi' in them are actually stored in
   scaled pixel units */

#define DVI_H   stackp->dvi_h
#define PXL_H   pixel_conv(stackp->dvi_h)
#define DVI_V   stackp->dvi_v
#define PXL_V   stackp->pxl_v
#define WW      stackp->w
#define XX      stackp->x
#define YY      stackp->y
#define ZZ      stackp->z
#define ROUNDUP(x,y) (((x)+(y)-1)/(y))

extern	int	current_page;
extern	int	total_pages;
extern	double	fraction;
extern	int	maxstack;
extern	int	n_fonts_left;		/* for LRU management of fonts */
extern	time_t	dvi_time;		/* last mod. time for dvi file */
extern	char	*font_path;
extern	int	page_w, page_h;

/*
 * Table of page offsets in DVI file, indexed by page number - 1.
 * Initialized in prepare_pages().
 */
extern	long	*page_offset;

/*
 * Mechanism for reducing repeated warning about specials.
 */
extern	Boolean	spec_warn;


/*
 * Bitmap structure for raster ops.
 */
struct bitmap{
	short w, h;		/* width and height in pixels */
	short bytes_wide;	/* scan-line width in bytes */
	char *bits;		/* pointer to the bits */
};

/*
 * Per-character information.
 * There is one of these for each character in a font.
 * All fields are filled in at font definition time,
 * except for the bitmap, which is "faulted in"
 * when the character is first referenced.
 */
struct glyph {
	long addr;		/* address of bitmap in PXL file */
	long dvi_adv;		/* DVI units to move reference point */
	short x, y;		/* x and y offset in pixels */
	struct bitmap bitmap;	/* bitmap for character */
	short x2, y2;		/* x and y offset in pixels (shrunken bitmap) */
	struct bitmap bitmap2;	/* shrunken bitmap for character */
};

/*
 * The layout of a font information block.
 * There is one of these for every loaded font or
 * magnification thereof.
 *
 * Also note the strange units.  The design size is in 1/2^20 point
 * units (also called micro-points), and the individual character widths
 * are in the TFM file in 1/2^20 ems units, i.e. relative to the design size.
 *
 * We then change the sizes to SPELL units (unshrunk pixel / 2^16).
 */

void	alloc_bitmap();

typedef	void (*read_char_proc)();
	/* struct font *fp; */
	/* ubyte ch; */

	/* the corresponding read_font_index procedures occur in pxl_open.c */
typedef	void (*read_font_index_proc)();
	/* struct font *fontp; */

struct font {
	struct font *next;		/* link to next font info block */
	int TeXnumber;			/* font number (in DVI file) */
	int scale;			/* scaled size in SPELL units */
	float factor;			/* multiply char. widths by this */
	char *fontname;			/* PXL file name */
	short size;			/* dots per 5 inches */
	FILE *file;			/* open PXL file or NULL */
	char *filename;			/* name of PXL file */
	ubyte maxchar;			/* largest character code */
	read_char_proc read_char;	/* function to read bitmap */
	struct glyph glyph[256];
};

extern	struct font	*current_font;
extern	ubyte	maxchar;

/*
 * Command line flags.
 */

extern	int	debug;

#define DBG_BITMAP	0x1
#define DBG_DVI		0x2
#define DBG_PK          0x4
#define DBG_BATCH       0x8
#define	DBG_EVENT	0x10
#define DBG_ALL		(DBG_BITMAP|DBG_DVI|DBG_PK|DBG_EVENT)

extern	Boolean	list_fonts;

extern	int	pixels_per_inch;
extern	int	unshrunk_paper_w, unshrunk_paper_h;
extern	int	unshrunk_page_w, unshrunk_page_h;
extern	int	density;

extern	char	*dvi_name;
extern	FILE	*dvi_file;				/* user's file */
extern	char	*prog;

extern	struct	WindowRec {
	caddr_t	win;		/* type Window is not defined yet */
	int	shrinkfactor;
	int	base_x, base_y;
	int	width, height;
	int	min_x, max_x, min_y, max_y;	/* for pending expose events */
} mane, alt, curr;

#define	WINDOW(wr)	((Window) (wr).win)
#define	shrink_factor	curr.shrinkfactor

jmp_buf	dvi_env;		/* mechanism to communicate dvi file errors */