FORM  )PTCHVERS   $   SAS Institute, Inc. Patch V6.50 INPF    w  /printer.hOUTF      */printer.hPMSG   This patch is Copyright  1994 by Brian Gontowski.
It may be distributed with the V42 printer archive
for non-profit purposes.  Refer to the included
documentation for more information. PSEQ  'si#ifndef si	
#define si
/*
**	$VER: printer.h 42.7 (23.5.94)
**
**	printer.device structure definitions
**
**	Original printer.h
**	(C) Copyright 1987-1992 Commodore-Amiga, Inc.
**	    All Rights Reserved
*/

#ifndef  si

#include si(
#endif

#ifndef  EXEC_NODES_H
#include si(
#endif

#ifndef  EXEC_LISTS_H
#include si(
#endif

#ifndef  EXEC_PORTS_H
#include siA
#endif

#ifndef  DOS_DOS_H
#include "dos/dos.h"
#endif

#define si		si	
#define si		si	
#define si		si
#define PRD_QUERY		spI
#define PRD_NAME		(CMD_NONSTD+4)
#define PRD_ABORT		(CMD_NONSTD+5)
#define PRD_MOVE		(CMD_NONSTD+6)
#define PRD_LISTEN		(CMD_NONSTD+7)
#define PRD_DISABLE		(CMD_NONSTD+8)
#define PRD_PAUSE		(CMD_NONSTD+9)

#define PRD_MAXUNIT		25   /* Units 0 to 24 are available for printers */

#define UNIT_PRINTERMANAGER	(-1) /* Unit -1 is reserved for the printer manager */

#define PRDF_NODEFAULT		(1<<0) /* Ignore "DefaultPrinter" variable */

/* printer command definitions */

#define aRIS	 0  /* ESCc  reset			ISO */
#define aRIN	 1  /* ESC#1 initialize			+++ */
#define aIND	 2  /* ESCD  lf				ISO */
#define aNEL	 3  /* ESCE  return,lf			ISO */
#define aRI	 4  /* ESCM  reverse lf			ISO */

#define aSGR0	 5  /* ESC[0m normal char set		ISO */
#define aSGR3	 6  /* ESC[3m italics on		ISO */
#define aSGR23	 7  /* ESC[23m italics off		ISO */
#define aSGR4	 8  /* ESC[4m underline on		ISO */
#define aSGR24	 9  /* ESC[24m underline off		ISO */
#define aSGR1	10  /* ESC[1m boldface on		ISO */
#define aSGR22	11  /* ESC[22m boldface off		ISO */
#define aSFC	12  /* SGR30-39  set foreground color	ISO */
#define aSBC	13  /* SGR40-49  set background color	ISO */

#define si)  /* ESC[0w normal pitch		DEC */
#define si&  /* ESC[2w elite on			DEC */
#define si'  /* ESC[1w elite off			DEC */
#define si.  /* ESC[4w condensed fine on		DEC */
#define si*  /* ESC[3w condensed off		DEC */
#define si(  /* ESC[6w enlarged on		DEC */
#define SI  /* ESC[5w enlarged off		DEC */

#define aDEN6	21  /* ESC[6"z shadow print on		DEC (sort of) */
#define aDEN5	22  /* ESC[5"z shadow print off		DEC */
#define aDEN4	23  /* ESC[4"z doublestrike on		DEC */
#define aDEN3	24  /* ESC[3"z doublestrike off		DEC */
#define aDEN2	25  /* ESC[2"z	NLQ on			DEC */
#define aDEN1	26  /* ESC[1"z	NLQ off	      		DEC */

#define aSUS2	27  /* ESC[2v superscript on		+++ */
#define aSUS1	28  /* ESC[1v superscript off		+++ */
#define aSUS4	29  /* ESC[4v subscript on		+++ */
#define aSUS3	30  /* ESC[3v subscript off		+++ */
#define aSUS0	31  /* ESC[0v normalize the line	+++ */
#define aPLU	32  /* ESCL  partial line up		ISO */
#define aPLD	33  /* ESCK  partial line down		ISO */

