xref: /aoo4110/main/twain/inc/twain.h (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /* ======================================================================== *\
2*b1cdbd2cSJim Jagielski 
3*b1cdbd2cSJim Jagielski   Copyright (C) 2007 TWAIN Working Group: Adobe Systems Incorporated,
4*b1cdbd2cSJim Jagielski   AnyDoc Software Inc., Eastman Kodak Company, Fujitsu Computer Products
5*b1cdbd2cSJim Jagielski   of America, JFL Peripheral Solutions Inc., Ricoh Corporation, and
6*b1cdbd2cSJim Jagielski   Xerox Corporation.  All rights reserved.
7*b1cdbd2cSJim Jagielski 
8*b1cdbd2cSJim Jagielski   Copyright (C) 1991, 1992 TWAIN Working Group: Aldus, Caere, Eastman-Kodak,
9*b1cdbd2cSJim Jagielski   Hewlett-Packard and Logitech Corporations.  All rights reserved.
10*b1cdbd2cSJim Jagielski 
11*b1cdbd2cSJim Jagielski   Copyright (C) 1997 TWAIN Working Group: Bell+Howell, Canon, DocuMagix,
12*b1cdbd2cSJim Jagielski   Fujitsu, Genoa Technology, Hewlett-Packard, Kofax Imaging Products, and
13*b1cdbd2cSJim Jagielski   Ricoh Corporation.  All rights reserved.
14*b1cdbd2cSJim Jagielski 
15*b1cdbd2cSJim Jagielski   Copyright � 1998 TWAIN Working Group: Adobe Systems Incorporated,
16*b1cdbd2cSJim Jagielski   Canon Information Systems, Eastman Kodak Company,
17*b1cdbd2cSJim Jagielski   Fujitsu Computer Products of America, Genoa Technology,
18*b1cdbd2cSJim Jagielski   Hewlett-Packard Company, Intel Corporation, Kofax Image Products,
19*b1cdbd2cSJim Jagielski   JFL Peripheral Solutions Inc., Ricoh Corporation, and Xerox Corporation.
20*b1cdbd2cSJim Jagielski   All rights reserved.
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski   Copyright � 2000 TWAIN Working Group: Adobe Systems Incorporated,
23*b1cdbd2cSJim Jagielski   Canon Information Systems, Digimarc Corporation, Eastman Kodak Company,
24*b1cdbd2cSJim Jagielski   Fujitsu Computer Products of America, Hewlett-Packard Company,
25*b1cdbd2cSJim Jagielski   JFL Peripheral Solutions Inc., Ricoh Corporation, and Xerox Corporation.
26*b1cdbd2cSJim Jagielski   All rights reserved.
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski   TWAIN.h -  This is the definitive include file for applications and
30*b1cdbd2cSJim Jagielski           data sources written to the TWAIN specification.
31*b1cdbd2cSJim Jagielski           It defines constants, data structures, messages etc.
32*b1cdbd2cSJim Jagielski           for the public interface to TWAIN.
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski   Revision History:
35*b1cdbd2cSJim Jagielski     version 1.0, March 6, 1992.  TWAIN 1.0.
36*b1cdbd2cSJim Jagielski     version 1.1, January 1993.   Tech Notes 1.1
37*b1cdbd2cSJim Jagielski     version 1.5, June 1993.      Specification Update 1.5
38*b1cdbd2cSJim Jagielski                                  Change DC to TW
39*b1cdbd2cSJim Jagielski                                  Change filename from DC.H to TWAIN.H
40*b1cdbd2cSJim Jagielski     version 1.5, July 1993.      Remove spaces from country identifiers
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski     version 1.7, July 1997       Added Capabilities and data structure for
43*b1cdbd2cSJim Jagielski                                  document imaging and digital cameras.
44*b1cdbd2cSJim Jagielski                                  KHL.
45*b1cdbd2cSJim Jagielski     version 1.7, July 1997       Inserted Borland compatibile structure packing
46*b1cdbd2cSJim Jagielski                                  directives provided by Mentor.  JMH
47*b1cdbd2cSJim Jagielski     version 1.7, Aug 1997        Expanded file tabs to spaces.
48*b1cdbd2cSJim Jagielski                                  NOTE: future authors should be sure to have
49*b1cdbd2cSJim Jagielski                                  their editors set to automatically expand tabs
50*b1cdbd2cSJim Jagielski                                  to spaces (original tab setting was 4 spaces).
51*b1cdbd2cSJim Jagielski     version 1.7, Sept 1997       Added job control values
52*b1cdbd2cSJim Jagielski                                  Added return codes
53*b1cdbd2cSJim Jagielski     version 1.7, Sept 1997       changed definition of pRGBRESPONSE to
54*b1cdbd2cSJim Jagielski                                  pTW_RGBRESPONSE
55*b1cdbd2cSJim Jagielski     version 1.7  Aug 1998        Added missing TWEI_BARCODEROTATION values
56*b1cdbd2cSJim Jagielski                                  TWBCOR_ types JMH
57*b1cdbd2cSJim Jagielski     version 1.8  August 1998     Added new types and definitions required
58*b1cdbd2cSJim Jagielski                                  for 1.8 Specification JMH
59*b1cdbd2cSJim Jagielski     version 1.8  January 1999    Changed search mode from SRCH_ to TWBD_ as
60*b1cdbd2cSJim Jagielski                                  in 1.8 Specification, added TWBT_MAXICODE JMH
61*b1cdbd2cSJim Jagielski     version 1.8  January 1999    Removed undocumented duplicate AUTO<cap> JMH
62*b1cdbd2cSJim Jagielski     version 1.8  March 1999      Removed undocumented 1.8 caps:
63*b1cdbd2cSJim Jagielski                                  CAP_FILESYSTEM
64*b1cdbd2cSJim Jagielski                                  CAP_PAPERBINDING
65*b1cdbd2cSJim Jagielski                                  CAP_PASSTHRU
66*b1cdbd2cSJim Jagielski                                  CAP_POWERDOWNTIME
67*b1cdbd2cSJim Jagielski                                  ICAP_AUTODISCARDBLANKPAGES
68*b1cdbd2cSJim Jagielski                                * CAP_PAGEMULTIPLEACQUIRE - is CAP_REACQUIREALLOWED,
69*b1cdbd2cSJim Jagielski                                requires spec change.  JMH
70*b1cdbd2cSJim Jagielski                                  Added Mac structure packing modifications JMH
71*b1cdbd2cSJim Jagielski     version 1.9  March 2000  Added new types and definations required
72*b1cdbd2cSJim Jagielski                              for 1.9 Specification MLM
73*b1cdbd2cSJim Jagielski     version 1.9  March 2000  Added ICAP_JPEGQUALITY, TWJQ_ values,
74*b1cdbd2cSJim Jagielski                                  updated TWON_PROTOCOLMINOR for Release v1.9 MN
75*b1cdbd2cSJim Jagielski     version 1.91 August 2007     Added new types and definitions required
76*b1cdbd2cSJim Jagielski                                  for 1.91 Specification MLM
77*b1cdbd2cSJim Jagielski     version 2.0  Sept 2007       Added new types and definitions required
78*b1cdbd2cSJim Jagielski                                  for 2.0 Specification FHH
79*b1cdbd2cSJim Jagielski     version 2.0  Mar 2008        Depreciated ICAP_PIXELTYPEs TWPT_SRGB64, TWPT_BGR,
80*b1cdbd2cSJim Jagielski                                  TWPT_CIELAB, TWPT_CIELUV, and TWPT_YCBCR  JMW
81*b1cdbd2cSJim Jagielski     version 2.0  Mar 2008        Added missing new 2.0 CAP_ definitions JMW
82*b1cdbd2cSJim Jagielski     version 2.0  Dec 2008        Updated TW_INFO structure for 64bit JMW
83*b1cdbd2cSJim Jagielski     version 2.1  Mar 2009        Added new types and definitions required
84*b1cdbd2cSJim Jagielski                                  for 2.1 Specification JMW
85*b1cdbd2cSJim Jagielski \* ======================================================================== */
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski #ifndef TWAIN
88*b1cdbd2cSJim Jagielski #define TWAIN
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski /****************************************************************************
91*b1cdbd2cSJim Jagielski  * TWAIN Version                                                            *
92*b1cdbd2cSJim Jagielski  ****************************************************************************/
93*b1cdbd2cSJim Jagielski #define TWON_PROTOCOLMINOR   1        /* Changed for Version 2.1            */
94*b1cdbd2cSJim Jagielski #define TWON_PROTOCOLMAJOR   2
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski /****************************************************************************
97*b1cdbd2cSJim Jagielski  * Platform Dependent Definitions and Typedefs                              *
98*b1cdbd2cSJim Jagielski  ****************************************************************************/
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski /*
101*b1cdbd2cSJim Jagielski  * Mingw32 may be detected as both GNUC or WIN32/64 so try
102*b1cdbd2cSJim Jagielski  * to detect it early and override both GNU and MS.
103*b1cdbd2cSJim Jagielski  */
104*b1cdbd2cSJim Jagielski #if defined(__MINGW32__)
105*b1cdbd2cSJim Jagielski     #define TWH_CMP_MING32
106*b1cdbd2cSJim Jagielski #endif
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski /* Microsoft C/C++ Compiler */
109*b1cdbd2cSJim Jagielski #if defined(WIN32) || defined(WIN64) || defined (_WINDOWS)
110*b1cdbd2cSJim Jagielski     #define TWH_CMP_MSC
111*b1cdbd2cSJim Jagielski     #if  defined(_WIN64) || defined(WIN64)
112*b1cdbd2cSJim Jagielski       #define TWH_64BIT
113*b1cdbd2cSJim Jagielski     #elif defined(WIN32) || defined(_WIN32)
114*b1cdbd2cSJim Jagielski       #define TWH_32BIT
115*b1cdbd2cSJim Jagielski     #endif
116*b1cdbd2cSJim Jagielski 
117*b1cdbd2cSJim Jagielski /* Apple Compiler (which is GNU now) */
118*b1cdbd2cSJim Jagielski #elif defined(__APPLE__)
119*b1cdbd2cSJim Jagielski     #define TWH_CMP_XCODE
120*b1cdbd2cSJim Jagielski     #define TWH_32BIT
121*b1cdbd2cSJim Jagielski 
122*b1cdbd2cSJim Jagielski /* GNU C/C++ Compiler */
123*b1cdbd2cSJim Jagielski #elif defined(__GNUC__)
124*b1cdbd2cSJim Jagielski     #define TWH_CMP_GNU
125*b1cdbd2cSJim Jagielski     #if defined(__alpha__)\
126*b1cdbd2cSJim Jagielski         ||defined(__ia64__)\
127*b1cdbd2cSJim Jagielski         ||defined(__ppc64__)\
128*b1cdbd2cSJim Jagielski         ||defined(__s390x__)\
129*b1cdbd2cSJim Jagielski         ||defined(__x86_64__)
130*b1cdbd2cSJim Jagielski       #define TWH_64BIT
131*b1cdbd2cSJim Jagielski     #else
132*b1cdbd2cSJim Jagielski       #define TWH_32BIT
133*b1cdbd2cSJim Jagielski     #endif
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski /* Borland C/C++ Compiler */
136*b1cdbd2cSJim Jagielski #elif defined(__BORLAND__)
137*b1cdbd2cSJim Jagielski     #define TWH_CMP_BORLAND
138*b1cdbd2cSJim Jagielski     #define TWH_32BIT
139*b1cdbd2cSJim Jagielski /* Unrecognized */
140*b1cdbd2cSJim Jagielski #else
141*b1cdbd2cSJim Jagielski     #error Unrecognized compiler
142*b1cdbd2cSJim Jagielski #endif
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski /* Win32 and Win64 systems */
145*b1cdbd2cSJim Jagielski #if defined(TWH_CMP_MSC) | defined(TWH_CMP_BORLAND)
146*b1cdbd2cSJim Jagielski     typedef HANDLE  TW_HANDLE;
147*b1cdbd2cSJim Jagielski     typedef LPVOID  TW_MEMREF;
148*b1cdbd2cSJim Jagielski     typedef UINT_PTR TW_UINTPTR;
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski /* MacOS/X... */
151*b1cdbd2cSJim Jagielski #elif defined(TWH_CMP_XCODE)
152*b1cdbd2cSJim Jagielski     #define PASCAL   pascal
153*b1cdbd2cSJim Jagielski     #define FAR
154*b1cdbd2cSJim Jagielski     typedef Handle   TW_HANDLE;
155*b1cdbd2cSJim Jagielski     typedef char    *TW_MEMREF;
156*b1cdbd2cSJim Jagielski 
157*b1cdbd2cSJim Jagielski     #ifdef TWH_32BIT
158*b1cdbd2cSJim Jagielski       //32 bit GNU
159*b1cdbd2cSJim Jagielski       typedef unsigned long      TW_UINTPTR;
160*b1cdbd2cSJim Jagielski     #else
161*b1cdbd2cSJim Jagielski       //64 bit GNU
162*b1cdbd2cSJim Jagielski       typedef unsigned long long TW_UINTPTR;
163*b1cdbd2cSJim Jagielski     #endif
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski /* Everything else... */
166*b1cdbd2cSJim Jagielski #else
167*b1cdbd2cSJim Jagielski     #define PASCAL
168*b1cdbd2cSJim Jagielski     #define FAR
169*b1cdbd2cSJim Jagielski     typedef void* TW_HANDLE;
170*b1cdbd2cSJim Jagielski     typedef void* TW_MEMREF;
171*b1cdbd2cSJim Jagielski     typedef unsigned char BYTE;
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski     #ifdef TWH_32BIT
174*b1cdbd2cSJim Jagielski       //32 bit GNU
175*b1cdbd2cSJim Jagielski       typedef unsigned long      TW_UINTPTR;
176*b1cdbd2cSJim Jagielski     #else
177*b1cdbd2cSJim Jagielski       //64 bit GNU
178*b1cdbd2cSJim Jagielski       typedef unsigned long long TW_UINTPTR;
179*b1cdbd2cSJim Jagielski     #endif
180*b1cdbd2cSJim Jagielski #endif
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski /* Set the packing: this occurs before any structures are defined */
184*b1cdbd2cSJim Jagielski #if defined(TWH_CMP_MING32)
185*b1cdbd2cSJim Jagielski     #pragma pack (push, 2)
186*b1cdbd2cSJim Jagielski #elif defined(TWH_CMP_MSC)
187*b1cdbd2cSJim Jagielski     #pragma pack (push, before_twain)
188*b1cdbd2cSJim Jagielski     #pragma pack (2)
189*b1cdbd2cSJim Jagielski #elif defined(TWH_CMP_GNU)
190*b1cdbd2cSJim Jagielski     #pragma pack (push, before_twain)
191*b1cdbd2cSJim Jagielski     #pragma pack (2)
192*b1cdbd2cSJim Jagielski #elif defined(TWH_CMP_BORLAND)
193*b1cdbd2cSJim Jagielski     #pragma option -a2
194*b1cdbd2cSJim Jagielski #elif defined(TWH_CMP_XCODE)
195*b1cdbd2cSJim Jagielski     #if PRAGMA_STRUCT_ALIGN
196*b1cdbd2cSJim Jagielski         #pragma options align=mac68k
197*b1cdbd2cSJim Jagielski     #elif PRAGMA_STRUCT_PACKPUSH
198*b1cdbd2cSJim Jagielski         #pragma pack (push, 2)
199*b1cdbd2cSJim Jagielski     #elif PRAGMA_STRUCT_PACK
200*b1cdbd2cSJim Jagielski         #pragma pack (2)
201*b1cdbd2cSJim Jagielski     #endif
202*b1cdbd2cSJim Jagielski #endif
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski 
205*b1cdbd2cSJim Jagielski /****************************************************************************
206*b1cdbd2cSJim Jagielski  * Type Definitions                                                         *
207*b1cdbd2cSJim Jagielski  ****************************************************************************/
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski /* String types. These include room for the strings and a NULL char,     *
210*b1cdbd2cSJim Jagielski  * or, on the Mac, a length byte followed by the string.                 *
211*b1cdbd2cSJim Jagielski  * TW_STR255 must hold less than 256 chars so length fits in first byte. */
212*b1cdbd2cSJim Jagielski typedef char    TW_STR32[34],     FAR *pTW_STR32;
213*b1cdbd2cSJim Jagielski typedef char    TW_STR64[66],     FAR *pTW_STR64;
214*b1cdbd2cSJim Jagielski typedef char    TW_STR128[130],   FAR *pTW_STR128;
215*b1cdbd2cSJim Jagielski typedef char    TW_STR255[256],   FAR *pTW_STR255;
216*b1cdbd2cSJim Jagielski 
217*b1cdbd2cSJim Jagielski /* Numeric types. */
218*b1cdbd2cSJim Jagielski typedef char           TW_INT8,   FAR *pTW_INT8;
219*b1cdbd2cSJim Jagielski typedef short          TW_INT16,  FAR *pTW_INT16;
220*b1cdbd2cSJim Jagielski typedef long           TW_INT32,  FAR *pTW_INT32;
221*b1cdbd2cSJim Jagielski typedef unsigned char  TW_UINT8,  FAR *pTW_UINT8;
222*b1cdbd2cSJim Jagielski typedef unsigned short TW_UINT16, FAR *pTW_UINT16;
223*b1cdbd2cSJim Jagielski typedef unsigned long  TW_UINT32, FAR *pTW_UINT32;
224*b1cdbd2cSJim Jagielski typedef unsigned short TW_BOOL,   FAR *pTW_BOOL;
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski /****************************************************************************
228*b1cdbd2cSJim Jagielski  * Structure Definitions                                                    *
229*b1cdbd2cSJim Jagielski  ****************************************************************************/
230*b1cdbd2cSJim Jagielski 
231*b1cdbd2cSJim Jagielski /* Fixed point structure type. */
232*b1cdbd2cSJim Jagielski typedef struct {
233*b1cdbd2cSJim Jagielski     TW_INT16     Whole;        /* maintains the sign */
234*b1cdbd2cSJim Jagielski     TW_UINT16    Frac;
235*b1cdbd2cSJim Jagielski } TW_FIX32,  FAR *pTW_FIX32;
236*b1cdbd2cSJim Jagielski 
237*b1cdbd2cSJim Jagielski /* No DAT.  Defines a frame rectangle in ICAP_UNITS coordinates. */
238*b1cdbd2cSJim Jagielski typedef struct {
239*b1cdbd2cSJim Jagielski    TW_FIX32   Left;
240*b1cdbd2cSJim Jagielski    TW_FIX32   Top;
241*b1cdbd2cSJim Jagielski    TW_FIX32   Right;
242*b1cdbd2cSJim Jagielski    TW_FIX32   Bottom;
243*b1cdbd2cSJim Jagielski } TW_FRAME, FAR * pTW_FRAME;
244*b1cdbd2cSJim Jagielski 
245*b1cdbd2cSJim Jagielski /* No DAT needed. */
246*b1cdbd2cSJim Jagielski typedef struct {
247*b1cdbd2cSJim Jagielski    TW_FIX32   StartIn;
248*b1cdbd2cSJim Jagielski    TW_FIX32   BreakIn;
249*b1cdbd2cSJim Jagielski    TW_FIX32   EndIn;
250*b1cdbd2cSJim Jagielski    TW_FIX32   StartOut;
251*b1cdbd2cSJim Jagielski    TW_FIX32   BreakOut;
252*b1cdbd2cSJim Jagielski    TW_FIX32   EndOut;
253*b1cdbd2cSJim Jagielski    TW_FIX32   Gamma;
254*b1cdbd2cSJim Jagielski    TW_FIX32   SampleCount;  /* if =0 use the gamma */
255*b1cdbd2cSJim Jagielski } TW_DECODEFUNCTION, FAR * pTW_DECODEFUNCTION;
256*b1cdbd2cSJim Jagielski 
257*b1cdbd2cSJim Jagielski /* No DAT needed. */
258*b1cdbd2cSJim Jagielski typedef struct {
259*b1cdbd2cSJim Jagielski    TW_DECODEFUNCTION   Decode[3];
260*b1cdbd2cSJim Jagielski    TW_FIX32            Mix[3][3];
261*b1cdbd2cSJim Jagielski } TW_TRANSFORMSTAGE, FAR * pTW_TRANSFORMSTAGE;
262*b1cdbd2cSJim Jagielski 
263*b1cdbd2cSJim Jagielski /* TWON_ARRAY. Container for array of values (a simplified TW_ENUMERATION) */
264*b1cdbd2cSJim Jagielski typedef struct {
265*b1cdbd2cSJim Jagielski    TW_UINT16  ItemType;
266*b1cdbd2cSJim Jagielski    TW_UINT32  NumItems;    /* How many items in ItemList           */
267*b1cdbd2cSJim Jagielski    TW_UINT8   ItemList[1]; /* Array of ItemType values starts here */
268*b1cdbd2cSJim Jagielski } TW_ARRAY, FAR * pTW_ARRAY;
269*b1cdbd2cSJim Jagielski 
270*b1cdbd2cSJim Jagielski /* DAT_AUDIOINFO, information about audio data */
271*b1cdbd2cSJim Jagielski typedef struct {
272*b1cdbd2cSJim Jagielski    TW_STR255  Name;       /* name of audio data */
273*b1cdbd2cSJim Jagielski    TW_UINT32  Reserved;   /* reserved space */
274*b1cdbd2cSJim Jagielski } TW_AUDIOINFO, FAR * pTW_AUDIOINFO;
275*b1cdbd2cSJim Jagielski 
276*b1cdbd2cSJim Jagielski /* TW_CALLBACK, used to register callbacks Added 2.0 */
277*b1cdbd2cSJim Jagielski typedef struct  {
278*b1cdbd2cSJim Jagielski     TW_MEMREF   CallBackProc;
279*b1cdbd2cSJim Jagielski     TW_UINT32   RefCon;
280*b1cdbd2cSJim Jagielski     TW_INT16    Message;
281*b1cdbd2cSJim Jagielski } TW_CALLBACK, FAR * pTW_CALLBACK;
282*b1cdbd2cSJim Jagielski 
283*b1cdbd2cSJim Jagielski /* DAT_CAPABILITY. Used by application to get/set capability from/in a data source. */
284*b1cdbd2cSJim Jagielski typedef struct {
285*b1cdbd2cSJim Jagielski    TW_UINT16  Cap; /* id of capability to set or get, e.g. CAP_BRIGHTNESS */
286*b1cdbd2cSJim Jagielski    TW_UINT16  ConType; /* TWON_ONEVALUE, _RANGE, _ENUMERATION or _ARRAY   */
287*b1cdbd2cSJim Jagielski    TW_HANDLE  hContainer; /* Handle to container of type Dat              */
288*b1cdbd2cSJim Jagielski } TW_CAPABILITY, FAR * pTW_CAPABILITY;
289*b1cdbd2cSJim Jagielski 
290*b1cdbd2cSJim Jagielski /* No DAT needed. */
291*b1cdbd2cSJim Jagielski typedef struct {
292*b1cdbd2cSJim Jagielski    TW_FIX32   X;
293*b1cdbd2cSJim Jagielski    TW_FIX32   Y;
294*b1cdbd2cSJim Jagielski    TW_FIX32   Z;
295*b1cdbd2cSJim Jagielski } TW_CIEPOINT, FAR * pTW_CIEPOINT;
296*b1cdbd2cSJim Jagielski 
297*b1cdbd2cSJim Jagielski /* DAT_CIECOLOR. */
298*b1cdbd2cSJim Jagielski typedef struct {
299*b1cdbd2cSJim Jagielski    TW_UINT16           ColorSpace;
300*b1cdbd2cSJim Jagielski    TW_INT16            LowEndian;
301*b1cdbd2cSJim Jagielski    TW_INT16            DeviceDependent;
302*b1cdbd2cSJim Jagielski    TW_INT32            VersionNumber;
303*b1cdbd2cSJim Jagielski    TW_TRANSFORMSTAGE   StageABC;
304*b1cdbd2cSJim Jagielski    TW_TRANSFORMSTAGE   StageLMN;
305*b1cdbd2cSJim Jagielski    TW_CIEPOINT         WhitePoint;
306*b1cdbd2cSJim Jagielski    TW_CIEPOINT         BlackPoint;
307*b1cdbd2cSJim Jagielski    TW_CIEPOINT         WhitePaper;
308*b1cdbd2cSJim Jagielski    TW_CIEPOINT         BlackInk;
309*b1cdbd2cSJim Jagielski    TW_FIX32            Samples[1];
310*b1cdbd2cSJim Jagielski } TW_CIECOLOR, FAR * pTW_CIECOLOR;
311*b1cdbd2cSJim Jagielski 
312*b1cdbd2cSJim Jagielski typedef struct {
313*b1cdbd2cSJim Jagielski     TW_UINT32  InfoLength;     /* Length of Information in bytes.  */
314*b1cdbd2cSJim Jagielski     TW_HANDLE  hData;          /* Place holder for data, DS Allocates */
315*b1cdbd2cSJim Jagielski }TW_CUSTOMDSDATA, FAR *pTW_CUSTOMDSDATA;
316*b1cdbd2cSJim Jagielski 
317*b1cdbd2cSJim Jagielski /* DAT_DEVICEEVENT, information about events */
318*b1cdbd2cSJim Jagielski typedef struct {
319*b1cdbd2cSJim Jagielski    TW_UINT32  Event;                  /* One of the TWDE_xxxx values. */
320*b1cdbd2cSJim Jagielski    TW_STR255  DeviceName;             /* The name of the device that generated the event */
321*b1cdbd2cSJim Jagielski    TW_UINT32  BatteryMinutes;         /* Battery Minutes Remaining    */
322*b1cdbd2cSJim Jagielski    TW_INT16   BatteryPercentage;      /* Battery Percentage Remaining */
323*b1cdbd2cSJim Jagielski    TW_INT32   PowerSupply;            /* Power Supply                 */
324*b1cdbd2cSJim Jagielski    TW_FIX32   XResolution;            /* Resolution                   */
325*b1cdbd2cSJim Jagielski    TW_FIX32   YResolution;            /* Resolution                   */
326*b1cdbd2cSJim Jagielski    TW_UINT32  FlashUsed2;             /* Flash Used2                  */
327*b1cdbd2cSJim Jagielski    TW_UINT32  AutomaticCapture;       /* Automatic Capture            */
328*b1cdbd2cSJim Jagielski    TW_UINT32  TimeBeforeFirstCapture; /* Automatic Capture            */
329*b1cdbd2cSJim Jagielski    TW_UINT32  TimeBetweenCaptures;    /* Automatic Capture            */
330*b1cdbd2cSJim Jagielski } TW_DEVICEEVENT, FAR * pTW_DEVICEEVENT;
331*b1cdbd2cSJim Jagielski 
332*b1cdbd2cSJim Jagielski /* No DAT needed. */
333*b1cdbd2cSJim Jagielski typedef struct {
334*b1cdbd2cSJim Jagielski    TW_UINT8    Index;    /* Value used to index into the color table. */
335*b1cdbd2cSJim Jagielski    TW_UINT8    Channel1; /* First  tri-stimulus value (e.g Red)       */
336*b1cdbd2cSJim Jagielski    TW_UINT8    Channel2; /* Second tri-stimulus value (e.g Green)     */
337*b1cdbd2cSJim Jagielski    TW_UINT8    Channel3; /* Third  tri-stimulus value (e.g Blue)      */
338*b1cdbd2cSJim Jagielski } TW_ELEMENT8, FAR * pTW_ELEMENT8;
339*b1cdbd2cSJim Jagielski 
340*b1cdbd2cSJim Jagielski /* TWON_ENUMERATION. Container for a collection of values. */
341*b1cdbd2cSJim Jagielski typedef struct {
342*b1cdbd2cSJim Jagielski    TW_UINT16  ItemType;
343*b1cdbd2cSJim Jagielski    TW_UINT32  NumItems;     /* How many items in ItemList                 */
344*b1cdbd2cSJim Jagielski    TW_UINT32  CurrentIndex; /* Current value is in ItemList[CurrentIndex] */
345*b1cdbd2cSJim Jagielski    TW_UINT32  DefaultIndex; /* Powerup value is in ItemList[DefaultIndex] */
346*b1cdbd2cSJim Jagielski    TW_UINT8   ItemList[1];  /* Array of ItemType values starts here       */
347*b1cdbd2cSJim Jagielski } TW_ENUMERATION, FAR * pTW_ENUMERATION;
348*b1cdbd2cSJim Jagielski 
349*b1cdbd2cSJim Jagielski /* DAT_EVENT. For passing events down from the application to the DS. */
350*b1cdbd2cSJim Jagielski typedef struct {
351*b1cdbd2cSJim Jagielski    TW_MEMREF  pEvent;    /* Windows pMSG or Mac pEvent.                 */
352*b1cdbd2cSJim Jagielski    TW_UINT16  TWMessage; /* TW msg from data source, e.g. MSG_XFERREADY */
353*b1cdbd2cSJim Jagielski } TW_EVENT, FAR * pTW_EVENT;
354*b1cdbd2cSJim Jagielski 
355*b1cdbd2cSJim Jagielski typedef struct {
356*b1cdbd2cSJim Jagielski     TW_UINT16   InfoID;
357*b1cdbd2cSJim Jagielski     TW_UINT16   ItemType;
358*b1cdbd2cSJim Jagielski     TW_UINT16   NumItems;
359*b1cdbd2cSJim Jagielski     union {
360*b1cdbd2cSJim Jagielski       TW_UINT16   CondCode;    /* Depreciated, use ReturnCode. TWAIN 2.0 and older. */
361*b1cdbd2cSJim Jagielski       TW_UINT16   ReturnCode;  /* TWAIN 2.1 and newer */
362*b1cdbd2cSJim Jagielski     };
363*b1cdbd2cSJim Jagielski     TW_UINTPTR  Item;
364*b1cdbd2cSJim Jagielski }TW_INFO, FAR* pTW_INFO;
365*b1cdbd2cSJim Jagielski 
366*b1cdbd2cSJim Jagielski typedef struct {
367*b1cdbd2cSJim Jagielski     TW_UINT32   NumInfos;
368*b1cdbd2cSJim Jagielski     TW_INFO     Info[1];
369*b1cdbd2cSJim Jagielski }TW_EXTIMAGEINFO, FAR* pTW_EXTIMAGEINFO;
370*b1cdbd2cSJim Jagielski 
371*b1cdbd2cSJim Jagielski /* DAT_FILESYSTEM, information about TWAIN file system */
372*b1cdbd2cSJim Jagielski typedef struct {
373*b1cdbd2cSJim Jagielski    /* DG_CONTROL / DAT_FILESYSTEM / MSG_xxxx fields     */
374*b1cdbd2cSJim Jagielski    TW_STR255  InputName; /* The name of the input or source file */
375*b1cdbd2cSJim Jagielski    TW_STR255  OutputName; /* The result of an operation or the name of a destination file */
376*b1cdbd2cSJim Jagielski    TW_MEMREF  Context; /* Source specific data used to remember state information */
377*b1cdbd2cSJim Jagielski    /* DG_CONTROL / DAT_FILESYSTEM / MSG_DELETE field    */
378*b1cdbd2cSJim Jagielski    int        Recursive; /* recursively delete all sub-directories */
379*b1cdbd2cSJim Jagielski    /* DG_CONTROL / DAT_FILESYSTEM / MSG_GETINFO fields  */
380*b1cdbd2cSJim Jagielski    TW_INT32   FileType; /* One of the TWFY_xxxx values */
381*b1cdbd2cSJim Jagielski    TW_UINT32  Size; /* Size of current FileType */
382*b1cdbd2cSJim Jagielski    TW_STR32   CreateTimeDate; /* creation date of the file */
383*b1cdbd2cSJim Jagielski    TW_STR32   ModifiedTimeDate; /* last date the file was modified */
384*b1cdbd2cSJim Jagielski    TW_UINT32  FreeSpace; /* bytes of free space on the current device */
385*b1cdbd2cSJim Jagielski    TW_INT32   NewImageSize; /* estimate of the amount of space a new image would take up */
386*b1cdbd2cSJim Jagielski    TW_UINT32  NumberOfFiles; /* number of files, depends on FileType */
387*b1cdbd2cSJim Jagielski    TW_UINT32  NumberOfSnippets; /* number of audio snippets */
388*b1cdbd2cSJim Jagielski    TW_UINT32  DeviceGroupMask; /* used to group cameras (ex: front/rear bitonal, front/rear grayscale...) */
389*b1cdbd2cSJim Jagielski    char       Reserved[508]; /**/
390*b1cdbd2cSJim Jagielski } TW_FILESYSTEM, FAR * pTW_FILESYSTEM;
391*b1cdbd2cSJim Jagielski 
392*b1cdbd2cSJim Jagielski /* DAT_GRAYRESPONSE */
393*b1cdbd2cSJim Jagielski typedef struct {
394*b1cdbd2cSJim Jagielski    TW_ELEMENT8         Response[1];
395*b1cdbd2cSJim Jagielski } TW_GRAYRESPONSE, FAR * pTW_GRAYRESPONSE;
396*b1cdbd2cSJim Jagielski 
397*b1cdbd2cSJim Jagielski /* No DAT needed.  Describes version of software currently running. */
398*b1cdbd2cSJim Jagielski typedef struct {
399*b1cdbd2cSJim Jagielski    TW_UINT16  MajorNum;  /* Major revision number of the software. */
400*b1cdbd2cSJim Jagielski    TW_UINT16  MinorNum;  /* Incremental revision number of the software. */
401*b1cdbd2cSJim Jagielski    TW_UINT16  Language;  /* e.g. TWLG_SWISSFRENCH */
402*b1cdbd2cSJim Jagielski    TW_UINT16  Country;   /* e.g. TWCY_SWITZERLAND */
403*b1cdbd2cSJim Jagielski    TW_STR32   Info;      /* e.g. "1.0b3 Beta release" */
404*b1cdbd2cSJim Jagielski } TW_VERSION, FAR * pTW_VERSION;
405*b1cdbd2cSJim Jagielski 
406*b1cdbd2cSJim Jagielski /* DAT_IDENTITY. Identifies the program/library/code resource. */
407*b1cdbd2cSJim Jagielski typedef struct {
408*b1cdbd2cSJim Jagielski    TW_UINT32  Id;              /* Unique number.  In Windows, application hWnd      */
409*b1cdbd2cSJim Jagielski    TW_VERSION Version;         /* Identifies the piece of code              */
410*b1cdbd2cSJim Jagielski    TW_UINT16  ProtocolMajor;   /* Application and DS must set to TWON_PROTOCOLMAJOR */
411*b1cdbd2cSJim Jagielski    TW_UINT16  ProtocolMinor;   /* Application and DS must set to TWON_PROTOCOLMINOR */
412*b1cdbd2cSJim Jagielski    TW_UINT32  SupportedGroups; /* Bit field OR combination of DG_ constants */
413*b1cdbd2cSJim Jagielski    TW_STR32   Manufacturer;    /* Manufacturer name, e.g. "Hewlett-Packard" */
414*b1cdbd2cSJim Jagielski    TW_STR32   ProductFamily;   /* Product family name, e.g. "ScanJet"       */
415*b1cdbd2cSJim Jagielski    TW_STR32   ProductName;     /* Product name, e.g. "ScanJet Plus"         */
416*b1cdbd2cSJim Jagielski } TW_IDENTITY, FAR * pTW_IDENTITY;
417*b1cdbd2cSJim Jagielski 
418*b1cdbd2cSJim Jagielski /* DAT_IMAGEINFO. Application gets detailed image info from DS with this. */
419*b1cdbd2cSJim Jagielski typedef struct {
420*b1cdbd2cSJim Jagielski    TW_FIX32   XResolution;      /* Resolution in the horizontal             */
421*b1cdbd2cSJim Jagielski    TW_FIX32   YResolution;      /* Resolution in the vertical               */
422*b1cdbd2cSJim Jagielski    TW_INT32   ImageWidth;       /* Columns in the image, -1 if unknown by DS*/
423*b1cdbd2cSJim Jagielski    TW_INT32   ImageLength;      /* Rows in the image, -1 if unknown by DS   */
424*b1cdbd2cSJim Jagielski    TW_INT16   SamplesPerPixel;  /* Number of samples per pixel, 3 for RGB   */
425*b1cdbd2cSJim Jagielski    TW_INT16   BitsPerSample[8]; /* Number of bits for each sample           */
426*b1cdbd2cSJim Jagielski    TW_INT16   BitsPerPixel;     /* Number of bits for each padded pixel     */
427*b1cdbd2cSJim Jagielski    TW_BOOL    Planar;           /* True if Planar, False if chunky          */
428*b1cdbd2cSJim Jagielski    TW_INT16   PixelType;        /* How to interp data; photo interp (TWPT_) */
429*b1cdbd2cSJim Jagielski    TW_UINT16  Compression;      /* How the data is compressed (TWCP_xxxx)   */
430*b1cdbd2cSJim Jagielski } TW_IMAGEINFO, FAR * pTW_IMAGEINFO;
431*b1cdbd2cSJim Jagielski 
432*b1cdbd2cSJim Jagielski /* DAT_IMAGELAYOUT. Provides image layout information in current units. */
433*b1cdbd2cSJim Jagielski typedef struct {
434*b1cdbd2cSJim Jagielski    TW_FRAME   Frame;          /* Frame coords within larger document */
435*b1cdbd2cSJim Jagielski    TW_UINT32  DocumentNumber;
436*b1cdbd2cSJim Jagielski    TW_UINT32  PageNumber;     /* Reset when you go to next document  */
437*b1cdbd2cSJim Jagielski    TW_UINT32  FrameNumber;    /* Reset when you go to next page      */
438*b1cdbd2cSJim Jagielski } TW_IMAGELAYOUT, FAR * pTW_IMAGELAYOUT;
439*b1cdbd2cSJim Jagielski 
440*b1cdbd2cSJim Jagielski /* No DAT needed.  Used to manage memory buffers. */
441*b1cdbd2cSJim Jagielski typedef struct {
442*b1cdbd2cSJim Jagielski    TW_UINT32  Flags;  /* Any combination of the TWMF_ constants.           */
443*b1cdbd2cSJim Jagielski    TW_UINT32  Length; /* Number of bytes stored in buffer TheMem.          */
444*b1cdbd2cSJim Jagielski    TW_MEMREF  TheMem; /* Pointer or handle to the allocated memory buffer. */
445*b1cdbd2cSJim Jagielski } TW_MEMORY, FAR * pTW_MEMORY;
446*b1cdbd2cSJim Jagielski 
447*b1cdbd2cSJim Jagielski /* DAT_IMAGEMEMXFER. Used to pass image data (e.g. in strips) from DS to application.*/
448*b1cdbd2cSJim Jagielski typedef struct {
449*b1cdbd2cSJim Jagielski    TW_UINT16  Compression;  /* How the data is compressed                */
450*b1cdbd2cSJim Jagielski    TW_UINT32  BytesPerRow;  /* Number of bytes in a row of data          */
451*b1cdbd2cSJim Jagielski    TW_UINT32  Columns;      /* How many columns                          */
452*b1cdbd2cSJim Jagielski    TW_UINT32  Rows;         /* How many rows                             */
453*b1cdbd2cSJim Jagielski    TW_UINT32  XOffset;      /* How far from the side of the image        */
454*b1cdbd2cSJim Jagielski    TW_UINT32  YOffset;      /* How far from the top of the image         */
455*b1cdbd2cSJim Jagielski    TW_UINT32  BytesWritten; /* How many bytes written in Memory          */
456*b1cdbd2cSJim Jagielski    TW_MEMORY  Memory;       /* Mem struct used to pass actual image data */
457*b1cdbd2cSJim Jagielski } TW_IMAGEMEMXFER, FAR * pTW_IMAGEMEMXFER;
458*b1cdbd2cSJim Jagielski 
459*b1cdbd2cSJim Jagielski /* Changed in 1.1: QuantTable, HuffmanDC, HuffmanAC TW_MEMREF -> TW_MEMORY  */
460*b1cdbd2cSJim Jagielski /* DAT_JPEGCOMPRESSION. Based on JPEG Draft International Std, ver 10918-1. */
461*b1cdbd2cSJim Jagielski typedef struct {
462*b1cdbd2cSJim Jagielski    TW_UINT16   ColorSpace;       /* One of the TWPT_xxxx values                */
463*b1cdbd2cSJim Jagielski    TW_UINT32   SubSampling;      /* Two word "array" for subsampling values    */
464*b1cdbd2cSJim Jagielski    TW_UINT16   NumComponents;    /* Number of color components in image        */
465*b1cdbd2cSJim Jagielski    TW_UINT16   RestartFrequency; /* Frequency of restart marker codes in MDU's */
466*b1cdbd2cSJim Jagielski    TW_UINT16   QuantMap[4];      /* Mapping of components to QuantTables       */
467*b1cdbd2cSJim Jagielski    TW_MEMORY   QuantTable[4];    /* Quantization tables                        */
468*b1cdbd2cSJim Jagielski    TW_UINT16   HuffmanMap[4];    /* Mapping of components to Huffman tables    */
469*b1cdbd2cSJim Jagielski    TW_MEMORY   HuffmanDC[2];     /* DC Huffman tables                          */
470*b1cdbd2cSJim Jagielski    TW_MEMORY   HuffmanAC[2];     /* AC Huffman tables                          */
471*b1cdbd2cSJim Jagielski } TW_JPEGCOMPRESSION, FAR * pTW_JPEGCOMPRESSION;
472*b1cdbd2cSJim Jagielski 
473*b1cdbd2cSJim Jagielski /* TWON_ONEVALUE. Container for one value. */
474*b1cdbd2cSJim Jagielski typedef struct {
475*b1cdbd2cSJim Jagielski    TW_UINT16  ItemType;
476*b1cdbd2cSJim Jagielski    TW_UINT32  Item;
477*b1cdbd2cSJim Jagielski } TW_ONEVALUE, FAR * pTW_ONEVALUE;
478*b1cdbd2cSJim Jagielski 
479*b1cdbd2cSJim Jagielski /* DAT_PALETTE8. Color palette when TWPT_PALETTE pixels xfer'd in mem buf. */
480*b1cdbd2cSJim Jagielski typedef struct {
481*b1cdbd2cSJim Jagielski    TW_UINT16    NumColors;   /* Number of colors in the color table.  */
482*b1cdbd2cSJim Jagielski    TW_UINT16    PaletteType; /* TWPA_xxxx, specifies type of palette. */
483*b1cdbd2cSJim Jagielski    TW_ELEMENT8  Colors[256]; /* Array of palette values starts here.  */
484*b1cdbd2cSJim Jagielski } TW_PALETTE8, FAR * pTW_PALETTE8;
485*b1cdbd2cSJim Jagielski 
486*b1cdbd2cSJim Jagielski /* DAT_PASSTHRU, device dependant data to pass through Data Source */
487*b1cdbd2cSJim Jagielski typedef struct {
488*b1cdbd2cSJim Jagielski    TW_MEMREF  pCommand;        /* Pointer to Command buffer */
489*b1cdbd2cSJim Jagielski    TW_UINT32  CommandBytes;    /* Number of bytes in Command buffer */
490*b1cdbd2cSJim Jagielski    TW_INT32   Direction;       /* One of the TWDR_xxxx values.  Defines the direction of data flow */
491*b1cdbd2cSJim Jagielski    TW_MEMREF  pData;           /* Pointer to Data buffer */
492*b1cdbd2cSJim Jagielski    TW_UINT32  DataBytes;       /* Number of bytes in Data buffer */
493*b1cdbd2cSJim Jagielski    TW_UINT32  DataBytesXfered; /* Number of bytes successfully transferred */
494*b1cdbd2cSJim Jagielski } TW_PASSTHRU, FAR * pTW_PASSTHRU;
495*b1cdbd2cSJim Jagielski 
496*b1cdbd2cSJim Jagielski /* DAT_PENDINGXFERS. Used with MSG_ENDXFER to indicate additional data. */
497*b1cdbd2cSJim Jagielski typedef struct {
498*b1cdbd2cSJim Jagielski    TW_UINT16 Count;
499*b1cdbd2cSJim Jagielski    union {
500*b1cdbd2cSJim Jagielski       TW_UINT32 EOJ;
501*b1cdbd2cSJim Jagielski       TW_UINT32 Reserved;
502*b1cdbd2cSJim Jagielski    };
503*b1cdbd2cSJim Jagielski } TW_PENDINGXFERS, FAR *pTW_PENDINGXFERS;
504*b1cdbd2cSJim Jagielski 
505*b1cdbd2cSJim Jagielski /* TWON_RANGE. Container for a range of values. */
506*b1cdbd2cSJim Jagielski typedef struct {
507*b1cdbd2cSJim Jagielski    TW_UINT16  ItemType;
508*b1cdbd2cSJim Jagielski    TW_UINT32  MinValue;     /* Starting value in the range.           */
509*b1cdbd2cSJim Jagielski    TW_UINT32  MaxValue;     /* Final value in the range.              */
510*b1cdbd2cSJim Jagielski    TW_UINT32  StepSize;     /* Increment from MinValue to MaxValue.   */
511*b1cdbd2cSJim Jagielski    TW_UINT32  DefaultValue; /* Power-up value.                        */
512*b1cdbd2cSJim Jagielski    TW_UINT32  CurrentValue; /* The value that is currently in effect. */
513*b1cdbd2cSJim Jagielski } TW_RANGE, FAR * pTW_RANGE;
514*b1cdbd2cSJim Jagielski 
515*b1cdbd2cSJim Jagielski /* DAT_RGBRESPONSE */
516*b1cdbd2cSJim Jagielski typedef struct {
517*b1cdbd2cSJim Jagielski    TW_ELEMENT8         Response[1];
518*b1cdbd2cSJim Jagielski } TW_RGBRESPONSE, FAR * pTW_RGBRESPONSE;
519*b1cdbd2cSJim Jagielski 
520*b1cdbd2cSJim Jagielski /* DAT_SETUPFILEXFER. Sets up DS to application data transfer via a file. */
521*b1cdbd2cSJim Jagielski typedef struct {
522*b1cdbd2cSJim Jagielski    TW_STR255 FileName;
523*b1cdbd2cSJim Jagielski    TW_UINT16 Format;   /* Any TWFF_ constant */
524*b1cdbd2cSJim Jagielski    TW_INT16  VRefNum;  /* Used for Mac only  */
525*b1cdbd2cSJim Jagielski } TW_SETUPFILEXFER, FAR * pTW_SETUPFILEXFER;
526*b1cdbd2cSJim Jagielski 
527*b1cdbd2cSJim Jagielski /* DAT_SETUPMEMXFER. Sets up DS to application data transfer via a memory buffer. */
528*b1cdbd2cSJim Jagielski typedef struct {
529*b1cdbd2cSJim Jagielski    TW_UINT32 MinBufSize;
530*b1cdbd2cSJim Jagielski    TW_UINT32 MaxBufSize;
531*b1cdbd2cSJim Jagielski    TW_UINT32 Preferred;
532*b1cdbd2cSJim Jagielski } TW_SETUPMEMXFER, FAR * pTW_SETUPMEMXFER;
533*b1cdbd2cSJim Jagielski 
534*b1cdbd2cSJim Jagielski /* DAT_STATUS. Application gets detailed status info from a data source with this. */
535*b1cdbd2cSJim Jagielski typedef struct {
536*b1cdbd2cSJim Jagielski    TW_UINT16  ConditionCode;  /* Any TWCC_ constant     */
537*b1cdbd2cSJim Jagielski    union {
538*b1cdbd2cSJim Jagielski      TW_UINT16  Data;         /* output (TWAIN 2.1 and newer) This field contains additional data. */
539*b1cdbd2cSJim Jagielski      TW_UINT16  Reserved;     /* output (TWAIN 2.0 and older) */
540*b1cdbd2cSJim Jagielski    };
541*b1cdbd2cSJim Jagielski } TW_STATUS, FAR * pTW_STATUS;
542*b1cdbd2cSJim Jagielski 
543*b1cdbd2cSJim Jagielski /* DAT_STATUSUTF8. Application gets detailed UTF8 status info from a data source with this.  Added 2.1 */
544*b1cdbd2cSJim Jagielski typedef struct {
545*b1cdbd2cSJim Jagielski    TW_STATUS    Status;         /* input  TW_STATUS data received from a previous call to DG_CONTROL / DAT_STATUS / MSG_GET. */
546*b1cdbd2cSJim Jagielski    TW_UINT32    Size;           /* output Total number of bytes in the UTF8string, plus the terminating NUL byte.  This is not the same as the total number of characters in the string. */
547*b1cdbd2cSJim Jagielski    TW_HANDLE    UTF8string;     /* output TW_HANDLE to a UTF-8 encoded localized string (based on TW_IDENTITY.Language or CAP_LANGUAGE).  The Source allocates it, the Application frees it. */
548*b1cdbd2cSJim Jagielski } TW_STATUSUTF8, FAR * pTW_STATUSUTF8;
549*b1cdbd2cSJim Jagielski 
550*b1cdbd2cSJim Jagielski /* DAT_USERINTERFACE. Coordinates UI between application and data source. */
551*b1cdbd2cSJim Jagielski typedef struct {
552*b1cdbd2cSJim Jagielski    TW_BOOL    ShowUI;  /* TRUE if DS should bring up its UI           */
553*b1cdbd2cSJim Jagielski    TW_BOOL    ModalUI; /* For Mac only - true if the DS's UI is modal */
554*b1cdbd2cSJim Jagielski    TW_HANDLE  hParent; /* For windows only - Application window handle        */
555*b1cdbd2cSJim Jagielski } TW_USERINTERFACE, FAR * pTW_USERINTERFACE;
556*b1cdbd2cSJim Jagielski 
557*b1cdbd2cSJim Jagielski 
558*b1cdbd2cSJim Jagielski 
559*b1cdbd2cSJim Jagielski /****************************************************************************
560*b1cdbd2cSJim Jagielski  * Generic Constants                                                        *
561*b1cdbd2cSJim Jagielski  ****************************************************************************/
562*b1cdbd2cSJim Jagielski 
563*b1cdbd2cSJim Jagielski #define TWON_ARRAY           3 /* indicates TW_ARRAY container       */
564*b1cdbd2cSJim Jagielski #define TWON_ENUMERATION     4 /* indicates TW_ENUMERATION container */
565*b1cdbd2cSJim Jagielski #define TWON_ONEVALUE        5 /* indicates TW_ONEVALUE container    */
566*b1cdbd2cSJim Jagielski #define TWON_RANGE           6 /* indicates TW_RANGE container       */
567*b1cdbd2cSJim Jagielski 
568*b1cdbd2cSJim Jagielski #define TWON_ICONID          962 /* res Id of icon used in USERSELECT lbox */
569*b1cdbd2cSJim Jagielski #define TWON_DSMID           461 /* res Id of the DSM version num resource */
570*b1cdbd2cSJim Jagielski #define TWON_DSMCODEID       63  /* res Id of the Mac SM Code resource     */
571*b1cdbd2cSJim Jagielski 
572*b1cdbd2cSJim Jagielski #define TWON_DONTCARE8       0xff
573*b1cdbd2cSJim Jagielski #define TWON_DONTCARE16      0xffff
574*b1cdbd2cSJim Jagielski #define TWON_DONTCARE32      0xffffffff
575*b1cdbd2cSJim Jagielski 
576*b1cdbd2cSJim Jagielski /* Flags used in TW_MEMORY structure. */
577*b1cdbd2cSJim Jagielski #define TWMF_APPOWNS     0x1
578*b1cdbd2cSJim Jagielski #define TWMF_DSMOWNS     0x2
579*b1cdbd2cSJim Jagielski #define TWMF_DSOWNS      0x4
580*b1cdbd2cSJim Jagielski #define TWMF_POINTER     0x8
581*b1cdbd2cSJim Jagielski #define TWMF_HANDLE      0x10
582*b1cdbd2cSJim Jagielski 
583*b1cdbd2cSJim Jagielski /* There are four containers used for capabilities negotiation:
584*b1cdbd2cSJim Jagielski  *    TWON_ONEVALUE, TWON_RANGE, TWON_ENUMERATION, TWON_ARRAY
585*b1cdbd2cSJim Jagielski  * In each container structure ItemType can be TWTY_INT8, TWTY_INT16, etc.
586*b1cdbd2cSJim Jagielski  * The kind of data stored in the container can be determined by doing
587*b1cdbd2cSJim Jagielski  * DCItemSize[ItemType] where the following is defined in TWAIN glue code:
588*b1cdbd2cSJim Jagielski  *          DCItemSize[]= { sizeof(TW_INT8),
589*b1cdbd2cSJim Jagielski  *                          sizeof(TW_INT16),
590*b1cdbd2cSJim Jagielski  *                          etc.
591*b1cdbd2cSJim Jagielski  *                          sizeof(TW_UINT32) };
592*b1cdbd2cSJim Jagielski  *
593*b1cdbd2cSJim Jagielski  */
594*b1cdbd2cSJim Jagielski 
595*b1cdbd2cSJim Jagielski #define TWTY_INT8        0x0000    /* Means Item is a TW_INT8   */
596*b1cdbd2cSJim Jagielski #define TWTY_INT16       0x0001    /* Means Item is a TW_INT16  */
597*b1cdbd2cSJim Jagielski #define TWTY_INT32       0x0002    /* Means Item is a TW_INT32  */
598*b1cdbd2cSJim Jagielski 
599*b1cdbd2cSJim Jagielski #define TWTY_UINT8       0x0003    /* Means Item is a TW_UINT8  */
600*b1cdbd2cSJim Jagielski #define TWTY_UINT16      0x0004    /* Means Item is a TW_UINT16 */
601*b1cdbd2cSJim Jagielski #define TWTY_UINT32      0x0005    /* Means Item is a TW_UINT32 */
602*b1cdbd2cSJim Jagielski 
603*b1cdbd2cSJim Jagielski #define TWTY_BOOL        0x0006    /* Means Item is a TW_BOOL   */
604*b1cdbd2cSJim Jagielski 
605*b1cdbd2cSJim Jagielski #define TWTY_FIX32       0x0007    /* Means Item is a TW_FIX32  */
606*b1cdbd2cSJim Jagielski 
607*b1cdbd2cSJim Jagielski #define TWTY_FRAME       0x0008    /* Means Item is a TW_FRAME  */
608*b1cdbd2cSJim Jagielski 
609*b1cdbd2cSJim Jagielski #define TWTY_STR32       0x0009    /* Means Item is a TW_STR32  */
610*b1cdbd2cSJim Jagielski #define TWTY_STR64       0x000a    /* Means Item is a TW_STR64  */
611*b1cdbd2cSJim Jagielski #define TWTY_STR128      0x000b    /* Means Item is a TW_STR128 */
612*b1cdbd2cSJim Jagielski #define TWTY_STR255      0x000c    /* Means Item is a TW_STR255 */
613*b1cdbd2cSJim Jagielski #define TWTY_HANDLE      0x000f    /* Means Item is a TW_HANDLE */
614*b1cdbd2cSJim Jagielski 
615*b1cdbd2cSJim Jagielski 
616*b1cdbd2cSJim Jagielski /****************************************************************************
617*b1cdbd2cSJim Jagielski  * Capability Constants                                                     *
618*b1cdbd2cSJim Jagielski  ****************************************************************************/
619*b1cdbd2cSJim Jagielski 
620*b1cdbd2cSJim Jagielski /* CAP_ALARMS values (AL_ means alarms) Added 1.8  */
621*b1cdbd2cSJim Jagielski #define TWAL_ALARM               0
622*b1cdbd2cSJim Jagielski #define TWAL_FEEDERERROR         1
623*b1cdbd2cSJim Jagielski #define TWAL_FEEDERWARNING       2
624*b1cdbd2cSJim Jagielski #define TWAL_BARCODE             3
625*b1cdbd2cSJim Jagielski #define TWAL_DOUBLEFEED          4
626*b1cdbd2cSJim Jagielski #define TWAL_JAM                 5
627*b1cdbd2cSJim Jagielski #define TWAL_PATCHCODE           6
628*b1cdbd2cSJim Jagielski #define TWAL_POWER               7
629*b1cdbd2cSJim Jagielski #define TWAL_SKEW                8
630*b1cdbd2cSJim Jagielski 
631*b1cdbd2cSJim Jagielski /* ICAP_AUTOSIZE values Added 2.0 */
632*b1cdbd2cSJim Jagielski #define TWAS_NONE                0
633*b1cdbd2cSJim Jagielski #define TWAS_AUTO                1
634*b1cdbd2cSJim Jagielski #define TWAS_CURRENT             2
635*b1cdbd2cSJim Jagielski 
636*b1cdbd2cSJim Jagielski /* TWEI_BARCODEROTATION values (BCOR_ means barcode rotation) Added 1.7 */
637*b1cdbd2cSJim Jagielski #define TWBCOR_ROT0              0
638*b1cdbd2cSJim Jagielski #define TWBCOR_ROT90             1
639*b1cdbd2cSJim Jagielski #define TWBCOR_ROT180            2
640*b1cdbd2cSJim Jagielski #define TWBCOR_ROT270            3
641*b1cdbd2cSJim Jagielski #define TWBCOR_ROTX              4
642*b1cdbd2cSJim Jagielski 
643*b1cdbd2cSJim Jagielski /* ICAP_BARCODESEARCHMODE values (TWBD_ means search) */
644*b1cdbd2cSJim Jagielski #define TWBD_HORZ                0
645*b1cdbd2cSJim Jagielski #define TWBD_VERT                1
646*b1cdbd2cSJim Jagielski #define TWBD_HORZVERT            2
647*b1cdbd2cSJim Jagielski #define TWBD_VERTHORZ            3
648*b1cdbd2cSJim Jagielski 
649*b1cdbd2cSJim Jagielski /* ICAP_BITORDER values (BO_ means Bit Order) */
650*b1cdbd2cSJim Jagielski #define TWBO_LSBFIRST            0
651*b1cdbd2cSJim Jagielski #define TWBO_MSBFIRST            1
652*b1cdbd2cSJim Jagielski 
653*b1cdbd2cSJim Jagielski /* ICAP_AUTODISCARDBLANKPAGES values Added 2.0 */
654*b1cdbd2cSJim Jagielski #define TWBP_DISABLE            -2
655*b1cdbd2cSJim Jagielski #define TWBP_AUTO               -1
656*b1cdbd2cSJim Jagielski 
657*b1cdbd2cSJim Jagielski /* ICAP_BITDEPTHREDUCTION values (BR_ means Bitdepth Reduction) Added 1.5 */
658*b1cdbd2cSJim Jagielski #define TWBR_THRESHOLD           0
659*b1cdbd2cSJim Jagielski #define TWBR_HALFTONE            1
660*b1cdbd2cSJim Jagielski #define TWBR_CUSTHALFTONE        2
661*b1cdbd2cSJim Jagielski #define TWBR_DIFFUSION           3
662*b1cdbd2cSJim Jagielski 
663*b1cdbd2cSJim Jagielski /* ICAP_SUPPORTEDBARCODETYPES and TWEI_BARCODETYPE values Added 1.7 */
664*b1cdbd2cSJim Jagielski #define TWBT_3OF9                 0
665*b1cdbd2cSJim Jagielski #define TWBT_2OF5INTERLEAVED      1
666*b1cdbd2cSJim Jagielski #define TWBT_2OF5NONINTERLEAVED   2
667*b1cdbd2cSJim Jagielski #define TWBT_CODE93               3
668*b1cdbd2cSJim Jagielski #define TWBT_CODE128              4
669*b1cdbd2cSJim Jagielski #define TWBT_UCC128               5
670*b1cdbd2cSJim Jagielski #define TWBT_CODABAR              6
671*b1cdbd2cSJim Jagielski #define TWBT_UPCA                 7
672*b1cdbd2cSJim Jagielski #define TWBT_UPCE                 8
673*b1cdbd2cSJim Jagielski #define TWBT_EAN8                 9
674*b1cdbd2cSJim Jagielski #define TWBT_EAN13                10
675*b1cdbd2cSJim Jagielski #define TWBT_POSTNET              11
676*b1cdbd2cSJim Jagielski #define TWBT_PDF417               12
677*b1cdbd2cSJim Jagielski #define TWBT_2OF5INDUSTRIAL       13 /* Added 1.8 */
678*b1cdbd2cSJim Jagielski #define TWBT_2OF5MATRIX           14 /* Added 1.8 */
679*b1cdbd2cSJim Jagielski #define TWBT_2OF5DATALOGIC        15 /* Added 1.8 */
680*b1cdbd2cSJim Jagielski #define TWBT_2OF5IATA             16 /* Added 1.8 */
681*b1cdbd2cSJim Jagielski #define TWBT_3OF9FULLASCII        17 /* Added 1.8 */
682*b1cdbd2cSJim Jagielski #define TWBT_CODABARWITHSTARTSTOP 18 /* Added 1.8 */
683*b1cdbd2cSJim Jagielski #define TWBT_MAXICODE             19 /* Added 1.8 */
684*b1cdbd2cSJim Jagielski 
685*b1cdbd2cSJim Jagielski /* ICAP_COMPRESSION values (CP_ means ComPression ) */
686*b1cdbd2cSJim Jagielski #define TWCP_NONE                0
687*b1cdbd2cSJim Jagielski #define TWCP_PACKBITS            1
688*b1cdbd2cSJim Jagielski #define TWCP_GROUP31D            2 /* Follows CCITT spec (no End Of Line)          */
689*b1cdbd2cSJim Jagielski #define TWCP_GROUP31DEOL         3 /* Follows CCITT spec (has End Of Line)         */
690*b1cdbd2cSJim Jagielski #define TWCP_GROUP32D            4 /* Follows CCITT spec (use cap for K Factor)    */
691*b1cdbd2cSJim Jagielski #define TWCP_GROUP4              5 /* Follows CCITT spec                           */
692*b1cdbd2cSJim Jagielski #define TWCP_JPEG                6 /* Use capability for more info                 */
693*b1cdbd2cSJim Jagielski #define TWCP_LZW                 7 /* Must license from Unisys and IBM to use      */
694*b1cdbd2cSJim Jagielski #define TWCP_JBIG                8 /* For Bitonal images  -- Added 1.7 KHL         */
695*b1cdbd2cSJim Jagielski #define TWCP_PNG                 9 /* Added 1.8 */
696*b1cdbd2cSJim Jagielski #define TWCP_RLE4               10 /* Added 1.8 */
697*b1cdbd2cSJim Jagielski #define TWCP_RLE8               11 /* Added 1.8 */
698*b1cdbd2cSJim Jagielski #define TWCP_BITFIELDS          12 /* Added 1.8 */
699*b1cdbd2cSJim Jagielski 
700*b1cdbd2cSJim Jagielski /* CAP_CAMERASIDE and TWEI_PAGESIDE values (CS_ means camera side) Added 1.91 */
701*b1cdbd2cSJim Jagielski #define TWCS_BOTH                0
702*b1cdbd2cSJim Jagielski #define TWCS_TOP                 1
703*b1cdbd2cSJim Jagielski #define TWCS_BOTTOM              2
704*b1cdbd2cSJim Jagielski 
705*b1cdbd2cSJim Jagielski /* CAP_CLEARBUFFERS values (CB_ means clear buffers) */
706*b1cdbd2cSJim Jagielski #define TWCB_AUTO                0
707*b1cdbd2cSJim Jagielski #define TWCB_CLEAR               1
708*b1cdbd2cSJim Jagielski #define TWCB_NOCLEAR             2
709*b1cdbd2cSJim Jagielski 
710*b1cdbd2cSJim Jagielski /* CAP_DEVICEEVENT values (DE_ means device event) */
711*b1cdbd2cSJim Jagielski #define TWDE_CUSTOMEVENTS           0x8000
712*b1cdbd2cSJim Jagielski #define TWDE_CHECKAUTOMATICCAPTURE  0
713*b1cdbd2cSJim Jagielski #define TWDE_CHECKBATTERY           1
714*b1cdbd2cSJim Jagielski #define TWDE_CHECKDEVICEONLINE      2
715*b1cdbd2cSJim Jagielski #define TWDE_CHECKFLASH             3
716*b1cdbd2cSJim Jagielski #define TWDE_CHECKPOWERSUPPLY       4
717*b1cdbd2cSJim Jagielski #define TWDE_CHECKRESOLUTION        5
718*b1cdbd2cSJim Jagielski #define TWDE_DEVICEADDED            6
719*b1cdbd2cSJim Jagielski #define TWDE_DEVICEOFFLINE          7
720*b1cdbd2cSJim Jagielski #define TWDE_DEVICEREADY            8
721*b1cdbd2cSJim Jagielski #define TWDE_DEVICEREMOVED          9
722*b1cdbd2cSJim Jagielski #define TWDE_IMAGECAPTURED          10
723*b1cdbd2cSJim Jagielski #define TWDE_IMAGEDELETED           11
724*b1cdbd2cSJim Jagielski #define TWDE_PAPERDOUBLEFEED        12
725*b1cdbd2cSJim Jagielski #define TWDE_PAPERJAM               13
726*b1cdbd2cSJim Jagielski #define TWDE_LAMPFAILURE            14
727*b1cdbd2cSJim Jagielski #define TWDE_POWERSAVE              15
728*b1cdbd2cSJim Jagielski #define TWDE_POWERSAVENOTIFY        16
729*b1cdbd2cSJim Jagielski 
730*b1cdbd2cSJim Jagielski /* TW_PASSTHRU.Direction values.  Added 1.8 */
731*b1cdbd2cSJim Jagielski #define TWDR_GET                 1
732*b1cdbd2cSJim Jagielski #define TWDR_SET                 2
733*b1cdbd2cSJim Jagielski 
734*b1cdbd2cSJim Jagielski /* TWEI_DESKEWSTATUS values Added 1.7 */
735*b1cdbd2cSJim Jagielski #define TWDSK_SUCCESS            0
736*b1cdbd2cSJim Jagielski #define TWDSK_REPORTONLY         1
737*b1cdbd2cSJim Jagielski #define TWDSK_FAIL               2
738*b1cdbd2cSJim Jagielski #define TWDSK_DISABLED           3
739*b1cdbd2cSJim Jagielski 
740*b1cdbd2cSJim Jagielski /* CAP_DUPLEX values Added 1.7 */
741*b1cdbd2cSJim Jagielski #define TWDX_NONE                0
742*b1cdbd2cSJim Jagielski #define TWDX_1PASSDUPLEX         1
743*b1cdbd2cSJim Jagielski #define TWDX_2PASSDUPLEX         2
744*b1cdbd2cSJim Jagielski 
745*b1cdbd2cSJim Jagielski /* CAP_FEEDERALIGNMENT values (FA_ means feeder alignment) */
746*b1cdbd2cSJim Jagielski #define TWFA_NONE                0
747*b1cdbd2cSJim Jagielski #define TWFA_LEFT                1
748*b1cdbd2cSJim Jagielski #define TWFA_CENTER              2
749*b1cdbd2cSJim Jagielski #define TWFA_RIGHT               3
750*b1cdbd2cSJim Jagielski 
751*b1cdbd2cSJim Jagielski /* ICAP_FEEDERTYPE */
752*b1cdbd2cSJim Jagielski #define TWFE_GENERAL             0
753*b1cdbd2cSJim Jagielski #define TWFE_PHOTO               1
754*b1cdbd2cSJim Jagielski 
755*b1cdbd2cSJim Jagielski /* ICAP_IMAGEFILEFORMAT values (FF_means File Format)   */
756*b1cdbd2cSJim Jagielski #define TWFF_TIFF                0    /* Tagged Image File Format     */
757*b1cdbd2cSJim Jagielski #define TWFF_PICT                1    /* Macintosh PICT               */
758*b1cdbd2cSJim Jagielski #define TWFF_BMP                 2    /* Windows Bitmap               */
759*b1cdbd2cSJim Jagielski #define TWFF_XBM                 3    /* X-Windows Bitmap             */
760*b1cdbd2cSJim Jagielski #define TWFF_JFIF                4    /* JPEG File Interchange Format */
761*b1cdbd2cSJim Jagielski #define TWFF_FPX                 5    /* Flash Pix                    */
762*b1cdbd2cSJim Jagielski #define TWFF_TIFFMULTI           6    /* Multi-page tiff file         */
763*b1cdbd2cSJim Jagielski #define TWFF_PNG                 7
764*b1cdbd2cSJim Jagielski #define TWFF_SPIFF               8
765*b1cdbd2cSJim Jagielski #define TWFF_EXIF                9
766*b1cdbd2cSJim Jagielski #define TWFF_PDF                10    /* 1.91 NB: this is not PDF/A */
767*b1cdbd2cSJim Jagielski #define TWFF_JP2                11    /* 1.91 */
768*b1cdbd2cSJim Jagielski #define TWFF_JPX                13    /* 1.91 */
769*b1cdbd2cSJim Jagielski #define TWFF_DEJAVU             14    /* 1.91 */
770*b1cdbd2cSJim Jagielski #define TWFF_PDFA               15    /* 2.0 Adobe PDF/A, Version 1*/
771*b1cdbd2cSJim Jagielski #define TWFF_PDFA2              16    /* 2.1 Adobe PDF/A, Version 2*/
772*b1cdbd2cSJim Jagielski 
773*b1cdbd2cSJim Jagielski /* ICAP_FLASHUSED2 values (FL_ means flash) */
774*b1cdbd2cSJim Jagielski #define TWFL_NONE                0
775*b1cdbd2cSJim Jagielski #define TWFL_OFF                 1
776*b1cdbd2cSJim Jagielski #define TWFL_ON                  2
777*b1cdbd2cSJim Jagielski #define TWFL_AUTO                3
778*b1cdbd2cSJim Jagielski #define TWFL_REDEYE              4
779*b1cdbd2cSJim Jagielski 
780*b1cdbd2cSJim Jagielski /* CAP_FEEDERORDER values (FO_ means feeder order) */
781*b1cdbd2cSJim Jagielski #define TWFO_FIRSTPAGEFIRST      0
782*b1cdbd2cSJim Jagielski #define TWFO_LASTPAGEFIRST       1
783*b1cdbd2cSJim Jagielski 
784*b1cdbd2cSJim Jagielski /* CAP_FEEDERPOCKET */
785*b1cdbd2cSJim Jagielski #define TWFP_POCKETERROR         0
786*b1cdbd2cSJim Jagielski #define TWFP_POCKET1             1
787*b1cdbd2cSJim Jagielski #define TWFP_POCKET2             2
788*b1cdbd2cSJim Jagielski #define TWFP_POCKET3             3
789*b1cdbd2cSJim Jagielski #define TWFP_POCKET4             4
790*b1cdbd2cSJim Jagielski #define TWFP_POCKET5             5
791*b1cdbd2cSJim Jagielski #define TWFP_POCKET6             6
792*b1cdbd2cSJim Jagielski #define TWFP_POCKET7             7
793*b1cdbd2cSJim Jagielski #define TWFP_POCKET8             8
794*b1cdbd2cSJim Jagielski #define TWFP_POCKET9             9
795*b1cdbd2cSJim Jagielski #define TWFP_POCKET10           10
796*b1cdbd2cSJim Jagielski #define TWFP_POCKET11           11
797*b1cdbd2cSJim Jagielski #define TWFP_POCKET12           12
798*b1cdbd2cSJim Jagielski #define TWFP_POCKET13           13
799*b1cdbd2cSJim Jagielski #define TWFP_POCKET14           14
800*b1cdbd2cSJim Jagielski #define TWFP_POCKET15           15
801*b1cdbd2cSJim Jagielski #define TWFP_POCKET16           16
802*b1cdbd2cSJim Jagielski 
803*b1cdbd2cSJim Jagielski /* ICAP_FLIPROTATION values (FR_ means flip rotation) */
804*b1cdbd2cSJim Jagielski #define TWFR_BOOK                0
805*b1cdbd2cSJim Jagielski #define TWFR_FANFOLD             1
806*b1cdbd2cSJim Jagielski 
807*b1cdbd2cSJim Jagielski /* ICAP_FILTER values (FT_ means Filter Type) */
808*b1cdbd2cSJim Jagielski #define TWFT_RED                 0
809*b1cdbd2cSJim Jagielski #define TWFT_GREEN               1
810*b1cdbd2cSJim Jagielski #define TWFT_BLUE                2
811*b1cdbd2cSJim Jagielski #define TWFT_NONE                3
812*b1cdbd2cSJim Jagielski #define TWFT_WHITE               4
813*b1cdbd2cSJim Jagielski #define TWFT_CYAN                5
814*b1cdbd2cSJim Jagielski #define TWFT_MAGENTA             6
815*b1cdbd2cSJim Jagielski #define TWFT_YELLOW              7
816*b1cdbd2cSJim Jagielski #define TWFT_BLACK               8
817*b1cdbd2cSJim Jagielski 
818*b1cdbd2cSJim Jagielski /* TW_FILESYSTEM.FileType values (FY_ means file type) */
819*b1cdbd2cSJim Jagielski #define TWFY_CAMERA              0
820*b1cdbd2cSJim Jagielski #define TWFY_CAMERATOP           1
821*b1cdbd2cSJim Jagielski #define TWFY_CAMERABOTTOM        2
822*b1cdbd2cSJim Jagielski #define TWFY_CAMERAPREVIEW       3
823*b1cdbd2cSJim Jagielski #define TWFY_DOMAIN              4
824*b1cdbd2cSJim Jagielski #define TWFY_HOST                5
825*b1cdbd2cSJim Jagielski #define TWFY_DIRECTORY           6
826*b1cdbd2cSJim Jagielski #define TWFY_IMAGE               7
827*b1cdbd2cSJim Jagielski #define TWFY_UNKNOWN             8
828*b1cdbd2cSJim Jagielski 
829*b1cdbd2cSJim Jagielski /* ICAP_ICCPROFILE */
830*b1cdbd2cSJim Jagielski #define TWIC_NONE                0
831*b1cdbd2cSJim Jagielski #define TWIC_LINK                1
832*b1cdbd2cSJim Jagielski #define TWIC_EMBED               2
833*b1cdbd2cSJim Jagielski 
834*b1cdbd2cSJim Jagielski /* ICAP_IMAGEFILTER values (IF_ means image filter) */
835*b1cdbd2cSJim Jagielski #define TWIF_NONE                0
836*b1cdbd2cSJim Jagielski #define TWIF_AUTO                1
837*b1cdbd2cSJim Jagielski #define TWIF_LOWPASS             2
838*b1cdbd2cSJim Jagielski #define TWIF_BANDPASS            3
839*b1cdbd2cSJim Jagielski #define TWIF_HIGHPASS            4
840*b1cdbd2cSJim Jagielski #define TWIF_TEXT                TWIF_BANDPASS
841*b1cdbd2cSJim Jagielski #define TWIF_FINELINE            TWIF_HIGHPASS
842*b1cdbd2cSJim Jagielski 
843*b1cdbd2cSJim Jagielski /* ICAP_IMAGEMERGE values (IM_ means image merge) */
844*b1cdbd2cSJim Jagielski #define TWIM_NONE                0
845*b1cdbd2cSJim Jagielski #define TWIM_FRONTONTOP          1
846*b1cdbd2cSJim Jagielski #define TWIM_FRONTONBOTTOM       2
847*b1cdbd2cSJim Jagielski #define TWIM_FRONTONLEFT         3
848*b1cdbd2cSJim Jagielski #define TWIM_FRONTONRIGHT        4
849*b1cdbd2cSJim Jagielski 
850*b1cdbd2cSJim Jagielski /* CAP_JOBCONTROL values Added 1.7  */
851*b1cdbd2cSJim Jagielski #define TWJC_NONE                0
852*b1cdbd2cSJim Jagielski #define TWJC_JSIC                1
853*b1cdbd2cSJim Jagielski #define TWJC_JSIS                2
854*b1cdbd2cSJim Jagielski #define TWJC_JSXC                3
855*b1cdbd2cSJim Jagielski #define TWJC_JSXS                4
856*b1cdbd2cSJim Jagielski 
857*b1cdbd2cSJim Jagielski /* ICAP_JPEGQUALITY values (JQ_ means jpeg quality) */
858*b1cdbd2cSJim Jagielski #define TWJQ_UNKNOWN            -4
859*b1cdbd2cSJim Jagielski #define TWJQ_LOW                -3
860*b1cdbd2cSJim Jagielski #define TWJQ_MEDIUM             -2
861*b1cdbd2cSJim Jagielski #define TWJQ_HIGH               -1
862*b1cdbd2cSJim Jagielski 
863*b1cdbd2cSJim Jagielski /* ICAP_LIGHTPATH values (LP_ means Light Path) */
864*b1cdbd2cSJim Jagielski #define TWLP_REFLECTIVE          0
865*b1cdbd2cSJim Jagielski #define TWLP_TRANSMISSIVE        1
866*b1cdbd2cSJim Jagielski 
867*b1cdbd2cSJim Jagielski /* ICAP_LIGHTSOURCE values (LS_ means Light Source) */
868*b1cdbd2cSJim Jagielski #define TWLS_RED                 0
869*b1cdbd2cSJim Jagielski #define TWLS_GREEN               1
870*b1cdbd2cSJim Jagielski #define TWLS_BLUE                2
871*b1cdbd2cSJim Jagielski #define TWLS_NONE                3
872*b1cdbd2cSJim Jagielski #define TWLS_WHITE               4
873*b1cdbd2cSJim Jagielski #define TWLS_UV                  5
874*b1cdbd2cSJim Jagielski #define TWLS_IR                  6
875*b1cdbd2cSJim Jagielski 
876*b1cdbd2cSJim Jagielski /* TWEI_MAGTYPE values (MD_ means Mag Type) Added 2.0 */
877*b1cdbd2cSJim Jagielski #define TWMD_MICR                0  /* Added 2.0 */
878*b1cdbd2cSJim Jagielski #define TWMD_RAW                 1  /* added 2.1 */
879*b1cdbd2cSJim Jagielski #define TWMD_INVALID             2  /* added 2.1 */
880*b1cdbd2cSJim Jagielski 
881*b1cdbd2cSJim Jagielski /* ICAP_NOISEFILTER values (NF_ means noise filter) */
882*b1cdbd2cSJim Jagielski #define TWNF_NONE                0
883*b1cdbd2cSJim Jagielski #define TWNF_AUTO                1
884*b1cdbd2cSJim Jagielski #define TWNF_LONEPIXEL           2
885*b1cdbd2cSJim Jagielski #define TWNF_MAJORITYRULE        3
886*b1cdbd2cSJim Jagielski 
887*b1cdbd2cSJim Jagielski /* ICAP_ORIENTATION values (OR_ means ORientation) */
888*b1cdbd2cSJim Jagielski #define TWOR_ROT0                0
889*b1cdbd2cSJim Jagielski #define TWOR_ROT90               1
890*b1cdbd2cSJim Jagielski #define TWOR_ROT180              2
891*b1cdbd2cSJim Jagielski #define TWOR_ROT270              3
892*b1cdbd2cSJim Jagielski #define TWOR_PORTRAIT            TWOR_ROT0
893*b1cdbd2cSJim Jagielski #define TWOR_LANDSCAPE           TWOR_ROT270
894*b1cdbd2cSJim Jagielski #define TWOR_AUTO                4           /* 2.0 */
895*b1cdbd2cSJim Jagielski #define TWOR_AUTOTEXT            5           /* 2.0 */
896*b1cdbd2cSJim Jagielski #define TWOR_AUTOPICTURE         6           /* 2.0 */
897*b1cdbd2cSJim Jagielski 
898*b1cdbd2cSJim Jagielski /* ICAP_OVERSCAN values (OV_ means overscan) */
899*b1cdbd2cSJim Jagielski #define TWOV_NONE                0
900*b1cdbd2cSJim Jagielski #define TWOV_AUTO                1
901*b1cdbd2cSJim Jagielski #define TWOV_TOPBOTTOM           2
902*b1cdbd2cSJim Jagielski #define TWOV_LEFTRIGHT           3
903*b1cdbd2cSJim Jagielski #define TWOV_ALL                 4
904*b1cdbd2cSJim Jagielski 
905*b1cdbd2cSJim Jagielski /* Palette types for TW_PALETTE8 */
906*b1cdbd2cSJim Jagielski #define TWPA_RGB         0
907*b1cdbd2cSJim Jagielski #define TWPA_GRAY        1
908*b1cdbd2cSJim Jagielski #define TWPA_CMY         2
909*b1cdbd2cSJim Jagielski 
910*b1cdbd2cSJim Jagielski /* ICAP_PLANARCHUNKY values (PC_ means Planar/Chunky ) */
911*b1cdbd2cSJim Jagielski #define TWPC_CHUNKY              0
912*b1cdbd2cSJim Jagielski #define TWPC_PLANAR              1
913*b1cdbd2cSJim Jagielski 
914*b1cdbd2cSJim Jagielski /* TWEI_PATCHCODE values Added 1.7 */
915*b1cdbd2cSJim Jagielski #define TWPCH_PATCH1             0
916*b1cdbd2cSJim Jagielski #define TWPCH_PATCH2             1
917*b1cdbd2cSJim Jagielski #define TWPCH_PATCH3             2
918*b1cdbd2cSJim Jagielski #define TWPCH_PATCH4             3
919*b1cdbd2cSJim Jagielski #define TWPCH_PATCH6             4
920*b1cdbd2cSJim Jagielski #define TWPCH_PATCHT             5
921*b1cdbd2cSJim Jagielski 
922*b1cdbd2cSJim Jagielski /* ICAP_PIXELFLAVOR values (PF_ means Pixel Flavor) */
923*b1cdbd2cSJim Jagielski #define TWPF_CHOCOLATE           0  /* zero pixel represents darkest shade  */
924*b1cdbd2cSJim Jagielski #define TWPF_VANILLA             1  /* zero pixel represents lightest shade */
925*b1cdbd2cSJim Jagielski 
926*b1cdbd2cSJim Jagielski /* CAP_PRINTERMODE values (PM_ means printer mode) */
927*b1cdbd2cSJim Jagielski #define TWPM_SINGLESTRING        0
928*b1cdbd2cSJim Jagielski #define TWPM_MULTISTRING         1
929*b1cdbd2cSJim Jagielski #define TWPM_COMPOUNDSTRING      2
930*b1cdbd2cSJim Jagielski 
931*b1cdbd2cSJim Jagielski /* CAP_PRINTER values (PR_ means printer) */
932*b1cdbd2cSJim Jagielski #define TWPR_IMPRINTERTOPBEFORE     0
933*b1cdbd2cSJim Jagielski #define TWPR_IMPRINTERTOPAFTER      1
934*b1cdbd2cSJim Jagielski #define TWPR_IMPRINTERBOTTOMBEFORE  2
935*b1cdbd2cSJim Jagielski #define TWPR_IMPRINTERBOTTOMAFTER   3
936*b1cdbd2cSJim Jagielski #define TWPR_ENDORSERTOPBEFORE      4
937*b1cdbd2cSJim Jagielski #define TWPR_ENDORSERTOPAFTER       5
938*b1cdbd2cSJim Jagielski #define TWPR_ENDORSERBOTTOMBEFORE   6
939*b1cdbd2cSJim Jagielski #define TWPR_ENDORSERBOTTOMAFTER    7
940*b1cdbd2cSJim Jagielski 
941*b1cdbd2cSJim Jagielski /* CAP_POWERSUPPLY values (PS_ means power supply) */
942*b1cdbd2cSJim Jagielski #define TWPS_EXTERNAL            0
943*b1cdbd2cSJim Jagielski #define TWPS_BATTERY             1
944*b1cdbd2cSJim Jagielski 
945*b1cdbd2cSJim Jagielski /* ICAP_PIXELTYPE values (PT_ means Pixel Type) */
946*b1cdbd2cSJim Jagielski #define TWPT_BW                  0 /* Black and White */
947*b1cdbd2cSJim Jagielski #define TWPT_GRAY                1
948*b1cdbd2cSJim Jagielski #define TWPT_RGB                 2
949*b1cdbd2cSJim Jagielski #define TWPT_PALETTE             3
950*b1cdbd2cSJim Jagielski #define TWPT_CMY                 4
951*b1cdbd2cSJim Jagielski #define TWPT_CMYK                5
952*b1cdbd2cSJim Jagielski #define TWPT_YUV                 6
953*b1cdbd2cSJim Jagielski #define TWPT_YUVK                7
954*b1cdbd2cSJim Jagielski #define TWPT_CIEXYZ              8
955*b1cdbd2cSJim Jagielski #define TWPT_LAB                 9
956*b1cdbd2cSJim Jagielski #define TWPT_SRGB               10 /* 1.91 */
957*b1cdbd2cSJim Jagielski #define TWPT_SCRGB              11 /* 1.91 */
958*b1cdbd2cSJim Jagielski #define TWPT_INFRARED           16 /* 2.0 */
959*b1cdbd2cSJim Jagielski 
960*b1cdbd2cSJim Jagielski /* CAP_SEGMENTED values (SG_ means segmented) Added 1.91 */
961*b1cdbd2cSJim Jagielski #define TWSG_NONE                0
962*b1cdbd2cSJim Jagielski #define TWSG_AUTO                1
963*b1cdbd2cSJim Jagielski 
964*b1cdbd2cSJim Jagielski /* ICAP_SUPPORTEDSIZES values (SS_ means Supported Sizes) */
965*b1cdbd2cSJim Jagielski #define TWSS_NONE                0
966*b1cdbd2cSJim Jagielski #define TWSS_A4                  1
967*b1cdbd2cSJim Jagielski #define TWSS_JISB5               2
968*b1cdbd2cSJim Jagielski #define TWSS_USLETTER            3
969*b1cdbd2cSJim Jagielski #define TWSS_USLEGAL             4
970*b1cdbd2cSJim Jagielski /* Added 1.5 */
971*b1cdbd2cSJim Jagielski #define TWSS_A5                  5
972*b1cdbd2cSJim Jagielski #define TWSS_ISOB4               6
973*b1cdbd2cSJim Jagielski #define TWSS_ISOB6               7
974*b1cdbd2cSJim Jagielski /* Added 1.7 */
975*b1cdbd2cSJim Jagielski #define TWSS_USLEDGER            9
976*b1cdbd2cSJim Jagielski #define TWSS_USEXECUTIVE        10
977*b1cdbd2cSJim Jagielski #define TWSS_A3                 11
978*b1cdbd2cSJim Jagielski #define TWSS_ISOB3              12
979*b1cdbd2cSJim Jagielski #define TWSS_A6                 13
980*b1cdbd2cSJim Jagielski #define TWSS_C4                 14
981*b1cdbd2cSJim Jagielski #define TWSS_C5                 15
982*b1cdbd2cSJim Jagielski #define TWSS_C6                 16
983*b1cdbd2cSJim Jagielski /* Added 1.8 */
984*b1cdbd2cSJim Jagielski #define TWSS_4A0                17
985*b1cdbd2cSJim Jagielski #define TWSS_2A0                18
986*b1cdbd2cSJim Jagielski #define TWSS_A0                 19
987*b1cdbd2cSJim Jagielski #define TWSS_A1                 20
988*b1cdbd2cSJim Jagielski #define TWSS_A2                 21
989*b1cdbd2cSJim Jagielski #define TWSS_A7                 22
990*b1cdbd2cSJim Jagielski #define TWSS_A8                 23
991*b1cdbd2cSJim Jagielski #define TWSS_A9                 24
992*b1cdbd2cSJim Jagielski #define TWSS_A10                25
993*b1cdbd2cSJim Jagielski #define TWSS_ISOB0              26
994*b1cdbd2cSJim Jagielski #define TWSS_ISOB1              27
995*b1cdbd2cSJim Jagielski #define TWSS_ISOB2              28
996*b1cdbd2cSJim Jagielski #define TWSS_ISOB5              29
997*b1cdbd2cSJim Jagielski #define TWSS_ISOB7              30
998*b1cdbd2cSJim Jagielski #define TWSS_ISOB8              31
999*b1cdbd2cSJim Jagielski #define TWSS_ISOB9              32
1000*b1cdbd2cSJim Jagielski #define TWSS_ISOB10             33
1001*b1cdbd2cSJim Jagielski #define TWSS_JISB0              34
1002*b1cdbd2cSJim Jagielski #define TWSS_JISB1              35
1003*b1cdbd2cSJim Jagielski #define TWSS_JISB2              36
1004*b1cdbd2cSJim Jagielski #define TWSS_JISB3              37
1005*b1cdbd2cSJim Jagielski #define TWSS_JISB4              38
1006*b1cdbd2cSJim Jagielski #define TWSS_JISB6              39
1007*b1cdbd2cSJim Jagielski #define TWSS_JISB7              40
1008*b1cdbd2cSJim Jagielski #define TWSS_JISB8              41
1009*b1cdbd2cSJim Jagielski #define TWSS_JISB9              42
1010*b1cdbd2cSJim Jagielski #define TWSS_JISB10             43
1011*b1cdbd2cSJim Jagielski #define TWSS_C0                 44
1012*b1cdbd2cSJim Jagielski #define TWSS_C1                 45
1013*b1cdbd2cSJim Jagielski #define TWSS_C2                 46
1014*b1cdbd2cSJim Jagielski #define TWSS_C3                 47
1015*b1cdbd2cSJim Jagielski #define TWSS_C7                 48
1016*b1cdbd2cSJim Jagielski #define TWSS_C8                 49
1017*b1cdbd2cSJim Jagielski #define TWSS_C9                 50
1018*b1cdbd2cSJim Jagielski #define TWSS_C10                51
1019*b1cdbd2cSJim Jagielski #define TWSS_USSTATEMENT        52
1020*b1cdbd2cSJim Jagielski #define TWSS_BUSINESSCARD       53
1021*b1cdbd2cSJim Jagielski #define TWSS_MAXSIZE            54  /* Added 2.1 */
1022*b1cdbd2cSJim Jagielski 
1023*b1cdbd2cSJim Jagielski /* ICAP_XFERMECH values (SX_ means Setup XFer) */
1024*b1cdbd2cSJim Jagielski #define TWSX_NATIVE              0
1025*b1cdbd2cSJim Jagielski #define TWSX_FILE                1
1026*b1cdbd2cSJim Jagielski #define TWSX_MEMORY              2
1027*b1cdbd2cSJim Jagielski #define TWSX_MEMFILE             4    /* added 1.91 */
1028*b1cdbd2cSJim Jagielski 
1029*b1cdbd2cSJim Jagielski /* ICAP_UNITS values (UN_ means UNits) */
1030*b1cdbd2cSJim Jagielski #define TWUN_INCHES              0
1031*b1cdbd2cSJim Jagielski #define TWUN_CENTIMETERS         1
1032*b1cdbd2cSJim Jagielski #define TWUN_PICAS               2
1033*b1cdbd2cSJim Jagielski #define TWUN_POINTS              3
1034*b1cdbd2cSJim Jagielski #define TWUN_TWIPS               4
1035*b1cdbd2cSJim Jagielski #define TWUN_PIXELS              5
1036*b1cdbd2cSJim Jagielski #define TWUN_MILLIMETERS         6    /* added 1.91 */
1037*b1cdbd2cSJim Jagielski 
1038*b1cdbd2cSJim Jagielski 
1039*b1cdbd2cSJim Jagielski /****************************************************************************
1040*b1cdbd2cSJim Jagielski  * Country Constants                                                        *
1041*b1cdbd2cSJim Jagielski  ****************************************************************************/
1042*b1cdbd2cSJim Jagielski 
1043*b1cdbd2cSJim Jagielski #define TWCY_AFGHANISTAN   1001
1044*b1cdbd2cSJim Jagielski #define TWCY_ALGERIA        213
1045*b1cdbd2cSJim Jagielski #define TWCY_AMERICANSAMOA  684
1046*b1cdbd2cSJim Jagielski #define TWCY_ANDORRA        033
1047*b1cdbd2cSJim Jagielski #define TWCY_ANGOLA        1002
1048*b1cdbd2cSJim Jagielski #define TWCY_ANGUILLA      8090
1049*b1cdbd2cSJim Jagielski #define TWCY_ANTIGUA       8091
1050*b1cdbd2cSJim Jagielski #define TWCY_ARGENTINA       54
1051*b1cdbd2cSJim Jagielski #define TWCY_ARUBA          297
1052*b1cdbd2cSJim Jagielski #define TWCY_ASCENSIONI     247
1053*b1cdbd2cSJim Jagielski #define TWCY_AUSTRALIA       61
1054*b1cdbd2cSJim Jagielski #define TWCY_AUSTRIA         43
1055*b1cdbd2cSJim Jagielski #define TWCY_BAHAMAS       8092
1056*b1cdbd2cSJim Jagielski #define TWCY_BAHRAIN        973
1057*b1cdbd2cSJim Jagielski #define TWCY_BANGLADESH     880
1058*b1cdbd2cSJim Jagielski #define TWCY_BARBADOS      8093
1059*b1cdbd2cSJim Jagielski #define TWCY_BELGIUM         32
1060*b1cdbd2cSJim Jagielski #define TWCY_BELIZE         501
1061*b1cdbd2cSJim Jagielski #define TWCY_BENIN          229
1062*b1cdbd2cSJim Jagielski #define TWCY_BERMUDA       8094
1063*b1cdbd2cSJim Jagielski #define TWCY_BHUTAN        1003
1064*b1cdbd2cSJim Jagielski #define TWCY_BOLIVIA        591
1065*b1cdbd2cSJim Jagielski #define TWCY_BOTSWANA       267
1066*b1cdbd2cSJim Jagielski #define TWCY_BRITAIN          6
1067*b1cdbd2cSJim Jagielski #define TWCY_BRITVIRGINIS  8095
1068*b1cdbd2cSJim Jagielski #define TWCY_BRAZIL          55
1069*b1cdbd2cSJim Jagielski #define TWCY_BRUNEI         673
1070*b1cdbd2cSJim Jagielski #define TWCY_BULGARIA       359
1071*b1cdbd2cSJim Jagielski #define TWCY_BURKINAFASO   1004
1072*b1cdbd2cSJim Jagielski #define TWCY_BURMA         1005
1073*b1cdbd2cSJim Jagielski #define TWCY_BURUNDI       1006
1074*b1cdbd2cSJim Jagielski #define TWCY_CAMAROON       237
1075*b1cdbd2cSJim Jagielski #define TWCY_CANADA           2
1076*b1cdbd2cSJim Jagielski #define TWCY_CAPEVERDEIS    238
1077*b1cdbd2cSJim Jagielski #define TWCY_CAYMANIS      8096
1078*b1cdbd2cSJim Jagielski #define TWCY_CENTRALAFREP  1007
1079*b1cdbd2cSJim Jagielski #define TWCY_CHAD          1008
1080*b1cdbd2cSJim Jagielski #define TWCY_CHILE           56
1081*b1cdbd2cSJim Jagielski #define TWCY_CHINA           86
1082*b1cdbd2cSJim Jagielski #define TWCY_CHRISTMASIS   1009
1083*b1cdbd2cSJim Jagielski #define TWCY_COCOSIS       1009
1084*b1cdbd2cSJim Jagielski #define TWCY_COLOMBIA        57
1085*b1cdbd2cSJim Jagielski #define TWCY_COMOROS       1010
1086*b1cdbd2cSJim Jagielski #define TWCY_CONGO         1011
1087*b1cdbd2cSJim Jagielski #define TWCY_COOKIS        1012
1088*b1cdbd2cSJim Jagielski #define TWCY_COSTARICA     506
1089*b1cdbd2cSJim Jagielski #define TWCY_CUBA           005
1090*b1cdbd2cSJim Jagielski #define TWCY_CYPRUS         357
1091*b1cdbd2cSJim Jagielski #define TWCY_CZECHOSLOVAKIA  42
1092*b1cdbd2cSJim Jagielski #define TWCY_DENMARK         45
1093*b1cdbd2cSJim Jagielski #define TWCY_DJIBOUTI      1013
1094*b1cdbd2cSJim Jagielski #define TWCY_DOMINICA      8097
1095*b1cdbd2cSJim Jagielski #define TWCY_DOMINCANREP   8098
1096*b1cdbd2cSJim Jagielski #define TWCY_EASTERIS      1014
1097*b1cdbd2cSJim Jagielski #define TWCY_ECUADOR        593
1098*b1cdbd2cSJim Jagielski #define TWCY_EGYPT           20
1099*b1cdbd2cSJim Jagielski #define TWCY_ELSALVADOR     503
1100*b1cdbd2cSJim Jagielski #define TWCY_EQGUINEA      1015
1101*b1cdbd2cSJim Jagielski #define TWCY_ETHIOPIA       251
1102*b1cdbd2cSJim Jagielski #define TWCY_FALKLANDIS    1016
1103*b1cdbd2cSJim Jagielski #define TWCY_FAEROEIS       298
1104*b1cdbd2cSJim Jagielski #define TWCY_FIJIISLANDS    679
1105*b1cdbd2cSJim Jagielski #define TWCY_FINLAND        358
1106*b1cdbd2cSJim Jagielski #define TWCY_FRANCE          33
1107*b1cdbd2cSJim Jagielski #define TWCY_FRANTILLES     596
1108*b1cdbd2cSJim Jagielski #define TWCY_FRGUIANA       594
1109*b1cdbd2cSJim Jagielski #define TWCY_FRPOLYNEISA    689
1110*b1cdbd2cSJim Jagielski #define TWCY_FUTANAIS      1043
1111*b1cdbd2cSJim Jagielski #define TWCY_GABON          241
1112*b1cdbd2cSJim Jagielski #define TWCY_GAMBIA         220
1113*b1cdbd2cSJim Jagielski #define TWCY_GERMANY         49
1114*b1cdbd2cSJim Jagielski #define TWCY_GHANA          233
1115*b1cdbd2cSJim Jagielski #define TWCY_GIBRALTER      350
1116*b1cdbd2cSJim Jagielski #define TWCY_GREECE          30
1117*b1cdbd2cSJim Jagielski #define TWCY_GREENLAND      299
1118*b1cdbd2cSJim Jagielski #define TWCY_GRENADA       8099
1119*b1cdbd2cSJim Jagielski #define TWCY_GRENEDINES    8015
1120*b1cdbd2cSJim Jagielski #define TWCY_GUADELOUPE     590
1121*b1cdbd2cSJim Jagielski #define TWCY_GUAM           671
1122*b1cdbd2cSJim Jagielski #define TWCY_GUANTANAMOBAY 5399
1123*b1cdbd2cSJim Jagielski #define TWCY_GUATEMALA      502
1124*b1cdbd2cSJim Jagielski #define TWCY_GUINEA         224
1125*b1cdbd2cSJim Jagielski #define TWCY_GUINEABISSAU  1017
1126*b1cdbd2cSJim Jagielski #define TWCY_GUYANA         592
1127*b1cdbd2cSJim Jagielski #define TWCY_HAITI          509
1128*b1cdbd2cSJim Jagielski #define TWCY_HONDURAS       504
1129*b1cdbd2cSJim Jagielski #define TWCY_HONGKONG      852
1130*b1cdbd2cSJim Jagielski #define TWCY_HUNGARY         36
1131*b1cdbd2cSJim Jagielski #define TWCY_ICELAND        354
1132*b1cdbd2cSJim Jagielski #define TWCY_INDIA           91
1133*b1cdbd2cSJim Jagielski #define TWCY_INDONESIA       62
1134*b1cdbd2cSJim Jagielski #define TWCY_IRAN            98
1135*b1cdbd2cSJim Jagielski #define TWCY_IRAQ           964
1136*b1cdbd2cSJim Jagielski #define TWCY_IRELAND        353
1137*b1cdbd2cSJim Jagielski #define TWCY_ISRAEL         972
1138*b1cdbd2cSJim Jagielski #define TWCY_ITALY           39
1139*b1cdbd2cSJim Jagielski #define TWCY_IVORYCOAST    225
1140*b1cdbd2cSJim Jagielski #define TWCY_JAMAICA       8010
1141*b1cdbd2cSJim Jagielski #define TWCY_JAPAN           81
1142*b1cdbd2cSJim Jagielski #define TWCY_JORDAN         962
1143*b1cdbd2cSJim Jagielski #define TWCY_KENYA          254
1144*b1cdbd2cSJim Jagielski #define TWCY_KIRIBATI      1018
1145*b1cdbd2cSJim Jagielski #define TWCY_KOREA           82
1146*b1cdbd2cSJim Jagielski #define TWCY_KUWAIT         965
1147*b1cdbd2cSJim Jagielski #define TWCY_LAOS          1019
1148*b1cdbd2cSJim Jagielski #define TWCY_LEBANON       1020
1149*b1cdbd2cSJim Jagielski #define TWCY_LIBERIA        231
1150*b1cdbd2cSJim Jagielski #define TWCY_LIBYA          218
1151*b1cdbd2cSJim Jagielski #define TWCY_LIECHTENSTEIN   41
1152*b1cdbd2cSJim Jagielski #define TWCY_LUXENBOURG     352
1153*b1cdbd2cSJim Jagielski #define TWCY_MACAO          853
1154*b1cdbd2cSJim Jagielski #define TWCY_MADAGASCAR    1021
1155*b1cdbd2cSJim Jagielski #define TWCY_MALAWI         265
1156*b1cdbd2cSJim Jagielski #define TWCY_MALAYSIA        60
1157*b1cdbd2cSJim Jagielski #define TWCY_MALDIVES       960
1158*b1cdbd2cSJim Jagielski #define TWCY_MALI          1022
1159*b1cdbd2cSJim Jagielski #define TWCY_MALTA          356
1160*b1cdbd2cSJim Jagielski #define TWCY_MARSHALLIS     692
1161*b1cdbd2cSJim Jagielski #define TWCY_MAURITANIA    1023
1162*b1cdbd2cSJim Jagielski #define TWCY_MAURITIUS      230
1163*b1cdbd2cSJim Jagielski #define TWCY_MEXICO           3
1164*b1cdbd2cSJim Jagielski #define TWCY_MICRONESIA     691
1165*b1cdbd2cSJim Jagielski #define TWCY_MIQUELON       508
1166*b1cdbd2cSJim Jagielski #define TWCY_MONACO          33
1167*b1cdbd2cSJim Jagielski #define TWCY_MONGOLIA      1024
1168*b1cdbd2cSJim Jagielski #define TWCY_MONTSERRAT    8011
1169*b1cdbd2cSJim Jagielski #define TWCY_MOROCCO        212
1170*b1cdbd2cSJim Jagielski #define TWCY_MOZAMBIQUE    1025
1171*b1cdbd2cSJim Jagielski #define TWCY_NAMIBIA        264
1172*b1cdbd2cSJim Jagielski #define TWCY_NAURU         1026
1173*b1cdbd2cSJim Jagielski #define TWCY_NEPAL          977
1174*b1cdbd2cSJim Jagielski #define TWCY_NETHERLANDS     31
1175*b1cdbd2cSJim Jagielski #define TWCY_NETHANTILLES   599
1176*b1cdbd2cSJim Jagielski #define TWCY_NEVIS         8012
1177*b1cdbd2cSJim Jagielski #define TWCY_NEWCALEDONIA   687
1178*b1cdbd2cSJim Jagielski #define TWCY_NEWZEALAND      64
1179*b1cdbd2cSJim Jagielski #define TWCY_NICARAGUA      505
1180*b1cdbd2cSJim Jagielski #define TWCY_NIGER          227
1181*b1cdbd2cSJim Jagielski #define TWCY_NIGERIA        234
1182*b1cdbd2cSJim Jagielski #define TWCY_NIUE          1027
1183*b1cdbd2cSJim Jagielski #define TWCY_NORFOLKI      1028
1184*b1cdbd2cSJim Jagielski #define TWCY_NORWAY          47
1185*b1cdbd2cSJim Jagielski #define TWCY_OMAN           968
1186*b1cdbd2cSJim Jagielski #define TWCY_PAKISTAN        92
1187*b1cdbd2cSJim Jagielski #define TWCY_PALAU         1029
1188*b1cdbd2cSJim Jagielski #define TWCY_PANAMA         507
1189*b1cdbd2cSJim Jagielski #define TWCY_PARAGUAY       595
1190*b1cdbd2cSJim Jagielski #define TWCY_PERU            51
1191*b1cdbd2cSJim Jagielski #define TWCY_PHILLIPPINES    63
1192*b1cdbd2cSJim Jagielski #define TWCY_PITCAIRNIS    1030
1193*b1cdbd2cSJim Jagielski #define TWCY_PNEWGUINEA     675
1194*b1cdbd2cSJim Jagielski #define TWCY_POLAND          48
1195*b1cdbd2cSJim Jagielski #define TWCY_PORTUGAL       351
1196*b1cdbd2cSJim Jagielski #define TWCY_QATAR          974
1197*b1cdbd2cSJim Jagielski #define TWCY_REUNIONI      1031
1198*b1cdbd2cSJim Jagielski #define TWCY_ROMANIA         40
1199*b1cdbd2cSJim Jagielski #define TWCY_RWANDA         250
1200*b1cdbd2cSJim Jagielski #define TWCY_SAIPAN         670
1201*b1cdbd2cSJim Jagielski #define TWCY_SANMARINO       39
1202*b1cdbd2cSJim Jagielski #define TWCY_SAOTOME       1033
1203*b1cdbd2cSJim Jagielski #define TWCY_SAUDIARABIA    966
1204*b1cdbd2cSJim Jagielski #define TWCY_SENEGAL        221
1205*b1cdbd2cSJim Jagielski #define TWCY_SEYCHELLESIS  1034
1206*b1cdbd2cSJim Jagielski #define TWCY_SIERRALEONE   1035
1207*b1cdbd2cSJim Jagielski #define TWCY_SINGAPORE       65
1208*b1cdbd2cSJim Jagielski #define TWCY_SOLOMONIS     1036
1209*b1cdbd2cSJim Jagielski #define TWCY_SOMALI        1037
1210*b1cdbd2cSJim Jagielski #define TWCY_SOUTHAFRICA    27
1211*b1cdbd2cSJim Jagielski #define TWCY_SPAIN           34
1212*b1cdbd2cSJim Jagielski #define TWCY_SRILANKA        94
1213*b1cdbd2cSJim Jagielski #define TWCY_STHELENA      1032
1214*b1cdbd2cSJim Jagielski #define TWCY_STKITTS       8013
1215*b1cdbd2cSJim Jagielski #define TWCY_STLUCIA       8014
1216*b1cdbd2cSJim Jagielski #define TWCY_STPIERRE       508
1217*b1cdbd2cSJim Jagielski #define TWCY_STVINCENT     8015
1218*b1cdbd2cSJim Jagielski #define TWCY_SUDAN         1038
1219*b1cdbd2cSJim Jagielski #define TWCY_SURINAME       597
1220*b1cdbd2cSJim Jagielski #define TWCY_SWAZILAND      268
1221*b1cdbd2cSJim Jagielski #define TWCY_SWEDEN          46
1222*b1cdbd2cSJim Jagielski #define TWCY_SWITZERLAND     41
1223*b1cdbd2cSJim Jagielski #define TWCY_SYRIA         1039
1224*b1cdbd2cSJim Jagielski #define TWCY_TAIWAN         886
1225*b1cdbd2cSJim Jagielski #define TWCY_TANZANIA       255
1226*b1cdbd2cSJim Jagielski #define TWCY_THAILAND        66
1227*b1cdbd2cSJim Jagielski #define TWCY_TOBAGO        8016
1228*b1cdbd2cSJim Jagielski #define TWCY_TOGO           228
1229*b1cdbd2cSJim Jagielski #define TWCY_TONGAIS        676
1230*b1cdbd2cSJim Jagielski #define TWCY_TRINIDAD      8016
1231*b1cdbd2cSJim Jagielski #define TWCY_TUNISIA        216
1232*b1cdbd2cSJim Jagielski #define TWCY_TURKEY          90
1233*b1cdbd2cSJim Jagielski #define TWCY_TURKSCAICOS   8017
1234*b1cdbd2cSJim Jagielski #define TWCY_TUVALU        1040
1235*b1cdbd2cSJim Jagielski #define TWCY_UGANDA         256
1236*b1cdbd2cSJim Jagielski #define TWCY_USSR             7
1237*b1cdbd2cSJim Jagielski #define TWCY_UAEMIRATES     971
1238*b1cdbd2cSJim Jagielski #define TWCY_UNITEDKINGDOM   44
1239*b1cdbd2cSJim Jagielski #define TWCY_USA              1
1240*b1cdbd2cSJim Jagielski #define TWCY_URUGUAY        598
1241*b1cdbd2cSJim Jagielski #define TWCY_VANUATU       1041
1242*b1cdbd2cSJim Jagielski #define TWCY_VATICANCITY     39
1243*b1cdbd2cSJim Jagielski #define TWCY_VENEZUELA       58
1244*b1cdbd2cSJim Jagielski #define TWCY_WAKE          1042
1245*b1cdbd2cSJim Jagielski #define TWCY_WALLISIS      1043
1246*b1cdbd2cSJim Jagielski #define TWCY_WESTERNSAHARA 1044
1247*b1cdbd2cSJim Jagielski #define TWCY_WESTERNSAMOA  1045
1248*b1cdbd2cSJim Jagielski #define TWCY_YEMEN         1046
1249*b1cdbd2cSJim Jagielski #define TWCY_YUGOSLAVIA      38
1250*b1cdbd2cSJim Jagielski #define TWCY_ZAIRE          243
1251*b1cdbd2cSJim Jagielski #define TWCY_ZAMBIA         260
1252*b1cdbd2cSJim Jagielski #define TWCY_ZIMBABWE       263
1253*b1cdbd2cSJim Jagielski /* Added for 1.8 */
1254*b1cdbd2cSJim Jagielski #define TWCY_ALBANIA        355
1255*b1cdbd2cSJim Jagielski #define TWCY_ARMENIA        374
1256*b1cdbd2cSJim Jagielski #define TWCY_AZERBAIJAN     994
1257*b1cdbd2cSJim Jagielski #define TWCY_BELARUS        375
1258*b1cdbd2cSJim Jagielski #define TWCY_BOSNIAHERZGO   387
1259*b1cdbd2cSJim Jagielski #define TWCY_CAMBODIA       855
1260*b1cdbd2cSJim Jagielski #define TWCY_CROATIA        385
1261*b1cdbd2cSJim Jagielski #define TWCY_CZECHREPUBLIC  420
1262*b1cdbd2cSJim Jagielski #define TWCY_DIEGOGARCIA    246
1263*b1cdbd2cSJim Jagielski #define TWCY_ERITREA        291
1264*b1cdbd2cSJim Jagielski #define TWCY_ESTONIA        372
1265*b1cdbd2cSJim Jagielski #define TWCY_GEORGIA        995
1266*b1cdbd2cSJim Jagielski #define TWCY_LATVIA         371
1267*b1cdbd2cSJim Jagielski #define TWCY_LESOTHO        266
1268*b1cdbd2cSJim Jagielski #define TWCY_LITHUANIA      370
1269*b1cdbd2cSJim Jagielski #define TWCY_MACEDONIA      389
1270*b1cdbd2cSJim Jagielski #define TWCY_MAYOTTEIS      269
1271*b1cdbd2cSJim Jagielski #define TWCY_MOLDOVA        373
1272*b1cdbd2cSJim Jagielski #define TWCY_MYANMAR        95
1273*b1cdbd2cSJim Jagielski #define TWCY_NORTHKOREA     850
1274*b1cdbd2cSJim Jagielski #define TWCY_PUERTORICO     787
1275*b1cdbd2cSJim Jagielski #define TWCY_RUSSIA         7
1276*b1cdbd2cSJim Jagielski #define TWCY_SERBIA         381
1277*b1cdbd2cSJim Jagielski #define TWCY_SLOVAKIA       421
1278*b1cdbd2cSJim Jagielski #define TWCY_SLOVENIA       386
1279*b1cdbd2cSJim Jagielski #define TWCY_SOUTHKOREA     82
1280*b1cdbd2cSJim Jagielski #define TWCY_UKRAINE        380
1281*b1cdbd2cSJim Jagielski #define TWCY_USVIRGINIS     340
1282*b1cdbd2cSJim Jagielski #define TWCY_VIETNAM        84
1283*b1cdbd2cSJim Jagielski 
1284*b1cdbd2cSJim Jagielski /****************************************************************************
1285*b1cdbd2cSJim Jagielski  * Language Constants                                                       *
1286*b1cdbd2cSJim Jagielski  ****************************************************************************/
1287*b1cdbd2cSJim Jagielski /* Added for 1.8 */
1288*b1cdbd2cSJim Jagielski #define TWLG_USERLOCALE           -1
1289*b1cdbd2cSJim Jagielski #define TWLG_DANISH               0    /* Danish                 */
1290*b1cdbd2cSJim Jagielski #define TWLG_DUTCH                1    /* Dutch                  */
1291*b1cdbd2cSJim Jagielski #define TWLG_ENGLISH              2    /* International English  */
1292*b1cdbd2cSJim Jagielski #define TWLG_FRENCH_CANADIAN      3    /* French Canadian        */
1293*b1cdbd2cSJim Jagielski #define TWLG_FINNISH              4    /* Finnish                */
1294*b1cdbd2cSJim Jagielski #define TWLG_FRENCH               5    /* French                 */
1295*b1cdbd2cSJim Jagielski #define TWLG_GERMAN               6    /* German                 */
1296*b1cdbd2cSJim Jagielski #define TWLG_ICELANDIC            7    /* Icelandic              */
1297*b1cdbd2cSJim Jagielski #define TWLG_ITALIAN              8    /* Italian                */
1298*b1cdbd2cSJim Jagielski #define TWLG_NORWEGIAN            9    /* Norwegian              */
1299*b1cdbd2cSJim Jagielski #define TWLG_PORTUGUESE           10   /* Portuguese             */
1300*b1cdbd2cSJim Jagielski #define TWLG_SPANISH              11   /* Spanish                */
1301*b1cdbd2cSJim Jagielski #define TWLG_SWEDISH              12   /* Swedish                */
1302*b1cdbd2cSJim Jagielski #define TWLG_ENGLISH_USA          13   /* U.S. English           */
1303*b1cdbd2cSJim Jagielski #define TWLG_AFRIKAANS            14
1304*b1cdbd2cSJim Jagielski #define TWLG_ALBANIA              15
1305*b1cdbd2cSJim Jagielski #define TWLG_ARABIC               16
1306*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_ALGERIA       17
1307*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_BAHRAIN       18
1308*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_EGYPT         19
1309*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_IRAQ          20
1310*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_JORDAN        21
1311*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_KUWAIT        22
1312*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_LEBANON       23
1313*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_LIBYA         24
1314*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_MOROCCO       25
1315*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_OMAN          26
1316*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_QATAR         27
1317*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_SAUDIARABIA   28
1318*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_SYRIA         29
1319*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_TUNISIA       30
1320*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_UAE           31 /* United Arabic Emirates */
1321*b1cdbd2cSJim Jagielski #define TWLG_ARABIC_YEMEN         32
1322*b1cdbd2cSJim Jagielski #define TWLG_BASQUE               33
1323*b1cdbd2cSJim Jagielski #define TWLG_BYELORUSSIAN         34
1324*b1cdbd2cSJim Jagielski #define TWLG_BULGARIAN            35
1325*b1cdbd2cSJim Jagielski #define TWLG_CATALAN              36
1326*b1cdbd2cSJim Jagielski #define TWLG_CHINESE              37
1327*b1cdbd2cSJim Jagielski #define TWLG_CHINESE_HONGKONG     38
1328*b1cdbd2cSJim Jagielski #define TWLG_CHINESE_PRC          39 /* People's Republic of China */
1329*b1cdbd2cSJim Jagielski #define TWLG_CHINESE_SINGAPORE    40
1330*b1cdbd2cSJim Jagielski #define TWLG_CHINESE_SIMPLIFIED   41
1331*b1cdbd2cSJim Jagielski #define TWLG_CHINESE_TAIWAN       42
1332*b1cdbd2cSJim Jagielski #define TWLG_CHINESE_TRADITIONAL  43
1333*b1cdbd2cSJim Jagielski #define TWLG_CROATIA              44
1334*b1cdbd2cSJim Jagielski #define TWLG_CZECH                45
1335*b1cdbd2cSJim Jagielski #define TWLG_DUTCH_BELGIAN        46
1336*b1cdbd2cSJim Jagielski #define TWLG_ENGLISH_AUSTRALIAN   47
1337*b1cdbd2cSJim Jagielski #define TWLG_ENGLISH_CANADIAN     48
1338*b1cdbd2cSJim Jagielski #define TWLG_ENGLISH_IRELAND      49
1339*b1cdbd2cSJim Jagielski #define TWLG_ENGLISH_NEWZEALAND   50
1340*b1cdbd2cSJim Jagielski #define TWLG_ENGLISH_SOUTHAFRICA  51
1341*b1cdbd2cSJim Jagielski #define TWLG_ENGLISH_UK           52
1342*b1cdbd2cSJim Jagielski #define TWLG_ESTONIAN             53
1343*b1cdbd2cSJim Jagielski #define TWLG_FAEROESE             54
1344*b1cdbd2cSJim Jagielski #define TWLG_FARSI                55
1345*b1cdbd2cSJim Jagielski #define TWLG_FRENCH_BELGIAN       56
1346*b1cdbd2cSJim Jagielski #define TWLG_FRENCH_LUXEMBOURG    57
1347*b1cdbd2cSJim Jagielski #define TWLG_FRENCH_SWISS         58
1348*b1cdbd2cSJim Jagielski #define TWLG_GERMAN_AUSTRIAN      59
1349*b1cdbd2cSJim Jagielski #define TWLG_GERMAN_LUXEMBOURG    60
1350*b1cdbd2cSJim Jagielski #define TWLG_GERMAN_LIECHTENSTEIN 61
1351*b1cdbd2cSJim Jagielski #define TWLG_GERMAN_SWISS         62
1352*b1cdbd2cSJim Jagielski #define TWLG_GREEK                63
1353*b1cdbd2cSJim Jagielski #define TWLG_HEBREW               64
1354*b1cdbd2cSJim Jagielski #define TWLG_HUNGARIAN            65
1355*b1cdbd2cSJim Jagielski #define TWLG_INDONESIAN           66
1356*b1cdbd2cSJim Jagielski #define TWLG_ITALIAN_SWISS        67
1357*b1cdbd2cSJim Jagielski #define TWLG_JAPANESE             68
1358*b1cdbd2cSJim Jagielski #define TWLG_KOREAN               69
1359*b1cdbd2cSJim Jagielski #define TWLG_KOREAN_JOHAB         70
1360*b1cdbd2cSJim Jagielski #define TWLG_LATVIAN              71
1361*b1cdbd2cSJim Jagielski #define TWLG_LITHUANIAN           72
1362*b1cdbd2cSJim Jagielski #define TWLG_NORWEGIAN_BOKMAL     73
1363*b1cdbd2cSJim Jagielski #define TWLG_NORWEGIAN_NYNORSK    74
1364*b1cdbd2cSJim Jagielski #define TWLG_POLISH               75
1365*b1cdbd2cSJim Jagielski #define TWLG_PORTUGUESE_BRAZIL    76
1366*b1cdbd2cSJim Jagielski #define TWLG_ROMANIAN             77
1367*b1cdbd2cSJim Jagielski #define TWLG_RUSSIAN              78
1368*b1cdbd2cSJim Jagielski #define TWLG_SERBIAN_LATIN        79
1369*b1cdbd2cSJim Jagielski #define TWLG_SLOVAK               80
1370*b1cdbd2cSJim Jagielski #define TWLG_SLOVENIAN            81
1371*b1cdbd2cSJim Jagielski #define TWLG_SPANISH_MEXICAN      82
1372*b1cdbd2cSJim Jagielski #define TWLG_SPANISH_MODERN       83
1373*b1cdbd2cSJim Jagielski #define TWLG_THAI                 84
1374*b1cdbd2cSJim Jagielski #define TWLG_TURKISH              85
1375*b1cdbd2cSJim Jagielski #define TWLG_UKRANIAN             86
1376*b1cdbd2cSJim Jagielski /* More stuff added for 1.8 */
1377*b1cdbd2cSJim Jagielski #define TWLG_ASSAMESE             87
1378*b1cdbd2cSJim Jagielski #define TWLG_BENGALI              88
1379*b1cdbd2cSJim Jagielski #define TWLG_BIHARI               89
1380*b1cdbd2cSJim Jagielski #define TWLG_BODO                 90
1381*b1cdbd2cSJim Jagielski #define TWLG_DOGRI                91
1382*b1cdbd2cSJim Jagielski #define TWLG_GUJARATI             92
1383*b1cdbd2cSJim Jagielski #define TWLG_HARYANVI             93
1384*b1cdbd2cSJim Jagielski #define TWLG_HINDI                94
1385*b1cdbd2cSJim Jagielski #define TWLG_KANNADA              95
1386*b1cdbd2cSJim Jagielski #define TWLG_KASHMIRI             96
1387*b1cdbd2cSJim Jagielski #define TWLG_MALAYALAM            97
1388*b1cdbd2cSJim Jagielski #define TWLG_MARATHI              98
1389*b1cdbd2cSJim Jagielski #define TWLG_MARWARI              99
1390*b1cdbd2cSJim Jagielski #define TWLG_MEGHALAYAN          100
1391*b1cdbd2cSJim Jagielski #define TWLG_MIZO                101
1392*b1cdbd2cSJim Jagielski #define TWLG_NAGA                102
1393*b1cdbd2cSJim Jagielski #define TWLG_ORISSI              103
1394*b1cdbd2cSJim Jagielski #define TWLG_PUNJABI             104
1395*b1cdbd2cSJim Jagielski #define TWLG_PUSHTU              105
1396*b1cdbd2cSJim Jagielski #define TWLG_SERBIAN_CYRILLIC    106
1397*b1cdbd2cSJim Jagielski #define TWLG_SIKKIMI             107
1398*b1cdbd2cSJim Jagielski #define TWLG_SWEDISH_FINLAND     108
1399*b1cdbd2cSJim Jagielski #define TWLG_TAMIL               109
1400*b1cdbd2cSJim Jagielski #define TWLG_TELUGU              110
1401*b1cdbd2cSJim Jagielski #define TWLG_TRIPURI             111
1402*b1cdbd2cSJim Jagielski #define TWLG_URDU                112
1403*b1cdbd2cSJim Jagielski #define TWLG_VIETNAMESE          113
1404*b1cdbd2cSJim Jagielski 
1405*b1cdbd2cSJim Jagielski /****************************************************************************
1406*b1cdbd2cSJim Jagielski  * Data Groups                                                              *
1407*b1cdbd2cSJim Jagielski  ****************************************************************************/
1408*b1cdbd2cSJim Jagielski 
1409*b1cdbd2cSJim Jagielski /* More Data Groups may be added in the future.
1410*b1cdbd2cSJim Jagielski  * Possible candidates include text, vector graphics, sound, etc.
1411*b1cdbd2cSJim Jagielski  * NOTE: Data Group constants must be powers of 2 as they are used
1412*b1cdbd2cSJim Jagielski  *       as bitflags when Application asks DSM to present a list of DSs.
1413*b1cdbd2cSJim Jagielski  */
1414*b1cdbd2cSJim Jagielski 
1415*b1cdbd2cSJim Jagielski #define DG_CONTROL          0x0001L /* data pertaining to control       */
1416*b1cdbd2cSJim Jagielski #define DG_IMAGE            0x0002L /* data pertaining to raster images */
1417*b1cdbd2cSJim Jagielski /* Added 1.8 */
1418*b1cdbd2cSJim Jagielski #define DG_AUDIO            0x0004L /* data pertaining to audio */
1419*b1cdbd2cSJim Jagielski 
1420*b1cdbd2cSJim Jagielski /* More Data Functionality may be added in the future.
1421*b1cdbd2cSJim Jagielski  * These are for items that need to be determined before DS is opened.
1422*b1cdbd2cSJim Jagielski  * NOTE: Supported Functionality constants must be powers of 2 as they are
1423*b1cdbd2cSJim Jagielski  *       used as bitflags when Application asks DSM to present a list of DSs.
1424*b1cdbd2cSJim Jagielski  *       to support backward capability the App and DS will not use the fields
1425*b1cdbd2cSJim Jagielski  */
1426*b1cdbd2cSJim Jagielski #define DF_DSM2             0x10000000L   /* added to the identity by the DSM  */
1427*b1cdbd2cSJim Jagielski #define DF_APP2             0x20000000L   /* Set by the App to indicate it would
1428*b1cdbd2cSJim Jagielski                                              prefer to use DSM2 */
1429*b1cdbd2cSJim Jagielski #define DF_DS2              0x40000000L   /* Set by the DS to indicate it would
1430*b1cdbd2cSJim Jagielski                                              prefer to use DSM2 */
1431*b1cdbd2cSJim Jagielski #define DG_MASK             0xFFFFL       /* all Data Groups limited to 16 bit.  Added for 2.1  */
1432*b1cdbd2cSJim Jagielski 
1433*b1cdbd2cSJim Jagielski /****************************************************************************
1434*b1cdbd2cSJim Jagielski  *                                                        *
1435*b1cdbd2cSJim Jagielski  ****************************************************************************/
1436*b1cdbd2cSJim Jagielski #define DAT_NULL            0x0000 /* No data or structure. */
1437*b1cdbd2cSJim Jagielski #define DAT_CUSTOMBASE      0x8000 /* Base of custom DATs.  */
1438*b1cdbd2cSJim Jagielski 
1439*b1cdbd2cSJim Jagielski /* Data Argument Types for the DG_CONTROL Data Group. */
1440*b1cdbd2cSJim Jagielski #define DAT_CAPABILITY      0x0001 /* TW_CAPABILITY                        */
1441*b1cdbd2cSJim Jagielski #define DAT_EVENT           0x0002 /* TW_EVENT                             */
1442*b1cdbd2cSJim Jagielski #define DAT_IDENTITY        0x0003 /* TW_IDENTITY                          */
1443*b1cdbd2cSJim Jagielski #define DAT_PARENT          0x0004 /* TW_HANDLE, application win handle in Windows */
1444*b1cdbd2cSJim Jagielski #define DAT_PENDINGXFERS    0x0005 /* TW_PENDINGXFERS                      */
1445*b1cdbd2cSJim Jagielski #define DAT_SETUPMEMXFER    0x0006 /* TW_SETUPMEMXFER                      */
1446*b1cdbd2cSJim Jagielski #define DAT_SETUPFILEXFER   0x0007 /* TW_SETUPFILEXFER                     */
1447*b1cdbd2cSJim Jagielski #define DAT_STATUS          0x0008 /* TW_STATUS                            */
1448*b1cdbd2cSJim Jagielski #define DAT_USERINTERFACE   0x0009 /* TW_USERINTERFACE                     */
1449*b1cdbd2cSJim Jagielski #define DAT_XFERGROUP       0x000a /* TW_UINT32                            */
1450*b1cdbd2cSJim Jagielski #define DAT_CUSTOMDSDATA    0x000c /* TW_CUSTOMDSDATA.                     */
1451*b1cdbd2cSJim Jagielski #define DAT_DEVICEEVENT     0x000d /* TW_DEVICEEVENT     Added 1.8         */
1452*b1cdbd2cSJim Jagielski #define DAT_FILESYSTEM      0x000e /* TW_FILESYSTEM      Added 1.8         */
1453*b1cdbd2cSJim Jagielski #define DAT_PASSTHRU        0x000f /* TW_PASSTHRU        Added 1.8         */
1454*b1cdbd2cSJim Jagielski #define DAT_CALLBACK        0x0010 /* TW_CALLBACK        Added 2.0         */
1455*b1cdbd2cSJim Jagielski #define DAT_STATUSUTF8      0x0011 /* TW_STATUSUTF8      Added 2.1         */
1456*b1cdbd2cSJim Jagielski 
1457*b1cdbd2cSJim Jagielski /* Data Argument Types for the DG_IMAGE Data Group. */
1458*b1cdbd2cSJim Jagielski #define DAT_IMAGEINFO       0x0101 /* TW_IMAGEINFO                         */
1459*b1cdbd2cSJim Jagielski #define DAT_IMAGELAYOUT     0x0102 /* TW_IMAGELAYOUT                       */
1460*b1cdbd2cSJim Jagielski #define DAT_IMAGEMEMXFER    0x0103 /* TW_IMAGEMEMXFER                      */
1461*b1cdbd2cSJim Jagielski #define DAT_IMAGENATIVEXFER 0x0104 /* TW_UINT32 loword is hDIB, PICHandle  */
1462*b1cdbd2cSJim Jagielski #define DAT_IMAGEFILEXFER   0x0105 /* Null data                            */
1463*b1cdbd2cSJim Jagielski #define DAT_CIECOLOR        0x0106 /* TW_CIECOLOR                          */
1464*b1cdbd2cSJim Jagielski #define DAT_GRAYRESPONSE    0x0107 /* TW_GRAYRESPONSE                      */
1465*b1cdbd2cSJim Jagielski #define DAT_RGBRESPONSE     0x0108 /* TW_RGBRESPONSE                       */
1466*b1cdbd2cSJim Jagielski #define DAT_JPEGCOMPRESSION 0x0109 /* TW_JPEGCOMPRESSION                   */
1467*b1cdbd2cSJim Jagielski #define DAT_PALETTE8        0x010a /* TW_PALETTE8                          */
1468*b1cdbd2cSJim Jagielski #define DAT_EXTIMAGEINFO    0x010b /* TW_EXTIMAGEINFO -- for 1.7 Spec.     */
1469*b1cdbd2cSJim Jagielski 
1470*b1cdbd2cSJim Jagielski /* Data Argument Types for the DG_AUDIO Data Group. */
1471*b1cdbd2cSJim Jagielski #define DAT_AUDIOFILEXFER   0x0201 /* Null data          Added 1.8         */
1472*b1cdbd2cSJim Jagielski #define DAT_AUDIOINFO       0x0202 /* TW_AUDIOINFO       Added 1.8         */
1473*b1cdbd2cSJim Jagielski #define DAT_AUDIONATIVEXFER 0x0203 /* TW_UINT32 handle to WAV, (AIFF Mac) Added 1.8 */
1474*b1cdbd2cSJim Jagielski 
1475*b1cdbd2cSJim Jagielski /* misplaced */
1476*b1cdbd2cSJim Jagielski #define DAT_ICCPROFILE        0x0401 /* TW_MEMORY        Added 1.91  This Data Argument is misplaced but belongs to the DG_IMAGE Data Group */
1477*b1cdbd2cSJim Jagielski #define DAT_IMAGEMEMFILEXFER  0x0402 /* TW_IMAGEMEMXFER  Added 1.91  This Data Argument is misplaced but belongs to the DG_IMAGE Data Group */
1478*b1cdbd2cSJim Jagielski #define DAT_ENTRYPOINT        0x0403 /* TW_ENTRYPOINT    Added 2.0   This Data Argument is misplaced but belongs to the DG_CONTROL Data Group */
1479*b1cdbd2cSJim Jagielski 
1480*b1cdbd2cSJim Jagielski 
1481*b1cdbd2cSJim Jagielski /****************************************************************************
1482*b1cdbd2cSJim Jagielski  * Messages                                                                 *
1483*b1cdbd2cSJim Jagielski  ****************************************************************************/
1484*b1cdbd2cSJim Jagielski 
1485*b1cdbd2cSJim Jagielski /* All message constants are unique.
1486*b1cdbd2cSJim Jagielski  * Messages are grouped according to which DATs they are used with.*/
1487*b1cdbd2cSJim Jagielski 
1488*b1cdbd2cSJim Jagielski #define MSG_NULL         0x0000 /* Used in TW_EVENT structure               */
1489*b1cdbd2cSJim Jagielski #define MSG_CUSTOMBASE   0x8000 /* Base of custom messages                  */
1490*b1cdbd2cSJim Jagielski 
1491*b1cdbd2cSJim Jagielski /* Generic messages may be used with any of several DATs.                   */
1492*b1cdbd2cSJim Jagielski #define MSG_GET             0x0001 /* Get one or more values                   */
1493*b1cdbd2cSJim Jagielski #define MSG_GETCURRENT      0x0002 /* Get current value                        */
1494*b1cdbd2cSJim Jagielski #define MSG_GETDEFAULT      0x0003 /* Get default (e.g. power up) value        */
1495*b1cdbd2cSJim Jagielski #define MSG_GETFIRST        0x0004 /* Get first of a series of items, e.g. DSs */
1496*b1cdbd2cSJim Jagielski #define MSG_GETNEXT         0x0005 /* Iterate through a series of items.       */
1497*b1cdbd2cSJim Jagielski #define MSG_SET             0x0006 /* Set one or more values                   */
1498*b1cdbd2cSJim Jagielski #define MSG_RESET           0x0007 /* Set current value to default value       */
1499*b1cdbd2cSJim Jagielski #define MSG_QUERYSUPPORT    0x0008 /* Get supported operations on the cap.     */
1500*b1cdbd2cSJim Jagielski #define MSG_GETHELP         0x0009 /* Returns help text suitable for use in a GUI        Added 2.1 */
1501*b1cdbd2cSJim Jagielski #define MSG_GETLABEL        0x000a /* Returns a label suitable for use in a GUI          Added 2.1 */
1502*b1cdbd2cSJim Jagielski #define MSG_GETLABELENUM    0x000b /* Return all of the labels for a capability of type  Added 2.1 */
1503*b1cdbd2cSJim Jagielski 
1504*b1cdbd2cSJim Jagielski 
1505*b1cdbd2cSJim Jagielski /* Messages used with DAT_NULL                                              */
1506*b1cdbd2cSJim Jagielski #define MSG_XFERREADY    0x0101 /* The data source has data ready           */
1507*b1cdbd2cSJim Jagielski #define MSG_CLOSEDSREQ   0x0102 /* Request for Application. to close DS               */
1508*b1cdbd2cSJim Jagielski #define MSG_CLOSEDSOK    0x0103 /* Tell the Application. to save the state.           */
1509*b1cdbd2cSJim Jagielski #define MSG_DEVICEEVENT  0X0104 /* Some event has taken place               Added 1.8 */
1510*b1cdbd2cSJim Jagielski 
1511*b1cdbd2cSJim Jagielski /* Messages used with a pointer to DAT_PARENT data                          */
1512*b1cdbd2cSJim Jagielski #define MSG_OPENDSM      0x0301 /* Open the DSM                             */
1513*b1cdbd2cSJim Jagielski #define MSG_CLOSEDSM     0x0302 /* Close the DSM                            */
1514*b1cdbd2cSJim Jagielski 
1515*b1cdbd2cSJim Jagielski /* Messages used with a pointer to a DAT_IDENTITY structure                 */
1516*b1cdbd2cSJim Jagielski #define MSG_OPENDS       0x0401 /* Open a data source                       */
1517*b1cdbd2cSJim Jagielski #define MSG_CLOSEDS      0x0402 /* Close a data source                      */
1518*b1cdbd2cSJim Jagielski #define MSG_USERSELECT   0x0403 /* Put up a dialog of all DS                */
1519*b1cdbd2cSJim Jagielski 
1520*b1cdbd2cSJim Jagielski /* Messages used with a pointer to a DAT_USERINTERFACE structure            */
1521*b1cdbd2cSJim Jagielski #define MSG_DISABLEDS    0x0501 /* Disable data transfer in the DS          */
1522*b1cdbd2cSJim Jagielski #define MSG_ENABLEDS     0x0502 /* Enable data transfer in the DS           */
1523*b1cdbd2cSJim Jagielski #define MSG_ENABLEDSUIONLY  0x0503  /* Enable for saving DS state only.     */
1524*b1cdbd2cSJim Jagielski 
1525*b1cdbd2cSJim Jagielski /* Messages used with a pointer to a DAT_EVENT structure                    */
1526*b1cdbd2cSJim Jagielski #define MSG_PROCESSEVENT 0x0601
1527*b1cdbd2cSJim Jagielski 
1528*b1cdbd2cSJim Jagielski /* Messages used with a pointer to a DAT_PENDINGXFERS structure             */
1529*b1cdbd2cSJim Jagielski #define MSG_ENDXFER      0x0701
1530*b1cdbd2cSJim Jagielski #define MSG_STOPFEEDER   0x0702
1531*b1cdbd2cSJim Jagielski 
1532*b1cdbd2cSJim Jagielski /* Messages used with a pointer to a DAT_FILESYSTEM structure               */
1533*b1cdbd2cSJim Jagielski #define MSG_CHANGEDIRECTORY   0x0801 /* Added 1.8 */
1534*b1cdbd2cSJim Jagielski #define MSG_CREATEDIRECTORY   0x0802 /* Added 1.8 */
1535*b1cdbd2cSJim Jagielski #define MSG_DELETE            0x0803 /* Added 1.8 */
1536*b1cdbd2cSJim Jagielski #define MSG_FORMATMEDIA       0x0804 /* Added 1.8 */
1537*b1cdbd2cSJim Jagielski #define MSG_GETCLOSE          0x0805 /* Added 1.8 */
1538*b1cdbd2cSJim Jagielski #define MSG_GETFIRSTFILE      0x0806 /* Added 1.8 */
1539*b1cdbd2cSJim Jagielski #define MSG_GETINFO           0x0807 /* Added 1.8 */
1540*b1cdbd2cSJim Jagielski #define MSG_GETNEXTFILE       0x0808 /* Added 1.8 */
1541*b1cdbd2cSJim Jagielski #define MSG_RENAME            0x0809 /* Added 1.8 */
1542*b1cdbd2cSJim Jagielski #define MSG_COPY              0x080A /* Added 1.8 */
1543*b1cdbd2cSJim Jagielski #define MSG_AUTOMATICCAPTUREDIRECTORY 0x080B /* Added 1.8 */
1544*b1cdbd2cSJim Jagielski 
1545*b1cdbd2cSJim Jagielski /* Messages used with a pointer to a DAT_PASSTHRU structure                 */
1546*b1cdbd2cSJim Jagielski #define MSG_PASSTHRU          0x0901
1547*b1cdbd2cSJim Jagielski 
1548*b1cdbd2cSJim Jagielski /* used with DAT_CALLBACK */
1549*b1cdbd2cSJim Jagielski #define MSG_REGISTER_CALLBACK 0x0902
1550*b1cdbd2cSJim Jagielski 
1551*b1cdbd2cSJim Jagielski /* used with DAT_CAPABILITY */
1552*b1cdbd2cSJim Jagielski #define MSG_RESETALL          0x0A01 /*  Added 1.91 */
1553*b1cdbd2cSJim Jagielski 
1554*b1cdbd2cSJim Jagielski /****************************************************************************
1555*b1cdbd2cSJim Jagielski  * Capabilities                                                             *
1556*b1cdbd2cSJim Jagielski  ****************************************************************************/
1557*b1cdbd2cSJim Jagielski 
1558*b1cdbd2cSJim Jagielski #define CAP_CUSTOMBASE          0x8000 /* Base of custom capabilities */
1559*b1cdbd2cSJim Jagielski 
1560*b1cdbd2cSJim Jagielski /* all data sources are REQUIRED to support these caps */
1561*b1cdbd2cSJim Jagielski #define CAP_XFERCOUNT           0x0001
1562*b1cdbd2cSJim Jagielski 
1563*b1cdbd2cSJim Jagielski /* image data sources are REQUIRED to support these caps */
1564*b1cdbd2cSJim Jagielski #define ICAP_COMPRESSION        0x0100
1565*b1cdbd2cSJim Jagielski #define ICAP_PIXELTYPE          0x0101
1566*b1cdbd2cSJim Jagielski #define ICAP_UNITS              0x0102 /* default is TWUN_INCHES */
1567*b1cdbd2cSJim Jagielski #define ICAP_XFERMECH           0x0103
1568*b1cdbd2cSJim Jagielski 
1569*b1cdbd2cSJim Jagielski /* all data sources MAY support these caps */
1570*b1cdbd2cSJim Jagielski #define CAP_AUTHOR                  0x1000
1571*b1cdbd2cSJim Jagielski #define CAP_CAPTION                 0x1001
1572*b1cdbd2cSJim Jagielski #define CAP_FEEDERENABLED           0x1002
1573*b1cdbd2cSJim Jagielski #define CAP_FEEDERLOADED            0x1003
1574*b1cdbd2cSJim Jagielski #define CAP_TIMEDATE                0x1004
1575*b1cdbd2cSJim Jagielski #define CAP_SUPPORTEDCAPS           0x1005
1576*b1cdbd2cSJim Jagielski #define CAP_EXTENDEDCAPS            0x1006
1577*b1cdbd2cSJim Jagielski #define CAP_AUTOFEED                0x1007
1578*b1cdbd2cSJim Jagielski #define CAP_CLEARPAGE               0x1008
1579*b1cdbd2cSJim Jagielski #define CAP_FEEDPAGE                0x1009
1580*b1cdbd2cSJim Jagielski #define CAP_REWINDPAGE              0x100a
1581*b1cdbd2cSJim Jagielski #define CAP_INDICATORS              0x100b   /* Added 1.1 */
1582*b1cdbd2cSJim Jagielski #define CAP_SUPPORTEDCAPSEXT        0x100c   /* Added 1.6 */
1583*b1cdbd2cSJim Jagielski #define CAP_PAPERDETECTABLE         0x100d   /* Added 1.6 */
1584*b1cdbd2cSJim Jagielski #define CAP_UICONTROLLABLE          0x100e   /* Added 1.6 */
1585*b1cdbd2cSJim Jagielski #define CAP_DEVICEONLINE            0x100f   /* Added 1.6 */
1586*b1cdbd2cSJim Jagielski #define CAP_AUTOSCAN                0x1010   /* Added 1.6 */
1587*b1cdbd2cSJim Jagielski #define CAP_THUMBNAILSENABLED       0x1011   /* Added 1.7 */
1588*b1cdbd2cSJim Jagielski #define CAP_DUPLEX                  0x1012   /* Added 1.7 */
1589*b1cdbd2cSJim Jagielski #define CAP_DUPLEXENABLED           0x1013   /* Added 1.7 */
1590*b1cdbd2cSJim Jagielski #define CAP_ENABLEDSUIONLY          0x1014   /* Added 1.7 */
1591*b1cdbd2cSJim Jagielski #define CAP_CUSTOMDSDATA            0x1015   /* Added 1.7 */
1592*b1cdbd2cSJim Jagielski #define CAP_ENDORSER                0x1016   /* Added 1.7 */
1593*b1cdbd2cSJim Jagielski #define CAP_JOBCONTROL              0x1017   /* Added 1.7 */
1594*b1cdbd2cSJim Jagielski #define CAP_ALARMS                  0x1018   /* Added 1.8 */
1595*b1cdbd2cSJim Jagielski #define CAP_ALARMVOLUME             0x1019   /* Added 1.8 */
1596*b1cdbd2cSJim Jagielski #define CAP_AUTOMATICCAPTURE        0x101a   /* Added 1.8 */
1597*b1cdbd2cSJim Jagielski #define CAP_TIMEBEFOREFIRSTCAPTURE  0x101b   /* Added 1.8 */
1598*b1cdbd2cSJim Jagielski #define CAP_TIMEBETWEENCAPTURES     0x101c   /* Added 1.8 */
1599*b1cdbd2cSJim Jagielski #define CAP_CLEARBUFFERS            0x101d   /* Added 1.8 */
1600*b1cdbd2cSJim Jagielski #define CAP_MAXBATCHBUFFERS         0x101e   /* Added 1.8 */
1601*b1cdbd2cSJim Jagielski #define CAP_DEVICETIMEDATE          0x101f   /* Added 1.8 */
1602*b1cdbd2cSJim Jagielski #define CAP_POWERSUPPLY             0x1020   /* Added 1.8 */
1603*b1cdbd2cSJim Jagielski #define CAP_CAMERAPREVIEWUI         0x1021   /* Added 1.8 */
1604*b1cdbd2cSJim Jagielski #define CAP_DEVICEEVENT             0x1022   /* Added 1.8 */
1605*b1cdbd2cSJim Jagielski #define CAP_SERIALNUMBER            0x1024   /* Added 1.8 */
1606*b1cdbd2cSJim Jagielski #define CAP_PRINTER                 0x1026   /* Added 1.8 */
1607*b1cdbd2cSJim Jagielski #define CAP_PRINTERENABLED          0x1027   /* Added 1.8 */
1608*b1cdbd2cSJim Jagielski #define CAP_PRINTERINDEX            0x1028   /* Added 1.8 */
1609*b1cdbd2cSJim Jagielski #define CAP_PRINTERMODE             0x1029   /* Added 1.8 */
1610*b1cdbd2cSJim Jagielski #define CAP_PRINTERSTRING           0x102a   /* Added 1.8 */
1611*b1cdbd2cSJim Jagielski #define CAP_PRINTERSUFFIX           0x102b   /* Added 1.8 */
1612*b1cdbd2cSJim Jagielski #define CAP_LANGUAGE                0x102c   /* Added 1.8 */
1613*b1cdbd2cSJim Jagielski #define CAP_FEEDERALIGNMENT         0x102d   /* Added 1.8 */
1614*b1cdbd2cSJim Jagielski #define CAP_FEEDERORDER             0x102e   /* Added 1.8 */
1615*b1cdbd2cSJim Jagielski #define CAP_REACQUIREALLOWED        0x1030   /* Added 1.8 */
1616*b1cdbd2cSJim Jagielski #define CAP_BATTERYMINUTES          0x1032   /* Added 1.8 */
1617*b1cdbd2cSJim Jagielski #define CAP_BATTERYPERCENTAGE       0x1033   /* Added 1.8 */
1618*b1cdbd2cSJim Jagielski #define CAP_CAMERASIDE              0x1034   /* Added 1.91 */
1619*b1cdbd2cSJim Jagielski #define CAP_SEGMENTED               0x1035   /* Added 1.91 */
1620*b1cdbd2cSJim Jagielski #define CAP_CAMERAENABLED           0x1036   /* Added 2.0 */
1621*b1cdbd2cSJim Jagielski #define CAP_CAMERAORDER             0x1037   /* Added 2.0 */
1622*b1cdbd2cSJim Jagielski #define CAP_MICRENABLED             0x1038   /* Added 2.0 */
1623*b1cdbd2cSJim Jagielski #define CAP_FEEDERPREP              0x1039   /* Added 2.0 */
1624*b1cdbd2cSJim Jagielski #define CAP_FEEDERPOCKET            0x103a   /* Added 2.0 */
1625*b1cdbd2cSJim Jagielski #define CAP_AUTOMATICSENSEMEDIUM    0x103b   /* Added 2.1 */
1626*b1cdbd2cSJim Jagielski #define CAP_CUSTOMINTERFACEGUID     0x103c   /* Added 2.1 */
1627*b1cdbd2cSJim Jagielski 
1628*b1cdbd2cSJim Jagielski 
1629*b1cdbd2cSJim Jagielski /* image data sources MAY support these caps */
1630*b1cdbd2cSJim Jagielski #define ICAP_AUTOBRIGHT                   0x1100
1631*b1cdbd2cSJim Jagielski #define ICAP_BRIGHTNESS                   0x1101
1632*b1cdbd2cSJim Jagielski #define ICAP_CONTRAST                     0x1103
1633*b1cdbd2cSJim Jagielski #define ICAP_CUSTHALFTONE                 0x1104
1634*b1cdbd2cSJim Jagielski #define ICAP_EXPOSURETIME                 0x1105
1635*b1cdbd2cSJim Jagielski #define ICAP_FILTER                       0x1106
1636*b1cdbd2cSJim Jagielski #define ICAP_FLASHUSED                    0x1107
1637*b1cdbd2cSJim Jagielski #define ICAP_GAMMA                        0x1108
1638*b1cdbd2cSJim Jagielski #define ICAP_HALFTONES                    0x1109
1639*b1cdbd2cSJim Jagielski #define ICAP_HIGHLIGHT                    0x110a
1640*b1cdbd2cSJim Jagielski #define ICAP_IMAGEFILEFORMAT              0x110c
1641*b1cdbd2cSJim Jagielski #define ICAP_LAMPSTATE                    0x110d
1642*b1cdbd2cSJim Jagielski #define ICAP_LIGHTSOURCE                  0x110e
1643*b1cdbd2cSJim Jagielski #define ICAP_ORIENTATION                  0x1110
1644*b1cdbd2cSJim Jagielski #define ICAP_PHYSICALWIDTH                0x1111
1645*b1cdbd2cSJim Jagielski #define ICAP_PHYSICALHEIGHT               0x1112
1646*b1cdbd2cSJim Jagielski #define ICAP_SHADOW                       0x1113
1647*b1cdbd2cSJim Jagielski #define ICAP_FRAMES                       0x1114
1648*b1cdbd2cSJim Jagielski #define ICAP_XNATIVERESOLUTION            0x1116
1649*b1cdbd2cSJim Jagielski #define ICAP_YNATIVERESOLUTION            0x1117
1650*b1cdbd2cSJim Jagielski #define ICAP_XRESOLUTION                  0x1118
1651*b1cdbd2cSJim Jagielski #define ICAP_YRESOLUTION                  0x1119
1652*b1cdbd2cSJim Jagielski #define ICAP_MAXFRAMES                    0x111a
1653*b1cdbd2cSJim Jagielski #define ICAP_TILES                        0x111b
1654*b1cdbd2cSJim Jagielski #define ICAP_BITORDER                     0x111c
1655*b1cdbd2cSJim Jagielski #define ICAP_CCITTKFACTOR                 0x111d
1656*b1cdbd2cSJim Jagielski #define ICAP_LIGHTPATH                    0x111e
1657*b1cdbd2cSJim Jagielski #define ICAP_PIXELFLAVOR                  0x111f
1658*b1cdbd2cSJim Jagielski #define ICAP_PLANARCHUNKY                 0x1120
1659*b1cdbd2cSJim Jagielski #define ICAP_ROTATION                     0x1121
1660*b1cdbd2cSJim Jagielski #define ICAP_SUPPORTEDSIZES               0x1122
1661*b1cdbd2cSJim Jagielski #define ICAP_THRESHOLD                    0x1123
1662*b1cdbd2cSJim Jagielski #define ICAP_XSCALING                     0x1124
1663*b1cdbd2cSJim Jagielski #define ICAP_YSCALING                     0x1125
1664*b1cdbd2cSJim Jagielski #define ICAP_BITORDERCODES                0x1126
1665*b1cdbd2cSJim Jagielski #define ICAP_PIXELFLAVORCODES             0x1127
1666*b1cdbd2cSJim Jagielski #define ICAP_JPEGPIXELTYPE                0x1128
1667*b1cdbd2cSJim Jagielski #define ICAP_TIMEFILL                     0x112a
1668*b1cdbd2cSJim Jagielski #define ICAP_BITDEPTH                     0x112b
1669*b1cdbd2cSJim Jagielski #define ICAP_BITDEPTHREDUCTION            0x112c  /* Added 1.5 */
1670*b1cdbd2cSJim Jagielski #define ICAP_UNDEFINEDIMAGESIZE           0x112d  /* Added 1.6 */
1671*b1cdbd2cSJim Jagielski #define ICAP_IMAGEDATASET                 0x112e  /* Added 1.7 */
1672*b1cdbd2cSJim Jagielski #define ICAP_EXTIMAGEINFO                 0x112f  /* Added 1.7 */
1673*b1cdbd2cSJim Jagielski #define ICAP_MINIMUMHEIGHT                0x1130  /* Added 1.7 */
1674*b1cdbd2cSJim Jagielski #define ICAP_MINIMUMWIDTH                 0x1131  /* Added 1.7 */
1675*b1cdbd2cSJim Jagielski #define ICAP_AUTODISCARDBLANKPAGES        0x1134  /* Added 2.0 */
1676*b1cdbd2cSJim Jagielski #define ICAP_FLIPROTATION                 0x1136  /* Added 1.8 */
1677*b1cdbd2cSJim Jagielski #define ICAP_BARCODEDETECTIONENABLED      0x1137  /* Added 1.8 */
1678*b1cdbd2cSJim Jagielski #define ICAP_SUPPORTEDBARCODETYPES        0x1138  /* Added 1.8 */
1679*b1cdbd2cSJim Jagielski #define ICAP_BARCODEMAXSEARCHPRIORITIES   0x1139  /* Added 1.8 */
1680*b1cdbd2cSJim Jagielski #define ICAP_BARCODESEARCHPRIORITIES      0x113a  /* Added 1.8 */
1681*b1cdbd2cSJim Jagielski #define ICAP_BARCODESEARCHMODE            0x113b  /* Added 1.8 */
1682*b1cdbd2cSJim Jagielski #define ICAP_BARCODEMAXRETRIES            0x113c  /* Added 1.8 */
1683*b1cdbd2cSJim Jagielski #define ICAP_BARCODETIMEOUT               0x113d  /* Added 1.8 */
1684*b1cdbd2cSJim Jagielski #define ICAP_ZOOMFACTOR                   0x113e  /* Added 1.8 */
1685*b1cdbd2cSJim Jagielski #define ICAP_PATCHCODEDETECTIONENABLED    0x113f  /* Added 1.8 */
1686*b1cdbd2cSJim Jagielski #define ICAP_SUPPORTEDPATCHCODETYPES      0x1140  /* Added 1.8 */
1687*b1cdbd2cSJim Jagielski #define ICAP_PATCHCODEMAXSEARCHPRIORITIES 0x1141  /* Added 1.8 */
1688*b1cdbd2cSJim Jagielski #define ICAP_PATCHCODESEARCHPRIORITIES    0x1142  /* Added 1.8 */
1689*b1cdbd2cSJim Jagielski #define ICAP_PATCHCODESEARCHMODE          0x1143  /* Added 1.8 */
1690*b1cdbd2cSJim Jagielski #define ICAP_PATCHCODEMAXRETRIES          0x1144  /* Added 1.8 */
1691*b1cdbd2cSJim Jagielski #define ICAP_PATCHCODETIMEOUT             0x1145  /* Added 1.8 */
1692*b1cdbd2cSJim Jagielski #define ICAP_FLASHUSED2                   0x1146  /* Added 1.8 */
1693*b1cdbd2cSJim Jagielski #define ICAP_IMAGEFILTER                  0x1147  /* Added 1.8 */
1694*b1cdbd2cSJim Jagielski #define ICAP_NOISEFILTER                  0x1148  /* Added 1.8 */
1695*b1cdbd2cSJim Jagielski #define ICAP_OVERSCAN                     0x1149  /* Added 1.8 */
1696*b1cdbd2cSJim Jagielski #define ICAP_AUTOMATICBORDERDETECTION     0x1150  /* Added 1.8 */
1697*b1cdbd2cSJim Jagielski #define ICAP_AUTOMATICDESKEW              0x1151  /* Added 1.8 */
1698*b1cdbd2cSJim Jagielski #define ICAP_AUTOMATICROTATE              0x1152  /* Added 1.8 */
1699*b1cdbd2cSJim Jagielski #define ICAP_JPEGQUALITY                  0x1153  /* Added 1.9 */
1700*b1cdbd2cSJim Jagielski #define ICAP_FEEDERTYPE                   0x1154  /* Added 1.91 */
1701*b1cdbd2cSJim Jagielski #define ICAP_ICCPROFILE                   0x1155  /* Added 1.91 */
1702*b1cdbd2cSJim Jagielski #define ICAP_AUTOSIZE                     0x1156  /* Added 2.0 */
1703*b1cdbd2cSJim Jagielski #define ICAP_AUTOMATICCROPUSESFRAME       0x1157  /* Added 2.1 */
1704*b1cdbd2cSJim Jagielski #define ICAP_AUTOMATICLENGTHDETECTION     0x1158  /* Added 2.1 */
1705*b1cdbd2cSJim Jagielski #define ICAP_AUTOMATICCOLORENABLED        0x1159  /* Added 2.1 */
1706*b1cdbd2cSJim Jagielski #define ICAP_AUTOMATICCOLORNONCOLORPIXELTYPE 0x115a  /* Added 2.1 */
1707*b1cdbd2cSJim Jagielski #define ICAP_COLORMANAGEMENTENABLED       0x115b  /* Added 2.1 */
1708*b1cdbd2cSJim Jagielski #define ICAP_IMAGEMERGE                   0x115c  /* Added 2.1 */
1709*b1cdbd2cSJim Jagielski #define ICAP_IMAGEMERGEHEIGHTTHRESHOLD    0x115d  /* Added 2.1 */
1710*b1cdbd2cSJim Jagielski #define ICAP_SUPPORTEDEXTIMAGEINFO        0x115e  /* Added 2.1 */
1711*b1cdbd2cSJim Jagielski 
1712*b1cdbd2cSJim Jagielski /* image data sources MAY support these audio caps */
1713*b1cdbd2cSJim Jagielski #define ACAP_XFERMECH                     0x1202  /* Added 1.8 */
1714*b1cdbd2cSJim Jagielski 
1715*b1cdbd2cSJim Jagielski 
1716*b1cdbd2cSJim Jagielski /***************************************************************************
1717*b1cdbd2cSJim Jagielski  *            Extended Image Info Attributes section  Added 1.7            *
1718*b1cdbd2cSJim Jagielski  ***************************************************************************/
1719*b1cdbd2cSJim Jagielski 
1720*b1cdbd2cSJim Jagielski #define TWEI_BARCODEX               0x1200
1721*b1cdbd2cSJim Jagielski #define TWEI_BARCODEY               0x1201
1722*b1cdbd2cSJim Jagielski #define TWEI_BARCODETEXT            0x1202
1723*b1cdbd2cSJim Jagielski #define TWEI_BARCODETYPE            0x1203
1724*b1cdbd2cSJim Jagielski #define TWEI_DESHADETOP             0x1204
1725*b1cdbd2cSJim Jagielski #define TWEI_DESHADELEFT            0x1205
1726*b1cdbd2cSJim Jagielski #define TWEI_DESHADEHEIGHT          0x1206
1727*b1cdbd2cSJim Jagielski #define TWEI_DESHADEWIDTH           0x1207
1728*b1cdbd2cSJim Jagielski #define TWEI_DESHADESIZE            0x1208
1729*b1cdbd2cSJim Jagielski #define TWEI_SPECKLESREMOVED        0x1209
1730*b1cdbd2cSJim Jagielski #define TWEI_HORZLINEXCOORD         0x120A
1731*b1cdbd2cSJim Jagielski #define TWEI_HORZLINEYCOORD         0x120B
1732*b1cdbd2cSJim Jagielski #define TWEI_HORZLINELENGTH         0x120C
1733*b1cdbd2cSJim Jagielski #define TWEI_HORZLINETHICKNESS      0x120D
1734*b1cdbd2cSJim Jagielski #define TWEI_VERTLINEXCOORD         0x120E
1735*b1cdbd2cSJim Jagielski #define TWEI_VERTLINEYCOORD         0x120F
1736*b1cdbd2cSJim Jagielski #define TWEI_VERTLINELENGTH         0x1210
1737*b1cdbd2cSJim Jagielski #define TWEI_VERTLINETHICKNESS      0x1211
1738*b1cdbd2cSJim Jagielski #define TWEI_PATCHCODE              0x1212
1739*b1cdbd2cSJim Jagielski #define TWEI_ENDORSEDTEXT           0x1213
1740*b1cdbd2cSJim Jagielski #define TWEI_FORMCONFIDENCE         0x1214
1741*b1cdbd2cSJim Jagielski #define TWEI_FORMTEMPLATEMATCH      0x1215
1742*b1cdbd2cSJim Jagielski #define TWEI_FORMTEMPLATEPAGEMATCH  0x1216
1743*b1cdbd2cSJim Jagielski #define TWEI_FORMHORZDOCOFFSET      0x1217
1744*b1cdbd2cSJim Jagielski #define TWEI_FORMVERTDOCOFFSET      0x1218
1745*b1cdbd2cSJim Jagielski #define TWEI_BARCODECOUNT           0x1219
1746*b1cdbd2cSJim Jagielski #define TWEI_BARCODECONFIDENCE      0x121A
1747*b1cdbd2cSJim Jagielski #define TWEI_BARCODEROTATION        0x121B
1748*b1cdbd2cSJim Jagielski #define TWEI_BARCODETEXTLENGTH      0x121C
1749*b1cdbd2cSJim Jagielski #define TWEI_DESHADECOUNT           0x121D
1750*b1cdbd2cSJim Jagielski #define TWEI_DESHADEBLACKCOUNTOLD   0x121E
1751*b1cdbd2cSJim Jagielski #define TWEI_DESHADEBLACKCOUNTNEW   0x121F
1752*b1cdbd2cSJim Jagielski #define TWEI_DESHADEBLACKRLMIN      0x1220
1753*b1cdbd2cSJim Jagielski #define TWEI_DESHADEBLACKRLMAX      0x1221
1754*b1cdbd2cSJim Jagielski #define TWEI_DESHADEWHITECOUNTOLD   0x1222
1755*b1cdbd2cSJim Jagielski #define TWEI_DESHADEWHITECOUNTNEW   0x1223
1756*b1cdbd2cSJim Jagielski #define TWEI_DESHADEWHITERLMIN      0x1224
1757*b1cdbd2cSJim Jagielski #define TWEI_DESHADEWHITERLAVE      0x1225
1758*b1cdbd2cSJim Jagielski #define TWEI_DESHADEWHITERLMAX      0x1226
1759*b1cdbd2cSJim Jagielski #define TWEI_BLACKSPECKLESREMOVED   0x1227
1760*b1cdbd2cSJim Jagielski #define TWEI_WHITESPECKLESREMOVED   0x1228
1761*b1cdbd2cSJim Jagielski #define TWEI_HORZLINECOUNT          0x1229
1762*b1cdbd2cSJim Jagielski #define TWEI_VERTLINECOUNT          0x122A
1763*b1cdbd2cSJim Jagielski #define TWEI_DESKEWSTATUS           0x122B
1764*b1cdbd2cSJim Jagielski #define TWEI_SKEWORIGINALANGLE      0x122C
1765*b1cdbd2cSJim Jagielski #define TWEI_SKEWFINALANGLE         0x122D
1766*b1cdbd2cSJim Jagielski #define TWEI_SKEWCONFIDENCE         0x122E
1767*b1cdbd2cSJim Jagielski #define TWEI_SKEWWINDOWX1           0x122F
1768*b1cdbd2cSJim Jagielski #define TWEI_SKEWWINDOWY1           0x1230
1769*b1cdbd2cSJim Jagielski #define TWEI_SKEWWINDOWX2           0x1231
1770*b1cdbd2cSJim Jagielski #define TWEI_SKEWWINDOWY2           0x1232
1771*b1cdbd2cSJim Jagielski #define TWEI_SKEWWINDOWX3           0x1233
1772*b1cdbd2cSJim Jagielski #define TWEI_SKEWWINDOWY3           0x1234
1773*b1cdbd2cSJim Jagielski #define TWEI_SKEWWINDOWX4           0x1235
1774*b1cdbd2cSJim Jagielski #define TWEI_SKEWWINDOWY4           0x1236
1775*b1cdbd2cSJim Jagielski #define TWEI_BOOKNAME               0x1238  /* added 1.9 */
1776*b1cdbd2cSJim Jagielski #define TWEI_CHAPTERNUMBER          0x1239  /* added 1.9 */
1777*b1cdbd2cSJim Jagielski #define TWEI_DOCUMENTNUMBER         0x123A  /* added 1.9 */
1778*b1cdbd2cSJim Jagielski #define TWEI_PAGENUMBER             0x123B  /* added 1.9 */
1779*b1cdbd2cSJim Jagielski #define TWEI_CAMERA                 0x123C  /* added 1.9 */
1780*b1cdbd2cSJim Jagielski #define TWEI_FRAMENUMBER            0x123D  /* added 1.9 */
1781*b1cdbd2cSJim Jagielski #define TWEI_FRAME                  0x123E  /* added 1.9 */
1782*b1cdbd2cSJim Jagielski #define TWEI_PIXELFLAVOR            0x123F  /* added 1.9 */
1783*b1cdbd2cSJim Jagielski #define TWEI_ICCPROFILE             0x1240  /* added 1.91 */
1784*b1cdbd2cSJim Jagielski #define TWEI_LASTSEGMENT            0x1241  /* added 1.91 */
1785*b1cdbd2cSJim Jagielski #define TWEI_SEGMENTNUMBER          0x1242  /* added 1.91 */
1786*b1cdbd2cSJim Jagielski #define TWEI_MAGDATA                0x1243  /* added 2.0 */
1787*b1cdbd2cSJim Jagielski #define TWEI_MAGTYPE                0x1244  /* added 2.0 */
1788*b1cdbd2cSJim Jagielski #define TWEI_PAGESIDE               0x1245  /* added 2.0 */
1789*b1cdbd2cSJim Jagielski #define TWEI_FILESYSTEMSOURCE       0x1246  /* added 2.0 */
1790*b1cdbd2cSJim Jagielski #define TWEI_IMAGEMERGED            0x1247  /* added 2.1 */
1791*b1cdbd2cSJim Jagielski #define TWEI_MAGDATALENGTH          0x1248  /* added 2.1 */
1792*b1cdbd2cSJim Jagielski 
1793*b1cdbd2cSJim Jagielski #define TWEJ_NONE                   0x0000
1794*b1cdbd2cSJim Jagielski #define TWEJ_MIDSEPARATOR           0x0001
1795*b1cdbd2cSJim Jagielski #define TWEJ_PATCH1                 0x0002
1796*b1cdbd2cSJim Jagielski #define TWEJ_PATCH2                 0x0003
1797*b1cdbd2cSJim Jagielski #define TWEJ_PATCH3                 0x0004
1798*b1cdbd2cSJim Jagielski #define TWEJ_PATCH4                 0x0005
1799*b1cdbd2cSJim Jagielski #define TWEJ_PATCH6                 0x0006
1800*b1cdbd2cSJim Jagielski #define TWEJ_PATCHT                 0x0007
1801*b1cdbd2cSJim Jagielski 
1802*b1cdbd2cSJim Jagielski 
1803*b1cdbd2cSJim Jagielski /***************************************************************************
1804*b1cdbd2cSJim Jagielski  *            Return Codes and Condition Codes section                     *
1805*b1cdbd2cSJim Jagielski  ***************************************************************************/
1806*b1cdbd2cSJim Jagielski 
1807*b1cdbd2cSJim Jagielski /* Return Codes: DSM_Entry and DS_Entry may return any one of these values. */
1808*b1cdbd2cSJim Jagielski #define TWRC_CUSTOMBASE     0x8000
1809*b1cdbd2cSJim Jagielski 
1810*b1cdbd2cSJim Jagielski #define TWRC_SUCCESS          0
1811*b1cdbd2cSJim Jagielski #define TWRC_FAILURE          1 /* Application may get TW_STATUS for info on failure */
1812*b1cdbd2cSJim Jagielski #define TWRC_CHECKSTATUS      2 /* "tried hard"; get status                  */
1813*b1cdbd2cSJim Jagielski #define TWRC_CANCEL           3
1814*b1cdbd2cSJim Jagielski #define TWRC_DSEVENT          4
1815*b1cdbd2cSJim Jagielski #define TWRC_NOTDSEVENT       5
1816*b1cdbd2cSJim Jagielski #define TWRC_XFERDONE         6
1817*b1cdbd2cSJim Jagielski #define TWRC_ENDOFLIST        7 /* After MSG_GETNEXT if nothing left         */
1818*b1cdbd2cSJim Jagielski #define TWRC_INFONOTSUPPORTED 8
1819*b1cdbd2cSJim Jagielski #define TWRC_DATANOTAVAILABLE 9
1820*b1cdbd2cSJim Jagielski 
1821*b1cdbd2cSJim Jagielski /* Condition Codes: Application gets these by doing DG_CONTROL DAT_STATUS MSG_GET.  */
1822*b1cdbd2cSJim Jagielski #define TWCC_CUSTOMBASE         0x8000
1823*b1cdbd2cSJim Jagielski 
1824*b1cdbd2cSJim Jagielski #define TWCC_SUCCESS            0 /* It worked!                                */
1825*b1cdbd2cSJim Jagielski #define TWCC_BUMMER             1 /* Failure due to unknown causes             */
1826*b1cdbd2cSJim Jagielski #define TWCC_LOWMEMORY          2 /* Not enough memory to perform operation    */
1827*b1cdbd2cSJim Jagielski #define TWCC_NODS               3 /* No Data Source                            */
1828*b1cdbd2cSJim Jagielski #define TWCC_MAXCONNECTIONS     4 /* DS is connected to max possible applications      */
1829*b1cdbd2cSJim Jagielski #define TWCC_OPERATIONERROR     5 /* DS or DSM reported error, application shouldn't   */
1830*b1cdbd2cSJim Jagielski #define TWCC_BADCAP             6 /* Unknown capability                        */
1831*b1cdbd2cSJim Jagielski #define TWCC_BADPROTOCOL        9 /* Unrecognized MSG DG DAT combination       */
1832*b1cdbd2cSJim Jagielski #define TWCC_BADVALUE           10 /* Data parameter out of range              */
1833*b1cdbd2cSJim Jagielski #define TWCC_SEQERROR           11 /* DG DAT MSG out of expected sequence      */
1834*b1cdbd2cSJim Jagielski #define TWCC_BADDEST            12 /* Unknown destination Application/Source in DSM_Entry */
1835*b1cdbd2cSJim Jagielski #define TWCC_CAPUNSUPPORTED     13 /* Capability not supported by source            */
1836*b1cdbd2cSJim Jagielski #define TWCC_CAPBADOPERATION    14 /* Operation not supported by capability         */
1837*b1cdbd2cSJim Jagielski #define TWCC_CAPSEQERROR        15 /* Capability has dependancy on other capability */
1838*b1cdbd2cSJim Jagielski #define TWCC_DENIED             16 /* File System operation is denied (file is protected) Added 1.8 */
1839*b1cdbd2cSJim Jagielski #define TWCC_FILEEXISTS         17 /* Operation failed because file already exists.       Added 1.8 */
1840*b1cdbd2cSJim Jagielski #define TWCC_FILENOTFOUND       18 /* File not found                                      Added 1.8 */
1841*b1cdbd2cSJim Jagielski #define TWCC_NOTEMPTY           19 /* Operation failed because directory is not empty     Added 1.8 */
1842*b1cdbd2cSJim Jagielski #define TWCC_PAPERJAM           20 /* The feeder is jammed                                Added 1.8 */
1843*b1cdbd2cSJim Jagielski #define TWCC_PAPERDOUBLEFEED    21 /* The feeder detected multiple pages                  Added 1.8 */
1844*b1cdbd2cSJim Jagielski #define TWCC_FILEWRITEERROR     22 /* Error writing the file (meant for things like disk full conditions)Added 1.8 */
1845*b1cdbd2cSJim Jagielski #define TWCC_CHECKDEVICEONLINE  23 /* The device went offline prior to or during this operation Added 1.8 */
1846*b1cdbd2cSJim Jagielski #define TWCC_INTERLOCK          24 /* Added 2.0 */
1847*b1cdbd2cSJim Jagielski #define TWCC_DAMAGEDCORNER      25 /* Added 2.0 */
1848*b1cdbd2cSJim Jagielski #define TWCC_FOCUSERROR         26 /* Added 2.0 */
1849*b1cdbd2cSJim Jagielski #define TWCC_DOCTOOLIGHT        27 /* Added 2.0 */
1850*b1cdbd2cSJim Jagielski #define TWCC_DOCTOODARK         28 /* Added 2.0 */
1851*b1cdbd2cSJim Jagielski #define TWCC_NOMEDIA            29 /* Added 2.1 */
1852*b1cdbd2cSJim Jagielski 
1853*b1cdbd2cSJim Jagielski /* bit patterns: for query the operation that are supported by the data source on a capability */
1854*b1cdbd2cSJim Jagielski /* Application gets these through DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT */
1855*b1cdbd2cSJim Jagielski /* Added 1.6 */
1856*b1cdbd2cSJim Jagielski #define TWQC_GET              0x0001
1857*b1cdbd2cSJim Jagielski #define TWQC_SET              0x0002
1858*b1cdbd2cSJim Jagielski #define TWQC_GETDEFAULT       0x0004
1859*b1cdbd2cSJim Jagielski #define TWQC_GETCURRENT       0x0008
1860*b1cdbd2cSJim Jagielski #define TWQC_RESET            0x0010
1861*b1cdbd2cSJim Jagielski 
1862*b1cdbd2cSJim Jagielski 
1863*b1cdbd2cSJim Jagielski /****************************************************************************
1864*b1cdbd2cSJim Jagielski  * Depreciated Items                                                        *
1865*b1cdbd2cSJim Jagielski  ****************************************************************************/
1866*b1cdbd2cSJim Jagielski #if defined(WIN32) || defined(WIN64)
1867*b1cdbd2cSJim Jagielski         #define TW_HUGE
1868*b1cdbd2cSJim Jagielski #elif !defined(TWH_CMP_GNU)
1869*b1cdbd2cSJim Jagielski         #define TW_HUGE    huge
1870*b1cdbd2cSJim Jagielski #else
1871*b1cdbd2cSJim Jagielski         #define TW_HUGE
1872*b1cdbd2cSJim Jagielski #endif
1873*b1cdbd2cSJim Jagielski 
1874*b1cdbd2cSJim Jagielski 
1875*b1cdbd2cSJim Jagielski 
1876*b1cdbd2cSJim Jagielski typedef BYTE TW_HUGE * HPBYTE;
1877*b1cdbd2cSJim Jagielski typedef void TW_HUGE * HPVOID;
1878*b1cdbd2cSJim Jagielski 
1879*b1cdbd2cSJim Jagielski typedef unsigned char     TW_STR1024[1026],   FAR *pTW_STR1026;
1880*b1cdbd2cSJim Jagielski typedef wchar_t           TW_UNI512[512],     FAR *pTW_UNI512;
1881*b1cdbd2cSJim Jagielski 
1882*b1cdbd2cSJim Jagielski #define TWTY_STR1024          0x000d    /* Means Item is a TW_STR1024...added 1.9 */
1883*b1cdbd2cSJim Jagielski #define TWTY_UNI512           0x000e    /* Means Item is a TW_UNI512...added 1.9 */
1884*b1cdbd2cSJim Jagielski 
1885*b1cdbd2cSJim Jagielski #define TWFF_JPN              12        /* 1.91 */
1886*b1cdbd2cSJim Jagielski 
1887*b1cdbd2cSJim Jagielski #define DAT_TWUNKIDENTITY     0x000b    /* Additional message required for thunker to request the special identity information. */
1888*b1cdbd2cSJim Jagielski #define DAT_SETUPFILEXFER2    0x0301    /* Data transfer via a file. deprecated - use DAT_SETUPFILEXFER instead*/
1889*b1cdbd2cSJim Jagielski 
1890*b1cdbd2cSJim Jagielski #define CAP_SUPPORTEDCAPSEXT      0x100c
1891*b1cdbd2cSJim Jagielski #define CAP_FILESYSTEM            //0x????
1892*b1cdbd2cSJim Jagielski #define CAP_PAGEMULTIPLEACQUIRE   0x1023    /* Added 1.8 */
1893*b1cdbd2cSJim Jagielski #define CAP_PAPERBINDING          0x102f    /* Added 1.8 */
1894*b1cdbd2cSJim Jagielski #define CAP_PASSTHRU              0x1031    /* Added 1.8 */
1895*b1cdbd2cSJim Jagielski #define CAP_POWERDOWNTIME         0x1034    /* Added 1.8 */  //0x1034 is reused by CAP_CAMERASIDE
1896*b1cdbd2cSJim Jagielski #define ACAP_AUDIOFILEFORMAT      0x1201    /* Added 1.8 */
1897*b1cdbd2cSJim Jagielski 
1898*b1cdbd2cSJim Jagielski #define MSG_CHECKSTATUS       0x0201    /* Get status information - use MSG_GET instead */
1899*b1cdbd2cSJim Jagielski 
1900*b1cdbd2cSJim Jagielski #define MSG_INVOKE_CALLBACK   0x0903    /* Mac Only, deprecated - use DAT_NULL and MSG_xxx instead */
1901*b1cdbd2cSJim Jagielski 
1902*b1cdbd2cSJim Jagielski #define TWSX_FILE2            3
1903*b1cdbd2cSJim Jagielski 
1904*b1cdbd2cSJim Jagielski /* CAP_FILESYSTEM values (FS_ means file system) */
1905*b1cdbd2cSJim Jagielski #define TWFS_FILESYSTEM       0
1906*b1cdbd2cSJim Jagielski #define TWFS_RECURSIVEDELETE  1
1907*b1cdbd2cSJim Jagielski 
1908*b1cdbd2cSJim Jagielski /* ICAP_PIXELTYPE values (PT_ means Pixel Type) */
1909*b1cdbd2cSJim Jagielski #define TWPT_SRGB64     11 /* 1.91 */
1910*b1cdbd2cSJim Jagielski #define TWPT_BGR        12 /* 1.91 */
1911*b1cdbd2cSJim Jagielski #define TWPT_CIELAB     13 /* 1.91 */
1912*b1cdbd2cSJim Jagielski #define TWPT_CIELUV     14 /* 1.91 */
1913*b1cdbd2cSJim Jagielski #define TWPT_YCBCR      15 /* 1.91 */
1914*b1cdbd2cSJim Jagielski 
1915*b1cdbd2cSJim Jagielski /* ICAP_SUPPORTEDSIZES values (SS_ means Supported Sizes) */
1916*b1cdbd2cSJim Jagielski #define TWSS_B                8
1917*b1cdbd2cSJim Jagielski #define TWSS_A4LETTER    TWSS_A4      /* use TWSS_A4 instead */
1918*b1cdbd2cSJim Jagielski #define TWSS_B3          TWSS_ISOB3   /* use TWSS_ISOB3 instead */
1919*b1cdbd2cSJim Jagielski #define TWSS_B4          TWSS_ISOB4   /* use TWSS_ISOB4 instead */
1920*b1cdbd2cSJim Jagielski #define TWSS_B6          TWSS_ISOB6   /* use TWSS_ISOB6 instead */
1921*b1cdbd2cSJim Jagielski #define TWSS_B5LETTER    TWSS_JISB5   /* use TWSS_JISB5 instead */
1922*b1cdbd2cSJim Jagielski 
1923*b1cdbd2cSJim Jagielski /* CAP_LANGUAGE Language Constants */
1924*b1cdbd2cSJim Jagielski #define TWLG_DAN    TWLG_DANISH           /* use TWLG_DANISH instead */
1925*b1cdbd2cSJim Jagielski #define TWLG_DUT    TWLG_DUTCH            /* use TWLG_DUTCH instead */
1926*b1cdbd2cSJim Jagielski #define TWLG_ENG    TWLG_ENGLISH          /* use TWLG_ENGLISH instead */
1927*b1cdbd2cSJim Jagielski #define TWLG_USA    TWLG_ENGLISH_USA      /* use TWLG_ENGLISH_USA instead */
1928*b1cdbd2cSJim Jagielski #define TWLG_FIN    TWLG_FINNISH          /* use TWLG_FINNISH instead */
1929*b1cdbd2cSJim Jagielski #define TWLG_FRN    TWLG_FRENCH           /* use TWLG_FRENCH instead */
1930*b1cdbd2cSJim Jagielski #define TWLG_FCF    TWLG_FRENCH_CANADIAN  /* use TWLG_FRENCH_CANADIAN instead */
1931*b1cdbd2cSJim Jagielski #define TWLG_GER    TWLG_GERMAN           /* use TWLG_GERMAN instead */
1932*b1cdbd2cSJim Jagielski #define TWLG_ICE    TWLG_ICELANDIC        /* use TWLG_ICELANDIC instead */
1933*b1cdbd2cSJim Jagielski #define TWLG_ITN    TWLG_ITALIAN          /* use TWLG_ITALIAN instead */
1934*b1cdbd2cSJim Jagielski #define TWLG_NOR    TWLG_NORWEGIAN        /* use TWLG_NORWEGIAN instead */
1935*b1cdbd2cSJim Jagielski #define TWLG_POR    TWLG_PORTUGUESE       /* use TWLG_PORTUGUESE instead */
1936*b1cdbd2cSJim Jagielski #define TWLG_SPA    TWLG_SPANISH          /* use TWLG_SPANISH instead */
1937*b1cdbd2cSJim Jagielski #define TWLG_SWE    TWLG_SWEDISH          /* use TWLG_SWEDISH instead */
1938*b1cdbd2cSJim Jagielski 
1939*b1cdbd2cSJim Jagielski 
1940*b1cdbd2cSJim Jagielski /* ACAP_AUDIOFILEFORMAT values (AF_ means audio format).  Added 1.8 */
1941*b1cdbd2cSJim Jagielski #define TWAF_WAV      0
1942*b1cdbd2cSJim Jagielski #define TWAF_AIFF     1
1943*b1cdbd2cSJim Jagielski #define TWAF_AU       3
1944*b1cdbd2cSJim Jagielski #define TWAF_SND      4
1945*b1cdbd2cSJim Jagielski 
1946*b1cdbd2cSJim Jagielski 
1947*b1cdbd2cSJim Jagielski /* DAT_SETUPFILEXFER2. Sets up DS to application data transfer via a file. Added 1.9 */
1948*b1cdbd2cSJim Jagielski typedef struct {
1949*b1cdbd2cSJim Jagielski    TW_MEMREF FileName;     /* Pointer to file name text */
1950*b1cdbd2cSJim Jagielski    TW_UINT16 FileNameType; /* TWTY_STR1024 or TWTY_UNI512 */
1951*b1cdbd2cSJim Jagielski    TW_UINT16 Format;       /* Any TWFF_ constant */
1952*b1cdbd2cSJim Jagielski    TW_INT16  VRefNum;      /* Used for Mac only  */
1953*b1cdbd2cSJim Jagielski    TW_UINT32 parID;        /* Used for Mac only */
1954*b1cdbd2cSJim Jagielski } TW_SETUPFILEXFER2, FAR * pTW_SETUPFILEXFER2;
1955*b1cdbd2cSJim Jagielski 
1956*b1cdbd2cSJim Jagielski /* SDH - 03/21/95 - TWUNK */
1957*b1cdbd2cSJim Jagielski /* DAT_TWUNKIDENTITY. Provides DS identity and 'other' information necessary */
1958*b1cdbd2cSJim Jagielski /*                    across thunk link. */
1959*b1cdbd2cSJim Jagielski typedef struct {
1960*b1cdbd2cSJim Jagielski    TW_IDENTITY identity;        /* Identity of data source.                 */
1961*b1cdbd2cSJim Jagielski    TW_STR255   dsPath;          /* Full path and file name of data source.  */
1962*b1cdbd2cSJim Jagielski } TW_TWUNKIDENTITY, FAR * pTW_TWUNKIDENTITY;
1963*b1cdbd2cSJim Jagielski 
1964*b1cdbd2cSJim Jagielski /* SDH - 03/21/95 - TWUNK */
1965*b1cdbd2cSJim Jagielski /* Provides DS_Entry parameters over thunk link. */
1966*b1cdbd2cSJim Jagielski /*  SDH - 03/23/95 - WATCH                                                  */
1967*b1cdbd2cSJim Jagielski /*  The thunker requires knowledge about size of data being passed in the   */
1968*b1cdbd2cSJim Jagielski /*  lpData parameter to DS_Entry (which is not readily available due to     */
1969*b1cdbd2cSJim Jagielski /*  type LPVOID.  Thus, we key off the DAT_ argument to determine the size. */
1970*b1cdbd2cSJim Jagielski /*  This has a couple implications:                                         */
1971*b1cdbd2cSJim Jagielski /*  1) Any additional DAT_ features require modifications to the thunk code */
1972*b1cdbd2cSJim Jagielski /*     for thunker support.                                                 */
1973*b1cdbd2cSJim Jagielski /*  2) Any applications which use the custom capabailites are not supported */
1974*b1cdbd2cSJim Jagielski /*     under thunking since we have no way of knowing what size data (if    */
1975*b1cdbd2cSJim Jagielski /*     any) is being passed.                                                */
1976*b1cdbd2cSJim Jagielski typedef struct
1977*b1cdbd2cSJim Jagielski {
1978*b1cdbd2cSJim Jagielski     TW_INT8     destFlag;       /* TRUE if dest is not NULL                 */
1979*b1cdbd2cSJim Jagielski     TW_IDENTITY dest;           /* Identity of data source (if used)        */
1980*b1cdbd2cSJim Jagielski     TW_INT32    dataGroup;      /* DSM_Entry dataGroup parameter            */
1981*b1cdbd2cSJim Jagielski     TW_INT16    dataArgType;    /* DSM_Entry dataArgType parameter          */
1982*b1cdbd2cSJim Jagielski     TW_INT16    message;        /* DSM_Entry message parameter              */
1983*b1cdbd2cSJim Jagielski     TW_INT32    pDataSize;      /* Size of pData (0 if NULL)                */
1984*b1cdbd2cSJim Jagielski     //  TW_MEMREF   pData;      /* Based on implementation specifics, a     */
1985*b1cdbd2cSJim Jagielski                                 /* pData parameter makes no sense in this   */
1986*b1cdbd2cSJim Jagielski                                 /* structure, but data (if provided) will be*/
1987*b1cdbd2cSJim Jagielski                                 /* appended in the data block.              */
1988*b1cdbd2cSJim Jagielski } TW_TWUNKDSENTRYPARAMS, FAR * pTW_TWUNKDSENTRYPARAMS;
1989*b1cdbd2cSJim Jagielski 
1990*b1cdbd2cSJim Jagielski /* SDH - 03/21/95 - TWUNK */
1991*b1cdbd2cSJim Jagielski /* Provides DS_Entry results over thunk link. */
1992*b1cdbd2cSJim Jagielski typedef struct
1993*b1cdbd2cSJim Jagielski {
1994*b1cdbd2cSJim Jagielski     TW_UINT16   returnCode;     /* Thunker DsEntry return code.             */
1995*b1cdbd2cSJim Jagielski     TW_UINT16   conditionCode;  /* Thunker DsEntry condition code.          */
1996*b1cdbd2cSJim Jagielski     TW_INT32    pDataSize;      /* Size of pData (0 if NULL)                */
1997*b1cdbd2cSJim Jagielski     //  TW_MEMREF   pData;      /* Based on implementation specifics, a     */
1998*b1cdbd2cSJim Jagielski                                 /* pData parameter makes no sense in this   */
1999*b1cdbd2cSJim Jagielski                                 /* structure, but data (if provided) will be*/
2000*b1cdbd2cSJim Jagielski                                 /* appended in the data block.              */
2001*b1cdbd2cSJim Jagielski } TW_TWUNKDSENTRYRETURN, FAR * pTW_TWUNKDSENTRYRETURN;
2002*b1cdbd2cSJim Jagielski 
2003*b1cdbd2cSJim Jagielski /* WJD - 950818 */
2004*b1cdbd2cSJim Jagielski /* Added for 1.6 Specification */
2005*b1cdbd2cSJim Jagielski /* TWAIN 1.6 CAP_SUPPORTEDCAPSEXT structure */
2006*b1cdbd2cSJim Jagielski typedef struct
2007*b1cdbd2cSJim Jagielski {
2008*b1cdbd2cSJim Jagielski     TW_UINT16 Cap;   /* Which CAP/ICAP info is relevant to */
2009*b1cdbd2cSJim Jagielski     TW_UINT16 Properties;  /* Messages this CAP/ICAP supports */
2010*b1cdbd2cSJim Jagielski } TW_CAPEXT, FAR * pTW_CAPEXT;
2011*b1cdbd2cSJim Jagielski 
2012*b1cdbd2cSJim Jagielski /* DAT_SETUPAUDIOFILEXFER, information required to setup an audio file transfer */
2013*b1cdbd2cSJim Jagielski typedef struct {
2014*b1cdbd2cSJim Jagielski    TW_STR255  FileName; /* full path target file */
2015*b1cdbd2cSJim Jagielski    TW_UINT16  Format;   /* one of TWAF_xxxx */
2016*b1cdbd2cSJim Jagielski    TW_INT16 VRefNum;
2017*b1cdbd2cSJim Jagielski } TW_SETUPAUDIOFILEXFER, FAR * pTW_SETUPAUDIOFILEXFER;
2018*b1cdbd2cSJim Jagielski 
2019*b1cdbd2cSJim Jagielski 
2020*b1cdbd2cSJim Jagielski /****************************************************************************
2021*b1cdbd2cSJim Jagielski  * Entry Points                                                             *
2022*b1cdbd2cSJim Jagielski  ****************************************************************************/
2023*b1cdbd2cSJim Jagielski 
2024*b1cdbd2cSJim Jagielski /**********************************************************************
2025*b1cdbd2cSJim Jagielski  * Function: DSM_Entry, the only entry point into the Data Source Manager.
2026*b1cdbd2cSJim Jagielski  *
2027*b1cdbd2cSJim Jagielski  * Parameters:
2028*b1cdbd2cSJim Jagielski  *  pOrigin Identifies the source module of the message. This could
2029*b1cdbd2cSJim Jagielski  *          identify an Application, a Source, or the Source Manager.
2030*b1cdbd2cSJim Jagielski  *
2031*b1cdbd2cSJim Jagielski  *  pDest   Identifies the destination module for the message.
2032*b1cdbd2cSJim Jagielski  *          This could identify an application or a data source.
2033*b1cdbd2cSJim Jagielski  *          If this is NULL, the message goes to the Source Manager.
2034*b1cdbd2cSJim Jagielski  *
2035*b1cdbd2cSJim Jagielski  *  DG      The Data Group.
2036*b1cdbd2cSJim Jagielski  *          Example: DG_IMAGE.
2037*b1cdbd2cSJim Jagielski  *
2038*b1cdbd2cSJim Jagielski  *  DAT     The Data Attribute Type.
2039*b1cdbd2cSJim Jagielski  *          Example: DAT_IMAGEMEMXFER.
2040*b1cdbd2cSJim Jagielski  *
2041*b1cdbd2cSJim Jagielski  *  MSG     The message.  Messages are interpreted by the destination module
2042*b1cdbd2cSJim Jagielski  *          with respect to the Data Group and the Data Attribute Type.
2043*b1cdbd2cSJim Jagielski  *          Example: MSG_GET.
2044*b1cdbd2cSJim Jagielski  *
2045*b1cdbd2cSJim Jagielski  *  pData   A pointer to the data structure or variable identified
2046*b1cdbd2cSJim Jagielski  *          by the Data Attribute Type.
2047*b1cdbd2cSJim Jagielski  *          Example: (TW_MEMREF)&ImageMemXfer
2048*b1cdbd2cSJim Jagielski  *                   where ImageMemXfer is a TW_IMAGEMEMXFER structure.
2049*b1cdbd2cSJim Jagielski  *
2050*b1cdbd2cSJim Jagielski  * Returns:
2051*b1cdbd2cSJim Jagielski  *  ReturnCode
2052*b1cdbd2cSJim Jagielski  *         Example: TWRC_SUCCESS.
2053*b1cdbd2cSJim Jagielski  *
2054*b1cdbd2cSJim Jagielski  ********************************************************************/
2055*b1cdbd2cSJim Jagielski 
2056*b1cdbd2cSJim Jagielski /* Don't mangle the name "DSM_Entry" if we're compiling in C++! */
2057*b1cdbd2cSJim Jagielski #ifdef  __cplusplus
2058*b1cdbd2cSJim Jagielski extern "C" {
2059*b1cdbd2cSJim Jagielski #endif  /* __cplusplus */
2060*b1cdbd2cSJim Jagielski 
2061*b1cdbd2cSJim Jagielski #ifdef TWH_CMP_MSC
2062*b1cdbd2cSJim Jagielski 
2063*b1cdbd2cSJim Jagielski   TW_UINT16 FAR PASCAL DSM_Entry( pTW_IDENTITY pOrigin,
2064*b1cdbd2cSJim Jagielski                                   pTW_IDENTITY pDest,
2065*b1cdbd2cSJim Jagielski                                   TW_UINT32    DG,
2066*b1cdbd2cSJim Jagielski                                   TW_UINT16    DAT,
2067*b1cdbd2cSJim Jagielski                                   TW_UINT16    MSG,
2068*b1cdbd2cSJim Jagielski                                   TW_MEMREF    pData);
2069*b1cdbd2cSJim Jagielski 
2070*b1cdbd2cSJim Jagielski   typedef TW_UINT16 (FAR PASCAL *DSMENTRYPROC)(pTW_IDENTITY pOrigin,
2071*b1cdbd2cSJim Jagielski                                                pTW_IDENTITY pDest,
2072*b1cdbd2cSJim Jagielski                                                TW_UINT32 DG,
2073*b1cdbd2cSJim Jagielski                                                TW_UINT16 DAT,
2074*b1cdbd2cSJim Jagielski                                                TW_UINT16 MSG,
2075*b1cdbd2cSJim Jagielski                                                TW_MEMREF pData);
2076*b1cdbd2cSJim Jagielski 
2077*b1cdbd2cSJim Jagielski #else
2078*b1cdbd2cSJim Jagielski 
2079*b1cdbd2cSJim Jagielski   FAR PASCAL TW_UINT16 DSM_Entry( pTW_IDENTITY pOrigin,
2080*b1cdbd2cSJim Jagielski                                   pTW_IDENTITY pDest,
2081*b1cdbd2cSJim Jagielski                                   TW_UINT32    DG,
2082*b1cdbd2cSJim Jagielski                                   TW_UINT16    DAT,
2083*b1cdbd2cSJim Jagielski                                   TW_UINT16    MSG,
2084*b1cdbd2cSJim Jagielski                                   TW_MEMREF    pData);
2085*b1cdbd2cSJim Jagielski 
2086*b1cdbd2cSJim Jagielski   typedef TW_UINT16 (*DSMENTRYPROC)(pTW_IDENTITY pOrigin,
2087*b1cdbd2cSJim Jagielski                                     pTW_IDENTITY pDest,
2088*b1cdbd2cSJim Jagielski                                     TW_UINT32 DG,
2089*b1cdbd2cSJim Jagielski                                     TW_UINT16 DAT,
2090*b1cdbd2cSJim Jagielski                                     TW_UINT16 MSG,
2091*b1cdbd2cSJim Jagielski                                     TW_MEMREF pData);
2092*b1cdbd2cSJim Jagielski 
2093*b1cdbd2cSJim Jagielski #endif  /* TWH_CMP_MSC */
2094*b1cdbd2cSJim Jagielski 
2095*b1cdbd2cSJim Jagielski #ifdef  __cplusplus
2096*b1cdbd2cSJim Jagielski }
2097*b1cdbd2cSJim Jagielski #endif  /* cplusplus */
2098*b1cdbd2cSJim Jagielski 
2099*b1cdbd2cSJim Jagielski 
2100*b1cdbd2cSJim Jagielski /**********************************************************************
2101*b1cdbd2cSJim Jagielski  * Function: DS_Entry, the entry point provided by a Data Source.
2102*b1cdbd2cSJim Jagielski  *
2103*b1cdbd2cSJim Jagielski  * Parameters:
2104*b1cdbd2cSJim Jagielski  *  pOrigin Identifies the source module of the message. This could
2105*b1cdbd2cSJim Jagielski  *          identify an application or the Data Source Manager.
2106*b1cdbd2cSJim Jagielski  *
2107*b1cdbd2cSJim Jagielski  *  DG      The Data Group.
2108*b1cdbd2cSJim Jagielski  *          Example: DG_IMAGE.
2109*b1cdbd2cSJim Jagielski  *
2110*b1cdbd2cSJim Jagielski  *  DAT     The Data Attribute Type.
2111*b1cdbd2cSJim Jagielski  *          Example: DAT_IMAGEMEMXFER.
2112*b1cdbd2cSJim Jagielski  *
2113*b1cdbd2cSJim Jagielski  *  MSG     The message.  Messages are interpreted by the data source
2114*b1cdbd2cSJim Jagielski  *          with respect to the Data Group and the Data Attribute Type.
2115*b1cdbd2cSJim Jagielski  *          Example: MSG_GET.
2116*b1cdbd2cSJim Jagielski  *
2117*b1cdbd2cSJim Jagielski  *  pData   A pointer to the data structure or variable identified
2118*b1cdbd2cSJim Jagielski  *          by the Data Attribute Type.
2119*b1cdbd2cSJim Jagielski  *          Example: (TW_MEMREF)&ImageMemXfer
2120*b1cdbd2cSJim Jagielski  *                   where ImageMemXfer is a TW_IMAGEMEMXFER structure.
2121*b1cdbd2cSJim Jagielski  *
2122*b1cdbd2cSJim Jagielski  * Returns:
2123*b1cdbd2cSJim Jagielski  *  ReturnCode
2124*b1cdbd2cSJim Jagielski  *          Example: TWRC_SUCCESS.
2125*b1cdbd2cSJim Jagielski  *
2126*b1cdbd2cSJim Jagielski  * Note:
2127*b1cdbd2cSJim Jagielski  *  The DSPROC type is only used by an application when it calls
2128*b1cdbd2cSJim Jagielski  *  a Data Source directly, bypassing the Data Source Manager.
2129*b1cdbd2cSJim Jagielski  *
2130*b1cdbd2cSJim Jagielski  ********************************************************************/
2131*b1cdbd2cSJim Jagielski /* Don't mangle the name "DS_Entry" if we're compiling in C++! */
2132*b1cdbd2cSJim Jagielski #ifdef  __cplusplus
2133*b1cdbd2cSJim Jagielski extern "C" {
2134*b1cdbd2cSJim Jagielski #endif  /* __cplusplus */
2135*b1cdbd2cSJim Jagielski 
2136*b1cdbd2cSJim Jagielski #ifdef TWH_CMP_MSC
2137*b1cdbd2cSJim Jagielski 
2138*b1cdbd2cSJim Jagielski   TW_UINT16 FAR PASCAL DS_Entry(pTW_IDENTITY pOrigin,
2139*b1cdbd2cSJim Jagielski                                 TW_UINT32 DG,
2140*b1cdbd2cSJim Jagielski                                 TW_UINT16 DAT,
2141*b1cdbd2cSJim Jagielski                                 TW_UINT16 MSG,
2142*b1cdbd2cSJim Jagielski                                 TW_MEMREF pData);
2143*b1cdbd2cSJim Jagielski 
2144*b1cdbd2cSJim Jagielski   typedef TW_UINT16 (FAR PASCAL *DSENTRYPROC)(pTW_IDENTITY pOrigin,
2145*b1cdbd2cSJim Jagielski                                               TW_UINT32 DG,
2146*b1cdbd2cSJim Jagielski                                               TW_UINT16 DAT,
2147*b1cdbd2cSJim Jagielski                                               TW_UINT16 MSG,
2148*b1cdbd2cSJim Jagielski                                               TW_MEMREF pData);
2149*b1cdbd2cSJim Jagielski 
2150*b1cdbd2cSJim Jagielski #else
2151*b1cdbd2cSJim Jagielski 
2152*b1cdbd2cSJim Jagielski   FAR PASCAL TW_UINT16 DS_Entry(pTW_IDENTITY pOrigin,
2153*b1cdbd2cSJim Jagielski                                 TW_UINT32 DG,
2154*b1cdbd2cSJim Jagielski                                 TW_UINT16 DAT,
2155*b1cdbd2cSJim Jagielski                                 TW_UINT16 MSG,
2156*b1cdbd2cSJim Jagielski                                 TW_MEMREF pData);
2157*b1cdbd2cSJim Jagielski 
2158*b1cdbd2cSJim Jagielski   typedef TW_UINT16 (*DSENTRYPROC)(pTW_IDENTITY pOrigin,
2159*b1cdbd2cSJim Jagielski                                    TW_UINT32 DG,
2160*b1cdbd2cSJim Jagielski                                    TW_UINT16 DAT,
2161*b1cdbd2cSJim Jagielski                                    TW_UINT16 MSG,
2162*b1cdbd2cSJim Jagielski                                    TW_MEMREF pData);
2163*b1cdbd2cSJim Jagielski 
2164*b1cdbd2cSJim Jagielski #endif /* TWH_CMP_MSC */
2165*b1cdbd2cSJim Jagielski 
2166*b1cdbd2cSJim Jagielski 
2167*b1cdbd2cSJim Jagielski   typedef TW_HANDLE (PASCAL *DSM_MEMALLOCATE)(TW_UINT32 _size);
2168*b1cdbd2cSJim Jagielski   typedef void (PASCAL *DSM_MEMFREE)(TW_HANDLE _handle);
2169*b1cdbd2cSJim Jagielski   typedef TW_MEMREF (PASCAL *DSM_MEMLOCK)(TW_HANDLE _handle);
2170*b1cdbd2cSJim Jagielski   typedef void (PASCAL *DSM_MEMUNLOCK)(TW_HANDLE _handle);
2171*b1cdbd2cSJim Jagielski 
2172*b1cdbd2cSJim Jagielski #ifdef  __cplusplus
2173*b1cdbd2cSJim Jagielski }
2174*b1cdbd2cSJim Jagielski #endif  /* __cplusplus */
2175*b1cdbd2cSJim Jagielski 
2176*b1cdbd2cSJim Jagielski /* DAT_ENTRYPOINT. returns essential entry points. */
2177*b1cdbd2cSJim Jagielski typedef struct {
2178*b1cdbd2cSJim Jagielski    TW_UINT32         Size;
2179*b1cdbd2cSJim Jagielski    DSMENTRYPROC      DSM_Entry;
2180*b1cdbd2cSJim Jagielski    DSM_MEMALLOCATE   DSM_MemAllocate;
2181*b1cdbd2cSJim Jagielski    DSM_MEMFREE       DSM_MemFree;
2182*b1cdbd2cSJim Jagielski    DSM_MEMLOCK       DSM_MemLock;
2183*b1cdbd2cSJim Jagielski    DSM_MEMUNLOCK     DSM_MemUnlock;
2184*b1cdbd2cSJim Jagielski } TW_ENTRYPOINT, FAR * pTW_ENTRYPOINT;
2185*b1cdbd2cSJim Jagielski 
2186*b1cdbd2cSJim Jagielski /* Restore the previous packing alignment: this occurs after all structures are defined */
2187*b1cdbd2cSJim Jagielski #if defined(TWH_CMP_MING32)
2188*b1cdbd2cSJim Jagielski     #pragma pack (pop)
2189*b1cdbd2cSJim Jagielski #elif defined(TWH_CMP_MSC)
2190*b1cdbd2cSJim Jagielski     #pragma pack (pop, before_twain)
2191*b1cdbd2cSJim Jagielski #elif defined(TWH_CMP_GNU)
2192*b1cdbd2cSJim Jagielski     #pragma pack (pop, before_twain)
2193*b1cdbd2cSJim Jagielski #elif defined(TWH_CMP_BORLAND)
2194*b1cdbd2cSJim Jagielski     #pragma optiona.
2195*b1cdbd2cSJim Jagielski #elif defined(TWH_CMP_XCODE)
2196*b1cdbd2cSJim Jagielski     #if PRAGMA_STRUCT_ALIGN
2197*b1cdbd2cSJim Jagielski         #pragma options align=reset
2198*b1cdbd2cSJim Jagielski     #elif PRAGMA_STRUCT_PACKPUSH
2199*b1cdbd2cSJim Jagielski         #pragma pack (pop)
2200*b1cdbd2cSJim Jagielski     #elif PRAGMA_STRUCT_PACK
2201*b1cdbd2cSJim Jagielski         #pragma pack()
2202*b1cdbd2cSJim Jagielski     #endif
2203*b1cdbd2cSJim Jagielski #endif
2204*b1cdbd2cSJim Jagielski 
2205*b1cdbd2cSJim Jagielski #endif  /* TWAIN */
2206