----- Old Corel README, probably outdated ----------------------------------
1. INTRODUCTION

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.


2. WHAT'S IMPLEMENTED

- Functions that dispatch operations specified by the operation triplets to the coresponding function.

- All the operation triplets related to the Data Source Manager are implemented.  Appplication is able to enumerate data sources and open them.

- 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.

- 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.

-  Only the CAP_ICAPXFERMECH capability is implemented.


3. TO-DO

- Image native transfer is not working correctly right now.  It crashed the application due to the invalid DIB created.  We need to fix this.

- Implement other image transfer mode such as file transfer and memory transfer.

- 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.   
- 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. 

- check into legal issues regarding:
  - TWAIN header file
  - linking to SANE (maybe should dynamically link at run time?)

- add autoconf rules for enabling based on whether sane is installed

4. FILE LISTING

twain32_main.c          Functions to regconize operation tripets and dispatch
                        the requests to the corresponding functions.
dsm_ctrl.c		Implementation of DG_CONTROL group operation triplets
                        destinated for source manager.
ds_ctrl.c               Implementation of DG_CONTROL group operation triplets
                        destinated for data source.
ds_image.c              Implementation of DG_IMAGE group operation triplets
                        destinated for data source.
ds_audio.c              Implementation of DG_AUDIO group operation triplets
                        destinated for data source
capability.c            Functions for negotiating capabilities
twain.h			The original TWAIN header file
twain_i.h		Header file for the internal twain functions	


--
Shi Quan He
shiquan@cyberdude.com