#define aFNT0	34  /* ESC(B US char set	or Typeface  0 (default) */
#define aFNT1	35  /* ESC(R French char set	or Typeface  1 */
#define aFNT2	36  /* ESC(K German char set	or Typeface  2 */
#define aFNT3	37  /* ESC(A UK char set	or Typeface  3 */
#define aFNT4	38  /* ESC(E Danish I char set	or Typeface  4 */
#define aFNT5	39  /* ESC(H Sweden char set	or Typeface  5 */
#define aFNT6	40  /* ESC(Y Italian char set	or Typeface  6 */
#define aFNT7	41  /* ESC(Z Spanish char set	or Typeface  7 */
#define aFNT8	42  /* ESC(J Japanese char set	or Typeface  8 */
#define aFNT9	43  /* ESC(6 Norweign char set	or Typeface  9 */
#define aFNT10	44  /* ESC(C Danish II char set or Typeface 10 */

/*
	Suggested typefaces are:

	 0 - default typeface.
	 1 - Line Printer or equiv.
	 2 - Pica or equiv.
	 3 - Elite or equiv.
	 4 - Helvetica or equiv.
	 5 - Times Roman or equiv.
	 6 - Gothic or equiv.
	 7 - Script or equiv.
	 8 - Prestige or equiv.
	 9 - Caslon or equiv.
	10 - Orator or equiv.
*/

#define aPROP2	45  /* ESC[2p  proportional on		+++ */
#define aPROP1	46  /* ESC[1p  proportional off		+++ */
#define aPROP0	47  /* ESC[0p  proportional clear	+++ */
#define aTSS	48  /* ESC[n E set proportional offset	ISO */
#define aJFY5	49  /* ESC[5 F auto left justify	ISO */
#define aJFY7	50  /* ESC[7 F auto right justify	ISO */
#define aJFY6	51  /* ESC[6 F auto full justify	ISO */
#define aJFY0	52  /* ESC[0 F auto justify off		ISO */
#define aJFY3	53  /* ESC[3 F letter space (justify)	ISO (special) */
#define aJFY1	54  /* ESC[1 F word fill(auto center)	ISO (special) */

#define aVERP0	55  /* ESC[0z  1/8" line spacing	+++ */
#define aVERP1	56  /* ESC[1z  1/6" line spacing	+++ */
#define aSLPP	57  /* ESC[nt  set form length n	DEC */
#define aPERF	58  /* ESC[nq  perf skip n (n>0)	+++ */
#define aPERF0	59  /* ESC[0q  perf skip off		+++ */

#define aLMS	60  /* ESC#9   left margin set		+++ */
#define aRMS	61  /* ESC#0   right margin set		+++ */
#define aTMS	62  /* ESC#8   top margin set		+++ */
#define aBMS	63  /* ESC#2   bottom marg set		+++ */
#define aSTBM	64  /* ESC[Pn1;Pn2r  t&b margins	DEC */
#define aSLRM	65  /* ESC[Pn1;Pn2s  l&r margin		DEC */
#define aCAM	66  /* ESC#3   clear margins		+++ */

#define aHTS	67  /* ESCH    set horiz tab		ISO */
#define aVTS	68  /* ESCJ    set vertical tabs	ISO */
#define aTBC0	69  /* ESC[0g  clear horiz tab		ISO */
#define aTBC3	70  /* ESC[3g  clear all horiz tab	ISO */
#define aTBC1	71  /* ESC[1g  clear vertical tabs	ISO */
#define aTBC4	72  /* ESC[4g  clear all vertical tabs	ISO */
#define si/  /* ESC#4   clear all h&v tabs	+++ */
#define si.  /* ESC#5   set default tabs		+++ */
#define s
il  /* ESC[Pn"x extended commands	+++ */

#define aRAW	76  /* ESC[Pn"r	next 'Pn' chars are raw	+++ */

struct si
{
 struct Message si struct Device siX		/* device node pointer  */
 struct Unit *io_Unit;			/* unit (driver private)*/
 UWORD si			/* device command */
 UBYTE si5 BYTE io_Error;				/* error or warning num */
 UWORD s=I			/* printer command */
 UBYTE io_Parm0;			/* first command parameter */
 UBYTE io_Parm1;			/* second command parameter */
 UBYTE io_Parm2;			/* third command parameter */
 UBYTE io_Parm3;			/* fourth command parameter */
};

struct IODRPReq
{
 struct Message si struct Device siX		/* device node pointer  */
 struct Unit *io_Unit;			/* unit (driver private)*/
 UWORD si			/* device command */
 UBYTE si? BYTE io_Error;				/* error or warning num */
 struct RastPort s
i%		/* raster port */
 struct ColorMap s!i		/* color map */
 ULONG io_Modes;			/* graphics viewport modes */
 UWORD io_SrcX;				/* source x origin */
 UWORD io_SrcY;				/* source y origin */
 UWORD si			/* source x width */
 UWORD si			/* source x height */
 LONG si#			/* destination x width */
 LONG si%			/* destination y height */
 UWORD si"			/* option flags */
};

