2005-06-06 13:00:52 +00:00
|
|
|
/* dtl.h
|
|
|
|
- header for dv2dt.c and dt2dv.c, conversion programs
|
|
|
|
for human-readable "DTL" <-> DVI.
|
|
|
|
- (ANSI C) version 0.6.0 - 18:31 GMT +11 Wed 8 March 1995
|
2006-07-07 16:22:46 +00:00
|
|
|
- author: Geoffrey Tobin G.Tobin@latrobe.edu.au
|
2005-06-06 13:00:52 +00:00
|
|
|
- patch: Michal Tomczak-Jaegermann ntomczak@vm.ucs.ualberta.ca
|
|
|
|
- Reference: "The DVI Driver Standard, Level 0",
|
|
|
|
by The TUG DVI Driver Standards Committee.
|
|
|
|
Appendix A, "Device-Independent File Format".
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* variety of DTL produced */
|
|
|
|
#define VARIETY "sequences-6"
|
|
|
|
|
|
|
|
/* version of DTL programs */
|
|
|
|
#define VERSION "0.6.0"
|
|
|
|
|
|
|
|
/* Test for ANSI/ISO Standard C */
|
|
|
|
#if (defined(__cplusplus) || defined(__STDC__) || defined(c_plusplus))
|
|
|
|
#define STDC 1
|
|
|
|
#else
|
|
|
|
#define STDC 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Version (Traditional or ANSI) of C affects prototype and type definitions */
|
|
|
|
#if STDC
|
|
|
|
#define ARGS(parenthesized_list) parenthesized_list
|
|
|
|
#else /* NOT STDC */
|
|
|
|
#define ARGS(parenthesized_list) ()
|
|
|
|
#endif /* NOT STDC */
|
|
|
|
|
|
|
|
#if STDC
|
|
|
|
#define Void void
|
|
|
|
#define VOID void
|
|
|
|
#define FILE_BEGIN SEEK_SET
|
|
|
|
#else /* NOT STDC */
|
|
|
|
#define Void int
|
|
|
|
#define VOID
|
|
|
|
#define FILE_BEGIN 0
|
|
|
|
#endif /* NOT STDC */
|
|
|
|
|
|
|
|
/* types to store 4 byte signed and unsigned integers */
|
|
|
|
typedef long S4;
|
|
|
|
typedef unsigned long U4;
|
|
|
|
/* scanf and printf formats to read or write those */
|
|
|
|
#define SF4 "%ld"
|
|
|
|
#define UF4 "%lu"
|
|
|
|
/* 4 byte hexadecimal */
|
|
|
|
/* #define XF4 "%04lx" */
|
|
|
|
#define XF4 "%lx"
|
|
|
|
/* 4 byte octal */
|
|
|
|
#define OF4 "%lo"
|
|
|
|
|
|
|
|
/* type for byte count for DVI file */
|
|
|
|
/* COUNT must be large enough to hold a U4 (unsigned 4 byte) value */
|
|
|
|
typedef U4 COUNT;
|
|
|
|
|
|
|
|
/* size of a TeX and DVI word is 32 bits; in some systems a `long int' is needed */
|
|
|
|
typedef long int word_t;
|
|
|
|
/* format for a DVI word */
|
|
|
|
#define WF "%ld"
|
|
|
|
|
|
|
|
/* string of 8-bit characters for machine: keyboard, screen, memory */
|
|
|
|
|
|
|
|
#define MAXSTRLEN 256
|
|
|
|
typedef char String[MAXSTRLEN+1];
|
|
|
|
|
|
|
|
/* string s of length l and maximum length m */
|
|
|
|
typedef struct {int l; int m; char * s;} Lstring;
|
|
|
|
|
|
|
|
int debug = 0; /* normally, debugging is off */
|
|
|
|
|
|
|
|
/* Is each DTL command parenthesised by a BCOM and an ECOM? */
|
|
|
|
|
|
|
|
int group = 0; /* by default, no grouping */
|
|
|
|
|
|
|
|
/* signals of beginning and end of a command and its arguments */
|
|
|
|
/* these apply only if group is nonzero */
|
|
|
|
|
|
|
|
# define BCOM "{"
|
|
|
|
# define ECOM "}"
|
|
|
|
|
|
|
|
# define BCOM_CHAR '{'
|
|
|
|
# define ECOM_CHAR '}'
|
|
|
|
|
|
|
|
/* beginning and end of a message string */
|
|
|
|
|
|
|
|
#define BMES "'"
|
|
|
|
#define EMES BMES
|
|
|
|
|
|
|
|
#define BMES_CHAR '\''
|
|
|
|
#define EMES_CHAR BMES_CHAR
|
|
|
|
|
|
|
|
/* beginning and end of sequence of font characters */
|
|
|
|
|
|
|
|
#define BSEQ "("
|
|
|
|
#define ESEQ ")"
|
|
|
|
|
|
|
|
#define BSEQ_CHAR '('
|
|
|
|
#define ESEQ_CHAR ')'
|
|
|
|
|
|
|
|
/* escape and quote characters */
|
|
|
|
|
|
|
|
#define ESC_CHAR '\\'
|
|
|
|
#define QUOTE_CHAR '\"'
|
|
|
|
|
|
|
|
/* command names in DTL */
|
|
|
|
|
|
|
|
#define SETCHAR "\\"
|
|
|
|
#define SET "s"
|
|
|
|
#define SET1 "s1"
|
|
|
|
#define SET2 "s2"
|
|
|
|
#define SET3 "s3"
|
|
|
|
#define SET4 "s4"
|
|
|
|
#define SETRULE "sr"
|
|
|
|
#define PUT "p"
|
|
|
|
#define PUT1 "p1"
|
|
|
|
#define PUT2 "p2"
|
|
|
|
#define PUT3 "p3"
|
|
|
|
#define PUT4 "p4"
|
|
|
|
#define PUTRULE "pr"
|
|
|
|
#define NOP "nop"
|
|
|
|
#define BOP "bop"
|
|
|
|
#define EOP "eop"
|
|
|
|
#define PUSH "["
|
|
|
|
#define POP "]"
|
|
|
|
#define RIGHT "r"
|
|
|
|
#define RIGHT1 "r1"
|
|
|
|
#define RIGHT2 "r2"
|
|
|
|
#define RIGHT3 "r3"
|
|
|
|
#define RIGHT4 "r4"
|
|
|
|
#define W "w"
|
|
|
|
#define W0 "w0"
|
|
|
|
#define W1 "w1"
|
|
|
|
#define W2 "w2"
|
|
|
|
#define W3 "w3"
|
|
|
|
#define W4 "w4"
|
|
|
|
#define X "x"
|
|
|
|
#define X0 "x0"
|
|
|
|
#define X1 "x1"
|
|
|
|
#define X2 "x2"
|
|
|
|
#define X3 "x3"
|
|
|
|
#define X4 "x4"
|
|
|
|
#define DOWN "d"
|
|
|
|
#define DOWN1 "d1"
|
|
|
|
#define DOWN2 "d2"
|
|
|
|
#define DOWN3 "d3"
|
|
|
|
#define DOWN4 "d4"
|
|
|
|
#define Y "y"
|
|
|
|
#define Y0 "y0"
|
|
|
|
#define Y1 "y1"
|
|
|
|
#define Y2 "y2"
|
|
|
|
#define Y3 "y3"
|
|
|
|
#define Y4 "y4"
|
|
|
|
#define Z "z"
|
|
|
|
#define Z0 "z0"
|
|
|
|
#define Z1 "z1"
|
|
|
|
#define Z2 "z2"
|
|
|
|
#define Z3 "z3"
|
|
|
|
#define Z4 "z4"
|
|
|
|
#define FONT "f"
|
|
|
|
#define FONT1 "f1"
|
|
|
|
#define FONT2 "f2"
|
|
|
|
#define FONT3 "f3"
|
|
|
|
#define FONT4 "f4"
|
|
|
|
#define FONTDEF "fd"
|
|
|
|
#define FONTNUM "fn"
|
|
|
|
#define SPECIAL "special"
|
|
|
|
#define PRE "pre"
|
|
|
|
#define POST "post"
|
|
|
|
#define POSTPOST "post_post"
|
|
|
|
#define OPCODE "opcode"
|
|
|
|
|
|
|
|
/* end dtl.h */
|