Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

208 lines
11 KiB

/*****************************************************************************/
/* CODE.H */
/* */
/* Copyright (C) 1997- Advanced Peripherals Technologies, Inc. */
/* */
/* <HISTORY> */
/* */
/*****************************************************************************/
/*--------------------------------------------------------------------------*/
/* D E F I N E V A L U E */
/*--------------------------------------------------------------------------*/
#define PAPER_SRC_FTRAY 20
#define PAPER_SRC_CAS1 21
#define PAPER_SRC_CAS2 22
#define PAPER_SRC_CAS3 23
#define PAPER_SRC_AUTO 24 //Not use by NT driver
#define PAPER_DEST_SCALETOFIT_ON 25
#define PAPER_DEST_SCALETOFIT_OFF 26
#define PAGECONTROL_BEGIN_DOC 30
#define PAGECONTROL_BEGIN_PAGE 31
#define PAGECONTROL_END_DOC 32
#define PAGECONTROL_END_PAGE 33
#define PAGECONTROL_DUPLEX_OFF 34
#define PAGECONTROL_ABORT_DOC 35
#define PAGECONTROL_POTRAIT 36
#define PAGECONTROL_LANDSCAPE 37
#define PAGECONTROL_MULTI_COPIES 38
#define PAGECONTROL_DUPLEX_UPDOWN 39
#define PAGECONTROL_DUPLEX_RIGHTUP 40
#define PAPERSIZE_MAGIC 50 // this ID - 50 = Actual ID of A/PDL
#define PHYS_PAPER_A3 50
#define PHYS_PAPER_A4 51
#define PHYS_PAPER_A5 52
#define PHYS_PAPER_A6 53 // Reserved
#define PHYS_PAPER_B4 54
#define PHYS_PAPER_B5 55
#define PHYS_PAPER_B6 56 // Reserved
#define PHYS_PAPER_LETTER 57
#define PHYS_PAPER_LEGAL 58
#define PHYS_PAPER_POSTCARD 59
#define PHYS_PAPER_EXECUTIVE 60 // Reserved
#define PHYS_PAPER_UNFIXED 61
#define X_ABS_MOVE 70
#define Y_ABS_MOVE 71
#define XY_ABS_MOVE 78
#define CR_EMULATION 79
#define BOLD_ON 72
#define BOLD_OFF 73
#define ITALIC_ON 74
#define ITALIC_OFF 75
#define RESOLUTION_300 76
#define RESOLUTION_600 77
#define TONER_SAVE_OFF 100
#define TONER_SAVE_DARK 101
#define TONER_SAVE_LIGHT 102
#define MASTER_UNIT 600
#define LINE_PER_BAND 32
#define CCHMAXCMDLEN 128
#define MAXIMGSIZE 0xF000
#define NRPEAK 0x7F
#define RPEAK 0x80
/*--------------------------------------------------------------------------*/
/* S T R U C T U R E D E F I N E */
/*--------------------------------------------------------------------------*/
typedef struct tagAPDL {
ULONG ulHorzRes; // width of the physical surface
ULONG ulVertRes; // height of the physical surface
SIZEL szlPhysSize; // size of unwriteable margin
POINTL ptlPhysOffset; // size of entire surface with unwriteable margin
LPSTR lpCompBuf; // buffer for compressed data
LPSTR lpTempBuf; // temp buffer for compression
BOOL fBold; // TRUE = device font is bold
BOOL fItalic; // TRUE = device font is italic
BOOL fSendSetPhysPaper; // flag for sending set physical paper command
WORD wPageCount; // for send Eject & Print physical paper command
BOOL fDuplex; // TRUE = duplex mode is selected
BOOL fScaleToFit; // for set auto tray mode in Set Physical Paper
BOOL fOrientation; // for set media origin in Define Drawing Area
WORD wWidths; // move current position afer print device font
} APDL, FAR * LPAPDL;
typedef struct tagPAPER {
WORD wWidth;
WORD wHeight;
} PHYSIZE, FAR * LPPHYSIZE;
//+---------------------------------------------------------------------------+
//| F U N C T I O N P R O T O T Y P E |
//+---------------------------------------------------------------------------+
BOOL PASCAL MiniDrvEnablePDEV(LPDV, PGDIINFO);
BOOL PASCAL MiniDrvDisablePDEV(LPDV);
WORD PASCAL CBFilterGraphics(LPDV, LPSTR, WORD);
VOID PASCAL OEMOutputCmd(PVOID, WORD, PDWORD);
BOOL PASCAL OEMGetFontCmd(PVOID, WORD, PVOID, BOOL, PBYTE, PWORD);
SHORT PASCAL OEMScaleWidth(SHORT, SHORT, SHORT, SHORT, SHORT);
VOID PASCAL OEMSendScalableFontCmd(PVOID, LPCD, LPFONTINFO);
BYTE PASCAL IsDBCSLeadBytePAGES(BYTE);
VOID PASCAL OEMOutputChar(PVOID, PVOID, WORD, SHORT);
BYTE PASCAL SetDrawArea(LPDV, WORD);
WORD PASCAL BRL_ECmd(LPBYTE, LPBYTE, LPBYTE, WORD);
/*--------------------------------------------------------------------------*/
/* G L O B A L V A L U E */
/*--------------------------------------------------------------------------*/
/*======================= P A P E R S I Z E T A B L E =====================*/
PHYSIZE phySize[12] = {
// Width Height Physical paper size for 600dpi
(0x1AAC),(0x2604), // A3 1B66 x 26C4
(0x12A5),(0x1AAC), // A4 1362 x 1B66
(0x0CEC),(0x12A4), // A5
(0x0000),(0x0000), // A6 (Reserved)
(0x16FA),(0x20DA), // B4 17B8 x 2196
(0x100F),(0x16FA), // B5 10CE x 17B8
(0x0000),(0x0000), // B6 (Reserved)
(0x087E),(0x0CEC), // Post Card 93C x DAA (Origin is EE)
(0x1330),(0x190C), // Letter 13CE x 19C8
(0x1330),(0x2014), // Legal
(0x0000),(0x0000), // Executive (Reserved)
(0x0000),(0x0000) // Unfixed
};
/*==================== A / P D L C O M M A N D S T R I N G ===============*/
BYTE CmdInAPDLMode[] = {0x1B,0x7E,0x12,0x00,0x01,0x07};
BYTE CmdAPDLStart[] = {0x1C,0x01}; // A/PDL start
BYTE CmdAPDLEnd[] = {0x1C,0x02}; // A/PDL end
BYTE CmdBeginPhysPage[] = {0x1C,0x03}; // Begin Physical Page
BYTE CmdEndPhysPage[] = {0x1C,0x04}; // End Physical Page
BYTE CmdBeginLogPage[] = {0x1C,0x05}; // Begin Logical page
BYTE CmdEndLogPage[] = {0x1C,0x06}; // End Logical Page
BYTE CmdEjectPhysPaper[]= {0x1C,0x0F}; // Print&Eject Phys Paper
BYTE CmdMoveHoriPos[] = {0x1C,0x21,0x00,0x00}; // Horizontal Relative
BYTE CmdGivenHoriPos[] = {0x1C,0x23,0x00,0x00}; // Horizontal Absolute
BYTE CmdGivenVerPos[] = {0x1C,0x24,0x00,0x00}; // Vertical Absolute
BYTE CmdSetGivenPos[] = {0x1C,0x40,0x00,0x00,0x00,0x00};
BYTE CmdPrnStrCurrent[] = {0x1C,0xC3,0x00,0x00,0x03}; // Print String
BYTE CmdBoldItalicOn[] = {0x1C,0xA5,0x08,0x04,0x06,0x02,0x30,0x00,0x00,0x00,0x00};
BYTE CmdBoldOn[] = {0x1C,0xA5,0x04,0x04,0x02,0x02,0x20};
BYTE CmdItalicOn[] = {0x1c,0xa5,0x08,0x04,0x06,0x02,0x10,0x00,0x00,0x00,0x00};
BYTE CmdBoldItalicOff[] = {0x1c,0xa5,0x04,0x04,0x02,0x02,0x00};
BYTE CmdSetPhysPaper[] = {0x1C,0xA0, // Set Physical Paper
0x10, // length
0x01, // SubCmd Basic Characteristics
0x05, // SubCmdLength
0x01, // Paper Size
0x01, // PaperTray
0x00, // AutoTrayMode
00, // Duplex Mode
0x01, // Copy Count
0x02, // SubCmd Set Unfixed Paper Size
0x07, // SubCmdLength
00, // UnitBase
00,00, // Logical Unit
00,00, // Width
00,00}; // Height
BYTE CmdSetPhysPage[] = {0x1C,0xA1, // Set Physical Page
0x0D, // Length
0x01, // SubCmd Resolution
0x03, // SubCmdLength
00, // Unit Base of 10
0x0B,0xB8, // and Logical Unit Res of 3000
0x02, // SubCmd Toner Save
0x01, // SubCmdLength
00, // Toner Save OFF
0x03, // SubCmd N-Up
0x03, // SubCmdLength
00,00,00}; // N-Up off
BYTE CmdDefDrawArea[] = {0x1C,0xA2, // Define Drawing Area
0x0D, // length
0x01, // SubCmd origin width,height
0x08, // SubCmdLength
0x00,0x77, // origin X
0x00,0x77, // origin Y
00,00, // width
00,00, // height
0x02, // SubCmd Media Origin
0x01, // SubCmdLength
00}; // Portrait
BYTE CmdDrawImgCurrent[]= {0x1C,0xE1, // Draw Image at current position
00,00,00,00, // length
01, // Compress method : 0x01 = BRL
00,00, // actual width of image
00,LINE_PER_BAND, // actual height of image
00,00,00,00}; // length of raw image
UNIDRVFN_WRITESPOOLBUF WriteSpoolBuf;
UNIDRVFN_ALLOCMEM AllocMem;
UNIDRVFN_FREEMEM FreeMem;
DRVFN MiniDrvFnTab[] =
{
{INDEX_MiniDrvEnablePDEV, (PFN)MiniDrvEnablePDEV},
{INDEX_MiniDrvDisablePDEV, (PFN)MiniDrvDisablePDEV},
{INDEX_OEMWriteSpoolBuf, (PFN)CBFilterGraphics},
{INDEX_OEMOutputCmd, (PFN)OEMOutputCmd},
{INDEX_OEMGetFontCmd, (PFN)OEMGetFontCmd},
{INDEX_OEMOutputChar, (PFN)OEMOutputChar},
{INDEX_OEMSendScalableFontCmd, (PFN)OEMSendScalableFontCmd},
{INDEX_OEMScaleWidth1, (PFN)OEMScaleWidth}
};