mac-rom/Interfaces/CIncludes/Printing.h
Elliot Nunn 5b0f0cc134 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-12-26 10:02:57 +08:00

382 lines
11 KiB
C

/************************************************************
Created: Saturday, July 27, 1991 at 5:26 PM
Printing.h
C Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1985-1991
All rights reserved
This file is used in these builds: Mac32 BigBang Sys606
Change History (most recent first):
<7> 2/18/92 MH This file now uses the inline access to the _PrGlue trap which
was formerly provided in PrintTraps.h. The glue routines from
interfaces.o which were formerly accessed via this file were
only necessary to support execution on a Mac Plus or earlier
running system 4.0 or earlier. It is no longer necessary to
support that configuration in current internal or external
product development. The file PrintTraps.h is now a stub which
only includes this file.
<6> 8/8/91 JL Adding OpNotImpl as declared in IM v. V p. 411
<5> 7/31/91 JL Updated Copyright. Restored Comments.
<4> 1/28/91 LN Checked in Database generate file from DSG. Grouping enums into
groups of 20.
<3> 11/7/90 JL Changed #defines to anonymous enums
To Do:
************************************************************/
#ifndef __PRINTING__
#define __PRINTING__
#ifndef __QUICKDRAW__
#include <Quickdraw.h>
#endif
#ifndef __DIALOGS__
#include <Dialogs.h>
#endif
enum {
iPFMaxPgs = 128,
iPrPgFract = 120, /*Page scale factor. ptPgSize (below) is in units of 1/iPrPgFract*/
iPrPgFst = 1, /*Page range constants*/
iPrPgMax = 9999,
iPrRelease = 3, /*Current version number of the code.*/
iPrSavPFil = -1,
iPrAbort = 0x0080,
iPrDevCtl = 7, /*The PrDevCtl Proc's ctl number*/
lPrReset = 0x00010000, /*The PrDevCtl Proc's CParam for reset*/
lPrLineFeed = 0x00030000,
lPrLFStd = 0x0003FFFF, /*The PrDevCtl Proc's CParam for std paper advance*/
lPrLFSixth = 0x0003FFFF,
lPrPageEnd = 0x00020000, /*The PrDevCtl Proc's CParam for end page*/
lPrDocOpen = 0x00010000,
lPrPageOpen = 0x00040000,
lPrPageClose = 0x00020000,
lPrDocClose = 0x00050000,
iFMgrCtl = 8, /*The FMgr's Tail-hook Proc's ctl number*/
iMscCtl = 9, /*The FMgr's Tail-hook Proc's ctl number*/
iPvtCtl = 10 /*The FMgr's Tail-hook Proc's ctl number*/
};
enum {
iMemFullErr = -108,
iIOAbort = -27,
pPrGlobals = 0x00000944, /*The PrVars lo mem area:*/
bDraftLoop = 0,
bSpoolLoop = 1,
bUser1Loop = 2,
bUser2Loop = 3,
fNewRunBit = 2,
fHiResOK = 3,
fWeOpenedRF = 4,
/*Driver constants */
iPrBitsCtl = 4,
lScreenBits = 0,
lPaintBits = 1,
lHiScreenBits = 0x00000002, /*The Bitmap Print Proc's Screen Bitmap param*/
lHiPaintBits = 0x00000003, /*The Bitmap Print Proc's Paint [sq pix] param*/
iPrIOCtl = 5,
iPrEvtCtl = 6, /*The PrEvent Proc's ctl number*/
lPrEvtAll = 0x0002FFFD, /*The PrEvent Proc's CParam for the entire screen*/
lPrEvtTop = 0x0001FFFD, /*The PrEvent Proc's CParam for the top folder*/
#define sPrDrvr ".Print"
iPrDrvrRef = -3
};
enum {
getRslDataOp = 4,
setRslOp = 5,
draftBitsOp = 6,
noDraftBitsOp = 7,
getRotnOp = 8,
NoSuchRsl = 1,
OpNotImpl = 2, /*the driver doesn't support this opcode*/
RgType1 = 1
};
enum {feedCut,feedFanfold,feedMechCut,feedOther};
typedef unsigned char TFeed;
enum {scanTB,scanBT,scanLR,scanRL};
typedef unsigned char TScan;
typedef Rect *TPRect; /* A Rect Ptr */
typedef pascal void (*PrIdleProcPtr)(void);
typedef pascal void (*PItemProcPtr)(DialogPtr theDialog, short item);
struct TPrPort {
GrafPort gPort; /*The Printer's graf port.*/
QDProcs gProcs; /*..and its procs*/
long lGParam1; /*16 bytes for private parameter storage.*/
long lGParam2;
long lGParam3;
long lGParam4;
Boolean fOurPtr; /*Whether the PrPort allocation was done by us.*/
Boolean fOurBits; /*Whether the BitMap allocation was done by us.*/
};
typedef struct TPrPort TPrPort;
typedef TPrPort *TPPrPort;
/* Printing Graf Port. All printer imaging, whether spooling, banding, etc, happens "thru" a GrafPort.
This is the "PrPeek" record. */
struct TPrInfo {
short iDev; /*Font mgr/QuickDraw device code*/
short iVRes; /*Resolution of device, in device coordinates*/
short iHRes; /*..note: V before H => compatable with Point.*/
Rect rPage; /*The page (printable) rectangle in device coordinates.*/
};
typedef struct TPrInfo TPrInfo;
typedef TPrInfo *TPPrInfo;
/* Print Info Record: The parameters needed for page composition. */
struct TPrStl {
short wDev;
short iPageV;
short iPageH;
char bPort;
TFeed feed;
};
typedef struct TPrStl TPrStl;
typedef TPrStl *TPPrStl;
struct TPrXInfo {
short iRowBytes;
short iBandV;
short iBandH;
short iDevBytes;
short iBands;
char bPatScale;
char bUlThick;
char bUlOffset;
char bUlShadow;
TScan scan;
char bXInfoX;
};
typedef struct TPrXInfo TPrXInfo;
typedef TPrXInfo *TPPrXInfo;
struct TPrJob {
short iFstPage; /*Page Range.*/
short iLstPage;
short iCopies; /*No. copies.*/
char bJDocLoop; /*The Doc style: Draft, Spool, .., and ..*/
Boolean fFromUsr; /*Printing from an User's App (not PrApp) flag*/
PrIdleProcPtr pIdleProc; /*The Proc called while waiting on IO etc.*/
StringPtr pFileName; /*Spool File Name: NIL for default.*/
short iFileVol; /*Spool File vol, set to 0 initially*/
char bFileVers; /*Spool File version, set to 0 initially*/
char bJobX; /*An eXtra byte.*/
};
typedef struct TPrJob TPrJob;
typedef TPrJob *TPPrJob;
/* Print Job: Print "form" for a single print request. */
struct TPrint {
short iPrVersion; /*(2) Printing software version*/
TPrInfo prInfo; /*(14) the PrInfo data associated with the current style.*/
Rect rPaper; /*(8) The paper rectangle [offset from rPage]*/
TPrStl prStl; /*(8) This print request's style.*/
TPrInfo prInfoPT; /*(14) Print Time Imaging metrics*/
TPrXInfo prXInfo; /*(16) Print-time (expanded) Print info record.*/
TPrJob prJob; /*(20) The Print Job request (82) Total of the above; 120-82 = 38 bytes needed to fill 120*/
short printX[19]; /*Spare to fill to 120 bytes!*/
};
typedef struct TPrint TPrint;
typedef TPrint *TPPrint, **THPrint;
/* The universal 120 byte printing record */
struct TPrStatus {
short iTotPages; /*Total pages in Print File.*/
short iCurPage; /*Current page number*/
short iTotCopies; /*Total copies requested*/
short iCurCopy; /*Current copy number*/
short iTotBands; /*Total bands per page.*/
short iCurBand; /*Current band number*/
Boolean fPgDirty; /*True if current page has been written to.*/
Boolean fImaging; /*Set while in band's DrawPic call.*/
THPrint hPrint; /*Handle to the active Printer record*/
TPPrPort pPrPort; /*Ptr to the active PrPort*/
PicHandle hPic; /*Handle to the active Picture*/
};
typedef struct TPrStatus TPrStatus;
typedef TPrStatus *TPPrStatus;
/* Print Status: Print information during printing. */
struct TPfPgDir {
short iPages;
long iPgPos[129]; /*ARRAY [0..iPfMaxPgs] OF LONGINT*/
};
typedef struct TPfPgDir TPfPgDir;
typedef TPfPgDir *TPPfPgDir, **THPfPgDir;
/* PicFile = a TPfHeader followed by n QuickDraw Pics (whose PicSize is invalid!) */
struct TPrDlg {
DialogRecord Dlg; /*The Dialog window*/
ModalFilterProcPtr pFltrProc; /*The Filter Proc.*/
PItemProcPtr pItemProc; /*The Item evaluating proc.*/
THPrint hPrintUsr; /*The user's print record.*/
Boolean fDoIt;
Boolean fDone;
long lUser1; /*Four longs for user's to hang global data.*/
long lUser2; /*...Plus more stuff needed by the particular printing dialog.*/
long lUser3;
long lUser4;
};
typedef struct TPrDlg TPrDlg;
typedef TPrDlg *TPPrDlg;
typedef pascal TPPrDlg (*PDlgInitProcPtr)(THPrint hPrint);
/* This is the Printing Dialog Record. Only used by folks appending their own dialogs.
Print Dialog: The Dialog Stream object. */
struct TGnlData {
short iOpCode;
short iError;
long lReserved; /*more fields here depending on call*/
};
typedef struct TGnlData TGnlData;
struct TRslRg {
short iMin;
short iMax;
};
typedef struct TRslRg TRslRg;
struct TRslRec {
short iXRsl;
short iYRsl;
};
typedef struct TRslRec TRslRec;
struct TGetRslBlk {
short iOpCode;
short iError;
long lReserved;
short iRgType;
TRslRg xRslRg;
TRslRg yRslRg;
short iRslRecCnt;
TRslRec rgRslRec[27];
};
typedef struct TGetRslBlk TGetRslBlk;
struct TSetRslBlk {
short iOpCode;
short iError;
long lReserved;
THPrint hPrint;
short iXRsl;
short iYRsl;
};
typedef struct TSetRslBlk TSetRslBlk;
struct TDftBitsBlk {
short iOpCode;
short iError;
long lReserved;
THPrint hPrint;
};
typedef struct TDftBitsBlk TDftBitsBlk;
struct TGetRotnBlk {
short iOpCode;
short iError;
long lReserved;
THPrint hPrint;
Boolean fLandscape;
char bXtra;
};
typedef struct TGetRotnBlk TGetRotnBlk;
#ifdef __cplusplus
extern "C" {
#endif
pascal void PrPurge(void)
= {0x2F3C,0xA800,0x0000,0xA8FD};
pascal void PrNoPurge(void)
= {0x2F3C,0xB000,0x0000,0xA8FD};
pascal void PrOpen(void)
= {0x2F3C,0xC800,0x0000,0xA8FD};
pascal void PrClose(void)
= {0x2F3C,0xD000,0x0000,0xA8FD};
pascal void PrintDefault(THPrint hPrint)
= {0x2F3C,0x2004,0x0480,0xA8FD};
pascal Boolean PrValidate(THPrint hPrint)
= {0x2F3C,0x5204,0x0498,0xA8FD};
pascal Boolean PrStlDialog(THPrint hPrint)
= {0x2F3C,0x2A04,0x0484,0xA8FD};
pascal Boolean PrJobDialog(THPrint hPrint)
= {0x2F3C,0x3204,0x0488,0xA8FD};
pascal TPPrDlg PrStlInit(THPrint hPrint)
= {0x2F3C,0x3C04,0x040C,0xA8FD};
pascal TPPrDlg PrJobInit(THPrint hPrint)
= {0x2F3C,0x4404,0x0410,0xA8FD};
pascal void PrJobMerge(THPrint hPrintSrc,THPrint hPrintDst)
= {0x2F3C,0x5804,0x089C,0xA8FD};
pascal Boolean PrDlgMain(THPrint hPrint,PDlgInitProcPtr pDlgInit)
= {0x2F3C,0x4A04,0x0894,0xA8FD};
pascal TPPrPort PrOpenDoc(THPrint hPrint,TPPrPort pPrPort,Ptr pIOBuf)
= {0x2F3C,0x0400,0x0C00,0xA8FD};
pascal void PrCloseDoc(TPPrPort pPrPort)
= {0x2F3C,0x0800,0x0484,0xA8FD};
pascal void PrOpenPage(TPPrPort pPrPort,TPRect pPageFrame)
= {0x2F3C,0x1000,0x0808,0xA8FD};
pascal void PrClosePage(TPPrPort pPrPort)
= {0x2F3C,0x1800,0x040C,0xA8FD};
pascal void PrPicFile(THPrint hPrint,TPPrPort pPrPort,Ptr pIOBuf,Ptr pDevBuf,
TPrStatus *prStatus)
= {0x2F3C,0x6005,0x1480,0xA8FD};
pascal short PrError(void)
= {0x2F3C,0xBA00,0x0000,0xA8FD};
pascal void PrSetError(short iErr)
= {0x2F3C,0xC000,0x0200,0xA8FD};
pascal void PrGeneral(Ptr pData)
= {0x2F3C,0x7007,0x0480,0xA8FD};
pascal void PrDrvrOpen(void)
= {0x2F3C,0x8000,0x0000,0xA8FD};
pascal void PrDrvrClose(void)
= {0x2F3C,0x8800,0x0000,0xA8FD};
pascal void PrCtlCall(short iWhichCtl,long lParam1,long lParam2,long lParam3)
= {0x2F3C,0xA000,0x0E00,0xA8FD};
pascal Handle PrDrvrDCE(void)
= {0x2F3C,0x9400,0x0000,0xA8FD};
pascal short PrDrvrVers(void)
= {0x2F3C,0x9A00,0x0000,0xA8FD};
#ifdef __cplusplus
}
#endif
#endif