|
|
/**************************************************************************
* * (C) COPYRIGHT MICROSOFT CORP., 2000 * * TITLE: scanapi.h * * VERSION: 1.0 * * DATE: 18 July, 2000 * * DESCRIPTION: * Fake Scanner device library * ***************************************************************************/
#ifndef _SCANAPI_H
#define _SCANAPI_H
#include "ioblockdefs.h"
typedef GUID* PGUID;
#define FLATBED_SCANNER_MODE 100
#define SCROLLFED_SCANNER_MODE 200
#define MULTIFUNCTION_DEVICE_MODE 300
#define SCAN_START 0
#define SCAN_CONTINUE 1
#define SCAN_END 3
typedef struct _DEVICE_BUTTON_INFO { BYTE ScanButton; BYTE FaxButton; BYTE EMailButton; BYTE DocumentButton; BYTE CancelButton; }DEVICE_BUTTON_INFO,*PDEVICE_BUTTON_INFO;
typedef struct _INITINFO { HANDLE hDeviceDataHandle; TCHAR *szModuleFileName; CHAR *szCreateFileName; HKEY hKEY; }INITINFO,*PINITINFO;
typedef struct _INTERRUPTEVENTINFO { CHAR *szDeviceName; HANDLE *phSignalEvent; HANDLE hShutdownEvent; GUID *pguidEvent; }INTERRUPTEVENTINFO,*PINTERRUPTEVENTINFO;
typedef struct _WIAPROPERTIES { LONG NumItemProperties; // Number of item properties
LPOLESTR *pszItemDefaults; // item property names
PROPID *piItemDefaults; // item property ids
PROPVARIANT *pvItemDefaults; // item property prop variants
PROPSPEC *psItemDefaults; // item property propspecs
WIA_PROPERTY_INFO *wpiItemDefaults; // item property attributes
// valid values
LONG NumSupportedFormats; // Number of supported formats
LONG NumSupportedTYMED; // Number of supported TYMED
LONG NumInitialFormats; // Number of Initial formats
LONG NumSupportedDataTypes;// Number of supported data types
LONG NumSupportedIntents; // Number of supported intents
LONG NumSupportedCompressionTypes; // Number of supported compression types
LONG NumSupportedResolutions;// Number of supported resolutions
LONG NumSupportedPreviewModes;// Number of supported preview modes
WIA_FORMAT_INFO *pSupportedFormats; // supported formats
LONG *pSupportedTYMED; // supported TYMED
GUID *pInitialFormats; // initial formats
LONG *pSupportedDataTypes; // supported data types
LONG *pSupportedIntents; // supported intents
LONG *pSupportedCompressionTypes; // supported compression types
LONG *pSupportedResolutions;// supproted resolutions
LONG *pSupportedPreviewModes;// supported preview modes
BOOL bLegacyBWRestrictions;// backward compatible with older system
}WIAPROPERTIES,*PWIAPROPERTIES;
typedef struct _WIACAPABILITIES { PLONG pNumSupportedEvents; PLONG pNumSupportedCommands; WIA_DEV_CAP_DRV *pCapabilities; }WIACAPABILITIES,*PWIACAPABILITIES;
class CScanAPI { public: CScanAPI() : m_pIWiaLog(NULL) {
} ~CScanAPI(){
}
IWiaLog *m_pIWiaLog; // WIA logging object
virtual HRESULT SetLoggingInterface(IWiaLog *pLogInterface){ if(pLogInterface){ m_pIWiaLog = pLogInterface; } else { return E_INVALIDARG; } return S_OK; }
// data acquisition functions
virtual HRESULT Scan(LONG lState, PBYTE pData, DWORD dwBytesToRead, PDWORD pdwBytesWritten){ return E_NOTIMPL; } virtual HRESULT SetDataType(LONG lDataType){ return E_NOTIMPL; } virtual HRESULT SetXYResolution(LONG lXResolution, LONG lYResolution){ return E_NOTIMPL; } virtual HRESULT SetSelectionArea(LONG lXPos, LONG lYPos, LONG lXExt, LONG lYExt){ return E_NOTIMPL; } virtual HRESULT SetContrast(LONG lContrast){ return E_NOTIMPL; } virtual HRESULT SetIntensity(LONG lIntensity){ return E_NOTIMPL; } virtual HRESULT ResetDevice(){ return E_NOTIMPL; } virtual HRESULT SetEmulationMode(LONG lDeviceMode){ return E_NOTIMPL; } virtual HRESULT DisableDevice(){ return E_NOTIMPL; } virtual HRESULT EnableDevice(){ return E_NOTIMPL; } virtual HRESULT DeviceOnline(){ return E_NOTIMPL; } virtual HRESULT GetDeviceEvent(GUID *pEvent){ return E_NOTIMPL; } virtual HRESULT Diagnostic(){ return E_NOTIMPL; } virtual HRESULT Initialize(PINITINFO pInitInfo){ return E_NOTIMPL; } virtual HRESULT UnInitialize(){ return E_NOTIMPL; } virtual HRESULT DoInterruptEventThread(PINTERRUPTEVENTINFO pEventInfo){ return E_NOTIMPL; } virtual HRESULT ADFAttached(){ return E_NOTIMPL; } virtual HRESULT ADFHasPaper(){ return E_NOTIMPL; } virtual HRESULT ADFAvailable(){ return E_NOTIMPL; } virtual HRESULT ADFFeedPage(){ return E_NOTIMPL; } virtual HRESULT ADFUnFeedPage(){ return E_NOTIMPL; } virtual HRESULT ADFStatus(){ return E_NOTIMPL; } virtual HRESULT QueryButtonPanel(PDEVICE_BUTTON_INFO pButtonInformation){ return E_NOTIMPL; } virtual HRESULT BuildRootItemProperties(PWIAPROPERTIES pProperties){ return E_NOTIMPL; } virtual HRESULT BuildTopItemProperties(PWIAPROPERTIES pProperties){ return E_NOTIMPL; } virtual HRESULT BuildCapabilities(PWIACAPABILITIES pCapabilities){ return E_NOTIMPL; } virtual HRESULT GetBedWidthAndHeight(PLONG pWidth, PLONG pHeight){ return E_NOTIMPL; } virtual HRESULT SetResolutionRestrictionString(TCHAR *szResolutions){ return E_NOTIMPL; } virtual HRESULT SetScanMode(INT iScanMode){ return E_NOTIMPL; } virtual HRESULT SetSTIDeviceHKEY(HKEY *pHKEY){ return E_NOTIMPL; } virtual HRESULT GetSupportedFileFormats(GUID **ppguid, LONG *plNumSupportedFormats){ return E_NOTIMPL; } virtual HRESULT GetSupportedMemoryFormats(GUID **ppguid, LONG *plNumSupportedFormats){ return E_NOTIMPL; } virtual HRESULT IsColorDataBGR(BOOL *pbBGR){ return E_NOTIMPL; } virtual HRESULT IsAlignmentNeeded(BOOL *pbALIGN){ return E_NOTIMPL; } virtual HRESULT SetFormat(GUID *pguidFormat){ return E_NOTIMPL; } };
///////////////////////////////////////////////////////////////////////////////////
// MICRO DRIVER SYSTEM SUPPORT //
///////////////////////////////////////////////////////////////////////////////////
class CMicroDriverAPI :public CScanAPI { public: CMicroDriverAPI(); ~CMicroDriverAPI();
CMICRO *m_pMicroDriver; // Micro driver communication
SCANINFO m_ScanInfo; // ScanInfo structure
TCHAR m_szResolutions[255]; // restricted resolutions string
BOOL m_bDisconnected; // device disconnected during operation
HRESULT Scan(LONG lState, PBYTE pData, DWORD dwBytesToRead, PDWORD pdwBytesWritten); HRESULT SetDataType(LONG lDataType); HRESULT SetXYResolution(LONG lXResolution, LONG lYResolution); HRESULT SetSelectionArea(LONG lXPos, LONG lYPos, LONG lXExt, LONG lYExt); HRESULT SetContrast(LONG lContrast); HRESULT SetIntensity(LONG lIntensity); HRESULT ResetDevice(); HRESULT SetEmulationMode(LONG lDeviceMode); HRESULT DisableDevice(); HRESULT EnableDevice(); HRESULT DeviceOnline(); HRESULT GetDeviceEvent(GUID *pEvent); HRESULT Diagnostic(); HRESULT Initialize(PINITINFO pInitInfo); HRESULT UnInitialize(); HRESULT DoInterruptEventThread(PINTERRUPTEVENTINFO pEventInfo); HRESULT ADFAttached(); HRESULT ADFHasPaper(); HRESULT ADFAvailable(); HRESULT ADFFeedPage(); HRESULT ADFUnFeedPage(); HRESULT ADFStatus(); HRESULT QueryButtonPanel(PDEVICE_BUTTON_INFO pButtonInformation); HRESULT BuildRootItemProperties(PWIAPROPERTIES pProperties); HRESULT BuildTopItemProperties(PWIAPROPERTIES pProperties); HRESULT BuildCapabilities(PWIACAPABILITIES pCapabilities); HRESULT GetBedWidthAndHeight(PLONG pWidth, PLONG pHeight); HRESULT SetResolutionRestrictionString(TCHAR *szResolutions); HRESULT SetScanMode(INT iScanMode); HRESULT SetSTIDeviceHKEY(HKEY *pHKEY); HRESULT GetSupportedFileFormats(GUID **ppguid, LONG *plNumSupportedFormats); HRESULT GetSupportedMemoryFormats(GUID **ppguid, LONG *plNumSupportedFormats); HRESULT IsColorDataBGR(BOOL *pbBGR); HRESULT IsAlignmentNeeded(BOOL *pbALIGN); HRESULT SetFormat(GUID *pguidFormat);
// helpers
HRESULT MicroDriverErrorToWIAError(LONG lMicroDriverError); BOOL IsValidRestriction(LONG **ppList, LONG *plNumItems, RANGEVALUEEX *pRangeValues); HRESULT DeleteAllProperties(PWIAPROPERTIES pProperties); HRESULT AllocateAllProperties(PWIAPROPERTIES pProperties); };
#endif
|