2 * Copyright 2000 Corel Corporation
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.
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.
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #ifndef __WINE_CONFIG_H
23 # error You must include config.h first
27 # include <sane/sane.h>
29 #define MAKE_FUNCPTR(f) typeof(f) * p##f;
30 MAKE_FUNCPTR(sane_init
)
31 MAKE_FUNCPTR(sane_exit
)
32 MAKE_FUNCPTR(sane_get_devices
)
33 MAKE_FUNCPTR(sane_open
)
34 MAKE_FUNCPTR(sane_close
)
35 MAKE_FUNCPTR(sane_get_option_descriptor
)
36 MAKE_FUNCPTR(sane_control_option
)
37 MAKE_FUNCPTR(sane_get_parameters
)
38 MAKE_FUNCPTR(sane_start
)
39 MAKE_FUNCPTR(sane_read
)
40 MAKE_FUNCPTR(sane_cancel
)
41 MAKE_FUNCPTR(sane_set_io_mode
)
42 MAKE_FUNCPTR(sane_get_select_fd
)
43 MAKE_FUNCPTR(sane_strstatus
)
54 extern HINSTANCE SANE_instance
;
56 #define TWCC_CHECKSTATUS (TWCC_CUSTOMBASE + 1)
58 /* internal information about an active data source */
61 struct tagActiveDS
*next
; /* next active DS */
62 TW_IDENTITY identity
; /* identity */
63 TW_UINT16 currentState
; /* current state */
64 UINT windowMessage
; /* message to use to send status */
65 TW_UINT16 twCC
; /* condition code */
66 HWND hwndOwner
; /* window handle of the app */
67 HWND progressWnd
; /* window handle of the scanning window */
69 SANE_Handle deviceHandle
; /* device handle */
70 SANE_Parameters sane_param
; /* parameters about the image
72 BOOL sane_param_valid
; /* true if valid sane_param*/
73 INT deviceIndex
; /* index of the current device */
76 TW_UINT16 capXferMech
; /* ICAP_XFERMECH */
77 TW_UINT16 capPixelType
; /* ICAP_PIXELTYPE */
79 TW_FIX32 defaultXResolution
;
81 TW_FIX32 defaultYResolution
;
84 /* Helper functions */
85 extern TW_UINT16
SANE_SaneCapability (pTW_CAPABILITY pCapability
, TW_UINT16 action
);
87 /* Implementation of operation triplets
88 * From Application to Source (Control Information) */
89 TW_UINT16
SANE_CapabilityGet (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
90 TW_UINT16 SANE_CapabilityGetCurrent
91 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
92 TW_UINT16 SANE_CapabilityGetDefault
93 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
94 TW_UINT16 SANE_CapabilityQuerySupport
95 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
96 TW_UINT16 SANE_CapabilityReset
97 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
98 TW_UINT16 SANE_CapabilitySet
99 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
100 TW_UINT16 SANE_CustomDSDataGet
101 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
102 TW_UINT16 SANE_CustomDSDataSet
103 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
104 TW_UINT16 SANE_AutomaticCaptureDirectory
105 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
106 TW_UINT16 SANE_ChangeDirectory
107 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
108 TW_UINT16 SANE_FileSystemCopy
109 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
110 TW_UINT16 SANE_CreateDirectory
111 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
112 TW_UINT16 SANE_FileSystemDelete
113 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
114 TW_UINT16 SANE_FormatMedia
115 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
116 TW_UINT16 SANE_FileSystemGetClose
117 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
118 TW_UINT16 SANE_FileSystemGetFirstFile
119 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
120 TW_UINT16 SANE_FileSystemGetInfo
121 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
122 TW_UINT16 SANE_FileSystemGetNextFile
123 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
124 TW_UINT16 SANE_FileSystemRename
125 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
126 TW_UINT16 SANE_ProcessEvent
127 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
128 TW_UINT16 SANE_PassThrough
129 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
130 TW_UINT16 SANE_PendingXfersEndXfer
131 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
132 TW_UINT16 SANE_PendingXfersGet
133 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
134 TW_UINT16 SANE_PendingXfersReset
135 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
136 TW_UINT16 SANE_PendingXfersStopFeeder
137 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
138 TW_UINT16 SANE_SetupFileXferGet
139 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
140 TW_UINT16 SANE_SetupFileXferGetDefault
141 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
142 TW_UINT16 SANE_SetupFileXferReset
143 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
144 TW_UINT16 SANE_SetupFileXferSet
145 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
146 TW_UINT16 SANE_SetupFileXfer2Get
147 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
148 TW_UINT16 SANE_SetupFileXfer2GetDefault
149 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
150 TW_UINT16 SANE_SetupFileXfer2Reset
151 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
152 TW_UINT16 SANE_SetupFileXfer2Set
153 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
154 TW_UINT16 SANE_SetupMemXferGet
155 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
156 TW_UINT16 SANE_GetDSStatus
157 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
158 TW_UINT16 SANE_DisableDSUserInterface
159 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
160 TW_UINT16 SANE_EnableDSUserInterface
161 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
162 TW_UINT16 SANE_EnableDSUIOnly
163 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
164 TW_UINT16 SANE_XferGroupGet
165 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
166 TW_UINT16 SANE_XferGroupSet
167 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
169 /* Implementation of operation triplets
170 * From Application to Source (Image Information) */
171 TW_UINT16 SANE_CIEColorGet
172 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
173 TW_UINT16 SANE_ExtImageInfoGet
174 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
175 TW_UINT16 SANE_GrayResponseReset
176 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
177 TW_UINT16 SANE_GrayResponseSet
178 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
179 TW_UINT16 SANE_ImageFileXferGet
180 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
181 TW_UINT16 SANE_ImageInfoGet
182 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
183 TW_UINT16 SANE_ImageLayoutGet
184 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
185 TW_UINT16 SANE_ImageLayoutGetDefault
186 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
187 TW_UINT16 SANE_ImageLayoutReset
188 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
189 TW_UINT16 SANE_ImageLayoutSet
190 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
191 TW_UINT16 SANE_ImageMemXferGet
192 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
193 TW_UINT16 SANE_ImageNativeXferGet
194 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
195 TW_UINT16 SANE_JPEGCompressionGet
196 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
197 TW_UINT16 SANE_JPEGCompressionGetDefault
198 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
199 TW_UINT16 SANE_JPEGCompressionReset
200 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
201 TW_UINT16 SANE_JPEGCompressionSet
202 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
203 TW_UINT16 SANE_Palette8Get
204 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
205 TW_UINT16 SANE_Palette8GetDefault
206 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
207 TW_UINT16 SANE_Palette8Reset
208 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
209 TW_UINT16 SANE_Palette8Set
210 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
211 TW_UINT16 SANE_RGBResponseReset
212 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
213 TW_UINT16 SANE_RGBResponseSet
214 (pTW_IDENTITY pOrigin
, TW_MEMREF pData
);
217 BOOL
DoScannerUI(void);
218 HWND
ScanningDialogBox(HWND dialog
, LONG progress
);
220 /* Option functions */
221 #ifdef SONAME_LIBSANE
222 SANE_Status
sane_option_get_int(SANE_Handle h
, const char *option_name
, SANE_Int
*val
);
223 SANE_Status
sane_option_set_int(SANE_Handle h
, const char *option_name
, SANE_Int val
, SANE_Int
*status
);
224 SANE_Status
sane_option_probe_resolution(SANE_Handle h
, const char *option_name
, SANE_Int
*minval
, SANE_Int
*maxval
, SANE_Int
*quant
);