blob: ae58159d596e39c4b9372f72e421a476e48bba7a [file] [log] [blame]
Marcus Meissner125efed2006-05-08 20:05:42 +02001/*
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
Jonathan Ernst360a3f92006-05-18 14:49:52 +020016 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Marcus Meissner125efed2006-05-08 20:05:42 +020017 */
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
Alexandre Julliard37e35842011-09-05 17:22:50 +020026#include <stdarg.h>
27
Alexandre Julliard418e74b2007-07-02 19:42:13 +020028#ifdef SONAME_LIBSANE
Marcus Meissner125efed2006-05-08 20:05:42 +020029# include <sane/sane.h>
Jeremy White00f9ef02009-02-25 20:58:42 -060030# include <sane/saneopts.h>
Alexandre Julliard37e35842011-09-05 17:22:50 +020031#endif
Jeremy White16f33d82007-03-14 13:10:03 -050032
Alexandre Julliard37e35842011-09-05 17:22:50 +020033#include "windef.h"
34#include "winbase.h"
35#include "winuser.h"
36#include "twain.h"
37
38#ifdef SONAME_LIBSANE
Marcus Meissner4af30812011-05-13 18:16:13 +020039#define MAKE_FUNCPTR(f) typeof(f) * p##f DECLSPEC_HIDDEN;
Jeremy White16f33d82007-03-14 13:10:03 -050040MAKE_FUNCPTR(sane_init)
41MAKE_FUNCPTR(sane_exit)
42MAKE_FUNCPTR(sane_get_devices)
43MAKE_FUNCPTR(sane_open)
44MAKE_FUNCPTR(sane_close)
45MAKE_FUNCPTR(sane_get_option_descriptor)
46MAKE_FUNCPTR(sane_control_option)
47MAKE_FUNCPTR(sane_get_parameters)
48MAKE_FUNCPTR(sane_start)
49MAKE_FUNCPTR(sane_read)
50MAKE_FUNCPTR(sane_cancel)
51MAKE_FUNCPTR(sane_set_io_mode)
52MAKE_FUNCPTR(sane_get_select_fd)
53MAKE_FUNCPTR(sane_strstatus)
54#undef MAKE_FUNCPTR
Marcus Meissner125efed2006-05-08 20:05:42 +020055#endif
Marcus Meissner125efed2006-05-08 20:05:42 +020056
Marcus Meissnera247c7f2011-04-26 19:11:44 +020057extern HINSTANCE SANE_instance DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +020058
Jeremy White6ace7992009-02-23 16:25:26 -060059#define TWCC_CHECKSTATUS (TWCC_CUSTOMBASE + 1)
60
Marcus Meissner125efed2006-05-08 20:05:42 +020061/* internal information about an active data source */
62struct tagActiveDS
63{
64 struct tagActiveDS *next; /* next active DS */
65 TW_IDENTITY identity; /* identity */
66 TW_UINT16 currentState; /* current state */
Jeremy White0cab16c2009-02-09 13:02:28 -060067 UINT windowMessage; /* message to use to send status */
Marcus Meissner125efed2006-05-08 20:05:42 +020068 TW_UINT16 twCC; /* condition code */
69 HWND hwndOwner; /* window handle of the app */
70 HWND progressWnd; /* window handle of the scanning window */
Alexandre Julliard418e74b2007-07-02 19:42:13 +020071#ifdef SONAME_LIBSANE
Marcus Meissner125efed2006-05-08 20:05:42 +020072 SANE_Handle deviceHandle; /* device handle */
73 SANE_Parameters sane_param; /* parameters about the image
74 transferred */
75 BOOL sane_param_valid; /* true if valid sane_param*/
Jeremy Whitee472c492009-03-05 13:25:58 -060076 BOOL sane_started; /* If sane_start has been called */
Marcus Meissner125efed2006-05-08 20:05:42 +020077 INT deviceIndex; /* index of the current device */
78#endif
Austin English313a85f2008-04-10 21:17:14 -050079 /* Capabilities */
Marcus Meissner125efed2006-05-08 20:05:42 +020080 TW_UINT16 capXferMech; /* ICAP_XFERMECH */
Jeremy White00f9ef02009-02-25 20:58:42 -060081 BOOL PixelTypeSet;
82 TW_UINT16 defaultPixelType; /* ICAP_PIXELTYPE */
Jeremy White6ace7992009-02-23 16:25:26 -060083 BOOL XResolutionSet;
84 TW_FIX32 defaultXResolution;
85 BOOL YResolutionSet;
86 TW_FIX32 defaultYResolution;
Marcus Meissner4af30812011-05-13 18:16:13 +020087} activeDS DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +020088
89/* Helper functions */
Marcus Meissnera247c7f2011-04-26 19:11:44 +020090extern TW_UINT16 SANE_SaneCapability (pTW_CAPABILITY pCapability, TW_UINT16 action) DECLSPEC_HIDDEN;
91extern TW_UINT16 SANE_SaneSetDefaults (void) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +020092
Marcus Meissner125efed2006-05-08 20:05:42 +020093/* Implementation of operation triplets
94 * From Application to Source (Control Information) */
Marcus Meissnera247c7f2011-04-26 19:11:44 +020095TW_UINT16 SANE_CapabilityGet (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +020096TW_UINT16 SANE_CapabilityGetCurrent
Marcus Meissnera247c7f2011-04-26 19:11:44 +020097 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +020098TW_UINT16 SANE_CapabilityGetDefault
Marcus Meissnera247c7f2011-04-26 19:11:44 +020099 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200100TW_UINT16 SANE_CapabilityQuerySupport
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200101 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200102TW_UINT16 SANE_CapabilityReset
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200103 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200104TW_UINT16 SANE_CapabilitySet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200105 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200106TW_UINT16 SANE_CustomDSDataGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200107 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200108TW_UINT16 SANE_CustomDSDataSet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200109 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200110TW_UINT16 SANE_AutomaticCaptureDirectory
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200111 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200112TW_UINT16 SANE_ChangeDirectory
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200113 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200114TW_UINT16 SANE_FileSystemCopy
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200115 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200116TW_UINT16 SANE_CreateDirectory
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200117 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200118TW_UINT16 SANE_FileSystemDelete
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200119 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200120TW_UINT16 SANE_FormatMedia
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200121 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200122TW_UINT16 SANE_FileSystemGetClose
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200123 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200124TW_UINT16 SANE_FileSystemGetFirstFile
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200125 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200126TW_UINT16 SANE_FileSystemGetInfo
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200127 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200128TW_UINT16 SANE_FileSystemGetNextFile
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200129 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200130TW_UINT16 SANE_FileSystemRename
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200131 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200132TW_UINT16 SANE_ProcessEvent
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200133 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200134TW_UINT16 SANE_PassThrough
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200135 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200136TW_UINT16 SANE_PendingXfersEndXfer
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200137 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200138TW_UINT16 SANE_PendingXfersGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200139 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200140TW_UINT16 SANE_PendingXfersReset
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200141 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200142TW_UINT16 SANE_PendingXfersStopFeeder
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200143 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200144TW_UINT16 SANE_SetupFileXferGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200145 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200146TW_UINT16 SANE_SetupFileXferGetDefault
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200147 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200148TW_UINT16 SANE_SetupFileXferReset
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200149 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200150TW_UINT16 SANE_SetupFileXferSet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200151 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200152TW_UINT16 SANE_SetupFileXfer2Get
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200153 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200154TW_UINT16 SANE_SetupFileXfer2GetDefault
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200155 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200156TW_UINT16 SANE_SetupFileXfer2Reset
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200157 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200158TW_UINT16 SANE_SetupFileXfer2Set
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200159 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200160TW_UINT16 SANE_SetupMemXferGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200161 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200162TW_UINT16 SANE_GetDSStatus
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200163 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200164TW_UINT16 SANE_DisableDSUserInterface
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200165 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200166TW_UINT16 SANE_EnableDSUserInterface
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200167 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200168TW_UINT16 SANE_EnableDSUIOnly
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200169 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200170TW_UINT16 SANE_XferGroupGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200171 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200172TW_UINT16 SANE_XferGroupSet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200173 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200174
175/* Implementation of operation triplets
176 * From Application to Source (Image Information) */
177TW_UINT16 SANE_CIEColorGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200178 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200179TW_UINT16 SANE_ExtImageInfoGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200180 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200181TW_UINT16 SANE_GrayResponseReset
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200182 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200183TW_UINT16 SANE_GrayResponseSet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200184 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200185TW_UINT16 SANE_ImageFileXferGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200186 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200187TW_UINT16 SANE_ImageInfoGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200188 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200189TW_UINT16 SANE_ImageLayoutGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200190 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200191TW_UINT16 SANE_ImageLayoutGetDefault
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200192 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200193TW_UINT16 SANE_ImageLayoutReset
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200194 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200195TW_UINT16 SANE_ImageLayoutSet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200196 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200197TW_UINT16 SANE_ImageMemXferGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200198 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200199TW_UINT16 SANE_ImageNativeXferGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200200 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200201TW_UINT16 SANE_JPEGCompressionGet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200202 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200203TW_UINT16 SANE_JPEGCompressionGetDefault
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200204 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200205TW_UINT16 SANE_JPEGCompressionReset
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200206 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200207TW_UINT16 SANE_JPEGCompressionSet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200208 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200209TW_UINT16 SANE_Palette8Get
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200210 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200211TW_UINT16 SANE_Palette8GetDefault
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200212 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200213TW_UINT16 SANE_Palette8Reset
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200214 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200215TW_UINT16 SANE_Palette8Set
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200216 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200217TW_UINT16 SANE_RGBResponseReset
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200218 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200219TW_UINT16 SANE_RGBResponseSet
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200220 (pTW_IDENTITY pOrigin, TW_MEMREF pData) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200221
Marcus Meissner125efed2006-05-08 20:05:42 +0200222/* UI function */
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200223BOOL DoScannerUI(void) DECLSPEC_HIDDEN;
224HWND ScanningDialogBox(HWND dialog, LONG progress) DECLSPEC_HIDDEN;
Marcus Meissner125efed2006-05-08 20:05:42 +0200225
Jeremy White4b794be2009-02-13 13:14:30 -0600226/* Option functions */
227#ifdef SONAME_LIBSANE
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200228SANE_Status sane_option_get_int(SANE_Handle h, const char *option_name, SANE_Int *val) DECLSPEC_HIDDEN;
229SANE_Status sane_option_set_int(SANE_Handle h, const char *option_name, SANE_Int val, SANE_Int *status) DECLSPEC_HIDDEN;
230SANE_Status sane_option_get_str(SANE_Handle h, const char *option_name, SANE_String val, size_t len, SANE_Int *status) DECLSPEC_HIDDEN;
231SANE_Status sane_option_set_str(SANE_Handle h, const char *option_name, SANE_String val, SANE_Int *status) DECLSPEC_HIDDEN;
232SANE_Status sane_option_probe_resolution(SANE_Handle h, const char *option_name, SANE_Int *minval, SANE_Int *maxval, SANE_Int *quant) DECLSPEC_HIDDEN;
233SANE_Status sane_option_probe_mode(SANE_Handle h, SANE_String_Const **choices, char *current, int current_size) DECLSPEC_HIDDEN;
Jeremy Whiteeae4ac92009-03-05 13:15:06 -0600234SANE_Status sane_option_probe_scan_area(SANE_Handle h, const char *option_name, SANE_Fixed *val,
Marcus Meissnera247c7f2011-04-26 19:11:44 +0200235 SANE_Unit *unit, SANE_Fixed *min, SANE_Fixed *max, SANE_Fixed *quant) DECLSPEC_HIDDEN;
236SANE_Status sane_option_get_bool(SANE_Handle h, const char *option_name, SANE_Bool *val, SANE_Int *status) DECLSPEC_HIDDEN;
237SANE_Status sane_option_set_bool(SANE_Handle h, const char *option_name, SANE_Bool val, SANE_Int *status) DECLSPEC_HIDDEN;
238SANE_Status sane_option_set_fixed(SANE_Handle h, const char *option_name, SANE_Fixed val, SANE_Int *status) DECLSPEC_HIDDEN;
239TW_UINT16 sane_status_to_twcc(SANE_Status rc) DECLSPEC_HIDDEN;
240BOOL convert_sane_res_to_twain(double sane_res, SANE_Unit unit, TW_FIX32 *twain_res, TW_UINT16 twtype) DECLSPEC_HIDDEN;
Jeremy White4b794be2009-02-13 13:14:30 -0600241#endif
242
243
Marcus Meissner125efed2006-05-08 20:05:42 +0200244#endif