blob: 6ec089f762273cfecd95333cf8e5540a5695ce6a [file] [log] [blame]
#ifndef __TWAINCPP_
#define __TWAINCPP_
#include "Twain.h"
#define TWCPP_ANYCOUNT (-1)
#define TWCPP_CANCELTHIS (1)
#define TWCPP_CANCELALL (2)
#define TWCPP_DOTRANSFER (0)
class CTwain
{
public:
CTwain(HWND hWnd = NULL);
virtual ~CTwain();
BOOL InitTwain(HWND hWnd);
void ReleaseTwain();
/*
This routine must be implemented by the dervied class
After setting the required values in the m_AppId structure,
the derived class should call the parent class implementation
Refer Pg: 51 of the Twain Specification version 1.8
*/
virtual void GetIdentity();
virtual BOOL SelectSource();
virtual BOOL OpenSource(TW_IDENTITY *pSource=NULL);
virtual int ShouldTransfer(TW_IMAGEINFO& info) { return TWCPP_DOTRANSFER;};
BOOL ProcessMessage(MSG msg);
BOOL SelectDefaultSource();
BOOL IsValidDriver() const;
BOOL SourceSelected() const {return m_bSourceSelected;} ;
BOOL DSMOpen() const;
BOOL DSOpen() const;
BOOL SourceEnabled() const { return m_bSourceEnabled;};
BOOL ModalUI() const { return m_bModalUI; };
TW_INT16 GetRC() const { return m_returnCode; };
TW_STATUS GetStatus() const { return m_Status; };
BOOL SetImageCount(TW_INT16 nCount = 1);
BOOL Acquire(int numImages=1);
protected:
BOOL CallTwainProc(pTW_IDENTITY pOrigin,pTW_IDENTITY pDest,
TW_UINT32 DG,TW_UINT16 DAT,TW_UINT16 MSG,
TW_MEMREF pData);
TW_UINT16 CallDSMEntry(pTW_IDENTITY pApp, pTW_IDENTITY pSrc,
TW_UINT32 DG, TW_UINT16 DAT, TW_UINT16 MSG,
TW_MEMREF pData);
void CloseDSM();
void CloseDS();
BOOL GetCapability(TW_CAPABILITY& twCap,TW_UINT16 cap,TW_UINT16 conType=TWON_DONTCARE16);
BOOL GetCapability(TW_UINT16 cap,TW_UINT32& value);
BOOL SetCapability(TW_UINT16 cap,TW_UINT16 value,BOOL sign=FALSE);
BOOL SetCapability(TW_CAPABILITY& twCap);
BOOL EnableSource(BOOL showUI = TRUE);
BOOL GetImageInfo(TW_IMAGEINFO& info);
virtual BOOL DisableSource();
virtual BOOL CanClose() { return TRUE; };
void TranslateMessage(TW_EVENT& twEvent);
void TransferImage();
BOOL EndTransfer();
void CancelTransfer();
BOOL ShouldContinue();
BOOL GetImage(TW_IMAGEINFO& info);
virtual void SetImage(HANDLE hBitmap,TW_IMAGEINFO& info)=0;
// virtual void CopyImage(HANDLE hBitmap,TW_IMAGEINFO& info);
protected:
HINSTANCE m_hTwainDLL;
DSMENTRYPROC m_pDSMProc;
TW_IDENTITY m_AppId;
TW_IDENTITY m_Source;
TW_STATUS m_Status;
TW_INT16 m_returnCode;
HWND m_hMessageWnd;
BOOL m_bSourceSelected;
BOOL m_bDSMOpen;
BOOL m_bDSOpen;
BOOL m_bSourceEnabled;
BOOL m_bModalUI;
int m_nImageCount;
};
#endif