|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
driverui.h
Abstract:
Header file for driverui.c
Environment:
Win32 subsystem, DriverUI module, user mode
Revision History:
02/09/97 -davidx- Consistent handling of common printer info (COMMONINFO)
02/04/97 -davidx- Reorganize driver UI to separate ps and uni DLLs.
07/17/96 -amandan- Created it.
--*/
#ifndef _DRIVERUI_H_
#define _DRIVERUI_H_
//
// Global critical section used when accessing shared data
//
// extern CRITICAL_SECTION gCriticalSection;
// #define ENTER_CRITICAL_SECTION() EnterCriticalSection(&gCriticalSection)
// #define LEAVE_CRITICAL_SECTION() LeaveCriticalSection(&gCriticalSection)
//
// Allocate zero-filled memory from a heap
//
#define HEAPALLOC(hheap,size) HeapAlloc(hheap, HEAP_ZERO_MEMORY, size)
#define HEAPREALLOC(hheap, pOrig, size) HeapReAlloc(hheap, HEAP_ZERO_MEMORY, pOrig, size)
//
// Various hardcoded limits
//
#define CCHBINNAME 24 // max length for bin names
#define CCHPAPERNAME 64 // max length for form names
#define CCHMEDIATYPENAME 64 // max length for mediatype names
#define CCHLANGNAME 32 // max length for language strings
#define MIN_OPTIONS_ALLOWED 2
#define UNUSED_PARAM 0xFFFFFFFF
//
// PostScript and UniDriver driver private devmode
//
#ifdef PSCRIPT
#define PDRIVEREXTRA PPSDRVEXTRA
#endif
#ifdef UNIDRV
#define PDRIVEREXTRA PUNIDRVEXTRA
typedef struct _WINRESDATA WINRESDATA; #endif
#define PGetDevmodeOptionsArray(pdm) \
(((PDRIVEREXTRA) GET_DRIVER_PRIVATE_DEVMODE(pdm))->aOptions)
#define GETUSERDATASIZE(UserData) \
( ((PUSERDATA)(UserData))->dwSize )
#define GETUSERDATAITEM(UserData) \
( ((PUSERDATA)(UserData))->dwItemID )
#define GETUSERDATAKEYWORDNAME(UserData) \
( ((PUSERDATA)(UserData))->pKeyWordName )
#define SETUSERDATAID(pOptItem, dwID) \
( ((PUSERDATA)((pOptItem)->UserData))->dwItemID = dwID)
#define SETUSERDATA_SIZE(pOptItem, dwSize) \
( ((PUSERDATA)((pOptItem)->UserData))->dwSize = dwSize)
#define SETUSERDATA_KEYWORDNAME(ci, pOptItem, pFeature) \
((PUSERDATA)((pOptItem)->UserData))->pKeyWordName = \ OFFSET_TO_POINTER(ci.pUIInfo->pubResourceData, pFeature->loKeywordName)
//
// Common data structure which is needed whether UI comes up or not
//
typedef struct _COMMONINFO {
OEMUIOBJ oemuiobj; // support info for OEM plugins
PVOID pvStartSign; // signature
PTSTR pPrinterName; // current printer name
HANDLE hPrinter; // handle to current printer
DWORD dwFlags; // miscellaneous flag bits
PDRIVER_INFO_3 pDriverInfo3; // driver info level 3
PRAWBINARYDATA pRawData; // raw printer description data
PINFOHEADER pInfoHeader; // current printer description data instance
PUIINFO pUIInfo; // UIINFO structure inside above instance
POEM_PLUGINS pOemPlugins; // OEM plugin information
PDEVMODE pdm; // devmode information
PDRIVEREXTRA pdmPrivate; // driver private devmode fields
PPRINTERDATA pPrinterData; // printer-sticky property data
POPTSELECT pCombinedOptions; // combined options array
PFORM_INFO_1 pSplForms; // spooler forms
DWORD dwSplForms; // number of spooler forms
HANDLE hHeap; // heap used to display UI
#ifdef UNIDRV
WINRESDATA *pWinResData;
#endif
} COMMONINFO, *PCOMMONINFO;
//
// Flag constants for COMMONINFO.dwFlags field
//
#define FLAG_OPENPRINTER_NORMAL 0x0001
#define FLAG_OPEN_CONDITIONAL 0x0002
#define FLAG_OPENPRINTER_ADMIN 0x0004
#define FLAG_INIT_PRINTER 0x0008
#define FLAG_ALLOCATE_UIDATA 0x0010
#define FLAG_PROCESS_INIFILE 0x0020
#define FLAG_REFRESH_PARSED_DATA 0x0040
#define FLAG_WITHIN_PLUGINCALL 0x0080
#define FLAG_APPLYNOW_CALLED 0x0100
#define FLAG_PLUGIN_CHANGED_OPTITEM 0x0200
#define FLAG_USER_CHANGED_FREEMEM 0x0400
#define FLAG_PROPSHEET_SESSION 0x0800
#define FLAG_UPGRADE_PRINTER 0x1000
#define IS_WITHIN_PROPSHEET_SESSION(pci) ((pci)->dwFlags & FLAG_PROPSHEET_SESSION)
//
// Special entry point for getting around EnumForm bug in spooler
//
DWORD DrvSplDeviceCaps( HANDLE hPrinter, PWSTR pDeviceName, WORD wCapability, PVOID pOutput, DWORD dwOutputSize, PDEVMODE pdmSrc );
//
// Load basic information needed by the driver UI
//
PCOMMONINFO PLoadCommonInfo( IN HANDLE hPrinter, IN PTSTR ptstrPrinterName, IN DWORD dwFlags );
//
// Release common information used by the driver UI
//
VOID VFreeCommonInfo( IN PCOMMONINFO pci );
//
// Populate the devmode fields in the COMMONINFO structure
//
BOOL BFillCommonInfoDevmode( IN OUT PCOMMONINFO pci, IN PDEVMODE pdmPrinter, IN PDEVMODE pdmInput );
//
// Populate the printer-sticky property data field
//
BOOL BFillCommonInfoPrinterData( IN OUT PCOMMONINFO pci );
//
// Combined document-sticky feature selections and printer-sticky
// feature selection into a single options array
//
BOOL BCombineCommonInfoOptionsArray( IN OUT PCOMMONINFO pci );
//
// Get an updated printer description data instance
// using the combined options array
//
BOOL BUpdateUIInfo( IN OUT PCOMMONINFO pci );
//
// Fix up combined options array with information from public devmode fields
//
VOID VFixOptionsArrayWithDevmode( IN OUT PCOMMONINFO pci );
//
// Convert option array setting into public devmode fields
//
VOID VOptionsToDevmodeFields( IN OUT PCOMMONINFO pci, IN BOOL bUpdateFormFields );
#ifndef WINNT_40
//
// Notify DS of update
//
VOID VNotifyDSOfUpdate( IN HANDLE hPrinter ); #endif
//
// Get a read-only copy of a display name:
// 1) if the display name is in the binary printer description data,
// then we simply return a pointer to that data.
// 2) otherwise, the display name is in the resource DLL.
// we allocate memory out of the driver's heap and
// load the string.
//
// Caller should NOT free the returned pointer. The memory
// will go away when the binary printer description data is unloaded
// or when the driver's heap is destroyed.
//
// Since PSCRIPT currently doesn't have any resource DLL,
// we define this as a macro to save a function call.
//
#ifdef PSCRIPT
#define PGetReadOnlyDisplayName(pci, loOffset) \
OFFSET_TO_POINTER((pci)->pUIInfo->pubResourceData, (loOffset))
#else
PWSTR PGetReadOnlyDisplayName( PCOMMONINFO pci, PTRREF loOffset );
#endif
//
// This macro is defined as a convenience to get a read-only
// copy of the display name for an option.
//
#define GET_OPTION_DISPLAY_NAME(pci, pOption) \
PGetReadOnlyDisplayName(pci, ((POPTION) (pOption))->loDisplayName)
//
// This function is similar to PGetReadOnlyDisplayName
// but the caller must provide the buffer for loading the string.
//
BOOL BLoadDisplayNameString( PCOMMONINFO pci, PTRREF loOffset, PWSTR pwstrBuf, INT iMaxChars );
BOOL BLoadPageSizeNameString( PCOMMONINFO pci, PTRREF loOffset, PWSTR pwstrBuf, INT iMaxChars, INT iStdID );
//
// Convenience macro for loading the display name of an option
// into a caller-provided buffer.
//
#define LOAD_STRING_OPTION_NAME(pci, pOption, pwch, maxsize) \
BLoadDisplayNameString(pci, ((POPTION) (pOption))->loDisplayName, pwch, maxsize)
#define LOAD_STRING_PAGESIZE_NAME(pci, pPageSize, pwch, maxsize) \
BLoadPageSizeNameString(pci, (pPageSize)->GenericOption.loDisplayName, pwch, maxsize, (pPageSize)->dwPaperSizeID)
//
// Load icon resource from the resource DLL
//
ULONG_PTR HLoadIconFromResourceDLL( PCOMMONINFO pci, DWORD dwIconID );
//
// Data structure which is used only when UI is displayed
// IMPORTANT: The first field must be a COMMONINFO structure.
//
typedef struct _UIDATA {
COMMONINFO ci; INT iMode; HWND hDlg; BOOL bPermission; BOOL bIgnoreConflict; BOOL bEMFSpooling; PFNCOMPROPSHEET pfnComPropSheet; HANDLE hComPropSheet; PCOMPROPSHEETUI pCompstui;
//
// These fields are valid only when a dialog is presented
//
DWORD dwFormNames; PWSTR pFormNames; PWORD pwPapers; PWORD pwPaperFeatures; DWORD dwBinNames; PWSTR pBinNames;
//
// Used for helper functions
//
BOOL abEnabledOptions[MAX_PRINTER_OPTIONS];
//
// Fields for keeping track of various option items
//
DWORD dwDrvOptItem; POPTITEM pDrvOptItem;
DWORD dwFormTrayItem; POPTITEM pFormTrayItems;
DWORD dwTTFontItem; POPTITEM pTTFontItems;
DWORD dwFeatureItem; POPTITEM pFeatureItems; POPTITEM pFeatureHdrItem;
//
// These fields are used for packing option items
//
DWORD dwOptItem; POPTITEM pOptItem; DWORD dwOptType; POPTTYPE pOptType;
//
// UniDriver specific fields
//
#ifdef UNIDRV
//
// Font Cart Table
//
DWORD dwFontCart; POPTITEM pFontCart;
//
// Device halftone setup info
//
PDEVHTINFO pDevHTInfo;
#endif // UNIDRV
DWORD dwHideFlags; PVOID pvEndSign;
} UIDATA, *PUIDATA;
//
// Flag constants for UIDATA.dwHideFlags field
//
#define HIDEFLAG_HIDE_STD_DOCPROP 0x0001
#define HIDEFLAG_HIDE_STD_PRNPROP 0x0002
#define IS_HIDING_STD_UI(pUiData) \
((((pUiData)->iMode == MODE_DOCUMENT_STICKY) && \ ((pUiData)->dwHideFlags & HIDEFLAG_HIDE_STD_DOCPROP)) || \ (((pUiData)->iMode == MODE_PRINTER_STICKY) && \ ((pUiData)->dwHideFlags & HIDEFLAG_HIDE_STD_PRNPROP)))
#define VALIDUIDATA(pUiData) ((pUiData) && \
(pUiData) == (pUiData)->ci.pvStartSign && \ (pUiData) == (pUiData)->pvEndSign)
#define HASPERMISSION(pUiData) ((pUiData)->bPermission)
//
// This function is called by DrvDocumentPropertySheets and
// DrvPrinterPropertySheets. It allocates and initializes
// a UIDATA structure that's used to display property pages.
//
PUIDATA PFillUiData( IN HANDLE hPrinter, IN PTSTR pPrinterName, IN PDEVMODE pdmInput, IN INT iMode );
//
// Dispose of a UIDATA structure -
// Just disposed of the embedded COMMONINFO structure
//
#define VFreeUiData(pUiData) VFreeCommonInfo((PCOMMONINFO) (pUiData))
//
// Data structure used to pass parameters to "Conflicts" dialog
//
typedef struct _DLGPARAM {
PFNCOMPROPSHEET pfnComPropSheet; HANDLE hComPropSheet; PUIDATA pUiData; BOOL bFinal; POPTITEM pOptItem; DWORD dwResult;
} DLGPARAM, *PDLGPARAM;
#define CONFLICT_NONE IDOK
#define CONFLICT_RESOLVE IDC_RESOLVE
#define CONFLICT_CANCEL IDC_CANCEL
#define CONFLICT_IGNORE IDC_IGNORE
//
// Functions used to implement DeviceCapabilities:
// calculate minimum or maximum paper size extent
// get list of supported paper size names, indices, and dimensions
// get list of supported paper bin names and indices
// get list of supported resolutions
//
DWORD DwCalcMinMaxExtent( IN PCOMMONINFO pci, OUT PPOINT pptOutput, IN WORD wCapability );
DWORD DwEnumPaperSizes( IN OUT PCOMMONINFO pci, OUT PWSTR pPaperNames, OUT PWORD pPapers, OUT PPOINT pPaperSizes, IN PWORD pPaperFeatures, IN LONG cchPaperNamesBufSize );
DWORD DwEnumBinNames( IN PCOMMONINFO pci, OUT PWSTR pBinNames );
DWORD DwEnumBins( IN PCOMMONINFO pci, OUT PWORD pBins );
DWORD DwEnumResolutions( IN PCOMMONINFO pci, OUT PLONG pResolutions );
DWORD DwEnumNupOptions( PCOMMONINFO pci, PDWORD pdwOutput );
DWORD DwGetAvailablePrinterMem( IN PCOMMONINFO pci );
DWORD DwEnumMediaReady( IN OUT FORM_TRAY_TABLE pFormTrayTable, OUT PDWORD pdwResultSize );
#ifndef WINNT_40
//
// DC_MEDIATYPENAMES and DC_MEDIATYPES are added in Whistler.
// We need to do following so the driver can also be built with
// Win2K SDK/DDK.
//
#ifndef DC_MEDIATYPENAMES
#define DC_MEDIATYPENAMES 34
#endif
#ifndef DC_MEDIATYPES
#define DC_MEDIATYPES 35
#endif
#endif // !WINNT_40
DWORD DwEnumMediaTypes( IN PCOMMONINFO pci, OUT PTSTR pMediaTypeNames, OUT PDWORD pMediaTypes );
//
// Functions for dealing with forms
//
BOOL BFormSupportedOnPrinter( IN PCOMMONINFO pci, IN PFORM_INFO_1 pFormInfo, OUT PDWORD pdwOptionIndex );
BOOL BPackItemFormTrayTable( IN OUT PUIDATA pUiData );
BOOL BUnpackItemFormTrayTable( IN OUT PUIDATA pUiData );
VOID VSetupFormTrayAssignments( IN PUIDATA pUiData );
DWORD DwFindFormNameIndex( IN PUIDATA pUiData, IN PWSTR pFormName, OUT PBOOL pbSupported );
ULONG_PTR HLoadFormIconResource( PUIDATA pUiData, DWORD dwIndex );
DWORD DwGuessFormIconID( PWSTR pFormName );
//
// Functions prototypes for commonui related items.
//
PCOMPROPSHEETUI PPrepareDataForCommonUI( IN OUT PUIDATA pUiData, IN PDLGPAGE pDlgPage );
BOOL BPackPrinterPropertyItems( IN OUT PUIDATA pUiData );
BOOL BPackDocumentPropertyItems( IN OUT PUIDATA pUiData );
VOID VPackOptItemGroupHeader( IN OUT PUIDATA pUiData, IN DWORD dwTitleId, IN DWORD dwIconId, IN DWORD dwHelpIndex );
BOOL BPackOptItemTemplate( IN OUT PUIDATA pUiData, IN CONST WORD pwItemInfo[], IN DWORD dwSelection, IN PFEATURE pFeature );
#define ITEM_INFO_SIGNATURE 0xCAFE
BOOL BPackUDArrowItemTemplate( IN OUT PUIDATA pUiData, IN CONST WORD pwItemInfo[], IN DWORD dwSelection, IN DWORD dwMaxVal, IN PFEATURE pFeature );
POPTPARAM PFillOutOptType( OUT POPTTYPE pOptType, IN DWORD dwType, IN DWORD dwParams, IN HANDLE hHeap );
PFEATURE PGetFeatureFromItem( IN PUIINFO pUIInfo, IN OUT POPTITEM pOptItem, OUT PDWORD pdwFeatureIndex );
BOOL BPackItemGenericOptions( IN OUT PUIDATA pUiData );
BOOL BPackItemPrinterFeature( IN OUT PUIDATA pUiData, IN PFEATURE pFeature, IN DWORD dwLevel, IN DWORD dwPub, IN ULONG_PTR dwUserData, IN DWORD dwHelpIndex );
DWORD DwCountDisplayableGenericFeature( IN PUIDATA pUiData, BOOL bPrinterSticky );
BOOL BShouldDisplayGenericFeature( IN PFEATURE pFeature, IN BOOL bPrinterSticky );
BOOL BOptItemSelectionsChanged( IN OUT POPTITEM pItems, IN DWORD dwItems );
POPTITEM PFindOptItem( IN PUIDATA pUiData, IN DWORD dwItemId );
BOOL BPackItemFontSubstTable( IN PUIDATA pUiData );
BOOL BUnpackItemFontSubstTable( IN PUIDATA pUiData );
PTSTR PtstrDuplicateStringFromHeap( IN PTSTR ptstrSrc, IN HANDLE hHeap );
VOID VUpdateOptionsArrayWithSelection( IN OUT PUIDATA pUiData, IN POPTITEM pOptItem );
VOID VUnpackDocumentPropertiesItems( IN OUT PUIDATA pUiData, IN OUT POPTITEM pOptItem, IN DWORD dwCound);
BOOL BGetPageOrderFlag( IN PCOMMONINFO pci );
VOID VPropShowConstraints( IN PUIDATA pUiData, IN INT iMode );
INT ICheckConstraintsDlg( IN OUT PUIDATA pUiData, IN OUT POPTITEM pOptItem, IN DWORD dwOptItem, IN BOOL bFinal );
#define CONSTRAINED_FLAG OPTPF_OVERLAY_WARNING_ICON
#define IS_CONSTRAINED(pitem, sel) ((pitem)->pOptType->pOptParam[sel].Flags & CONSTRAINED_FLAG)
//
// This function copy a source devmode to an output devmode buffer.
// It should be called by the driver just before the driver returns
// to the caller of DrvDocumentPropertySheets.
//
BOOL BConvertDevmodeOut( IN PDEVMODE pdmSrc, IN PDEVMODE pdmIn, OUT PDEVMODE pdmOut );
//
// Find the OPTITEM with UserData's pKeywordName matching given keyword name
//
POPTITEM PFindOptItemWithKeyword( IN PUIDATA pUiData, IN PCSTR pKeywordName );
//
// Find the OPTITEM containing the specified UserData value
//
POPTITEM PFindOptItemWithUserData( IN PUIDATA pUiData, IN DWORD UserData );
//
// Sync up OPTITEM list with the updated options array
//
VOID VUpdateOptItemList( IN OUT PUIDATA pUiData, IN POPTSELECT pOldCombinedOptions, IN POPTSELECT pNewCombinedOptions );
//
// Display an error message box
//
INT IDisplayErrorMessageBox( HWND hwndParent, UINT uType, INT iTitleStrId, INT iFormatStrId, ... );
BOOL BPrepareForLoadingResource( PCOMMONINFO pci, BOOL bNeedHeap );
//
// Fill out an OPTITEM structure
//
#define FILLOPTITEM(poptitem,popttype,name,sel,level,dmpub,userdata,help) \
(poptitem)->cbSize = sizeof(OPTITEM); \ (poptitem)->Flags |= OPTIF_CALLBACK; \ (poptitem)->pOptType = (popttype); \ (poptitem)->pName = (PWSTR) (name); \ (poptitem)->pSel = (PVOID) (sel); \ (poptitem)->Level = (BYTE) (level); \ (poptitem)->DMPubID = (BYTE) (dmpub); \ SETUSERDATAID(poptitem, userdata); \ (poptitem)->HelpIndex = (help)
//
// Tree view item level
//
#define TVITEM_LEVEL1 1
#define TVITEM_LEVEL2 2
#define TVITEM_LEVEL3 3
enum { UNKNOWN_ITEM,
FONT_SUBST_ITEM, FONTSLOT_ITEM, PRINTER_VM_ITEM, HALFTONE_SETUP_ITEM, IGNORE_DEVFONT_ITEM, PSPROTOCOL_ITEM, JOB_TIMEOUT_ITEM, WAIT_TIMEOUT_ITEM,
COPIES_COLLATE_ITEM, SCALE_ITEM, COLOR_ITEM, ICMMETHOD_ITEM, ICMINTENT_ITEM, TTOPTION_ITEM, METASPOOL_ITEM, NUP_ITEM, REVPRINT_ITEM, MIRROR_ITEM, NEGATIVE_ITEM, COMPRESSBMP_ITEM, CTRLD_BEFORE_ITEM, CTRLD_AFTER_ITEM, TEXT_ASGRX_ITEM, PAGE_PROTECT_ITEM, PSOUTPUT_OPTION_ITEM, PSTT_DLFORMAT_ITEM, PSLEVEL_ITEM, PSERROR_HANDLER_ITEM, PSMINOUTLINE_ITEM, PSMAXBITMAP_ITEM, PSHALFTONE_FREQ_ITEM, PSHALFTONE_ANGLE_ITEM, QUALITY_SETTINGS_ITEM, SOFTFONT_SETTINGS_ITEM,
TRUE_GRAY_TEXT_ITEM, TRUE_GRAY_GRAPH_ITEM,
ADD_EURO_ITEM,
//
// !!! Only items whose UserData value is larger than
// CONSTRAINABLE_ITEM can have constraints.
//
CONSTRAINABLE_ITEM = 0x8000, ORIENTATION_ITEM = CONSTRAINABLE_ITEM, DUPLEX_ITEM, RESOLUTION_ITEM, INPUTSLOT_ITEM, FORMNAME_ITEM, MEDIATYPE_ITEM, COLORMODE_ITEM, HALFTONING_ITEM, FORM_TRAY_ITEM, };
//
// Interpretation of OPTITEM.UserData: If it's less than 0x10000
// then it's one of the constants defined above. Otherwise, it's
// a pointer to a FEATURE object.
//
#define DRIVERUI_MAX_ITEM 0x10000
#define ISPRINTERFEATUREITEM(userData) (GETUSERDATAITEM(userData) >= DRIVERUI_MAX_ITEM)
#define ISCONSTRAINABLEITEM(userData) (GETUSERDATAITEM(userData) >= CONSTRAINABLE_ITEM)
#define ISFORMTRAYITEM(userData) (GETUSERDATAITEM(userData) == FORM_TRAY_ITEM)
#define ISFONTSUBSTITEM(userData) (GETUSERDATAITEM(userData) == FONT_SUBST_ITEM)
//
// Determine whether certain features are supported on the printer
//
#ifdef UNIDRV
#define SUPPORTS_DUPLEX(pci) \
((!_BFeatureDisabled(pci, 0xFFFFFFFF, GID_DUPLEX)) && \ (GET_PREDEFINED_FEATURE((pci)->pUIInfo, GID_DUPLEX) != NULL)) #else
#define SUPPORTS_DUPLEX(pci) \
((_BSupportFeature(pci, GID_DUPLEX, NULL)) && \ (GET_PREDEFINED_FEATURE(pci->pUIInfo, GID_DUPLEX) != NULL)) #endif // UNIDRV
#define SUPPORTS_PAGE_PROTECT(pUIInfo) \
(GET_PREDEFINED_FEATURE(pUIInfo, GID_PAGEPROTECTION) != NULL)
#ifdef UNIDRV
#define PRINTER_SUPPORTS_COLLATE(pci) \
((!_BFeatureDisabled(pci, 0xFFFFFFFF, GID_COLLATE)) && \ (GET_PREDEFINED_FEATURE((pci)->pUIInfo, GID_COLLATE) != NULL)) #else
#define PRINTER_SUPPORTS_COLLATE(pci) \
((_BSupportFeature(pci, GID_COLLATE, NULL)) && \ (GET_PREDEFINED_FEATURE(pci->pUIInfo, GID_COLLATE) != NULL)) #endif // UNIDRV
#ifdef WINNT_40
#define DRIVER_SUPPORTS_COLLATE(pci) PRINTER_SUPPORTS_COLLATE(pci)
#else
#define DRIVER_SUPPORTS_COLLATE(pci) TRUE
#endif
//
// Data structure containing information about cached driver files
//
typedef struct _CACHEDFILE {
HANDLE hRemoteFile; // open handle to remote file on the server
PWSTR pRemoteDir; // remote directory on the server
PWSTR pLocalDir; // local directory
PWSTR pFilename; // name of the cached file
} CACHEDFILE, *PCACHEDFILE;
//
// Functions for copying files over during point and print
//
BOOL _BPrepareToCopyCachedFile(HANDLE, PCACHEDFILE, PWSTR); BOOL _BCopyCachedFile(PCOMMONINFO, PCACHEDFILE); VOID _VDisposeCachedFileInfo(PCACHEDFILE);
//
// Driver specific functions (implemented in ps and uni subdirectories)
//
DWORD _DwEnumPersonalities(PCOMMONINFO, PWSTR); DWORD _DwGetOrientationAngle(PUIINFO, PDEVMODE); BOOL _BPackDocumentOptions(PUIDATA); VOID _VUnpackDocumentOptions(POPTITEM, PDEVMODE); BOOL _BPackPrinterOptions(PUIDATA); BOOL _BPackOrientationItem(PUIDATA); INT _IListDevFontNames(HDC, PWSTR, INT); INT_PTR CALLBACK _AboutDlgProc(HWND, UINT, WPARAM, LPARAM); #define FREE_DEFAULT_FONTSUB_TABLE(pTTSubstTable) MemFree(pTTSubstTable)
#ifdef PSCRIPT
#define _PwstrGetCallerName() ((PWSTR) IDS_POSTSCRIPT)
#define _DwGetFontCap(pUIInfo) (DCTT_DOWNLOAD | DCTT_SUBDEV)
#define _DwGetDefaultResolution() DEFAULT_RESOLUTION
#define _DwGetPrinterIconID() IDI_CPSUI_POSTSCRIPT
#define _BUnpackPrinterOptions(pUiData) TRUE
BOOL _BSupportStapling(PCOMMONINFO); VOID _VUnpackDriverPrnPropItem(PUIDATA, POPTITEM); BOOL _BPackItemScale(PUIDATA); BOOL _BPackFontSubstItems(PUIDATA); BOOL _BSupportFeature(PCOMMONINFO, DWORD, PFEATURE); BOOL BDisplayPSCustomPageSizeDialog(PUIDATA); BOOL BUpdateModelNtfFilename(PCOMMONINFO); VOID VSyncRevPrintAndOutputOrder(PUIDATA, POPTITEM);
#ifdef WINNT_40
BOOL BUpdateVMErrorMessageID(PCOMMONINFO); #endif // WINNT_40
#define ISSET_MFSPOOL_FLAG(pdmExtra) ((pdmExtra)->dwFlags & PSDEVMODE_METAFILE_SPOOL)
#define SET_MFSPOOL_FLAG(pdmExtra) ((pdmExtra)->dwFlags |= PSDEVMODE_METAFILE_SPOOL)
#define CLEAR_MFSPOOL_FLAG(pdmExtra) ((pdmExtra)->dwFlags &= ~PSDEVMODE_METAFILE_SPOOL)
#define NUPOPTION(pdmExtra) ((pdmExtra)->iLayout)
#define REVPRINTOPTION(pdmExtra) ((pdmExtra)->bReversePrint)
#define GET_DEFAULT_FONTSUB_TABLE(pci, pUIInfo) PtstrGetDefaultTTSubstTable(pUIInfo)
#define NOT_UNUSED_ITEM(bOrderReversed) TRUE
#define ILOADSTRING(pci, id, wchbuf, size) 0
#endif // PSCRIPT
#ifdef UNIDRV
#define _PwstrGetCallerName() ((PWSTR) IDS_UNIDRV)
#define _DwGetDefaultResolution() 300
#define _BPackItemScale(pUiData) TRUE
#define _BPackFontSubstItems(pUiData) BPackItemFontSubstTable(pUiData)
#define _DwGetPrinterIconID() IDI_CPSUI_PRINTER2
#define BValidateDevmodeCustomPageSizeFields(pRawData, pUIInfo, pdm, prclImageArea) FALSE
#define _VUnpackDriverPrnPropItem(pUiData, pOptItem)
DWORD _DwGetFontCap(PUIINFO); BOOL _BUnpackPrinterOptions(PUIDATA); BOOL _BSupportStapling(PCOMMONINFO); BOOL _BFeatureDisabled(PCOMMONINFO, DWORD, WORD); VOID VSyncColorInformation(PUIDATA, POPTITEM); VOID VMakeMacroSelections(PUIDATA, POPTITEM); VOID VUpdateMacroSelection(PUIDATA, POPTITEM); PTSTR PtstrUniGetDefaultTTSubstTable(PCOMMONINFO, PUIINFO); BOOL BOkToChangeColorToMono(PCOMMONINFO, PDEVMODE, SHORT * , SHORT *);
#define ISSET_MFSPOOL_FLAG(pdmExtra) (((pdmExtra)->dwFlags & DXF_NOEMFSPOOL) == 0)
#define SET_MFSPOOL_FLAG(pdmExtra) ((pdmExtra)->dwFlags &= ~DXF_NOEMFSPOOL)
#define CLEAR_MFSPOOL_FLAG(pdmExtra) ((pdmExtra)->dwFlags |= DXF_NOEMFSPOOL)
#define NUPOPTION(pdmExtra) ((pdmExtra)->iLayout)
#define REVPRINTOPTION(pdmExtra) ((pdmExtra)->bReversePrint)
#define GET_DEFAULT_FONTSUB_TABLE(pci, pUIInfo) PtstrUniGetDefaultTTSubstTable(pci, pUIInfo)
#define NOT_UNUSED_ITEM(bOrderReversed) (bOrderReversed != UNUSED_ITEM)
#define ILOADSTRING(pci, id, wchbuf, size) \
ILoadStringW(((pci)->pWinResData), id, wchbuf, size)
#endif // UNIDRV
#endif //!_DRIVERUI_H_
|