1 #pragma once
2 
3 #ifndef __TTWAIN_H__
4 #define __TTWAIN_H__
5 
6 #ifdef _WIN32
7 #include <windows.h>
8 #else
9 #ifndef _UNIX_
10 #define _UNIX_
11 #endif
12 #endif
13 
14 #include "twain.h"
15 
16 #include "tnztypes.h"
17 
18 #ifndef TRUE
19 #define TRUE 1
20 #endif
21 
22 #ifndef FALSE
23 #define FALSE 0
24 #endif
25 
26 #ifndef UCHAR
27 #define UCHAR unsigned char
28 #endif
29 
30 #ifndef USHORT
31 #define USHORT unsigned short
32 #endif
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 typedef enum TTWAIN_PIXTYPE {
39   TTWAIN_BW,    /* 1-bit per pixel, B&W     */
40   TTWAIN_WB,    /* 1-bit per pixel, W&B     */
41   TTWAIN_GRAY8, /* 1,4, or 8-bit grayscale  */
42   TTWAIN_RGB24, /* 24-bit RGB color         */
43   TTWAIN_PIXTYPE_HOWMANY,
44   TTWAIN_PIXUNKNOWN = -1,
45 } TTWAIN_PIXTYPE;
46 
47 typedef enum TTWAIN_BITORDER {
48   TTWAIN_LSBFIRST = TWBO_LSBFIRST,
49   TTWAIN_MSBFIRST = TWBO_MSBFIRST
50 } TTWAIN_BITORDER;
51 
52 typedef enum TWAINAVAILABLE {
53   AVAIABLE_DONTKNOW = -1,
54   AVAIABLE_YES,
55   AVAIABLE_NO
56 } TWAINAVAILABLE;
57 
58 typedef enum TTWAIN_TRANSFER_MECH {
59   TTWAIN_TRANSFERMODE_NATIVE = TWSX_NATIVE,
60   TTWAIN_TRANSFERMODE_MEMORY = TWSX_MEMORY,
61   TTWAIN_TRANSFERMODE_FILE   = TWSX_FILE
62 } TTWAIN_TRANSFER_MECH;
63 
64 typedef enum TTWAIN_USAGE_MODE {
65   TTWAIN_MODE_LEASHED,
66   TTWAIN_MODE_UNLEASHED
67 } TTWAIN_USAGE_MODE;
68 
69 /* application should return 0 to stop the scanning process, any other value
70  * elsewhere */
71 typedef int TTWAIN_ONDONE_CB(UCHAR *buffer, TTWAIN_PIXTYPE pixelType, int lx,
72                              int ly, int wrap, float xdpi, float ydpi,
73                              void *usrData);
74 
75 typedef void TTWAIN_ONERROR_CB(void *usrData, void *alwaysZero);
76 
77 int TTWAIN_IsAvailable(void);
78 void TTWAIN_RegisterApp(
79     int majorNum, int minorNum, /* app. revision*/
80     int nLanguage,    /* (human) language (use TWLG_xxx from TWAIN.H) */
81     int nCountry,     /* country (use TWCY_xxx from TWAIN.H)	     */
82     char *version,    /* version info string                          */
83     char *manufacter, /* name of manufacter			     */
84     char *family,     /* product family				     */
85     char *product);   /* specific product			     */
86 int TTWAIN_SelectImageSource(void *hwnd);
87 /*---------------------------------------------------------------------------*/
88 void *TTWAIN_AcquireNative(void *hwnd);
89 int TTWAIN_AcquireMemory(void *hwnd);
90 void TTWAIN_StopAcquire(void);
91 
92 /*
93 nb. AcquireMemory returns: an upside-down bitmap :)
94 nb. AcquireNative returns:
95                           under Windows an HBITMAP
96                           under Mac     a  PICT
97 */
98 /*---------------------------------------------------------------------------*/
99 void TTWAIN_SetTwainUsage(TTWAIN_USAGE_MODE um);
100 
101 void TTWAIN_FreeMemory(void *hMem);
102 int TTWAIN_CloseAll(void *hwnd);
103 int TTWAIN_OpenSourceManager(void *hwnd);
104 int TTWAIN_OpenDefaultSource(void);
105 
106 int TTWAIN_GetHideUI(void);
107 void TTWAIN_SetHideUI(int flag);
108 
109 void TTWAIN_SetOnDoneCallback(TTWAIN_ONDONE_CB *proc, void *arg);
110 void TTWAIN_SetOnErrorCallback(TTWAIN_ONERROR_CB *proc, void *arg);
111 
112 #ifdef __cplusplus
113 }
114 #endif
115 
116 #endif
117