kernel32: Replace magic numbers with descriptive defines.
[wine] / dlls / twain_32 / README
1 ----- Old Corel README, probably outdated ----------------------------------
2 1. INTRODUCTION
3
4 This library (twain_32.dll) is an implementation of TWAIN API for providing image acquisition devices (scanner or digital camera) support.  It uses SANE drivers as the backend and translates TWAIN API calls into SANE API calls.  Unlike the twain32 library on Windows platform, it combines the Data Source Manager and Data Sources into a single library.  Thus it is our responsiblity to provide a graphical user interface and capability negotiation, which usually are performed by data sources.
5
6
7 2. WHAT'S IMPLEMENTED
8
9 - Functions that dispatch operations specified by the operation triplets to the coresponding function.
10
11 - All the operation triplets related to the Data Source Manager are implemented.  Appplication is able to enumerate data sources and open them.
12
13 - The operation triplets that deal with the UI (such as DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDS, MSG_DISABLEDS and MSG_ENABLEDSUIONLY) are partially implemented although it does not really do much.
14
15 - The operation triplets that deal with native image transfers (DG_IMAGE/DAT_IMAGENATIVEXFER/MSG_GET) are also partially implemented.  Still need to figure out how to convert the image data obtained from sane to the Windows DIB format.
16
17 -  Only the CAP_ICAPXFERMECH capability is implemented.
18
19
20 3. TO-DO
21
22 - Image native transfer is not working correctly right now.  It crashed the application due to the invalid DIB created.  We need to fix this.
23
24 - Implement other image transfer mode such as file transfer and memory transfer.
25
26 - Support all required TWAIN capabilities that have not been implemented currently.  There are a fixed number of capabilities specified by the TWAIN Specification.  However, device capabilities are dynamic in SANE and there isn't a standard about the capability names.  It would be difficult to negotiate capabilities in TWAIN given that we don't know what capabilities a SANE driver would provide.  One possible solution to use a device configuration file to describe the mapping between capabilities supported by a SANE driver and those specified by TWAIN.   
27 - Build a dynamic user interface that reflects the capabilities of different scanner devices.  According to the TWAIN specification, each TWAIN driver need to provide its own user interface.  However the SANE drivers do not have graphical frontends.  Building a frontend for each SANE driver is a huge task.  It is possible to have a dynamic frontend similar to xscanimage or xsane that works for all the devices.  This is possibly the most difficult part. 
28
29 - check into legal issues regarding:
30   - TWAIN header file
31   - linking to SANE (maybe should dynamically link at run time?)
32
33 - add autoconf rules for enabling based on whether sane is installed
34
35 4. FILE LISTING
36
37 twain32_main.c          Functions to regconize operation tripets and dispatch
38                         the requests to the corresponding functions.
39 dsm_ctrl.c              Implementation of DG_CONTROL group operation triplets
40                         destinated for source manager.
41 ds_ctrl.c               Implementation of DG_CONTROL group operation triplets
42                         destinated for data source.
43 ds_image.c              Implementation of DG_IMAGE group operation triplets
44                         destinated for data source.
45 ds_audio.c              Implementation of DG_AUDIO group operation triplets
46                         destinated for data source
47 capability.c            Functions for negotiating capabilities
48 twain.h                 The original TWAIN header file
49 twain_i.h               Header file for the internal twain functions    
50
51
52 --
53 Shi Quan He
54 shiquan@cyberdude.com