~ubuntu-branches/ubuntu/hoary/gimp/hoary

« back to all changes in this revision

Viewing changes to plug-ins/twain/twain.h

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2005-04-04 14:51:23 UTC
  • Revision ID: james.westby@ubuntu.com-20050404145123-9py049eeelfymur8
Tags: upstream-2.2.2
ImportĀ upstreamĀ versionĀ 2.2.2

Show diffs side-by-side

added added

removed removed

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