oleaut32: Alignment fixes for safearrays.
[wine] / dlls / twain_32 / twain_i.h
1 /*
2  * Copyright 2000 Corel Corporation
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #ifndef _TWAIN32_H
20 #define _TWAIN32_H
21
22 #ifndef __WINE_CONFIG_H
23 # error You must include config.h first
24 #endif
25
26 #ifdef HAVE_SANE
27 # include <sane/sane.h>
28 #endif
29 #include <stdarg.h>
30
31 #include "windef.h"
32 #include "winbase.h"
33 #include "twain.h"
34
35 /* internal information about an active data source */
36 typedef struct tagActiveDS
37 {
38     struct tagActiveDS  *next;                  /* next active DS */
39     TW_IDENTITY         identity;               /* identity */
40     TW_UINT16           currentState;           /* current state */
41     TW_EVENT            pendingEvent;           /* pending event to be sent to
42                                                    application */
43     TW_UINT16           twCC;                   /* condition code */
44     HWND                hwndOwner;              /* window handle of the app */
45     HWND                progressWnd;            /* window handle of the scanning window */
46 #ifdef HAVE_SANE
47     SANE_Handle         deviceHandle;           /* device handle */
48     SANE_Parameters     sane_param;             /* parameters about the image
49                                                    transferred */
50     BOOL                sane_param_valid;  /* true if valid sane_param*/
51     INT                 deviceIndex;    /* index of the current device */
52 #endif
53     /* Capabiblities */
54     TW_UINT16           capXferMech;            /* ICAP_XFERMECH */
55 } activeDS;
56
57 TW_UINT16 DSM_initialized;      /* whether Source Manager is initialized */
58 TW_UINT16 DSM_currentState;     /* current state of Source Manager */
59 TW_UINT16 DSM_twCC;             /* current condition code of Source Manager */
60 TW_HANDLE DSM_parentHWND;       /* window handle of the Source's "parent" */
61 TW_UINT32 DSM_sourceId;         /* source id generator */
62 TW_UINT16 DSM_currentDevice;    /* keep track of device during enumeration */
63 HINSTANCE DSM_instance;
64
65 #ifdef HAVE_SANE
66 const SANE_Device **device_list;/* a list of all sane devices */
67 #endif
68 activeDS *activeSources;        /* list of active data sources */
69
70 /* Helper functions */
71 extern activeDS *TWAIN_LookupSource (pTW_IDENTITY pDest);
72 extern TW_UINT16 TWAIN_SaneCapability (activeDS *pSource,
73         pTW_CAPABILITY pCapability, TW_UINT16 action);
74
75 /*  */
76 extern TW_UINT16 TWAIN_ControlGroupHandler (
77         pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
78     TW_UINT16 DAT, TW_UINT16 MSG, TW_MEMREF pData);
79 extern TW_UINT16 TWAIN_ImageGroupHandler (
80         pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
81         TW_UINT16 DAT, TW_UINT16 MSG, TW_MEMREF pData);
82 extern TW_UINT16 TWAIN_AudioGroupHandler (
83         pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
84         TW_UINT16 DAT, TW_UINT16 MSG, TW_MEMREF pData);
85 extern TW_UINT16 TWAIN_SourceManagerHandler (
86         pTW_IDENTITY pOrigin, TW_UINT16 DAT, TW_UINT16 MSG, TW_MEMREF pData);
87
88 /* Implementation of operation triplets (From Application to Source Manager) */
89 extern TW_UINT16 TWAIN_CloseDS
90            (pTW_IDENTITY pOrigin, TW_MEMREF pData);
91 extern TW_UINT16 TWAIN_IdentityGetDefault
92            (pTW_IDENTITY pOrigin, TW_MEMREF pData);
93 extern TW_UINT16 TWAIN_IdentityGetFirst
94            (pTW_IDENTITY pOrigin, TW_MEMREF pData);
95 extern TW_UINT16 TWAIN_IdentityGetNext
96            (pTW_IDENTITY pOrigin, TW_MEMREF pData);
97 extern TW_UINT16 TWAIN_OpenDS
98            (pTW_IDENTITY pOrigin, TW_MEMREF pData);
99 extern TW_UINT16 TWAIN_UserSelect
100            (pTW_IDENTITY pOrigin, TW_MEMREF pData);
101 extern TW_UINT16 TWAIN_CloseDSM
102            (pTW_IDENTITY pOrigin, TW_MEMREF pData);
103 extern TW_UINT16 TWAIN_OpenDSM
104            (pTW_IDENTITY pOrigin, TW_MEMREF pData);
105 extern TW_UINT16 TWAIN_GetDSMStatus
106            (pTW_IDENTITY pOrigin, TW_MEMREF pData);
107
108 /* Implementation of operation triplets
109  * From Application to Source (Control Information) */
110 TW_UINT16 TWAIN_CapabilityGet
111     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
112 TW_UINT16 TWAIN_CapabilityGetCurrent
113     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,TW_MEMREF pData);
114 TW_UINT16 TWAIN_CapabilityGetDefault
115     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
116 TW_UINT16 TWAIN_CapabilityQuerySupport
117     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
118 TW_UINT16 TWAIN_CapabilityReset
119     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
120 TW_UINT16 TWAIN_CapabilitySet
121     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
122 TW_UINT16 TWAIN_CustomDSDataGet
123     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
124 TW_UINT16 TWAIN_CustomDSDataSet
125     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
126 TW_UINT16 TWAIN_AutomaticCaptureDirectory
127     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
128 TW_UINT16 TWAIN_ChangeDirectory
129     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
130 TW_UINT16 TWAIN_FileSystemCopy
131     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
132 TW_UINT16 TWAIN_CreateDirectory
133     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
134 TW_UINT16 TWAIN_FileSystemDelete
135     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
136 TW_UINT16 TWAIN_FormatMedia
137     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
138 TW_UINT16 TWAIN_FileSystemGetClose
139     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
140 TW_UINT16 TWAIN_FileSystemGetFirstFile
141     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
142 TW_UINT16 TWAIN_FileSystemGetInfo
143     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
144 TW_UINT16 TWAIN_FileSystemGetNextFile
145     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
146 TW_UINT16 TWAIN_FileSystemRename
147     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
148 TW_UINT16 TWAIN_ProcessEvent
149     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
150 TW_UINT16 TWAIN_PassThrough
151     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
152 TW_UINT16 TWAIN_PendingXfersEndXfer
153     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
154 TW_UINT16 TWAIN_PendingXfersGet
155     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
156 TW_UINT16 TWAIN_PendingXfersReset
157     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
158 TW_UINT16 TWAIN_PendingXfersStopFeeder
159     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
160 TW_UINT16 TWAIN_SetupFileXferGet
161     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
162 TW_UINT16 TWAIN_SetupFileXferGetDefault
163     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
164 TW_UINT16 TWAIN_SetupFileXferReset
165     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
166 TW_UINT16 TWAIN_SetupFileXferSet
167     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
168 TW_UINT16 TWAIN_SetupFileXfer2Get
169     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
170 TW_UINT16 TWAIN_SetupFileXfer2GetDefault
171     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
172 TW_UINT16 TWAIN_SetupFileXfer2Reset
173     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
174 TW_UINT16 TWAIN_SetupFileXfer2Set
175     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
176 TW_UINT16 TWAIN_SetupMemXferGet
177     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
178 TW_UINT16 TWAIN_GetDSStatus
179     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
180 TW_UINT16 TWAIN_DisableDSUserInterface
181     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
182 TW_UINT16 TWAIN_EnableDSUserInterface
183     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
184 TW_UINT16 TWAIN_EnableDSUIOnly
185     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
186 TW_UINT16 TWAIN_XferGroupGet
187     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
188 TW_UINT16 TWAIN_XferGroupSet
189     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
190
191 /* Implementation of operation triplets
192  * From Application to Source (Image Information) */
193 TW_UINT16 TWAIN_CIEColorGet
194     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
195 TW_UINT16 TWAIN_ExtImageInfoGet
196     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
197 TW_UINT16 TWAIN_GrayResponseReset
198     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
199 TW_UINT16 TWAIN_GrayResponseSet
200     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
201 TW_UINT16 TWAIN_ImageFileXferGet
202     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
203 TW_UINT16 TWAIN_ImageInfoGet
204     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
205 TW_UINT16 TWAIN_ImageLayoutGet
206     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
207 TW_UINT16 TWAIN_ImageLayoutGetDefault
208     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
209 TW_UINT16 TWAIN_ImageLayoutReset
210     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
211 TW_UINT16 TWAIN_ImageLayoutSet
212     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
213 TW_UINT16 TWAIN_ImageMemXferGet
214     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
215 TW_UINT16 TWAIN_ImageNativeXferGet
216     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
217 TW_UINT16 TWAIN_JPEGCompressionGet
218     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
219 TW_UINT16 TWAIN_JPEGCompressionGetDefault
220     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
221 TW_UINT16 TWAIN_JPEGCompressionReset
222     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
223 TW_UINT16 TWAIN_JPEGCompressionSet
224     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
225 TW_UINT16 TWAIN_Palette8Get
226     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
227 TW_UINT16 TWAIN_Palette8GetDefault
228     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
229 TW_UINT16 TWAIN_Palette8Reset
230     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
231 TW_UINT16 TWAIN_Palette8Set
232     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
233 TW_UINT16 TWAIN_RGBResponseReset
234     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
235 TW_UINT16 TWAIN_RGBResponseSet
236     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
237
238 /* Implementation of operation triplets
239  * From Application to Source (Audio Information) */
240 TW_UINT16 TWAIN_AudioFileXferGet
241     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
242 TW_UINT16 TWAIN_AudioInfoGet
243     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
244 TW_UINT16 TWAIN_AudioNativeXferGet
245     (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_MEMREF pData);
246
247 /* Implementation of TWAIN capabilities */
248 TW_UINT16 TWAIN_ICAPXferMech
249     (activeDS *pSource, pTW_CAPABILITY pCapability, TW_UINT16 action);
250
251 /* UI function */
252 BOOL DoScannerUI(activeDS *pSource);
253 HWND ScanningDialogBox(HWND dialog, DWORD progress);
254
255 #endif