DynaRithmic TWAIN Library Update History 4.3.0.4 (October 20, 2014) · Added DTWAIN_TN_FILENAMECHANGING and DTWAIN_TN_FILENAMECHANGED notifications. · Added functions DTWAIN_GetSaveFileName and DTWAIN_SetSaveFileName to allow application to change the name of the file that will be used to save the image during the acquisition of the image. 4.3.0.3 (July 10, 2014) · Added missing TWAIN 2.2 capability constants to the DTWAIN headers and definitions. 4.3.0.2 (April 15, 2014) · Fixed potential memory leak when calling DTWAIN_DestroyAcquisitionArray. · Fixed issue when Windows is unloading demo version of DTWAIN DLL and a logger callback function has been set (see DTWAIN_SetLoggerCallback in DTWAIN manual for more information on setting a logger callback). · DynaRithmic Library version string updated in PDF, TIFF, JPEG, and GIF files produced by DTWAIN_AcquireFile. 4.3.0.1 (April 2, 2014) · Updated C# and Visual Basic demo program to closely mimic the DTWDEMO.EXE testbed program. 4.3.0.0 (March 15, 2014) · DTWAIN now incorporates TWAIN 2.x functionality for TWAIN Sources and drivers that are TWAIN 2.x compliant. TWAIN 2.x functionality for 32-bit devices is achieved by using TWAINDSM.DLL as the TWAIN data source manager instead of TWAIN_32.DLL. · Suppressed error message box logging for situations where a device's capabilities are being checked for availability to DTWAIN. For example, testing if a device has a document feeder no longer generates an error message box stating that the device does not support a document feeder. Note that error message box logging is only on when calling DTWAIN_SetTwainLog() with a flag of DTWAIN_LOG_ERRORMSGBOX. 4.2.0.11 (February 3, 2014) · Minor bug fix version. 4.2.0.10 (November 25, 2013) · Fixed issue with retrieving and setting the ICAP_FRAMES capability. 4.2.0.9 (September 12, 2013) · Corrected assertion errors when using the DTWAIN C++ interface. Please go to following link for more information: http://www.dynarithmic.com/onlinehelp/dtwain/usingdtwainwithoutanimport.htm 4.2.0.8 (September 12, 2013) · DTWAIN_AcquireImageNegative now works for file types other than BMP images when the color of the image is black and white (1 bit-per-pixel). 4.2.0.7 (September 4, 2013) · Fixed issues with device user interface always closing on first acquisition of pages. This issue affected device user interfaces designed as modal dialog box. Functions affected are all of the DTWAIN_Acquirexxx functions and DTWAIN_SetMultiPageMode. For current users of DTWAIN, please note that keeping the device user-interface opened is the default behavior when acquiring images (but due to this bug, the user interface was being closed automatically after the first acquisition). If your application requires the user interface to close automatically after the first acquisition, the DTWAIN_SetMaxAcquisitions function must be called prior to the DTWAIN_Acquirexxx functions. http://www.dynarithmic.com/onlinehelp/dtwain/dtwain_setmaxacquisitions.htm For example: DTWAIN_SetMaxAcquisitions(Source, 1) where the second argument (in this case, 1) is the maximum number of acquisitions to occur before the user interface is closed automatically. 4.2.0.6 (August 15, 2013) · Fixed issues with DTWAIN_Arrayxxx functions that use strings. Functions such as DTWAIN_ArrayGetAtString no longer require the buffer to be at least 255 characters. The buffer size provided by the programmer must be at least the number of characters, plus one character for the NULL character. · Added functions DTWAIN_ArrayGetAtStringPtr, DTWAIN_ArrayGetAtWideStringPtr, and DTWAIN_ArrayGetAtANSIStringPtr to return a non-writeable pointer to the buffer of characters. These functions can be used to quickly obtain the string at a certain position in a DTWAIN array instead of copying the string to a user-defined buffer. · Changed documentation on DTWAIN Array functions that set and retrieve strings. 4.2.0.5 (April 2, 2013) · Added function DTWAIN_SetAcquireImageNegative to allow acquisition of an image and apply a negative filter to image (or in other words, reverses the black/white/gray colors, creating an image that resembles a film negative). 4.2.0.4 (April 2, 2013) · Added missing DTWAIN Unicode / ANSI functions to VB and C# interfaces. 4.2.0.3 (March 31, 2013) · Fixed backward compatibility issue with DTWAIN DLL and Windows XP/2000. 4.2.0.2 (March 15, 2013) · Added DTWAIN_SetHighlight, DTWAIN_SetThreshold, DTWAIN_SetShadow functions. · Added DTWAIN_GetHighlight, DTWAIN_GetThreshold, DTWAIN_GetShadow functions. · Added DTWAIN_GetHighlightString, DTWAIN_GetThresholdString, DTWAIN_GetShadowString functions. 4.2.0.1 (March 7, 2013) · Fixed potential issues with using TWAIN_32.DLL when DTWAIN reports it is TWAIN 2.x compliant. Some devices do not operate correctly if application reports TWAIN 2.x compliancy, but TWAIN_32.DLL (which is 1.x compliant) is used as the Source Manager. 4.2.0.0 (February 10, 2013) · General changes to the way DTWAIN finds the TWAIN Data Source Manager (DSM) files, TWAIN_32.DLL and TWAINDSM.DLL Starting in this version of DTWAIN, by default, when DTWAIN attempts to start a TWAIN session, the search order for finding the TWAIN DSM file (TWAIN_32.DLL or TWAINDSM.DLL) is now set as follows: 1) The user's WINDOWS directory, if DSM not found then 2) The user's SYSTEM directory, if DSM not found then 3) Let Windows OS search logic attempt to find the TWAIN DSM file. The Windows search logic for finding DLL's and other components is described here: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspx Previous versions of DTWAIN always used the Windows OS to search for the TWAIN DSM files. This is no longer the case. The addition of first searching the Windows and System directories ensures that DTWAIN can consistently find the DSM files in one place, and not attempt to load a random or bad version of the DSM that happens to be in a directory in the user's system path. There is a new function DTWAIN_SetDSMSearchOrder() that allows you to c+hange the hierarchy of the searches. For example, search the System directory before searching in the Windows directory, and if still not found, let Windows search for the DSM using the DLL search logic. If you desire the old DTWAIN behavior of using the Windows OS search logic to find the TWAIN DSM, you will need to call DTWAIN_SetDSMSearchOrder(DTWAIN_TWAINDSMSEARCH_O). · Fixed bug closing TWAIN DSM when DTWAIN_SysDestroy is called. · Fixed issue with Unicode applications calling DTWAIN string-related functions with a NULL argument, and DTWAIN DLL being used is a non-Unicode version of DTWAIN (DTWAIN32.DLL or DTWAIN64.DLL). · Fixed issue with .NET applications calling Wide or ANSI versions of the DTWAIN functions declared as Auto. The .NET "A/W" function name lookup rules for ANSI and Wide functions will now call the correct DTWAIN function. · Updated TIFF (LibTiff) to version 4.0.3 · Updated LibPNG to 1.5.x · Updated zlib to 1.2.7 4.1.0.0 (December 12, 2012) · Added functions to set floating point device capability values by using strings instead of using floating point variables. This allows languages that lack 64-bit IEEE floating point variables to set floating point capabilities. · Added functions to convert to and from a DTWAIN_ARRAY that consists of 64-bit IEEE floating point values to an array of fixed point values (TW_FIX32). This allows languages that lack 64-bit IEEE floating point variables to call DTWAIN_GetCapValues and DTWAIN_SetCapValues where the DTWAIN_ARRAY will consist of floating point values. · DTWAIN_ARRAY consisting of strings can now have strings consisting of up to 2,147,483,647 characters. · DTWAIN_ARRAYs consisting of strings now have 3 variationns: DTWAIN_ARRAYSTRING, DTWAIN_ARRAYWIDESTRING, and DTWAIN_ARRAYANSISTRING. The DTWAIN_ARRAYSTRING will always use the default string type that the application uses (ANSI or Unicode), while DTWAIN_ARRAYWIDESTRING only holds wide (Unicode) strings, and DTWAIN_ARRAYANSISTRING can only hold 8-bit character (ANSI) strings. · Added function DTWAIN_ArrayGetStringLength to get the length of an existing string in a DTWAIN_ARRAY. · Added function DTWAIN_ArrayGetMaxStringLength to get the length of the longest string in a DTWAIN_ARRAY. · Added functions DTWAIN_ARRAY functions to add, insert, set, and get Unicode/ANSI strings in DTWAIN_ARRAY. · Added performance improvement in various DTWAIN functions. · Fixed bug if a device capability has multiple floating point values, and the value that needs to be set as the current cap value appears last in the list of multiple values. · Added information to DTWAIN Help manual and interface files for the following languages and script environments: Perl Python XBase++ from Alaska Software Macro Scheduler from MJT Net Ltd WinBatch from Wilson WindowWare · Added support for TOCR Transym 4.0 64-bit OCR engine. 4.0.0.2 (May 27, 2012) · Fixed a crash if DTWAIN_SysInitialize() and DTWAIN_SysDestroy() are called multiple times. 4.0.0.1 (May 27, 2012) · Added user-defined callback function for logging messages. 4.0.0.0 (May 18, 2012) · Unicode and ANSI versions of DTWAIN DLL have been introduced. 3.2.0.4 (February 14, 2012) · Internal TwainSave fixes. 3.2.0.3 (February 1, 2012) · Fixed issue with DTWAIN_SelectSource2 if no default TWAIN Source is found 3.2.0.2 (January 6, 2012) · Fixed issue with PDF single page acquisitions and B/W images. · Fixed issue with PDF when generating encrypted files. 3.2.0.1 (January 6, 2012) · Fixed issue with PNG image support not generating some PNG files. · Updated copyright notices to 2012 3.2.0.0 (December 23, 2011) · Introduction of DTWAIN 64-bit DLL for access to 64-bit TWAIN drivers. · Added support for usage of open source TWAIN Data Source manager (TWAINDSM.DLL) for 32-bit applications. The new DTWAIN_SetTwainDSM function allows usage of the alternate Data Source Manager for 32-bit applications. · The following functions now return the number of characters copied to the user-supplied buffer (please see DTWAIN help manual for more information): DTWAIN_GetErrorString DTWAIN_GetNameFromCap DTWAIN_GetOCRErrorString DTWAIN_GetTempFileDirectory DTWAIN_GetVersionInfo DTWAIN_GetVersionString · Added DTWAIN_GetVersionInfo to return the full VERSIONINFO resource information for the DTWAIN DLL. · Updated DTWAIN_GetVersion to return whether 32-bit or 64-bit DTWAIN is being used. · Sample code for C# has been changed to include a more robust DTWAIN demonstration program. · Added 64-bit DTWAIN interface files for Visual Basic and C#. A 64-bit interface file has also been introduced for Delphi, but it is currently untested. · For C# and Visual Basic, added NULL pointer overloads in the interface files for DTWAIN functions that accept NULL pointers. Please see DTWAIN help manual for information on calling DTWAIN functions that accept NULL pointers for C# and Visual Basic languages. · DTWAIN_SysDestroy is automatically called if the application detaches from the DTWAIN DLL. This prevents crashing if the application fails to call DTWAIN_SysDestroy. · Numerous other bug fixes and enhancements to the internal DTWAIN library. 3.1.0.4 (March 11, 2011) · Corrected issue where DTWAIN_AcquireFile and DTWAIN_AcquireFileEX would not send a DTWAIN_TN_FILESAVEOK notification when acquiring to files using the TWAIN driver's internal file support. 3.1.0.3 (February 21, 2011) · Corrected issue with pixel type and bit depth not being set correctly when transferring an image using buffered/memory transfers when DTWAIN_PT_DEFAULT is specified. 3.1.0.2 (December 30, 2010) · DTWAIN Log files now indents TWAIN information within logged TWAIN calls. · If a log file cannot be opened, DTWAIN now only pops up a single message that the log file cannot be opened instead of continuously popping up the message box for each log message that is written. 3.1.0.1 (September 20, 2010) · Fixed crash when DTWAIN_PDF is specified as the file type to acquire to, and OCR processing is to be used. 3.1.0.0 (June 11, 2010) · Searchable text within PDF now is placed on the page in the approximate position where the text appears in the image. Previously, all searchable text was placed on the bottom of the page, and didn't reflect the position where the text is found. 3.0.0.5 (May 1, 2010) · Fixed memory leak when generating black/white PDF files. 3.0.0.4 (March 17, 2010) · Added DTWAIN_PDF_PIXELSPERMETERSIZE page sizing option for DTWAIN_SetPDFPageSize function. · Added DTWAIN_PDFOCR_CLEANTEXT1 option for DTWAIN_SetPDFOCRConversion function. This option replaces control characters with spaces when saving OCR'ed text to a PDF page. · Added DTWAIN_GetOCRLastError to get the last error that occurred if DTWAIN_ExecuteOCR fails. · Added DTWAIN_GetOCRErrorString to return a string describing the OCR error. · Fixed problem with DTWAIN_AddPDFText and font sizing. · Changed "fontsize" parameter of DTWAIN_AddPDFText to be DTWAIN_FLOAT (a double) instead of LONG. · Fixed issue with DTWAIN_ExecuteOCR not returning FALSE if OCR recognition failed. · Changed DTWAIN_SetPDFOCRConversion by adding an additional flags parameter (see DTWAIN_PDFOCR_CLEANTEXT1 above). · Corrected some minor errors in DTWAIN help file concerning DTWAIN_ExecuteOCR and other OCR functions. · Added OCR error codes to DTWAIN help file. 3.0.0.3 (February 17, 2010) · Multithreading issues addressed on reinitialization of DTWAIN. 3.0.0.2 (February 5, 2010) · Fixed issue with critical section and DTWAIN being initialized multiple times in the same application. 3.0.0.1 (February 1, 2010) · Added 2010 DynaRithmic copyrights to DTWAIN DLL's. · Fixed several issues with loading DTWTS.DLL and TwainSave functionality 3.0.0.0 (May 31, 2009) · Added Windows ICO and WBMP (Wireless Bitmap) file support when calling DTWAIN_AcquireFile(Ex) · Added function DTWAIN_SetCallback64 to support 64-bit user-defined data when setting up notification processing. · Added Optical Character Recognition (OCR) support. Currently the only OCR engine supported is the Transym OCR engine, version 2.0 and above. · DTWAIN can now acquire to text files using DTWAIN_AcquireFile(Ex) and Optical Character Recognition (OCR) support. · Added TwainSave command-line support. TWAIN acquisitions can now be started by issuing a TwainSave command-line string. · DTWAIN_GetVersionEx updated. · Text can be added to PDF files using DTWAIN_AddPDFText. 2.4.0.9 (May 15, 2009) · Fixed logging issue with TW_IMAGEINFO. Erroneously logged bitmap width value as bitmap height. 2.4.0.8 (March 21, 2009) · Fixed overflow bug in log when logging TW_PALETTE8 capability. · Fixed Visual Basic interface file. Removed "Array" from parameter list. · Updated DTWDEMO.CPP example program so that it has equivalent functionality to the DTWDEMO.C example. 2.4.0.7 (February 13, 2009) · General performance enhancements. 2.4.0.6 (January 6, 2009) · General performance enhancements. · Updated copyright of DTWAIN32.DLL to 2009. 2.4.0.5 (December 24, 2008) · General performance enhancements. 2.4.0.4 (August 24, 2008) · Fixed some issues with custom capabilities introduced in version 2.4.0.3 2.4.0.3 (July 24, 2008) If your application uses custom capabilities, please upgrade to this version of DTWAIN, as there are many fixes that apply to handling custom capabilities in this version. The following fixes are very important to apps that negotiate TWAIN device custom capabilities. Please see the updated DTWAIN manual for more information on these important fixes and enhancements. · Added functions DTWAIN_GetCapValuesEx2 and DTWAIN_SetCapValuesEx2. These functions allow specifying of the TWAIN data type to use when negotiating capabilities. · Added error message DTWAIN_CAPDATATYPE_UNKNOWN if negotiating a capability that has an unknown data type. · Added ability to specify data type for DTWAIN32.INI when specifying capability information. · Added clarification in DTWAIN manual on specifying a custom capability in the DTWAIN32.INI customization file. · Updated copyright of DTWAIN32.DLL to 2008. 2.4.0.2 (Dec. 24, 2007) · Added additional page sizes when creating a PDF page. 2.4.0.1 (Oct. 1, 2007) · Addressed issue where PDF creation may fail on Black/White PDF. 2.4.0.0 (Sept. 10, 2007) · Added functions to detect blank pages when acquiring images (DTWAIN_SetBlankPageDetection). · Added function to determine if DIB is blank (DTWAIN_IsDIBBlank) · Added DTWAIN_SetTIFFCompressType to allow changing the compression used for each page acquired. as a TIFF. This function is only useful for 1) TWAIN Sources that allow changing the bit depth and pixel type during TWAIN State 5, plus 2) Applications that can recognize the correct compression to use on a TIFF page, given an image's bit depth and pixel type. · Added function to determine if a Device Independent Bitmap (DIB) is blank (DTWAIN_IsDIBBlank) · Documented TWAIN "camera" functions that allow you to set capabilities for the individual cameras that a device may have (DTWAIN_EnumCameras, DTWAIN_SetCamera, etc.). For example, duplex scanners have two cameras, and many Sources allow you to set each camera to a different resolution, pixel type, etc. 2.3.0.3 (Apr. 4, 2007) · Added function DTWAIN_SetPDFCreator(). · Fixed issue where "exception error" message was not written to the log file. · Addressed a potential exception error when closing a TWAIN source or disabling a TWAIN source's user interface. 2.3.0.2 (Feb. 13, 2007) · Added timestamp to logs that will be sent to the debug monitor. · Fixed problem with stray characters being placed in log output. · Updated language resources to include missing TWAIN return codes. · Fixed problem with C# interface compile errors when compiling dtwain32.cs file. 2.3.0.1 (Jan. 31, 2007) · Added function DTWAIN_LogMessage to allow applications to write messages to the DTWAIN log. 2.3 (Jan. 9, 2007) · Removed dependency on DTWIMG32.DLL. The only DLL that is now necessary for DTWAIN applications is DTWAIN32.DLL and any optional language resource DLLs. · Changed copyright notices to 2007. 2.2 (11-03-2006) · DTWAIN now has added the ability for programmers (and users) to customize the language settings. To do this, the strings used within DTWAIN are stored in a text file that can be easily changed by the programmer or user. The current language files are stored in the /StringResource subdirectory of the installation folder. Customizations or brand new language files can be created and used. · The user can now override the language strings that DTWAIN uses by calling DTWAIN_LoadCustomStringResource() to load a text file that contains the custom strings. · Added function DTWAIN_PDFSetASCIICompression to allow PDF files generated by DTWAIN/PDF to use ASCII85 compression. This will allow the PDF files created by DTWAIN to be ASCII files with no control characters (except for carriage return/line feed). · Added DTWAIN_LOG_FILEAPPEND flag for DTWAIN_SetTwainLog. This new flag allows the log file created to be appended to instead of deleted if the log file already exists. · Fixed problems with HP 1100 not operating correctly when scanning has been cancelled. · TIFF files with JPEG compression now use the JPEG quality factor specified by DTWAIN_SetJpegValues(). · Black and White PDF files are now produced using Flate Encoded bitmap data instead of Group4 FAX compressed data. · DTWAIN Log files now use millisecond timer statistics. This will affect some DTWAIN static library users when building their applications (see user's manual for more information). 2.1 (03-16-2006) (Patch Level 3) · Missing DTWENGL32.L32 file may cause exception violation to occur when DTWAIN_SysDestroy() is called. Fixed. · DTWAIN_EnumSources now works without explicily starting a TWAIN session. 2.1 (02-16-2006) (Patch Level 2) · Improved job handling. Now scanning jobs can be automatically saved to a file automatically whenever the job control separator page (also known as a patch code page) is detected. It is now no longer neccessary (but still available) to process the DTWAIN_TN_EOJDETECTED to force the generation of the new file using your own notification function. DTWAIN now does this automatically. This improvement includes the new function DTWAIN_EnableJobFileHandling(). Please see updated help manual for more information. · Fixed problem when DTWAIN_TN_FILEPAGESAVING is sent as a notification, and notification function wishes to set one or more PDF options (for example, change PDF page size for each page being acquired). The issue with this problem is that the DTWAIN_SetPDFxxxx() function would ignore the new setting. · DTWAIN log now contains operating system information and compiler information (compiler information is only available if running a DTWAIN program built using the DTWAIN static libraries instead of the DTWAIN DLL). · DTWAIN_SysInitializeLibEx2 not properly exported from DLL. Fixed. · DTWAIN_SetAcquireArea2 will no longer give a TRUE return value if the image area cannot be set due to the TWAIN driver not successfully retrieving the units of measure of the image. · Added DTWAIN_TN_PROCESSEDDIBFINAL notification. This notification is sent to the application after DTWAIN has scaled and cropped acquired DIB (but before DIB is saved to a file). 2.1 (01-04-2006) (Patch Level 1) · Log files generated excessive non-printable characters. Fixed. · DTWAIN_TN_FILEPAGESAVING message plus other messages not being sent to user-defined callback. Fixed. · Fixed potential problem with TWAIN driver's user interface locking up. · Added function DTWAIN_AppHandlesExceptions. When given a TRUE value, this function will force DTWAIN to pass any exception errors to the application. Currently (and now by default), DTWAIN handles all exception errors and does not pass the exception to the application. This function is provided for programmers so that they're own exception handling mechanism can be invoked instead of DTWAIN's exception handling. For example, if a particular TWAIN driver is buggy, and a memory access violation occurs for some reason when DTWAIN attempts to use the driver, DTWAIN would normally handle the access violation, and as a result return a failure condition back to the application. Also as a result, the application would not crash, as it normally would if the access violation occurred without handling the exception. By turning off this feature, the exception error is returned through the chain of DTWAIN calls back to your application, and your application can then handle the exception. Most notably, C++ programmers that use try{}/catch{} will catch any exceptions that occur within DTWAIN when a DTWAIN function is called during the "try" block. · Added "AppHandlesExceptions" setting to the [DSMErrorLogging] section of the DTWAIN32.INI file. Setting this value to 1 allows DTWAIN to send the exception back to the application instead of DTWAIN handling the exception. · Minor changes to TWAIN job control handling. · Documentation for DTWAIN C++ wrapper is now integrated into the main DTWAIN help manual. 2.1 (12-22-2005) · TWAIN dialog for DTWAIN_SelectSource2 now shows localized strings for title, OK, and Select buttons. For example, if the Italian resources are used, the TWAIN dialog for DTWAIN_SelectSource2 will be in Italian. · New functions to initialize DTWAIN with a supplied path for the language resourceDLL files and the DTWIMG32.DLL and DTWPDF32.DLL files. The functions are as follows: DTWAIN_SysInitializeEx2( LPCSTR szINIPath, LPCSTR szImageDLLPath, LPCSTR szResPath ); DTWAIN_SysInitializeLibEx2( HINSTANCE handle, LPCSTR szINIPath, LPCSTR szImageDLLPath, LPCSTR szResPath ); Both of these functions do the same thing as DTWAIN_SysInitializeEx and DTWAIN_SysInitializeLibEx with the following additional parameters of szImageDLLPath denoting the path of the DTWIMG32.DLL/DTWPDF32.DLL files, and szResPath denoting the path of the language resource DLL's (the files with the ".L32" extension). If the default path's are desired, then szImageDLLPath or szResPath can be NULL or an empty string. · If no language resource DLL is found by DTWAIN, the default language used for error and informational messages is now English. Previously if no resource DLL is found, the DTWAIN error and informational messages were blank. · Added error buffer flag to DTWAIN_SetTwainLog() function (see next item). The new value is DTWAIN_LOG_USEBUFFER. · Added error buffer that holds a minimum of the last 50 DTWAIN errors encountered. To invoke the buffer usage, the DTWAIN_SetTwainLog must be called with the DTWAIN_LOG_USEBUFFER flag set. The following functions operate on the internal error buffer: - DTWAIN_BOOL DTWAIN_SetErrorBufferThreshold( LONG numErrors ); This function sets the maximum number of DTWAIN errors to buffer. The minimum amount of errors buffered is 50. Returns TRUE if successful, FALSE otherwise. - LONG DTWAIN_GetErrorBufferThreshold( LONG numErrors ); This function returns the number of errors that will be buffered. - DTWAIN_BOOL DTWAIN_GetErrorBuffer( LPDTWAIN_ARRAY Errors ); This function takes a DTWAIN_ARRAY and on return copies the errors to the Error array. Note that a pointer to the DTWAIN_ARRAY is required here. The errors are in the order of most recent error first. In other words, the last error that occurred is the first value in the DTWAIN_ARRAY, the error that occured before the last error is the second item in the DTWAIN_ARRAY, etc. The items in the DTWAIN_ARRAY are 32-bit long values, each value denoting one of the DTWAIN error values described in the manual. This function returns TRUE if successful, FALSE otherwise. - DTWAIN_BOOL DTWAIN_ClearErrorBuffer( ); Clears the error buffer. Returns TRUE if successful, FALSE otherwise. Here is a small example of printing all of the errors encountered by DTWAIN along with their string representations (C++ code): --------------------------------------------------------------------------- #include using namespace std; void func() { DTWAIN_ARRAY ErrorArray; DTWAIN_GetBuffer( &ErrorArray ); // Get number of errors LONG numErrors = DTWAIN_ArrayGetCount( ErrorArray ); LONG ErrorNumber; char szError[256]; for (LONG i = 0; i < numErrors; ++i ) { // Get the error number ErrorNumber = DTWAIN_ArrayGetLong( ErrorArray, i ); // Get error string associated with error DTWAIN_GetErrorString( ErrorNumber, szError, 255 ); cout << "Error encountered " << ErrorNumber << ": " << szError << "\n"; } DTWAIN_ArrayDestroy( ErrorArray ); } ------------------------------------------------------------------------------- · Added DTWAIN_TN_FILEPAGESAVING notification. This notification is sent immediately before saving a page to an image file. This notification is most useful when saving to PDF files, and your application needs to change some aspect of the PDF (the PDF page size, scaling, etc.) by calling the various DTWAIN_SetPDFPagexxx() functions. · Updated C++ wrapper classes. · Fixed intermittent exception error when DTWAIN logging is turned on and DTWAIN_SetDefaultSource is called. · Fixed bad VB. Net interface file. Removed functions that have the "Any" type from DTWAIN32_NET.BAS. · Changed Delphi, C#, VB and VB .Net demos to allow projects to compile without user adding DTWAIN files to project. · Updated Visual Basic, VB .NET, Delphi, FoxPro, and C# interface files to include new DTWAIN functions. Updated dynamic DTWAIN class to be compatible with the newly added functions to version 2.1. · Added DTWAIN Visual Studio 2005 C++ static library for registered users. 2.0. (11-15-2005) (Patch Level 4) · Changed DTWAIN_SysInitializeLib and DTWAIN_SysInitializeLibEx to honor the resource handle specified. Currently, DTWAIN_SysInitializeLib and DTWAIN_SysInitializeLibEx ignored the HINSTANCE parameter, and always used the running application's resource handle. This caused issues with programmers that build DLL's using the DTWAIN static libraries, and needed to tell DTWAIN that the resources were found in their DLL and not the application. 2.0. (11-05-2005) (Patch Level 3) · Fixed problem with DTWAIN saving invalid multipage image files if cancellation or failure of acquisition occurs. By default, DTWAIN will delete partially created multipage image files if cancellation or failure occurs during the acquisition process. · Added DTWAIN_FILESAVE_SAVEINCOMPLETE flag to DTWAIN_SetMultipageScanMode for saving multipage image files if cancellation or failure occurs during acquisition process. · Added DTWAIN_TN_TWAINPAGECANCELLED and DTWAIN_TN_TWAINPAGEFAILED notification codes. These codes are sent to the application if the TWAIN driver returns to DTWAIN a cancellation or failure message during acquisition. 2.0. (10-05-2005) (Patch Level 2) · (DTWAIN Internal Change) Added "Software" TIFF Tag. The Software name found in TIFF files generated with DTWAIN will be "DynaRithmic DTWAIN 2.0". · Updated DTWIMG32.DLL. Users of DTWAIN 2.0 Patch Level 2 and above must use the updated version of DTWIMG32.DLL 2.0 (5-20-2005) · Added support for multithreaded applications. You can now initialize DTWAIN in one thread, and acquire images in another thread. · Added DTWAIN_SetMultiPageScanMode and DTWAIN_FlushAcquiredPages to save to multipage image files when Source or UI is closed. · Added DTWAIN_LoadLanguageResource function to load DLL resource strings at runtime. · Added DTWAIN_SetPDFJpegQuality to set the JPEG quality for JPEG data embedded in the generated PDF files. · Added DTWAIN_GetLightSources and DTWAIN_SetLightSources that get and set the currently used sources of light that the TWAIN driver will use. · Added DTWAIN_EOJDETECTED_XFERDONE notifications when job control is turned on and the end-of-job page has been transferred. This notification is sent immediately after the transfer is done, and before the page is further processed by DTWAIN. · Added DTWAIN_TN_QUERYPAGESAVE notification before an image page is saved to a file. If the application returns 0 when receiving this notification, the image acquired is not saved to a file. · Added DTWAIN_TN_PAGEDISCARDED notification if the page acquired will not be saved to an image file. · Added DTWAIN_SysInitializeEx to set the path of where the DTWAIN32.INI will be found. · Added DTWAIN Patch Code functions for Sources that support patch code enabling. · Added functions to increase or decrease bit depth of acquired images. This will allow programmers that have bad TWAIN drivers that do not respect bit-depth settings to change the bit depth of the acquired images using DTWAIN instead of the TWAIN driver. · Added DTWAIN Array functions that work for specific data types (DTWAIN_ArrayAddLong, DTWAIN_ArrayAddFloat, etc.) · DTWAIN log now show the supported capabilities, supported bit-depths and pixel types of the opened TWAIN Source. · Deprecated DTWAIN_SysInitializeLib. It is now longer not necessary to call DTWAIN_SysInitializeLib when using the static DTWAIN libraries. Calling DTWAIN_SysInitialize is all that is now necessary. · C# interface file to DTWAIN has been added. If you are programming in C# and would like to use DTWAIN (as a DLL, not a .NET component), you can now easily do so. · DTWAIN C++ interface, version 2.0 is now supported. The C++ examples now use the new C++ wrapper classes. · New licensing options have been incorporated (Company, General, Toolkit licensing options). 1.2 (5-26-2005) (Patch Level 3 and 4) · Fixed problem with internal DTWAIN_ARRAY being invalidated. This caused some acquisitions to fail. · Fixed problem with custom capabilities not being able to be set. Setting custom capabilities now use the same TWAIN container type to get the custom capability. To override this behavior, call DTWAIN_SetCapValuesEx · Fixed problem with DTWAIN32.INI capability info not being read properly. · File size of demo version of DTWAIN32.DLL has been reduced. · Added logging container values when calling DTWAIN_SetCapValues(Ex) and DTWAIN_GetCapValues(Ex) · Added function DTWAIN_SetQueryCapSupport to turn on/off DTWAIN using the DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT triplet when determining the operations that a capability can perform. By default, the value is off (DTWAIN uses default information provided by the TWAIN spec to determine what operations a cap can perform). If you have a TWAIN Source that defines custom capabilities, you should call this function with a TRUE value before selecting the Source, since the Source *should* support the MSG_QUERYSUPPORT triplet for the custom capabilities. 1.2 (5-14-2005) (Patch Level 1 and 2) · Fixed problem with buffered transfer and 8 bits-per-pixel images not being created correctly. · Fixed problem with some ADF scanners ejecting all the pages after requesting to scan only some pages. · DTWPDF32.DLL -- Fixed problem with PDF creation not setting the PDF "Creator" field properly. 1.2 (4-20-2005) · Fixed resampling of GIF format if image acquired is not 1 or 8 bits-per-pixel. · Fixed resampling of JPEG format if DTWAIN_AcquireBuffered or DTWAIN_USEBUFFERED is used. · Fixed problem of DTWAIN_TN_PAGECANCELLED not being sent to DTWAIN callback functions. · DTWAIN_TN_ENDOFJOBDETECTED is now sent when job control is turned on and the end-of-job page has been acquired. · Fixed problem with DTWAIN_AcquireFile returning 0 if no user-interface mode is used. · Fixed problem with buffered transfers not generating correct PDF files if resampling is done to generate 24-bpp files from 256 color files. · Fixed problem with PDF file generation random crashes. 1.1.2.4 (4-05-2005) (Patch Level 9) · Fixed memory exception when logging some TWAIN calls. 1.1.2.4 (3-26-2005) (Patch Level 8) · Fixed bug with unloading and loading DTWIMG32.DLL when DTWAIN_SysInitialize and DTWAIN_SysDestroy are repeatedly called in a DTWAIN application. Symptoms are that sometimes the JPEG, PDF, PNG or TIFF code would not produce files after a call to DTWAIN_SysDestroy followed by a call to DTWAIN_SysInitialize. 1.1.2.4 (2-15-2005) (Patch Level 7) · Fixed bug with Sources that use TW_ENUMERATION and TW_ARRAY types to store contrast, brightness, and resolution values. Symptoms would be that setting the resolution, contrast, or brightness for some TWAIN Sources would use the wrong resolution, contrast, or brightness value. Affected functions are DTWAIN_SetResolution, DTWAIN_SetContrast, and DTWAIN_SetBrightness. 1.1.2.4 (1-26-2005) (Patch Level 6) · A bug was introduced in Patch 5. Saving to some file types promote the number of bits per pixel to 24. This should only be the case for JPEG and JPEG-2000 files, however some other file types were having the bits-per- pixel changed. This bug has been fixed in this version. 1.1.2.4 (1-03-2005) (Patch Level 5) · DTWAIN now will save non-JPEG compatible images to JPEG files correctly. A "non-compatible" image is one where the colors in the palette are not the same. For example 256 color images cannot be saved to JPEG files without conversion to 24 bit-per-pixel images. In previous versions, DTWAIN did not check the color and saved the image to JPEG. This resulted in bad JPEG files being produced, since JPEG's cannot be created from images that have more than one different color. The only exception to this are 24 bit-per-pixel images, since the color information is not in the palette, but in the image data. With this latest patch, acquiring to JPEG will automatically save to a 24 bit-per-pixel JPEG file if the original acquired image is not grayscale (palette is all the same color) or 24 bits-per-pixel. · Fixed problem with DTWAIN_GetDeviceEvents and definitions of device event constants. · Fixed problem with DTWAIN_SetPixelType returning FALSE if the pixel type was set successfully. · Fixed problem with PostScript file saving. The only users affected by this are customers that are using the DTWAIN/PDF libraries that have the PDF code built into the DTWAIN library. · The DTWAIN Personal version now has the ability to acquire to files. The file acquisition mode in the Personal version is limited to Windows BMP files. · Fixed a potential problem with DTWAIN_RANGEs that have a step value of 0 (or close to 0). 1.1.2.4 (11-9-2004) (Patch Level 4) · Fixed saving to TIFF and JPEG files if file already exists. 1.1.2.4 (9-29-2004) (Patch Level 3) · Fix a small memory leak when DTWAIN_SysDestroy is called. · For DTWAIN/PDF users, DTWAIN DLL's now contain PDF code, making DTWPDF32.DLL unnecessary for programmers using the DLL version of DTWAIN. · DTWAIN_GetVersion() returns the following values for the version type: Value Meaning ----- ------- 32 DTWAIN DLL Limited (Free) version 33 DTWAIN DLL Demo version 34 DTWAIN DLL Retail version 35 DTWAIN Static library version using cdecl calling convention 36 DTWAIN Static library version using stdcall calling convention 39 DTWAIN DLL Retail Version plus PDF option 1.1.2.4 (9-04-2004) (Patch Level 2) · Fix problems with Manual Duplex mode option not saving last page correctly. 1.1.2.4 (8-24-2004) (Patch Level 1) · Add function DTWAIN_OpenSourcesOnSelect to give application control of opening or not opening the Source when the Source is selected. · Add function DTWAIN_GetVersionEx to return the patch level in addition to the DTWAIN version. · DTWIMG32.DLL updated to address issues with PNG file generation. · Addressed some memory leaks when shutting down DTWAIN. · Address issue of TIFF files and resolution not being set in TIFF tags. · PDF files are now defaulted to save as scaled to fit the page instead of with no scaling. 1.1.2.4 (7-30-2004) · TIFF/LZW and GIF formats are now available when acquiring to files. · Manual duplex mode implemented. · DTWAIN_SetFileAutoIncrement allows more control of generating the file names when DTWAIN_AcquireFile or DTWAIN_AcquireFileEx is called. · When acquiring to PDF format, the ability to encrypt the PDF file has been implemented. · Created workaround for Twain drivers that erroneously report that an invalid triplet has been encountered after image has been acquired. 1.1.2.3 (4-20-2004) · Fixed problems with PDF option and using page sizing/scaling. · Fixed problem with DTWAIN_ARRAY’s that stored DTWAIN_FRAMES. · Improved performance of DTWAIN_ArrayCreate and DTWAIN_RangeExpand functions. · Added functions DTWAIN_ArrayInsertAtN and DTWAIN_ArrayRemoveAtN to insert and remove a range of values from the array. · Selecting a Twain Source now automatically opens the Source. This was added so that there are fewer mistakes made on the programmer’s part when querying a Source’s capabilities. · If the “close Source after acquisition” parameter is TRUE for the DTWAIN_Acquire functions, the Source is closed and reopened automatically by DTWAIN before the DTWAIN_Acquire function returns. 1.1.2.2 (1-20-2004) · Added following functions to acquire images DTWAIN_AcquireBufferedEx DTWAIN_AcquireNativeEx DTWAIN_CreateAcquisitionArray DTWAIN_DestroyAcquisitionArray · Added following function to disable a window(s) when acquiring images DTWAIN_DisableAppWindow · Added DTWAIN_LOG_INITFAILURE flag to allow logging of DTWAIN calls that fail due to an uninitialized DTWAIN library. · Added following functions to retrieve extended image information capability value and actual names DTWAIN_GetExtCapFromName DTWAIN_GetCapFromExtName · Removed the following function to retrieve extended image information DTWAIN_GetExtImageInfoItem · Changed name of following functions: Old Name: DTWAIN_IsFrameSizeSupported New Name: DTWAIN_IsPaperSizeSupported Old Name: DTWAIN_SetFrameSize New Name: DTWAIN_SetPaperSize Old Name: DTWAIN_GetFrameSize New Name: DTWAIN_GetPaperSize Old Name: DTWAIN_EnumFrameSizes New Name: DTWAIN_EnumPaperSizes · The following bugs have been fixed: · For some Twain drivers, acquiring using the buffered memory transfer would fail when querying the ICAP_TILES capability. Fixed. · Fixed buffered transfers of 4 bit-per-pixel (16 color) images. · DTWAIN_FlipBitmap now works for 4 bit-per-pixel images. · Fixed memory leak issues and other problems with compressed buffered transfers. · Fixed various problems with retrieving extended image information when DTWAIN_TN_TRANSFERDONE is sent. · Fixed problem with corrupt DTWENG.L32 language resource file that was introduced in version 1.1.2.1. · Fixed problem with processing CAP_FEEDPAGE and CAP_CLEARPAGE capabilities (functions DTWAIN_FeedPage, DTWAIN_ClearPage). introduced in version 1.1.2.1. · DTWAIN now creates monochrome TIFF files (1-bit per pixel) that are viewable in any TIFF viewer. This allows viewers that do not read the Photometric Interpretation TIFF tag to display TIFF files correctly (for example, the Kodak Imaging program). · Sometimes, the resolution of the acquired image was still not matching the resolution of the created TIFF file. Fixed. · Acquiring to Postscript files may display message box erroneously. Fixed. · Fixed miscellaneous memory leaks. 1.1.2.1 (7-20-2003) · Added option to acquire images to Postscript files. This option is included in the DTWAIN / PDF add-on library. The following functions have been added to support PDF: DTWAIN_SetPostScriptTitle · Added option to acquire images to JPEG-2000 format files. · Added function to acquire scaled images (DTWAIN_SetAcquireImageScale) · Added functions to choose TWAIN scanner "camera" using TWAIN file system: DTWAIN_IsFileSystemSupported DTWAIN_EnumTopCameras DTWAIN_EnumBottomCameras DTWAIN_EnumCameras DTWAIN_SetCamera · Added function to load language resource (DTWAIN_LoadLanguageResource) · Added the following capability functions (TWAIN capability listed before the corresponding function(s): CAP_ALARMS: DTWAIN_EnumAlarms DTWAIN_SetAlarms CAP_ALARMVOLUME: DTWAIN_GetAlarmVolume DTWAIN_SetAlarmVolume CAP_AUTHOR: DTWAIN_GetAuthor DTWAIN_SetAuthor CAP_AUTOSCAN: DTWAIN_EnableAutoScan DTWAIN_IsAutoScanEnabled CAP_BATTERYMINUTES: DTWAIN_GetBatteryMinutes CAP_BATTERYPERCENTAGE: DTWAIN_GetBatteryPercent CAP_CAPTION: DTWAIN_GetCaption DTWAIN_SetCaption CAP_CLEARBUFFERS: DTWAIN_ClearBuffers CAP_DEVICEONLINE: DTWAIN_IsDeviceOnLine CAP_DEVICETIMEDATE: DTWAIN_GetDeviceTimeDate DTWAIN_SetDeviceTimeDate CAP_FEEDERALIGNMENT: DTWAIN_GetFeederAlignment DTWAIN_SetFeederAlignment CAP_FEEDERORDER: DTWAIN_GetFeederOrder DTWAIN_SetFeederOrder CAP_MAXBATCHBUFFERS: DTWAIN_SetMaxBuffers DTWAIN_EnumMaxBuffers DTWAIN_GetMaxBuffers CAP_TIMEDATE: DTWAIN_GetTimeDate ICAP_AUTOBRIGHT: DTWAIN_IsAutoBrightEnabled DTWAIN_EnableAutoBright ICAP_AUTOMATICROTATE: DTWAIN_IsAutoRotateEnabled DTWAIN_EnableAutoRotate ICAP_LIGHTPATH: DTWAIN_SetLightPathEx (sets multiple light paths) ICAP_NOISEFILTERS: DTWAIN_EnumNoiseFilters DTWAIN_GetNoiseFilter DTWAIN_SetNoiseFilter ICAP_PIXELFLAVOR: DTWAIN_GetPixelFlavor DTWAIN_SetPixelFlavor ICAP_ROTATION: DTWAIN_GetRotation DTWAIN_SetRotation 1.1.2.0 (5-8-2003) · Separate DLL's for PNG, TIFF, JPEG, and PDF file formats have been reintroduced to DTWAIN. · Added following functions to set / get light source: DTWAIN_IsLightSourceSupported DTWAIN_SetLightSource DTWAIN_GetLightSource · Added following functions to set / get light path: DTWAIN_IsLightPathSupported DTWAIN_SetLightPath DTWAIN_GetLightPath · Added following functions to set / get lamp state: DTWAIN_IsLampSupported DTWAIN_IsLampEnabled DTWAIN_EnableLamp · Added following functions to load language DLL's DTWAIN_LoadLanguageLibrary · Added option to acquire images to PDF files (DTWAIN / PDF). The following functions have been added to support PDF: DTWAIN_SetPDFAuthor DTWAIN_SetPDFCompression DTWAIN_SetPDFKeywords DTWAIN_SetPDFOrientation DTWAIN_SetPDFPageScale DTWAIN_SetPDFPageSize DTWAIN_SetPDFProducer DTWAIN_SetPDFSubject DTWAIN_SetPDFTitle · Fixed potential problems with the DTWAIN_IsTwainMessage function being called when Source is not acquiring. 1.1.1.9 (3-25-2003) · Corrected problem with acquiring using the scanner's document feeder. · Corrected problem with some file transfers causing a program to halt with an assertion error. 1.1.1.8 (2-15-2003) · Added DTWAIN_ SelectSource2 function to allow the Twain Select Source dialog to be placed at position (x,y) on the screen or centered. · Added DTWAIN_SetFileSavePos to position the "File Save" dialog on the screen at a certain location. · Added handling of TWAIN Extended Image Info. · Added ability to specify a user-defined buffer when transferring image using DTWAIN_AcquireBuffered. · Added functions for handling the Source UI's progress indicator (turning on or off, etc.). · Added functions to enable acquiring thumbnail images (if the TWAIN Source allows this operation). · Added automatic error reporting (display a message box) whenever a DTWAIN error or exception error occurs. · Adds additional probe of Sources that do not report the supported capabilities correctly. Additional probes for CAP_XFERCOUNT and ICAP_XFERMECH are done if the Source claims to not support these operations (without these operations, the device will not acquire images). · Added DTWAIN errors for DTWAIN_AcquireFile and DTWAIN_AcquireFileEx if the file cannot be saved or if there is an error in the image layout. · Added DTWAIN_ArrayFind function. · TIFF-JPEG images now support 8 bits-per-pixel. · Various bug fixes. 1.1.1.7 (10-30-2002) · Fixed DTWAIN_AcquireFile and DTWAIN_AcquireFileEx creating BMP files that have strips of image data in the wrong position. · Fixed problem with calling DTWAIN_SetAcquireArea specifying a valid DTWAIN_ARRAY as the fourth parameter (the ActualArray argument). · Fixed problem with some scanners from feeding an extra page when specified to acquire a certain number of pages. · Fixed DTWAIN_GetCompressionSize reporting 0 instead of the number of bytes transferred if the Source acquires the full image in a single pass using DTWAIN_AcquireBuffered. · Other minor bug fixes. · DTWAIN version is now written to the log file if DTWAIN_SetTwainLog has been called, or if logging is turned on using the DTWAIN32.INI file. 1.1.1.6 (10-8-2002) · Added functions DTWAIN_SetAcquireArea2 and DTWAIN_GetAcquireArea2. · Added support for stopping acquisitions prior to acquiring the first page. · Fixed "always prompting for name" bug in DTWAIN_AcquireFile and DTWAIN_AcquireFileEx. Also fixed problem with DTWAIN_AcquireFile and long file names. · Fixed problem with DTWAIN_SetAcquireArea returning 0 instead of 1. 1.1.1.5 (4-23-2002) · Added multi-page TIFF and DCX file types to DTWAIN_AcquireFile and DTWAIN_AcquireFileEx functions. · Added border detection and deskew functions for Twain Sources that support these capabilities. · Added functions to retry failed page acquisitions. Note that these functions will only work for Twain Sources that behave correctly when restarting a failed page. · Added the following functions to enumerate contrast, brightness and resolution values supported by a Twain Source: DTWAIN_EnumContrastValues DTWAIN_EnumBrightnessValues DTWAIN_EnumResolutionValues · Fixed problems with DTWAIN_SetJpegQuality not working correctly · Added function parameter info to the Twain Log when logging is turned on. · Minor bug fixes. 1.1.1.4 (1-17-2002) · Added job-control functions: DTWAIN_EnumJobControls DTWAIN_GetJobControl DTWAIN_IsJobControlSupported DTWAIN_SetJobControl · Added additional ADF feeder-control functions: DTWAIN_ClearPage DTWAIN_FeedPage DTWAIN_RewindPage · Added auto-feeder functions to turn feeder on/off: DTWAIN_EnableAutoFeed DTWAIN_IsAutoFeedEnabled DTWAIN_IsAutoFeedSupported · Fixed the following functions: DTWAIN_RangeGetNearestValue - Sometimes, this will give erroneous results. This has now been corrected. · Pixel and Bitdepth setting is now more stabilized when calling a DTWAIN_Acquirexxxx function. 1.1.1.3 (12-27-2001) · Added DTWAIN_GetCurrentAcquiredImage. · Added DTWAIN_ArrayCreateFromLongs, DTWAIN_ArrayCreateFromReals, DTWAIN_ArrayCreateFromStrings · Added DTWAIN_RangeCreateFromCap · Made changes to on-line help file. 1.1.1.2 (12-17-2001) · Fixed problem with buffered transfers that use compression returning invalid data. 1.1.1.1 (11-30-2001) · Fixed DTWAIN_AcquireNative and DTWAIN_AcquireBuffer returning NULL if DTWAIN_AcquireFile was previously called. · Programs that call the DTWAIN DLL Demo Verrsion can now be debugged in the Visual C++ debugger. 1.1.1.0 (10-24-2001) · Removed DLL’s for JPGLIB32.DLL, PNGLIB32.DLL and TIFLIB32.DLL when acquiring an image to a file for 32-bit DTWAIN. These DLL’s are no longer included in this and subsequent builds of 32- bit DTWAIN. · Added TIFF Packbits, TIFF Deflate, and TIFF JPEG compressed formats to DTWAIN_AcquireFile and DTWAIN_AcquireFileEx. This applies only when using DTWAIN’s file transfer and not the Source’s internal file transfer. · Added Adobe Photoshop PSD, Windows Metafile (WMF), and Windows Enhanced Metafile (EMF) formats to DTWAIN_AcquireFile and DTWAIN_AcquireFileEx for 32-bit DTWAIN (16-bit DTWAIN does not support these formats). This applies only when using DTWAIN’s file transfer and not the Source’s internal file transfer. · Added DTWAIN_SetJpegValues and DTWAIN_GetJpegValues that set and get the current JPEG transfer’s quality and whether the JPEG file is progressive. This applies only when using DTWAIN’s file transfer and not the Source’s internal file transfer. · Fixed a problem where setting the compression type or file type for a Source’s internal file transfer would not occur. · Added error codes that indicate the status of a file transfer. · Corrected some errors in the on-line help file. 1.1.0.9 (9-30-2001) · Added function DTWAIN_SetTwainLog that sets the Twain logging mode programatically. This allows a program to override the [DSMErrorLogging] setting in the DTWAIN32.INI file. · Added a callback mechanism for DTWAIN Notifications by adding the DTWAIN_SetCallback function 1.1.0.8 (9-25-2001) · Fixed a problem with DTWAIN_SetPixelType and DTWAIN_SetBitDepth. These functions would fail for some Sources when they should be successful. 1.1.0.7 (9-24-2001) · Fixed a problem with logging and the “EnableAll=1” flag. Logging was disabled if this flag was specified in the INI file. · Added missing function definitions to the DTWAIN32.BAS file (Visual Basic file). · Updated on-line Help file. Some omissions and errors corrected. 1.1.0.6 (9-3-2001) · Fixed a problem with DTWAIN_GetCapDataType returning 0 that was introduced in DTWAIN · Sources that do not support CAP_SUPPORTEDCAPS fully (either no support whatsoever or the Source returns invalid values when CAP_SUPPORTEDCAPS is negotiated) are now treated more safely when querying whether a capability exists. This reduces the chances that a poorly written Source that does not support CAP_SUPPORTEDCAPS will break when an unsupported capability is tested. · More optimizations done. Capability values and information are now cached optimally so that querying whether a capability exists, or querying the container types for a capability will become instantaneous after the first time the capability is queried. Currently, TWAIN was called each time a test to see if a capability existed, slowing the application. · Optimized the error reporting so that if error reporting is turned off, no error functions are called, even if there is a log file setup in the DTWAIN.INI file. Currently, DTWAIN will always call the error reporting functions if there is a file specified in the [DSMErrorLogging] section of the INI file, regardless of whether all error logging is turned off. This has now been fixed, speeding up an application that turns off all error logging. 1.1.0.5 (8-15-2001) · Changed DTWAIN_RANGELONG and DTWAIN_RANGEFLOAT constants in DTWAINC.H file to be equal to their DTWAIN_ARRAY equivalents. · Added DTWAIN_AcquireFileEx( ) function to handle File transfers where the file name to save has embedded spaces. Added CDTwainSource::AcquireFileEx( ) that wraps DTWAIN_AcquireFileEx( ) 1.1.0.4 (7-27-2001) · Added DTWAIN call stack logging. · Added missing files to MFC examples. Fixed other problems in the ‘C’ examples. · Fixed some wrong and broken links in the DTWAIN help file. · Add test bed examples to determine whether a system will call DTWAIN properly 1.1.0.3 (7-14-2001) · Fixed problem when logging TWAIN return codes. DTWAIN was sometimes erroneously logging TWAIN condition codes (TWCC_xxx) instead of DSM (TWRC_xxx) return codes. · Memory (buffered) transfer mode would sometimes report a failure when acquiring pages when there is no failure. When calling DTWAIN_AcquireBuffered(), the return value would be erroneously reported as NULL, even though the acquisition was successful. · Added ability to turn on/off MSG_QUERYSUPPORT for all Sources. Some Sources do not support the DG_CONTROL / DAT_CAPABILITY / MSG_QUERYSUPPORT triplet to determine what operations are supported by a capability. DTWAIN by default always tries this message, and if there is a failure, will use the default support for a capability. Some sources did not behave correctly when issuing the MSG_QUERYSUPPORT message, which led in failure to start an acquisition for some sources. 1.1.0.2 (6-24-2001) · Fixed a problem with Sources that do not support CAP_SUPPORTEDCAPS having very slow access when querying the available capabilities. These Sources need all of their capabilities determined by brute force, therefore DTWAIN needs to call TWAIN repeatedly if a request to get all of the supported capabilities is done (usually by calling DTWAIN_IsCapSupported or DTWAIN_GetSupportedCaps). DTWAIN now caches the capability information the first time a call to query the capabilities is done. 1.1.0.1 (6-1-2001) · Added support for DAT_CUSTOMDSDATA operation group with the DTWAIN_GetCustomDSData( ) and DTWAIN_SetCustomDSData( ) functions. · Fixed problem with multi-page acquisitions on some Sources that do not recognize a maximum page count. · Changed the way a Source is opened. This change allows more Sources that do not have the hardware attached to the system to be opened successfully. Some Sources that do not have the necessary hardware attached will open successfully, but cannot be queried for any capability information. DTWAIN was not recognizing this fact, so opening these Sources would sometimes cause the TWAIN DSM to go into an infinite loop. · Determining whether a capability is supported, or enumerating all of the supported capabilities must be done on a currently opened Source. Previously, the Source could be closed and still be queried for supported capabilities. Because of some incompatibilities with a few Sources, this behavior needed to change to only allow capability querying to take place when a Source is opened. · Fixed bug where an erroneously posted message forced some Sources to be closed after acquiring. This is noticeable if an acquisition was cancelled and the Source was to be closed after the acquisition, the Source is closed twice. The first time, the Source is closed immediately and the second time in response to a posted message. · Fixed EXAMPLE2.CPP for the 32-bit DTWAIN examples. The sample that is currently included has commented out many code segments, making the sample useless. · Added support for the Borland C++ Builder 5 static library version of DTWAIN. 1.1.0.0 (12-10-2000) · First public release of DTWAIN