#pragma once
#ifndef __TTWAIN_H__
#define __TTWAIN_H__
#ifdef _WIN32
#include <windows.h>
#else
#ifndef _UNIX_
#define _UNIX_
#endif
#endif
#include "twain.h"
#include "tnztypes.h"
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef UCHAR
#define UCHAR unsigned char
#endif
#ifndef USHORT
#define USHORT unsigned short
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef enum TTWAIN_PIXTYPE {
TTWAIN_BW, /* 1-bit per pixel, B&W */
TTWAIN_WB, /* 1-bit per pixel, W&B */
TTWAIN_GRAY8, /* 1,4, or 8-bit grayscale */
TTWAIN_RGB24, /* 24-bit RGB color */
TTWAIN_PIXTYPE_HOWMANY,
TTWAIN_PIXUNKNOWN = -1,
} TTWAIN_PIXTYPE;
typedef enum TTWAIN_BITORDER {
TTWAIN_LSBFIRST = TWBO_LSBFIRST,
TTWAIN_MSBFIRST = TWBO_MSBFIRST
} TTWAIN_BITORDER;
typedef enum TWAINAVAILABLE {
AVAIABLE_DONTKNOW = -1,
AVAIABLE_YES,
AVAIABLE_NO
} TWAINAVAILABLE;
typedef enum TTWAIN_TRANSFER_MECH {
TTWAIN_TRANSFERMODE_NATIVE = TWSX_NATIVE,
TTWAIN_TRANSFERMODE_MEMORY = TWSX_MEMORY,
TTWAIN_TRANSFERMODE_FILE = TWSX_FILE
} TTWAIN_TRANSFER_MECH;
typedef enum TTWAIN_USAGE_MODE {
TTWAIN_MODE_LEASHED,
TTWAIN_MODE_UNLEASHED
} TTWAIN_USAGE_MODE;
/* application should return 0 to stop the scanning process, any other value elsewhere */
typedef int TTWAIN_ONDONE_CB(UCHAR *buffer, TTWAIN_PIXTYPE pixelType,
int lx, int ly, int wrap,
float xdpi, float ydpi,
void *usrData);
typedef void TTWAIN_ONERROR_CB(void *usrData, void *alwaysZero);
int TTWAIN_IsAvailable(void);
void TWAIN_RegisterApp(int majorNum, int minorNum, /* app. revision*/
int nLanguage, /* (human) language (use TWLG_xxx from TWAIN.H) */
int nCountry, /* country (use TWCY_xxx from TWAIN.H) */
char *version, /* version info string */
char *manufacter, /* name of manufacter */
char *family, /* product family */
char *product); /* specific product */
int TTWAIN_SelectImageSource(void *hwnd);
/*---------------------------------------------------------------------------*/
void *TTWAIN_AcquireNative(void *hwnd);
int TTWAIN_AcquireMemory(void *hwnd);
void TTWAIN_StopAcquire(void);
/*
nb. AcquireMemory returns: an upside-down bitmap :)
nb. AcquireNative returns:
under Windows an HBITMAP
under Mac a PICT
*/
/*---------------------------------------------------------------------------*/
void TTWAIN_SetTwainUsage(TTWAIN_USAGE_MODE um);
void TTWAIN_FreeMemory(void *hMem);
int TTWAIN_CloseAll(void *hwnd);
int TTWAIN_OpenSourceManager(void *hwnd);
int TTWAIN_OpenDefaultSource(void);
int TTWAIN_GetHideUI(void);
void TTWAIN_SetHideUI(int flag);
void TTWAIN_SetOnDoneCallback(TTWAIN_ONDONE_CB *proc, void *arg);
void TTWAIN_SetOnErrorCallback(TTWAIN_ONERROR_CB *proc, void *arg);
#ifdef __cplusplus
}
#endif
#endif