#pragma once
#ifndef __TTWAINP_H__
#define __TTWAINP_H__
#include "ttwain.h"
#ifdef TTWAINLIB_MAIN
#define EXTERN
#else
#define EXTERN extern
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef enum TWAINSTATE {
TWAIN_PRESESSION = 1, /* source manager not loaded */
TWAIN_SM_LOADED, /* source manager loaded */
TWAIN_SM_OPEN, /* source manager open */
TWAIN_SOURCE_OPEN, /* source open but not enabled*/
TWAIN_SOURCE_ENABLED, /* source enabled to acquire */
TWAIN_TRANSFER_READY, /* image ready to transfer */
TWAIN_TRANSFERRING /* image in transit */
} TWAINSTATE;
#ifdef _WIN32
#ifdef x64
#define DSM_FILENAME "TWAINDSM.DLL"
#else
#define DSM_FILENAME "TWAIN_32.DLL"
#endif
#define DSM_ENTRYPOINT "DSM_Entry"
#else
#define DSM_FILENAME ""
#define DSM_ENTRYPOINT ""
#endif
struct TRANSFER_INFO {
TTWAIN_TRANSFER_MECH transferMech; /*current transfer mechanism */
TTWAIN_USAGE_MODE usageMode;
/*used by buffered memory tranfer */
unsigned char *memoryBuffer;
unsigned long memorySize;
/*used by native tranfer */
void *hDib;
/*common to all the transfer mode */
int preferredLx;
int preferredLy;
int multiTransfer;
int nextImageNeedsToBeInverted;
int lastTransferWasOk;
TW_PENDINGXFERS pendingXfers;
int oneAtLeast;
};
struct CALLBACKS {
TTWAIN_ONDONE_CB *onDoneCb;
void *onDoneArg;
TTWAIN_ONERROR_CB *onErrorCb;
void *onErrorArg;
};
struct _TTWAIN_DATA__ {
/*HANDLE*/
DSMENTRYPROC DSM_Entry; /* entry point of Data Source Manager(TWAIN.DLL)*/
TW_INT32 hwnd32SM; /* window handle */
/*IDENTITY*/
TW_IDENTITY sourceId; /* source identity structure */
TW_IDENTITY appId; /* Application Ident. for DS */
TW_USERINTERFACE twainUI; /* */
int initDone;
TWAINAVAILABLE twainAvailable;
TWAINSTATE twainState; /* the current twain state */
struct TRANSFER_INFO transferInfo;
struct CALLBACKS callback;
TW_ARRAY *supportedCaps; /* all the (exported)supported capabilities */
int isSupportedCapsSupported;
int breakModalLoop;
int UIStatus; /* Hide or Show UserInterface */
int modalStatus;
TW_INT16 resultCode; /* result code for LAST error */
TUINT32 ErrRC; /* result & condition code */
TUINT32 ErrCC; /* for LAST RECORDED error */
};
EXTERN struct _TTWAIN_DATA__ TTwainData;
EXTERN int TTWAIN_InitVar(void);
#ifdef __cplusplus
}
#endif
#endif