	IFND	DEVICES_PRINTER_I
DEVICES_PRINTER_I	EQU	1
**
**	$Filename: devices/printer.i $
**	$Release: 2.04 Includes, V37.4 $
**	$Revision: 1.7 $
**	$Date: 90/07/26 $
**
**	printer.device structure definitions
**
**	(C) Copyright 1987-1991 Commodore-Amiga, Inc.
**	    All Rights Reserved
**

	IFND	EXEC_TYPES_I
	INCLUDE	"exec/types.i"
	ENDC

	IFND	EXEC_NODES_I
	INCLUDE	"exec/nodes.i"
	ENDC

	IFND	EXEC_LISTS_I
	INCLUDE	"exec/lists.i"
	ENDC

	IFND	EXEC_PORTS_I
	INCLUDE	"exec/ports.i"
	ENDC

	IFND	EXEC_IO_I
	INCLUDE	"exec/io.i"
	ENDC

	DEVINIT

	DEVCMD	PRD_RAWWRITE
	DEVCMD	PRD_PRTCOMMAND
	DEVCMD	PRD_DUMPRPORT
	DEVCMD	PRD_QUERY

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

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

aSHORP0	EQU	14 ; ESC[0w normal pitch	      DEC
aSHORP2	EQU	15 ; ESC[2w elite on		      DEC
aSHORP1	EQU	16 ; ESC[1w elite off		      DEC
aSHORP4	EQU	17 ; ESC[4w condensed fine on	      DEC
aSHORP3	EQU	18 ; ESC[3w condensed off	      DEC
aSHORP6	EQU	19 ; ESC[6w enlarged on		      DEC
aSHORP5	EQU	20 ; ESC[5w enlarged off	      DEC

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

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

aFNT0	EQU	34 ; ESC(B US char set	     or Typeface  0 (default)
aFNT1	EQU	35 ; ESC(R French char set    or Typeface  1
aFNT2	EQU	36 ; ESC(K German char set    or Typeface  2
aFNT3	EQU	37 ; ESC(A UK char set	     or Typeface  3
aFNT4	EQU	38 ; ESC(E Danish I char set  or Typeface  4
aFNT5	EQU	39 ; ESC(H Sweden char set    or Typeface  5
aFNT6	EQU	40 ; ESC(Y Italian char set   or Typeface  6
aFNT7	EQU	41 ; ESC(Z Spanish char set   or Typeface  7
aFNT8	EQU	42 ; ESC(J Japanese char set  or Typeface  8
aFNT9	EQU	43 ; ESC(6 Norweign char set  or Typeface  9
aFNT10	EQU	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.
;

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

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

aLMS	EQU	60 ; ESC#9  Left margin set	      +++
aRMS	EQU	61 ; ESC#0  Right margin set	      +++
aTMS	EQU	62 ; ESC#8  Top margin set	      +++
aBMS	EQU	63 ; ESC#2  Bottom marg set	      +++
aSTBM	EQU	64 ; ESC[Pn1;Pn2r  T&B margins	      DEC
aSLRM	EQU	65 ; ESC[Pn1;Pn2s  L&R margin	      DEC
aCAM	EQU	66 ; ESC#3  Clear margins	      +++

aHTS	EQU	67 ; ESCH    Set horiz tab	      ISO
aVTS	EQU	68 ; ESCJ    Set vertical tabs	      ISO
aTBC0	EQU	69 ; ESC[0g  Clr horiz tab	      ISO
aTBC3	EQU	70 ; ESC[3g  Clear all h tab	      ISO
aTBC1	EQU	71 ; ESC[1g  Clr vertical tabs	      ISO
aTBC4	EQU	72 ; ESC[4g  Clr all v tabs	      ISO
aTBCALL	EQU	73 ; ESC#4   Clr all h & v tabs	      +++
aTBSALL	EQU	74 ; ESC#5   Set default tabs	      +++
aEXTEND	EQU	75 ; ESC[Pn"x extended commands        +++ 

aRAW	EQU	76 ; ESC[Pn"r Next 'Pn' chars are raw  +++


	STRUCTURE	IOPrtCmdReq,IO_SIZE
	UWORD	io_PrtCommand  ; 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
	LABEL	iopcr_SIZEOF

	STRUCTURE	IODRPReq,IO_SIZE
	APTR	io_RastPort    ; raster port
	APTR	io_ColorMap    ; color map
	ULONG	io_Modes	   ; graphics viewport modes
	UWORD	io_SrcX	   ; source x origin
	UWORD	io_SrcY	   ; source y origin
	UWORD	io_SrcWidth    ; source x width
	UWORD	io_SrcHeight   ; source x height
	LONG	io_DestCols    ; destination x width
	LONG	io_DestRows    ; destination y height
	UWORD	io_Special	   ; option flags
	LABEL	iodrpr_SIZEOF

SPECIAL_MILCOLS	EQU	$0001	; DestCols specified in 1/1000"
SPECIAL_MILROWS	EQU	$0002	; DestRows specified in 1/1000"
SPECIAL_FULLCOLS	EQU	$0004	; make DestCols maximum possible
SPECIAL_FULLROWS	EQU	$0008	; make DestRows maximum possible
SPECIAL_FRACCOLS	EQU	$0010	; DestCols is fraction of FULLCOLS
SPECIAL_FRACROWS	EQU	$0020	; DestRows is fraction of FULLROWS
SPECIAL_CENTER	EQU	$0040	; center image on paper
SPECIAL_ASPECT	EQU	$0080	; ensure correct aspect ratio
SPECIAL_DENSITY1	EQU	$0100	; lowest resolution (dpi)
SPECIAL_DENSITY2	EQU	$0200	; next res
SPECIAL_DENSITY3	EQU	$0300	; next res
SPECIAL_DENSITY4	EQU	$0400	; next res
SPECIAL_DENSITY5	EQU	$0500	; next res
SPECIAL_DENSITY6	EQU	$0600	; next res
SPECIAL_DENSITY7	EQU	$0700	; highest res
SPECIAL_NOFORMFEED	EQU	$0800	; don't eject paper after gfx prints
SPECIAL_TRUSTME	EQU	$1000	; 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.
;
SPECIAL_NOPRINT	EQU	$2000	; see above

PDERR_NOERR	EQU	0	; clean exit, no errors
PDERR_CANCEL	EQU	1	; user cancelled print
PDERR_NOTGRAPHICS	EQU	2	; printer cannot output graphics
PDERR_INVERTHAM	EQU	3	; OBSOLETE
PDERR_BADDIMENSION	EQU	4	; print dimensions illegal
PDERR_DIMENSIONOVFLOW	EQU	5	; OBSOLETE
PDERR_INTERNALMEMORY	EQU	6	; no memory for internal variables
PDERR_BUFFERMEMORY	EQU	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.
;
PDERR_TOOKCONTROL	EQU	8	; I took control in case 0 of render

; internal use
SPECIAL_DENSITYMASK	EQU	$0700	;  masks out density values
SPECIAL_DIMENSIONSMASK	EQU	SPECIAL_MILCOLS!SPECIAL_MILROWS!SPECIAL_FULLCOLS!SPECIAL_FULLROWS!SPECIAL_FRACCOLS!SPECIAL_FRACROWS!SPECIAL_ASPECT

	ENDC