#define si5		0x0001	/* DestCols specified in 1/1000" */
#define si5		0x0002	/* DestRows specified in 1/1000" */
#define si5	0x0004	/* make DestCols maximum possible */
#define si5	0x0008	/* make DestRows maximum possible */
#define si7	0x0010	/* DestCols is fraction of FULLCOLS */
#define si7	0x0020	/* DestRows is fraction of FULLROWS */
#define si-		0x0040	/* center image on paper */
#define si3		0x0080	/* ensure correct aspect ratio */
#define si.	0x0100	/* lowest resolution (dpi) */
#define si	0x0200	/* next res */
#define si	0x0300	/* next res */
#define si	0x0400	/* next res */
#define si	0x0500	/* next res */
#define si	0x0600	/* next res */
#define si"	0x0700	/* highest res */
#define si6	0x0800	/* don't eject paper on gfx prints */
#define sI			0x1000	/* don't reset on gfx prints */
/*
	Compute print size, set 'io_DestCols' and 'io_DestRows' in the calling
	program's 'IODRPReq' structure and exit, DON'T PRINT.  This allows the
	calling program to see what the final print size would be in printer
	pixels.  Note that it modifies the 'io_DestCols' and 'io_DestRows'
	fields of your 'IODRPReq' structure.  Also, set the print density and
	update the 'MaxXDots', 'MaxYDots', 'XDotsInch', and 'YDotsInch' fields
	of the 'PrinterExtendedData' structure.
*/
#define si"		0x2000	/* see above */

#define si(		0	/* clean exit, no errors */
#define si'		1	/* user cancelled print */
#define si0	2	/* printer cannot output graphics */
#define si		3	/* OBSOLETE */
#define si*	4	/* print dimensions illegal */
#define si	5	/* OBSOLETE */
#define si2	6	/* no memory for internal variables */
#define sIk	7	/* no memory for print buffer */
/*
	Note : this is an internal error that can be returned from the render
	function to the printer device.  It is NEVER returned to the user.
	If the printer device sees this error it converts it 'PDERR_NOERR'
	and exits gracefully.  Refer to the document on
	'How to Write a Graphics Printer Driver' for more info.
*/
#define si~	8	/* took control in case 0 of render */
#define PDERR_DISABLED		9	/* the printer is disabled */

/* internal use */
#define si/	0x0700	/* masks out density values */
#define i\
	uBi\
	u2sI

struct PrtRegistration
{
 struct Node prg_Node;			/* usable node (name in ln_Name) */
 struct PrinterData *prg_PData;		/* ===READ ONLY=== */
 struct DateStamp prg_Date;		/* date/time */
 ULONG prg_JobID;			/* unique id */
 LONG prg_UnitNumber;			/* unit number for the printer */
 ULONG prg_Flags;			/* flags */
};

#define PDPRGF_READY		(1<<0)	/* if it ain't ready - it's waiting */
#define PDPRGF_STOPPED		(1<<1)	/* this job has been stopped */
#define PDPRGF_ABORTED		(1<<2)	/* this job has been aborted */
#define PDPRGF_MOVABLEUP	(1<<3)	/* this job can be moved up in priority */
#define PDPRGF_MOVABLEDOWN	(1<<4)	/* this job can be moved down in priority */
#define PDPRGF_ERROR		(1<<5)	/* this job had an error */

struct PrtNotification
{
 struct Message prn_Msg;		/* standard message */
 struct PrtRegistration *prn_Reg;	/* registration structure or NULL */
 ULONG prn_Flags;			/* flags */
 LONG prn_UnitNumber;			/* unit number or -1 if N.A. */
};

#define PDPRNF_FIRST		(1<<0)	/* first one - clear the list */
#define PDPRNF_LAST		(1<<1)	/* last one - refresh the display */
#define PDPRNF_DISABLED		(1<<2)	/* unit is disabled */
#define PDPRNF_PAUSED		(1<<3)	/* unit is paused */

/* PRD_MOVE directions */
#define PDMOVE_UP		1
#define PDMOVE_DOWN		-1

/* Printer Tricks */
#define PTRICK_HEADER		1
#define PT_Dummy		(TAG_USER+99)
#define PT_Buff			(PT_Dummy+0x01)
#define PT_BuffLen		(PT_Dummy+0x02)

#endif  