Click here to Skip to main content
15,894,546 members
Articles / Desktop Programming / MFC

CxImage

Rate me:
Please Sign up or sign in to vote.
4.65/5 (949 votes)
15 Feb 2008Zlib13 min read 13.1M   300.6K   1.6K  
CxImage is a C++ class to load, save, display, transform BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K images.
#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

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The zlib/libpng License


Written By
Italy Italy
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions