daps.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 1989 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* University Copyright- Copyright (c) 1982, 1986, 1988
* The Regents of the University of California
* All Rights Reserved
*
* University Acknowledgment- Portions of this document are derived from
* software developed by the University of California, Berkeley, and its
* contributors.
*/
/********************************************************************
* *
* The following defined constants and macros must be properly *
* set up for your APS-5 photo-typesetter. *
* *
********************************************************************/
#define ADJUST 1 /* conditional compilation flag */
#define LENS3 1 /* used for conditional compilation */
#define MAX_RANGE 3 /* largest master range on this APS-5 */
#ifdef LENS1 /* standard 2.22X lens */
#define RANGE1_SIZE 10 /* used in macro BASE_SIZE */
#define SCALEFACTOR 1.25 /* can scale lower ranges up this far */
#define BASE_SIZE(Range) /* base size for master range Range */ \
\
(RANGE1_SIZE * (1 << (Range - 1)))
#define SCALE_UP(Bsize) /* max size for lower ranges */ \
\
(Bsize * SCALEFACTOR)
#endif
#ifdef LENS2 /* standard 2.667X lens */
#define RANGE1_SIZE 12 /* master range 1 base size */
#define SCALEFACTOR 1.25 /* can scale lower ranges up this far */
#define BASE_SIZE(Range) /* base size for master range Range */ \
\
(RANGE1_SIZE * (1 << (Range - 1)))
#define SCALE_UP(Bsize) /* max size for lower ranges */ \
\
(Bsize * SCALEFACTOR)
#endif
#ifdef LENS3 /* 2.667X lens - special case */
#define RANGE1_SIZE 12 /* master range 1 base size */
#define SCALEFACTOR 1.50 /* can scale lower ranges up this far */
#define BASE_SIZE(Range) /* base size for master range Range */ \
\
(RANGE1_SIZE * (1 << (Range - 1)))
#define SCALE_UP(Bsize) /* max size for lower ranges */ \
\
(Bsize * SCALEFACTOR - 1)
#endif
/********************************************************************
* *
* POST-PROCESSOR DEFINED CONSTANTS *
* *
********************************************************************/
#define NON_FATAL 0 /* don't abort the job */
#define FATAL 1 /* fatal error - abort the job */
#define OFF 0 /* debug mode is off */
#define ON 1 /* debug mode is on */
#define NO 0 /* don't ignore fatal errors - debug */
#define YES 1 /* ignore fatal errors - debug only! */
#define SAME_STR 0 /* strings are the same */
#define RES 723.0 /* use this constant for accounting! */
#define PAGE_LENGTH 11.0 /* inches per page for accounting */
#define CUTOFF 10.0 /* beam cutoff position (inches) */
#define HCUTOFF 7230 /* beam cutoff in device units */
#define BMASK 0377 /* used for character mask */
#define MAX_INT 30000 /* used in t_reset() */
#define MAX_DEBUG 20 /* number of debug states */
#define MAX_OUTLIST 30 /* number of page pairs olist array */
#define NAME_LENGTH 10 /* max length of typesetter name */
#define FSIZE 200 /* size of a physical font */
#define SLOP 2 /* error factor used in hflush() */
#define NFONT 10 /* number of font positions available */
#define POS_SLANT 14 /* angle used for positive slants */
#define NEG_SLANT -14 /* angle used for negative slants */
#define TWO_BITS 3 /* mask for two rightmost bits */
#define BIT0 1 /* mask for bit 0 */
#define BIT1 2 /* mask for bit 1 */
#define BIT2 4 /* mask for bit 2 */
#define BIT3 8 /* mask for bit 3 */
#define SLANT_BIT BIT0 /* slant bit is bit 0 */
#define FONT_BIT BIT1 /* alternate font is bit 1 */
#define RANGE_BIT BIT2 /* max range is bit 2 */
#define SLANT_VAL 3 /* slant angle starts in bit 3 */
#define RANGE_VAL 5 /* range value starts in bit 5 */
#define DO_ACCT BIT0 /* still have to do accounting if on */
#define FILE_STARTED BIT1 /* file started but not completed */
#define NO_OUTFILE BIT2 /* no output file if on */
#define NO_ACCTFILE BIT3 /* no accounting file if on */
#define BAN_LENGTH 130 /* max length of banner string */
#define BAN_SIZE 10 /* point size to use in banner */
#define VSPACE0 6 /* space down for first cut marks */
#define VSPACE1 180 /* space at start of banner */
#define VSPACE2 180 /* space before printing user string */
#define VSPACE3 180 /* space before printing separator */
#define VSPACE4 180 /* space before starting user job */
#define HSPACE0 5346 /* space right for second cut marks */
#define HSPACE1 50 /* indent before first separator */
#define HSPACE2 100 /* indent before user string */
#define HSPACE3 50 /* indent before second separator */
#define HSPACE4 0 /* start cut marks at this position */
/********************************************************************
* *
* POST-PROCESSOR MACROS *
* *
********************************************************************/
#define SET_ARGS(save) /* set up internal argc and argv */ \
\
save = argc; /* save current value of argc */ \
argc -= arg_index; /* count arguments read already */ \
argv += arg_index
#define COUNT_ARGS(save) /* count the arguments processed */ \
\
arg_index = save - argc /* arg_index counts the arguments */
#define STR_CONVERT(s,i) /* convert string s to integer i */ \
\
do { \
i = 0; \
do \
i = 10 * i + *s++ - '0'; \
while ( isdigit(*s) ); \
} while ( 0 )
#define TOGGLE(a) /* toggle the value in argument a */ \
\
a = (a + 1) % 2
#define GET_DIG(fp,c) /* get a single ASCII digit */ \
\
c = getc(fp); \
if ( !isdigit(c) || c == EOF ) /* illegal character */ \
error(FATAL, "internal error - digit not found in GET_DIG")
#define GET_CHAR(fp,c) /* get a single ASCII character */ \
\
if ( (c = getc(fp)) == EOF ) /* end of file - abort */ \
error(FATAL, "internal error - char not found in GET_CHAR")
#define GET_INT(fp,n) /* get an integer from file fp */ \
\
if ( fscanf(fp, "%d", &n) != 1 ) /* end of file - abort */ \
error(FATAL,"internal error - integer not found in GET_INT")
#define GET_STR(fp,str) /* get a string from file fp */ \
\
if ( fscanf(fp, "%s", str) != 1 ) /* end of file - abort */ \
error(FATAL, "internal error - string not found in GET_STR")
#define GET_LINE(fp,buf) /* read a line from file fp into buf */ \
\
if ( fgets(buf, sizeof(buf), fp) == NULL ) \
error(FATAL, "internal error - line not found in GET_LINE")
#define SKIP_LINE(fp,c) /* skip to the next line of the file fp */ \
\
while ( ((c = getc(fp)) != '\n') && c != EOF ) \
;
#define SCAN1(buf,n1) /* read one number from buf */ \
\
if ( sscanf(buf, "%d", &n1) != 1 ) \
error(FATAL, "internal error - integer not found in SCAN1")
#define SCAN2(buf,n1,n2) /* read two numbers from buf */ \
\
if ( sscanf(buf, "%d %d", &n1, &n2) != 2 ) \
error(FATAL, "internal error - integers not found in SCAN2")
#define SCAN3(buf,n1,n2,n3) /* read three numbers from buf */ \
\
if ( sscanf(buf, "%d %d %d", &n1, &n2, &n3) != 3 ) \
error(FATAL, "internal error - integers not found in SCAN3")
#define SCAN4(buf,n1,n2,n3,n4) /* read four numbers from buf */ \
\
if ( sscanf(buf, "%d %d %d %d", &n1, &n2, &n3, &n4) != 4 ) \
error(FATAL, "internal error - integers not found in SCAN4")
#define SCAN_STR(buf,str) /* read a string from buf */ \
\
sscanf(buf, "%s", str)
#ifdef pdp11 /* sign extension problems on pdp11s */
#define PUTC(ch, fp) /* don't check for error if ch = 0377 */ \
\
if ( (putc(ch, fp) == EOF) && ((ch & BMASK) != 0377) ) \
error(FATAL, "internal error - PUTC can't output character")
#else /* don't worry about char 0377 */
#define PUTC(ch, fp) /* write character ch to file fp */ \
\
if ( putc(ch, fp) == EOF ) /* error in writing to fp */ \
error(FATAL, "internal error - PUTC can't output character")
#endif
#define READ(fd, buf, n) /* read n chars from file fd into buf */ \
\
if ( read(fd, buf, n) < 0 ) /* error in reading from fd */ \
error(FATAL, "internal error - READ can't read input file")
#define DECODE(value, start, bitmask) \
\
(value >> start) & bitmask
#define CHANGE_FONT(newfont, oldrange) /* set font to newfont */ \
\
do { \
change_font(newfont); \
if ( oldrange != range ) { /* range has changed */ \
PUTC(HVSIZE, tf); /* so set the point size */ \
putint(10*pstab[size-1]); /* to current size */ \
oldrange = range; \
} /* End if */ \
} while ( 0 )
#define SETSLANT(code, angle) /* set slant to value encoded in code */ \
\
do { \
angle = DECODE(code, SLANT_VAL, TWO_BITS); \
if ( angle & BIT0 ) /* have positive APS-5 slant */ \
angle = POS_SLANT; \
else if ( angle & BIT1 ) /* have negative slant */ \
angle = NEG_SLANT; \
t_slant(angle + last_req_slant); /* set the correct slant */ \
} while ( 0 )