1125 lines
36 KiB
C
1125 lines
36 KiB
C
/*++
|
|
|
|
Copyright (c) 1996-1999 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
gpd.h
|
|
|
|
Abstract:
|
|
|
|
GPD parser specific header file
|
|
|
|
Environment:
|
|
|
|
Windows NT Unidrv driver
|
|
|
|
Revision History:
|
|
|
|
10/15/96 -amandan-
|
|
Created it.
|
|
|
|
10/22/96 -zhanw-
|
|
add definition of all GPD constants
|
|
|
|
1/16/97 -zhanw-
|
|
update based on the latest GPD spec
|
|
--*/
|
|
|
|
|
|
#ifndef _GPD_H_
|
|
#define _GPD_H_
|
|
|
|
|
|
#define UNUSED_ITEM 0xFFFFFFFF
|
|
#define END_OF_LIST 0XFFFFFFFF
|
|
#define END_SEQUENCE 0xFFFFFFFF
|
|
#define MAX_THRESHOLD 0x7FFF
|
|
|
|
#define HT_PATSIZE_AUTO 255
|
|
|
|
//
|
|
// Binary printer description filename extension
|
|
//
|
|
|
|
#define BUD_FILENAME_EXT TEXT(".BUD")
|
|
|
|
// driver chooses 'best' GDI halftone pattern.
|
|
|
|
// ---- Qualified Names Section ---- //
|
|
|
|
// Note: Current practice of using the same code
|
|
// to store Integers, constants, and Qualified Names
|
|
// in List structures requires the QUALNAME structure
|
|
// to fit inside one DWORD.
|
|
|
|
typedef struct
|
|
{
|
|
WORD wFeatureID ;
|
|
WORD wOptionID ;
|
|
} QUALNAME, * PQUALNAME ;
|
|
// assign this struct the tag 'qn'
|
|
|
|
// ---- End of Qualified Names Section ---- //
|
|
|
|
typedef DWORD LISTINDEX;
|
|
|
|
//
|
|
// PRINTER TYPE enumeration
|
|
//
|
|
|
|
typedef enum _PRINTERTYPE {
|
|
PT_SERIAL,
|
|
PT_PAGE,
|
|
PT_TTY
|
|
} PRINTERTYPE;
|
|
|
|
|
|
//
|
|
// OEMPRINTINGCALLBACKS enumeration
|
|
//
|
|
|
|
typedef enum _OEMPRINTINGCALLBACKS {
|
|
OEMPC_OEMDownloadFontheader,
|
|
OEMPC_OEMDownloadCharGlyph,
|
|
OEMPC_OEMTTDownloadMethod,
|
|
OEMPC_OEMOutputCharStr,
|
|
OEMPC_OEMImageProcessing,
|
|
OEMPC_OEMCompression,
|
|
OEMPC_OEMHalftonePattern,
|
|
OEMPC_OEMFilterGraphics
|
|
} OEMPRINTINGCALLBACKS;
|
|
|
|
|
|
//
|
|
// define possible values for *CursorXAfterCR keyword
|
|
//
|
|
typedef enum _CURSORXAFTERCR {
|
|
CXCR_AT_PRINTABLE_X_ORIGIN,
|
|
CXCR_AT_CURSOR_X_ORIGIN
|
|
} CURSORXAFTERCR;
|
|
|
|
//
|
|
// define values for *CursorXAfterSendBlockData keyword
|
|
//
|
|
typedef enum _CURSORXAFTERSENDBLOCKDATA {
|
|
CXSBD_AT_GRXDATA_END,
|
|
CXSBD_AT_GRXDATA_ORIGIN,
|
|
CXSBD_AT_CURSOR_X_ORIGIN
|
|
} CURSORXAFTERSENDBLOCKDATA;
|
|
|
|
//
|
|
// define values for *CursorYAfterSendBlockData keyword
|
|
//
|
|
typedef enum _CURSORYAFTERSENDBLOCKDATA {
|
|
CYSBD_NO_MOVE,
|
|
CYSBD_AUTO_INCREMENT
|
|
} CURSORYAFTERSENDBLOCKDATA;
|
|
|
|
//
|
|
// define values for *OutputDataFormat keyword
|
|
//
|
|
typedef enum _OUTPUTDATAFORMAT {
|
|
ODF_H_BYTE,
|
|
ODF_V_BYTE
|
|
} OUTPUTDATAFORMAT;
|
|
|
|
//
|
|
// define values for *CharPosition keyword
|
|
//
|
|
typedef enum _CHARPOSITION {
|
|
CP_UPPERLEFT,
|
|
CP_BASELINE
|
|
} CHARPOSITION;
|
|
|
|
//
|
|
// define values for *DLSymbolSet
|
|
//
|
|
typedef enum _DLSYMBOLSET {
|
|
DLSS_PC8,
|
|
DLSS_ROMAN8
|
|
|
|
} DLSYMBOLSET;
|
|
|
|
//
|
|
// define values for *FontFormat keyword
|
|
//
|
|
typedef enum _FONTFORMAT {
|
|
FF_HPPCL,
|
|
FF_HPPCL_RES,
|
|
FF_HPPCL_OUTLINE,
|
|
FF_OEM_CALLBACK
|
|
} FONTFORMAT;
|
|
|
|
typedef enum _CURSORXAFTERRECTFILL {
|
|
CXARF_AT_RECT_X_ORIGIN,
|
|
CXARF_AT_RECT_X_END
|
|
|
|
} CURSORXAFTERRECTFILL;
|
|
|
|
typedef enum _CURSORYAFTERRECTFILL {
|
|
CYARF_AT_RECT_Y_ORIGIN,
|
|
CYARF_AT_RECT_Y_END
|
|
|
|
} CURSORYAFTERRECTFILL;
|
|
|
|
typedef enum _RASTERMODE {
|
|
RASTMODE_DIRECT,
|
|
RASTMODE_INDEXED
|
|
|
|
} RASTERMODE;
|
|
|
|
|
|
//
|
|
// GLOBAL ENTRIES
|
|
// Global entries applies to the whole GPD file.
|
|
// The driver creates a GLOBALS struct and the parsers initializes
|
|
// it. The driver keeps a pointer to the GLOBALS struct in PDEVICE.
|
|
//
|
|
|
|
typedef struct _GLOBALS {
|
|
|
|
//
|
|
// General
|
|
//
|
|
|
|
PWSTR pwstrGPDSpecVersion; // "GPDSPecVersion"
|
|
PWSTR pwstrGPDFileVersion; // "GPDFileVersion"
|
|
POINT ptMasterUnits; // "MasterUnits"
|
|
PWSTR pwstrModelName; // "ModelName"
|
|
PWSTR pwstrGPDFileName; // "GPDFileName"
|
|
PRINTERTYPE printertype; // "PrinterType"
|
|
PWSTR pwstrIncludeFiles; // "Include"
|
|
PWSTR pwstrResourceDLL; // "ResourceDLL"
|
|
DWORD dwMaxCopies; // "MaxCopies"
|
|
DWORD dwFontCartSlots; // "FontCartSlots"
|
|
|
|
// these two fields hold a true pointer and the number of bytes of
|
|
// OEM supplied binary data defined in the GPD file.
|
|
PBYTE pOEMCustomData; // "OEMCustomData" location of data
|
|
DWORD dwOEMCustomData; // "OEMCustomData" byte count of data
|
|
|
|
|
|
|
|
|
|
BOOL bRotateCoordinate; // "RotateCoordinate"
|
|
BOOL bRotateRasterData; // "RotateRaster"
|
|
LISTINDEX liTextCaps; // *TextCaps, offset to a list of
|
|
BOOL bRotateFont; // "RotateFont"
|
|
LISTINDEX liMemoryUsage; // *MemoryUsage
|
|
LISTINDEX liReselectFont; // *ReselectFont
|
|
LISTINDEX liOEMPrintingCallbacks; // *OEMPrintingCallbacks
|
|
|
|
|
|
//
|
|
// Cursor Control related information
|
|
//
|
|
|
|
CURSORXAFTERCR cxaftercr; // "CursorXAfterCR"
|
|
LISTINDEX liBadCursorMoveInGrxMode; // "BadCursorMoveInGrxMode"
|
|
LISTINDEX liYMoveAttributes; // "YMoveAttributes"
|
|
DWORD dwMaxLineSpacing; // "MaxLineSpacing"
|
|
BOOL bEjectPageWithFF; // "EjectPageWithFF"
|
|
BOOL bUseSpaceForXMove ; // UseSpaceForXMove?
|
|
BOOL bAbsXMovesRightOnly ; // AbsXMovesRightOnly?
|
|
DWORD dwXMoveThreshold; // *XMoveThreshold, never negative
|
|
DWORD dwYMoveThreshold; // *YMoveThreshold, never negative
|
|
POINT ptDeviceUnits; // *XMoveUnit, *YMoveUnit
|
|
DWORD dwLineSpacingMoveUnit; // *LineSpacingMoveUnit
|
|
|
|
//
|
|
// Color related information
|
|
//
|
|
|
|
BOOL bChangeColorMode; // "ChangeColorModeOnPage"
|
|
|
|
DWORD dwMagentaInCyanDye; // "MagentaInCyanDye"
|
|
DWORD dwYellowInCyanDye; // "YellowInCyanDye"
|
|
DWORD dwCyanInMagentaDye; // "CyanInMagentaDye"
|
|
DWORD dwYellowInMagentaDye; // "YellowInMagentaDye"
|
|
DWORD dwCyanInYellowDye; // "CyanInYellowDye"
|
|
DWORD dwMagentaInYellowDye; // "MagentaInYellowDye"
|
|
BOOL bEnableGDIColorMapping; // "EnableGDIColorMapping?"
|
|
|
|
DWORD dwMaxNumPalettes; // "MaxNumPalettes"
|
|
// the Palette entries are indicies to first item in a list.
|
|
LISTINDEX liPaletteSizes; // "PaletteSizes"
|
|
LISTINDEX liPaletteScope; // "PaletteScope"
|
|
|
|
//
|
|
// Raster related information
|
|
//
|
|
OUTPUTDATAFORMAT outputdataformat; // "OutputDataFormat"
|
|
BOOL bOptimizeLeftBound; // *OptimizaLeftBound?
|
|
LISTINDEX liStripBlanks ; // "StripBlanks"
|
|
BOOL bRasterSendAllData ; // "RasterSendAllData?"
|
|
CURSORXAFTERSENDBLOCKDATA cxafterblock; // "CursorXAfterSendBlockData"
|
|
CURSORYAFTERSENDBLOCKDATA cyafterblock; // "CursorYAfterSendBlockData"
|
|
BOOL bUseCmdSendBlockDataForColor; // "UseExpColorSelectCmd"
|
|
BOOL bMoveToX0BeforeColor; // "MoveToX0BeforeSetColor"
|
|
BOOL bSendMultipleRows; // *SendMultipleRows?
|
|
DWORD dwMaxMultipleRowBytes ; // "*MaxMultipleRowBytes"
|
|
BOOL bMirrorRasterByte; // *MirrorRasterByte?
|
|
BOOL bMirrorRasterPage; // *MirrorRasterPage?
|
|
|
|
//
|
|
//Font Information
|
|
//Device Font Specific.
|
|
//
|
|
|
|
LISTINDEX liDeviceFontList; // "DeviceFonts" Index to Font List Node
|
|
DWORD dwDefaultFont; // "DefaultFont ID"
|
|
DWORD dwMaxFontUsePerPage; // "MaxFontUsePerPage"
|
|
DWORD dwDefaultCTT; // *DefaultCTT
|
|
DWORD dwLookaheadRegion; // *LookAheadRegion, never negative
|
|
INT iTextYOffset; // *TextYOffset, could be negative
|
|
CHARPOSITION charpos; // "CharPosition"
|
|
|
|
//
|
|
//Font Substitution.
|
|
//
|
|
|
|
BOOL bTTFSEnabled ; //"TTFSEnabled?"
|
|
|
|
//
|
|
//Font Download
|
|
//
|
|
|
|
DWORD dwMinFontID; // "MinFontID"
|
|
DWORD dwMaxFontID; // "MaxFontID"
|
|
DWORD dwMaxNumDownFonts; // *MaxNumDownFonts
|
|
DLSYMBOLSET dlsymbolset; // *DLSymbolSet
|
|
DWORD dwMinGlyphID; // "MinGlyphID"
|
|
DWORD dwMaxGlyphID; // "MaxGlyphID"
|
|
FONTFORMAT fontformat; // "FontFormat"
|
|
|
|
//
|
|
// font simulation
|
|
//
|
|
|
|
BOOL bDiffFontsPerByteMode; // "DiffFontsPerByteMode?"
|
|
|
|
//
|
|
// rectangle area fill
|
|
//
|
|
|
|
CURSORXAFTERRECTFILL cxafterfill; // *CursorXAfterRectFill
|
|
CURSORYAFTERRECTFILL cyafterfill; // *CursorYAfterRectFill
|
|
DWORD dwMinGrayFill; // *MinGrayFill
|
|
DWORD dwMaxGrayFill; // *MaxGrayFill
|
|
DWORD dwTextHalftoneThreshold ; // *TextHalftoneThreshold
|
|
|
|
|
|
} GLOBALS, *PGLOBALS;
|
|
|
|
|
|
//
|
|
// DATA TYPE
|
|
// Enumeration of all data types in DataType array refernce
|
|
//
|
|
|
|
typedef enum _DATATYPE {
|
|
DT_COMMANDTABLE, // maps UnidrvID to index into COMMANDARRAY
|
|
DT_COMMANDARRAY,
|
|
DT_PARAMETERS,
|
|
DT_TOKENSTREAM, // stream of RPN operator tokens
|
|
DT_LISTNODE, // holds a LIST of dword values
|
|
DT_LOCALLISTNODE, // holds a LIST of dword values
|
|
DT_FONTSCART, // list of FontCartridges
|
|
DT_FONTSUBST, // Font Substitution table.
|
|
|
|
DT_LAST
|
|
} DATATYPE;
|
|
|
|
//
|
|
// GPDDRIVERINFO fields will be access via by predefined macros due
|
|
// to the possiblities that different base address might be required
|
|
// by the GPD parser.
|
|
//
|
|
|
|
|
|
typedef struct _GPDDRIVERINFO {
|
|
|
|
DWORD dwSize; // Size if GPDDRIVERINFO
|
|
ARRAYREF DataType[DT_LAST]; // global list of ALL
|
|
// Array References. See DATATYPE
|
|
// enumeration for details.
|
|
DWORD dwJobSetupIndex; // Index to listnode containing
|
|
DWORD dwDocSetupIndex; // list of indicies to COMMANDARRAY.
|
|
DWORD dwPageSetupIndex; //
|
|
DWORD dwPageFinishIndex; //
|
|
DWORD dwDocFinishIndex; //
|
|
DWORD dwJobFinishIndex; //
|
|
|
|
PBYTE pubResourceData; // Pointer to resource data base address
|
|
PINFOHEADER pInfoHeader; // Pointer to InfoHeader;
|
|
GLOBALS Globals; // GLOBALS struct
|
|
|
|
} GPDDRIVERINFO, *PGPDDRIVERINFO;
|
|
|
|
|
|
// ---- WARNING, the following section is owned ---- //
|
|
// by peterwo. Do not make any changes in these //
|
|
// definitions without his permission. //
|
|
// --------------- No Tresspassing --------------- //
|
|
|
|
//
|
|
// SEQUENCE COMMANDS
|
|
// The GPD identifies 6 sections of a job stream. Within a section, the commands
|
|
// are sent out in the increasing order of the sequence number. The number doesn
|
|
// not have to be consecutive.
|
|
// The driver will send out sequence commands for each
|
|
// of the following sections:
|
|
// JOB_SETUP
|
|
// DOC_SETUP
|
|
// PAGE_SETUP
|
|
// PAGE_FINISH
|
|
// DOC_FINISH
|
|
// JOB_FINISH
|
|
|
|
//
|
|
// SECTION enumeration
|
|
//
|
|
|
|
typedef enum _SEQSECTION {
|
|
|
|
SS_UNINITIALIZED,
|
|
SS_JOBSETUP,
|
|
SS_DOCSETUP,
|
|
SS_PAGESETUP,
|
|
SS_PAGEFINISH,
|
|
SS_DOCFINISH,
|
|
SS_JOBFINISH,
|
|
|
|
} SEQSECTION;
|
|
|
|
|
|
#if 0
|
|
// the sequence structure has been abandoned in favor
|
|
// of storing the list of COMMAND indicies in LISTNODE
|
|
// structures. The parser will convert wFeatureIndex
|
|
// into a command Index so the UI module will only
|
|
// deal with command indicies.
|
|
|
|
typedef struct _SEQUENCE{
|
|
WORD wIndexOfCmd; // Index into the COMMAND array
|
|
WORD wFeatureIndex; // Index into the FEATURE array
|
|
// FEATURE array is in UIINFO
|
|
WORD wNextInSequence; // Next sequence commands to send for this setion
|
|
// If equal to END_SEQUENCE, means no more for this section
|
|
WORD wReserved;
|
|
} SEQUENCE, *PSEQUENCE;
|
|
#endif
|
|
|
|
//
|
|
// ORDERDEPENDENCY
|
|
// Orderdepend is not use by the graphics driver, it's mainly present
|
|
// for the parsers.
|
|
//
|
|
|
|
|
|
typedef struct
|
|
{
|
|
SEQSECTION eSection; // Specifies the section
|
|
DWORD dwOrder ; // order within each section.
|
|
} ORDERDEPENDENCY , * PORDERDEPENDENCY ;
|
|
// assign this struct the type 'ord'
|
|
|
|
//
|
|
// COMMAND
|
|
// All commands listed in GPD will be parsed into the format defined below.
|
|
// The command array is a one dimensional array, accessible via predefined index.
|
|
// The invocation string an be in the form of one or more binary string concatenated
|
|
// together. Between binary string, there can exists parameter reference, always headed
|
|
// by a %. For example, %paramref, where paramref is the index into the PARAMETER array.
|
|
//
|
|
|
|
typedef struct _COMMAND{
|
|
INVOCATION strInvocation; // binary string and parameter references
|
|
ORDERDEPENDENCY ordOrder; // ORDERDEPENDENCY info
|
|
DWORD dwCmdCallbackID; // Command callback IDs are defined in
|
|
// GPD. If set to NO_CALLBACK_ID, it means
|
|
// that this cmd doesn't need to be hooked
|
|
DWORD dwStandardVarsList; // If the dwCmdCallbackID is not used, ignore this
|
|
// Otherwise, use dwStandardVarsList as the
|
|
// as a list of standard variable that need to be
|
|
// passed in command callbacks.
|
|
// dwStandardVarsList is an index into the
|
|
// LIST array
|
|
BOOL bNoPageEject; // does command cause ejection of current page?
|
|
// bitfield type doesn't exist for keywords not in snapshot table.
|
|
// all StartDoc commands with this flag set form a subset that
|
|
// may be sent as a group. They will not cause a page ejection.
|
|
|
|
} COMMAND, *PCOMMAND;
|
|
// assign this struct the type 'cmd'
|
|
|
|
#define NO_CALLBACK_ID (0xffffffff)
|
|
|
|
|
|
//
|
|
// PARAMETER
|
|
// All the parameters required by defined commands are stored in the PARAMETER array
|
|
// The driver will use the parameter reference in INVOCATION string as the index
|
|
// into this array for parameters.
|
|
//
|
|
|
|
typedef struct _PARAMETER{
|
|
DWORD dwFormat; // Specifies the format of the parameter
|
|
DWORD dwDigits; // Specifies the number of digits to be
|
|
// emmitted, this is only valid if the
|
|
// format is "D" or "d" AND dwFlags has
|
|
// PARAM_FLAG_FIELDWIDTH_USED
|
|
DWORD dwFlags; // Flags for parameters, which action to carray out:
|
|
// PARAM_FLAG_MIN_USED
|
|
// PARAM_FLAG_MAX_USED
|
|
// PARAM_FLAG_FIELDWIDTH_USED
|
|
LONG lMin; // If PARAMETER_MINUSED is set, use this
|
|
// as the min value for parameter
|
|
LONG lMax; // If PARAMETER_MAXUSED is set, use this
|
|
// as the max value for parameter
|
|
ARRAYREF arTokens; // Refernce to array of TOKENs for RPN calculator
|
|
|
|
} PARAMETER, *PPARAMETER;
|
|
// assign this struct the type 'param'
|
|
|
|
|
|
#define PARAM_FLAG_MIN_USED 0x00000001
|
|
// lMin field is used
|
|
#define PARAM_FLAG_MAX_USED 0x00000002
|
|
// lMax field is used
|
|
#define PARAM_FLAG_FIELDWIDTH_USED 0x00000004
|
|
// if fieldwidth was specified for 'd' or 'D' format.
|
|
#define PARAM_FLAG_MAXREPEAT_USED 0x00000008 // dead
|
|
// dwMaxRepeat field is used
|
|
|
|
|
|
//
|
|
// OPERATOR
|
|
// The following is an enumeration of the OPERATOR in TOKENSTREAM
|
|
//
|
|
|
|
typedef enum _OPERATOR
|
|
{
|
|
OP_INTEGER, // dwValue contains an integer
|
|
OP_VARI_INDEX, // dwValue contains index to Standard Variable Table.
|
|
|
|
//
|
|
// these operators will actually be inserted into the token
|
|
// stream.
|
|
//
|
|
OP_MIN, OP_MAX, OP_ADD, OP_SUB, OP_MULT,
|
|
OP_DIV, OP_MOD, OP_MAX_REPEAT, OP_HALT,
|
|
|
|
//
|
|
// these operators are used only in the temporary stack
|
|
//
|
|
OP_OPENPAR, OP_CLOSEPAR, OP_NEG,
|
|
|
|
//
|
|
// these operators are processed immediately by the
|
|
// token parser and are not stored.
|
|
//
|
|
|
|
OP_COMMA, OP_NULL, OP_LAST
|
|
|
|
}OPERATOR ;
|
|
|
|
|
|
//
|
|
// TOKENSTREAM
|
|
// This contains the token stream (operands and operators) for the parameter.
|
|
//
|
|
typedef struct _TOKENSTREAM{
|
|
DWORD dwValue; // Integer for Standard variable
|
|
OPERATOR eType; // Type of Value or Operator
|
|
} TOKENSTREAM, *PTOKENSTREAM;
|
|
// assign this struct the type 'tstr'
|
|
|
|
//
|
|
//FONTSUBSTITUTION
|
|
//Font substitution Table. This structure is same as that defined by the parser.
|
|
//
|
|
|
|
typedef struct _TTFONTSUBTABLE
|
|
{
|
|
ARRAYREF arTTFontName ; //True Type Font name to be substituted.
|
|
ARRAYREF arDevFontName ; // Device Font name of the Font to be used.
|
|
DWORD dwRcTTFontNameID ; //
|
|
DWORD dwRcDevFontNameID ; //
|
|
} TTFONTSUBTABLE, *PTTFONTSUBTABLE ;
|
|
// tag 'ttft'
|
|
|
|
|
|
// ---- List Values Section ---- //
|
|
|
|
|
|
/* this defines the nodes used to implement a singly-linked
|
|
list of DWORD items. Some values are stored in Lists. */
|
|
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwData ;
|
|
DWORD dwNextItem ; // index of next listnode
|
|
} LISTNODE, * PLISTNODE ;
|
|
// assign this struct the type 'lst'
|
|
|
|
// ---- End of List Values Section ---- //
|
|
|
|
// ---- Special default values used in snapshot ---- //
|
|
|
|
#define NO_LIMIT_NUM 0xffffffff
|
|
/// #define NO_RC_CTT_ID 0xffffffff set to zero if none supplied.
|
|
#define WILDCARD_VALUE (0x80000000)
|
|
// if '*' appears in place of an integer, it is assigned this value.
|
|
|
|
|
|
|
|
// ---- End of Peterwo's Restricted Area ---- //
|
|
|
|
|
|
//
|
|
// STANDARD VARIABLE
|
|
// The following is an enumeration of the standard variable as defined in the GPD,
|
|
// the TOKEN STREAM struct will contain either the actual parameter value or an index
|
|
// to this table. The Control Module will keep a table of this in the PDEVICE,
|
|
// the parser will use this enumeration table to initialize the dwValue of TOKENSTREAM
|
|
//
|
|
|
|
typedef enum _STDVARIABLE{
|
|
|
|
SV_NUMDATABYTES, // "NumOfDataBytes"
|
|
SV_WIDTHINBYTES, // "RasterDataWidthInBytes"
|
|
SV_HEIGHTINPIXELS, // "RasterDataHeightInPixels"
|
|
SV_COPIES, // "NumOfCopies"
|
|
SV_PRINTDIRECTION, // "PrintDirInCCDegrees"
|
|
SV_DESTX, // "DestX"
|
|
SV_DESTY, // "DestY"
|
|
SV_DESTXREL, // "DestXRel"
|
|
SV_DESTYREL, // "DestYRel"
|
|
SV_LINEFEEDSPACING, // "LinefeedSpacing"
|
|
SV_RECTXSIZE, // "RectXSize"
|
|
SV_RECTYSIZE, // "RectYSize"
|
|
SV_GRAYPERCENT, // "GrayPercentage"
|
|
SV_NEXTFONTID, // "NextFontID"
|
|
SV_NEXTGLYPH, // "NextGlyph"
|
|
SV_PHYSPAPERLENGTH, // "PhysPaperLength"
|
|
SV_PHYSPAPERWIDTH, // "PhysPaperWidth"
|
|
SV_FONTHEIGHT, // "FontHeight"
|
|
SV_FONTWIDTH, // "FontWidth"
|
|
SV_FONTMAXWIDTH, // "FontMaxWidth"
|
|
SV_FONTBOLD, // "FontBold"
|
|
SV_FONTITALIC, // "FontItalic"
|
|
SV_FONTUNDERLINE, // "FontUnderline"
|
|
SV_FONTSTRIKETHRU, // "FontStrikeThru"
|
|
SV_CURRENTFONTID, // "CurrentFontID"
|
|
SV_TEXTYRES, // "TextYRes"
|
|
SV_TEXTXRES, // "TextXRes"
|
|
|
|
SV_GRAPHICSYRES, // "GraphicsYRes"
|
|
SV_GRAPHICSXRES, // "GraphicsXRes"
|
|
|
|
SV_ROP3, // "Rop3"
|
|
SV_REDVALUE, // "RedValue"
|
|
SV_GREENVALUE, // "GreenValue"
|
|
SV_BLUEVALUE, // "BlueValue"
|
|
SV_PALETTEINDEXTOPROGRAM, // "PaletteIndexToProgram"
|
|
SV_CURRENTPALETTEINDEX, // "CurrentPaletteIndex"
|
|
SV_PATTERNBRUSH_TYPE, // "PatternBrushType"
|
|
SV_PATTERNBRUSH_ID, // "PatternBrushID"
|
|
SV_PATTERNBRUSH_SIZE, // "PatternBrushSize"
|
|
SV_CURSORORIGINX, // "CursorOriginX"
|
|
SV_CURSORORIGINY, // "CursorOriginY"
|
|
// this is in MasterUnits and in the coordinates of the currently selected orientation.
|
|
// this value is defined as ImageableOrigin - CursorOrigin
|
|
SV_PAGENUMBER, // "PageNumber"
|
|
// this value tracks number of times DrvStartBand has been called since
|
|
// StartDoc.
|
|
|
|
//
|
|
// Put new enum above SV_MAX
|
|
//
|
|
SV_MAX
|
|
|
|
}STDVARIABLE;
|
|
|
|
//
|
|
// GENERAL PRINTING COMMAND
|
|
// General printing commands contains such commands as
|
|
// cusor control, color, and overlay etc.
|
|
// The following is the enumeration of general printing commands. The list
|
|
// of commands are in GPDDRIVERINFO Cmds array, this list is accessed by
|
|
// the SEQUENCE struct.
|
|
//
|
|
|
|
|
|
typedef enum CMDINDEX
|
|
{ // unidrv index for commands
|
|
|
|
|
|
// Printer Configuration
|
|
FIRST_CONFIG_CMD,
|
|
CMD_STARTJOB = FIRST_CONFIG_CMD, // "CmdStartJob"
|
|
CMD_STARTDOC, // "CmdStartDoc"
|
|
CMD_STARTPAGE, // "CmdStartPage"
|
|
CMD_ENDPAGE, // "CmdEndPage"
|
|
CMD_ENDDOC, // "CmdEndDoc"
|
|
CMD_ENDJOB, // "CmdEndJob"
|
|
CMD_COPIES, // "CmdCopies"
|
|
CMD_SLEEPTIMEOUT, // "CmdSleepTimeOut"
|
|
LAST_CONFIG_CMD, // Larger than any Config Command value.
|
|
|
|
//
|
|
// GENERAL
|
|
//
|
|
|
|
//
|
|
// CURSOR CONTROL
|
|
//
|
|
|
|
CMD_XMOVEABSOLUTE, // "CmdXMoveAbsolute"
|
|
CMD_XMOVERELLEFT, // "CmdXMoveRelLeft"
|
|
CMD_XMOVERELRIGHT, // "CmdXMoveRelRight"
|
|
CMD_YMOVEABSOLUTE, // "CmdYMoveAbsolute"
|
|
CMD_YMOVERELUP, // "CmdYMoveRelUp"
|
|
CMD_YMOVERELDOWN, // "CmdYMoveRelDown"
|
|
CMD_SETSIMPLEROTATION, // "CmdSetSimpleRotation"
|
|
CMD_SETANYROTATION, // "CmdSetAnyRotation"
|
|
CMD_UNIDIRECTIONON, // "CmdUniDirectionOn"
|
|
CMD_UNIDIRECTIONOFF, // "CmdUniDirectionOff"
|
|
CMD_SETLINESPACING, // "CmdSetLineSpacing"
|
|
CMD_PUSHCURSOR, // "CmdPushCursor"
|
|
CMD_POPCURSOR, // "CmdPopCursor"
|
|
CMD_BACKSPACE, // "CmdBackSpace"
|
|
CMD_FORMFEED, // "CmdFF"
|
|
CMD_CARRIAGERETURN, // "CmdCR"
|
|
CMD_LINEFEED, // "CmdLF"
|
|
|
|
//
|
|
// COLOR
|
|
//
|
|
|
|
CMD_SELECTBLACKCOLOR, // "CmdSelectBlackColor"
|
|
CMD_SELECTREDCOLOR, // "CmdSelectRedColor"
|
|
CMD_SELECTGREENCOLOR, // "CmdSelectGreenColor"
|
|
CMD_SELECTYELLOWCOLOR, // "CmdSelectYellowColor"
|
|
CMD_SELECTBLUECOLOR, // "CmdSelectBlueColor"
|
|
CMD_SELECTMAGENTACOLOR, // "CmdSelectMagentaColor"
|
|
CMD_SELECTCYANCOLOR, // "CmdSelectCyanColor"
|
|
CMD_SELECTWHITECOLOR, // "CmdSelectWhiteColor"
|
|
CMD_BEGINPALETTEDEF, // "CmdBeginPaletteDef"
|
|
CMD_ENDPALETTEDEF, // "CmdEndPaletteDef"
|
|
CMD_DEFINEPALETTEENTRY, // "CmdDefinePaletteEntry"
|
|
CMD_BEGINPALETTEREDEF, // "CmdBeginPaletteReDef"
|
|
CMD_ENDPALETTEREDEF, // "CmdEndPaletteReDef"
|
|
CMD_REDEFINEPALETTEENTRY, // "CmdReDefinePaletteEntry"
|
|
CMD_SELECTPALETTEENTRY, // "CmdSelectPaletteEntry"
|
|
CMD_PUSHPALETTE, // "CmdPushPalette"
|
|
CMD_POPPALETTE, // "CmdPopPalette"
|
|
|
|
//
|
|
// DATACOMPRESSION
|
|
//
|
|
|
|
CMD_ENABLETIFF4, // "CmdEnableTIFF4"
|
|
CMD_ENABLEDRC, // "CmdEnableDRC"
|
|
CMD_ENABLEFERLE, // CmdEnableFE_RLE
|
|
CMD_ENABLEOEMCOMP, // "CmdEnableOEMComp"
|
|
CMD_DISABLECOMPRESSION, // "CmdDisableCompression"
|
|
|
|
//
|
|
// Raster Data Emission
|
|
//
|
|
|
|
CMD_BEGINRASTER, // "CmdBeginRaster"
|
|
CMD_ENDRASTER, // "CmdEndRaster"
|
|
CMD_SETDESTBMPWIDTH, // "CmdSetDestBmpWidth"
|
|
CMD_SETDESTBMPHEIGHT, // "CmdSetDestBmpHeight"
|
|
CMD_SETSRCBMPWIDTH, // "CmdSetSrcBmpWidth"
|
|
CMD_SETSRCBMPHEIGHT, // "CmdSetSrcBmpHeight"
|
|
CMD_SENDBLOCKDATA, // "CmdSendBlockData"
|
|
CMD_ENDBLOCKDATA, // "CmdEndBlockData"
|
|
CMD_SENDREDDATA, // "CmdSendRedData"
|
|
CMD_SENDGREENDATA, // "CmdSendGreenData"
|
|
CMD_SENDBLUEDATA, // "CmdSendBlueData"
|
|
CMD_SENDCYANDATA, // "CmdSendCyanData"
|
|
CMD_SENDMAGENTADATA, // "CmdSendMagentaData"
|
|
CMD_SENDYELLOWDATA, // "CmdSendYellowData"
|
|
CMD_SENDBLACKDATA, // "CmdSendBlackData"
|
|
|
|
//
|
|
// Font Downloading
|
|
//
|
|
|
|
CMD_SETFONTID, // "CmdSetFontID"
|
|
CMD_SELECTFONTID, // "CmdSelectFontID"
|
|
CMD_SETCHARCODE, // "CmdSetCharCode"
|
|
|
|
CMD_DESELECTFONTID, // "CmdDeselectFontID"
|
|
CMD_SELECTFONTHEIGHT, // "CmdSelectFontHeight"
|
|
CMD_SELECTFONTWIDTH, // "CmdSelectFontWidth"
|
|
|
|
CMD_DELETEFONT, // "CmdDeleteFont"
|
|
|
|
//
|
|
// Font Simulation
|
|
//
|
|
|
|
CMD_SETFONTSIM, // "CmdSetFontSim"
|
|
CMD_BOLDON, // "CmdBoldOn"
|
|
CMD_BOLDOFF, // "CmdBoldOff"
|
|
CMD_ITALICON, // "CmdItalicOn"
|
|
CMD_ITALICOFF, // "CmdItalicOff"
|
|
CMD_UNDERLINEON, // "CmdUnderlineOn"
|
|
CMD_UNDERLINEOFF, // "CmdUnderlineOff"
|
|
CMD_STRIKETHRUON, // "CmdStrikeThruOn"
|
|
CMD_STRIKETHRUOFF, // "CmdStrikeThruOff"
|
|
CMD_WHITETEXTON, // "CmdWhiteTextOn"
|
|
CMD_WHITETEXTOFF, // "CmdWhiteTextOff"
|
|
CMD_SELECTSINGLEBYTEMODE, // "CmdSelectSingleByteMode"
|
|
CMD_SELECTDOUBLEBYTEMODE, // "CmdSelectDoubleByteMode"
|
|
CMD_VERTICALPRINTINGON, // "CmdVerticalPrintingOn"
|
|
CMD_VERTICALPRINTINGOFF, // "CmdVerticalPrintingOff"
|
|
CMD_CLEARALLFONTATTRIBS, // "CmdClearAllFontAttribs"
|
|
|
|
//
|
|
// Print Object Specific Halftone Alogorithms (Used mainly for color devices)
|
|
//
|
|
CMD_SETTEXTHTALGO, // "CmdSetTextHTAlgo"
|
|
CMD_SETGRAPHICSHTALGO, // "CmdSetGraphicsHTAlgo"
|
|
CMD_SETPHOTOHTALGO, // "CmdSetPhotoHTAlgo"
|
|
|
|
//
|
|
// Vector Printing
|
|
//
|
|
|
|
CMD_FIRST_RULES, // existence of the RULES commands
|
|
// imples RULES_ABLE
|
|
CMD_SETRECTWIDTH = CMD_FIRST_RULES, // "CmdSetRectWidth"
|
|
CMD_SETRECTHEIGHT, // "CmdSetRectHeight"
|
|
CMD_SETRECTSIZE, // "CmdSetRectSize"
|
|
CMD_RECTGRAYFILL, // "CmdRectGrayFill"
|
|
CMD_RECTWHITEFILL, // "CmdRectWhiteFill"
|
|
CMD_RECTBLACKFILL, // "CmdRectBlackFill"
|
|
CMD_LAST_RULES = CMD_RECTBLACKFILL,
|
|
|
|
//
|
|
// Brush Selection
|
|
//
|
|
|
|
CMD_DOWNLOAD_PATTERN, // "CmdDownloadPattern"
|
|
CMD_SELECT_PATTERN, // "CmdSelectPattern"
|
|
CMD_SELECT_WHITEBRUSH, // "CmdSelectWhiteBrush"
|
|
CMD_SELECT_BLACKBRUSH, // "CmdSelectBlackBrush"
|
|
|
|
//
|
|
// Put new commands above CMD_MAX
|
|
//
|
|
|
|
CMD_MAX
|
|
|
|
} CMDINDEX;
|
|
|
|
|
|
//
|
|
// Rendering Information for Predefined Features
|
|
//
|
|
|
|
//
|
|
// GID_RESOLUTION
|
|
//
|
|
|
|
typedef struct _RESOLUTIONEX {
|
|
POINT ptGrxDPI; // *DPI
|
|
POINT ptTextDPI; // *TextDPI
|
|
DWORD dwMinStripBlankPixels ; // *MinStripBlankPixels
|
|
DWORD dwPinsPerPhysPass; // *PinsPerPhysPass
|
|
DWORD dwPinsPerLogPass; // *PinsPerLogPass
|
|
DWORD dwSpotDiameter; // *SpotDiameter
|
|
BOOL bRequireUniDir; // *RequireUniDir?
|
|
DWORD dwRedDeviceGamma ; // "RedDeviceGamma"
|
|
DWORD dwGreenDeviceGamma ; // "GreenDeviceGamma"
|
|
DWORD dwBlueDeviceGamma ; // "BlueDeviceGamma"
|
|
|
|
} RESOLUTIONEX, * PRESOLUTIONEX;
|
|
|
|
//
|
|
// GID_COLORMODE
|
|
//
|
|
|
|
typedef struct _COLORMODEEX {
|
|
BOOL bColor; // *Color?
|
|
DWORD dwPrinterNumOfPlanes; // *DevNumOfPlanes
|
|
DWORD dwPrinterBPP; // *DevBPP
|
|
LISTINDEX liColorPlaneOrder; // *ColorPlaneOrder
|
|
DWORD dwDrvBPP; // *DrvBPP
|
|
DWORD dwIPCallbackID ; // *IPCallbackID
|
|
RASTERMODE dwRasterMode ; // *RasterMode
|
|
DWORD dwPaletteSize ; // *PaletteSize
|
|
BOOL bPaletteProgrammable; // *PaletteProgrammable?
|
|
|
|
} COLORMODEEX, *PCOLORMODEEX;
|
|
|
|
//
|
|
// GID_PAGESIZE
|
|
//
|
|
|
|
typedef struct _PAGESIZEEX {
|
|
SIZEL szImageArea; // *PrintableArea, for non-CUSTOMSIZE options
|
|
POINT ptImageOrigin; // *PrintableOrigin, for non-CUSTOMSIZE options
|
|
POINT ptPrinterCursorOrig; // *CursorOrigin
|
|
POINT ptMinSize; // *MinSize, for CUSTOMSIZE option only
|
|
POINT ptMaxSize; // *MaxSize, for CUSTOMSIZE option only
|
|
DWORD dwTopMargin; // *TopMargin, for CUSTOMSIZE option only
|
|
DWORD dwBottomMargin; // *BottomMargin, for CUSTOMSIZE option only
|
|
DWORD dwMaxPrintableWidth; // *MaxPrintableWidth, for CUSTOMSIZE option only
|
|
DWORD dwMinLeftMargin; // *MinLeftMargin, for CUSTOMSIZE option only
|
|
BOOL bCenterPrintArea; // *CenterPrintable?, for CUSTOMSIZE option only
|
|
BOOL bRotateSize; // *RotateSize?
|
|
DWORD dwPortRotationAngle; // *PortRotationAngle
|
|
INVOCATION strCustCursorOriginX ; // "CustCursorOriginX"
|
|
INVOCATION strCustCursorOriginY ; // "CustCursorOriginY"
|
|
INVOCATION strCustPrintableOriginX ; // "CustPrintableOriginX"
|
|
INVOCATION strCustPrintableOriginY ; // "CustPrintableOriginY"
|
|
INVOCATION strCustPrintableSizeX; // "CustPrintableSizeX"
|
|
INVOCATION strCustPrintableSizeY; // "CustPrintableSizeY"
|
|
|
|
|
|
} PAGESIZEEX, *PPAGESIZEEX;
|
|
|
|
//
|
|
// define standard PageProtect options (for PAGEPROTECT.dwPageProtectID)
|
|
//
|
|
typedef enum _PAGEPRO {
|
|
PAGEPRO_ON,
|
|
PAGEPRO_OFF
|
|
} PAGEPRO;
|
|
|
|
//
|
|
// define possible values for *FeatureType keyword
|
|
//
|
|
typedef enum _FEATURETYPE {
|
|
FT_DOCPROPERTY,
|
|
FT_JOBPROPERTY,
|
|
FT_PRINTERPROPERTY
|
|
} FEATURETYPE;
|
|
|
|
//
|
|
// define possible values for *PromptTime keyword
|
|
//
|
|
typedef enum _PROMPTTIME {
|
|
PROMPT_UISETUP,
|
|
PROMPT_PRTSTARTDOC
|
|
} PROMPTTIME;
|
|
|
|
//
|
|
// define color plane id's, used by *ColorPlaneOrder keyword
|
|
//
|
|
typedef enum _COLORPLANE {
|
|
COLOR_YELLOW,
|
|
COLOR_MAGENTA,
|
|
COLOR_CYAN,
|
|
COLOR_BLACK,
|
|
COLOR_RED,
|
|
COLOR_GREEN,
|
|
COLOR_BLUE
|
|
} COLORPLANE;
|
|
|
|
//
|
|
// define values for *BadCursorMoveInGrxMode keyword
|
|
//
|
|
typedef enum _BADCURSORMOVEINGRXMODE {
|
|
NOCM_X_PORTRAIT,
|
|
NOCM_X_LANDSCAPE,
|
|
NOCM_Y_PORTRAIT,
|
|
NOCM_Y_LANDSCAPE
|
|
} BADCURSORMOVEINGRXMODE;
|
|
|
|
//
|
|
// define values for *YMoveAttributes keyword
|
|
//
|
|
typedef enum _YMOVEATTRIBUTE {
|
|
YMOVE_FAVOR_LINEFEEDSPACING,
|
|
YMOVE_SENDCR_FIRST,
|
|
} YMOVEATTRIBUTE;
|
|
|
|
//
|
|
// define values for *PaletteScope keyword
|
|
//
|
|
typedef enum _PALETTESCOPE {
|
|
PALS_FOR_RASTER,
|
|
PALS_FOR_TEXT,
|
|
PALS_FOR_VECTOR
|
|
} PALETTESCOPE;
|
|
|
|
//
|
|
// define values for *StripBlanks keyword
|
|
//
|
|
typedef enum _STRIPBLANKS {
|
|
SB_LEADING,
|
|
SB_ENCLOSED,
|
|
SB_TRAILING
|
|
} STRIPBLANKS;
|
|
|
|
//
|
|
// define values for *TextCaps
|
|
//
|
|
typedef enum _TEXTCAP {
|
|
TEXTCAPS_OP_CHARACTER,
|
|
TEXTCAPS_OP_STROKE,
|
|
TEXTCAPS_CP_STROKE,
|
|
TEXTCAPS_CR_90,
|
|
TEXTCAPS_CR_ANY,
|
|
TEXTCAPS_SF_X_YINDEP,
|
|
TEXTCAPS_SA_DOUBLE,
|
|
TEXTCAPS_SA_INTEGER,
|
|
TEXTCAPS_SA_CONTIN,
|
|
TEXTCAPS_EA_DOUBLE,
|
|
TEXTCAPS_IA_ABLE,
|
|
TEXTCAPS_UA_ABLE,
|
|
TEXTCAPS_SO_ABLE,
|
|
TEXTCAPS_RA_ABLE,
|
|
TEXTCAPS_VA_ABLE
|
|
} TEXTCAP;
|
|
|
|
//
|
|
// define values for *MemoryUsage
|
|
//
|
|
typedef enum _MEMORYUSAGE {
|
|
MEMORY_FONT,
|
|
MEMORY_RASTER,
|
|
MEMORY_VECTOR
|
|
|
|
} MEMORYUSAGE;
|
|
|
|
//
|
|
// define values for *ReselectFont
|
|
//
|
|
typedef enum _RESELECTFONT {
|
|
RESELECTFONT_AFTER_GRXDATA,
|
|
RESELECTFONT_AFTER_XMOVE,
|
|
RESELECTFONT_AFTER_FF
|
|
|
|
} RESELECTFONT;
|
|
|
|
|
|
// ---- macrodefinitions to access various data structures: ---- //
|
|
|
|
|
|
// this macro returns a pointer to the COMMAND structure
|
|
// corresponding to the specified Unidrv CommandID.
|
|
#ifndef PERFTEST
|
|
|
|
#define COMMANDPTR(pGPDDrvInfo , UniCmdID ) \
|
|
((((PDWORD)((PBYTE)(pGPDDrvInfo)->pInfoHeader + \
|
|
(pGPDDrvInfo)->DataType[DT_COMMANDTABLE].loOffset)) \
|
|
[(UniCmdID)] == UNUSED_ITEM ) ? NULL : \
|
|
(PCOMMAND)((pGPDDrvInfo)->pubResourceData + \
|
|
(pGPDDrvInfo)->DataType[DT_COMMANDARRAY].loOffset) \
|
|
+ ((PDWORD)((PBYTE)(pGPDDrvInfo)->pInfoHeader + \
|
|
(pGPDDrvInfo)->DataType[DT_COMMANDTABLE].loOffset)) \
|
|
[(UniCmdID)])
|
|
|
|
#else //PERFTEST
|
|
|
|
#define COMMANDPTR CommandPtr
|
|
|
|
PCOMMAND
|
|
CommandPtr(
|
|
IN PGPDDRIVERINFO pGPDDrvInfo,
|
|
IN DWORD UniCmdID
|
|
);
|
|
|
|
#endif //PERFTEST
|
|
|
|
// this macro returns a pointer to the COMMAND structure
|
|
// corresponding to specified index(to the COMMAND ARRAY)
|
|
|
|
#define INDEXTOCOMMANDPTR(pGPDDrvInfo , CmdIndex ) \
|
|
((CmdIndex == UNUSED_ITEM ) ? NULL : \
|
|
(PCOMMAND)((pGPDDrvInfo)->pubResourceData + \
|
|
(pGPDDrvInfo)->DataType[DT_COMMANDARRAY].loOffset) \
|
|
+ CmdIndex)
|
|
|
|
// this macro returns a pointer to the specified PARAMETER structure
|
|
// within the parameter array
|
|
|
|
#define PARAMETERPTR(pGPDDrvInfo , dwIndex ) \
|
|
(PPARAMETER)((pGPDDrvInfo)->pubResourceData + \
|
|
(pGPDDrvInfo)->DataType[DT_PARAMETERS].loOffset) \
|
|
+ (dwIndex)
|
|
|
|
|
|
// this macro returns a pointer to the start of the specified
|
|
// TOKENSTREAM structure, dwIndex comes from pParameter->Tokens.loOffset
|
|
|
|
#define TOKENSTREAMPTR(pGPDDrvInfo , dwIndex ) \
|
|
(PTOKENSTREAM)((pGPDDrvInfo)->pubResourceData + \
|
|
(pGPDDrvInfo)->DataType[DT_TOKENSTREAM].loOffset) \
|
|
+ (dwIndex)
|
|
|
|
// This macro returns a pointer to the start of the FontCart Array.
|
|
// FONTCART is ARRAYREF so all the elements are contiguous.
|
|
|
|
#define GETFONTCARTARRAY(pGPDDrvInfo) \
|
|
(PFONTCART)((pGPDDrvInfo)->pubResourceData + \
|
|
(pGPDDrvInfo)->DataType[DT_FONTSCART].loOffset)
|
|
|
|
|
|
// This macro returns a pointer to the start of the Font Substitution table.
|
|
// Substitution table is ARRAYREF so all the elements are contiguous.
|
|
|
|
#define GETTTFONTSUBTABLE(pGPDDrvInfo) \
|
|
(PTTFONTSUBTABLE)((pGPDDrvInfo)->pubResourceData + \
|
|
(pGPDDrvInfo)->DataType[DT_FONTSUBST].loOffset)
|
|
|
|
// This macro returns the string pointer. The string is null terminated.
|
|
// Use the dwcount member of ARRAYEF to verify the correct size.
|
|
#define GETSTRING(pGPDDrvInfo, arfString) \
|
|
(WCHAR *)((pGPDDrvInfo)->pubResourceData + (arfString).loOffset )
|
|
|
|
// this macro returns a pointer to the start of the specified
|
|
// LISTNODE structure, for example, dwIndex may come from
|
|
// pParameter->dwStandardVarsList
|
|
|
|
#define LISTNODEPTR(pGPDDrvInfo , dwIndex ) \
|
|
((dwIndex == END_OF_LIST ) ? NULL : \
|
|
(PLISTNODE)((pGPDDrvInfo)->pubResourceData + \
|
|
(pGPDDrvInfo)->DataType[DT_LISTNODE].loOffset) \
|
|
+ (dwIndex))
|
|
|
|
|
|
|
|
// this macro returns a pointer to the start of the specified
|
|
// LOCALLISTNODE structure, for example, dwIndex may come from
|
|
// pParameter->dwStandardVarsList. Returns NULL if
|
|
// (dwIndex == UNUSED_ITEM)
|
|
|
|
#define LOCALLISTNODEPTR(pGPDDrvInfo , dwIndex ) \
|
|
((dwIndex == UNUSED_ITEM ) ? NULL : \
|
|
(PLISTNODE)((PBYTE)(pGPDDrvInfo)->pInfoHeader + \
|
|
(pGPDDrvInfo)->DataType[DT_LOCALLISTNODE].loOffset) \
|
|
+ (dwIndex))
|
|
|
|
|
|
// ---- end macrodefinitions section ----- //
|
|
|
|
|
|
// ----- GPD parser only helper function ----- //
|
|
DWORD
|
|
UniMapToDeviceOptIndex(
|
|
IN PINFOHEADER pInfoHdr ,
|
|
IN DWORD dwFeatureID,
|
|
IN LONG lParam1,
|
|
IN LONG lParam2,
|
|
OUT PDWORD pdwOptionIndexes, // used only for GID_PAGESIZE
|
|
IN PDWORD pdwPaperID // optional paperID
|
|
) ;
|
|
|
|
|
|
|
|
#endif // !_GPD_H_
|
|
|
|
|