Ver 0 Rev 01 (09.01.1998) first alpha version showing just the API for testing... (3 months) Ver 0 Rev 02 (03.04.1998) - IMPORTANT: CreateIDC tags added: IDC_APPNAME, IDC_APPNAMEVERSION, IDC_APPICSVERSION - IMPORTANT:Do not prompt errors reported by ICSErr() with ID <= ICS_ERRMSGLIMIT - ICSStatusWin() added - CreateIDCTransform() does support most ICSStatusWin() tags - ICSStatusWin and SetupIDCColorMatching accept NULL as default public screen pointer. - TLC function added - gamma function added - RGB->CIE Lab conversion function added. Note you must have a valid scanner profile in ENV: or this function will most likely prompt an error. Use the provided ENV:ScanData file. - ICS_ScanTLCGray, ICS_ScanTLCRed, ICS_ScanTLCGreen, ICS_ScanTLCBlue tags added to CreateIDCTransform(). Ver 0 Rev 03 (18.04.1998) - Tag values have changed requiring you to recompile your app! - SetupIDCColorMatching now returns uint32_t instead of BOOL as indicator of what the user changed in the prefs window. You may now keep your transfer function during SetupIDCColorMatching and only free the transfer function handle if the user did alter the settings. - It's your responsibility to not use the returned LUT tables by CreateIDCTransform() if ICS is switched off by you later on. Use SetIDCMode() to check if the ICS mode is off. So only use the tables if ICS is enabled during the TranslateColors() call. - All IDC_APP* Tags for CreateIDC() have been renamed to ICS_APP*. - ICS_TextAttr and ICS_Screen tag added to CreateIDCTransform(), SetupIDCColorMatching(), ICSStatusWin(). - ICS_StatusActivate tag added. - SetupIDCColorMatching() is now 99.9999% functional... - Profiles are now located in the ICS_PROFILE: drawer... Ver 0 Rev 04 (21.04.1998) - bug in library V0.03: Fixed crash/enforcer hits when calling SetupIDCColorMatching() twice (bad locale menu routine). (Andreas) - bug in ics.doc V0.03:: CreateIDC() tags have been renamed to ICS_APP*. (Me+Andreas) - bug in debug library V0.03: sorry, shipped V0.02 of the debug version with V0.03 (Andreas) - bug in SetupIDCColorMatching(): settings were saved to ENV:/ENVARC: but not copied to internal ICD struct for use by program. (Me) - ICS_OFF now works and no TLC table will be provided. (Me+Andreas) Ver 0 Rev 05 (01.05.1998) - Important changes to TranslateColors(!). Requires changes in source (see below on what has to be changed in your source). - COLOR_UGRAY and not COLOR_GRAY is supported (my fault). Wrong ics.doc... just change COLOR_GRAY to COLOR_UGRAY in your source. Example source code was correct (I never checked grayscale calls so it was undetected). - Each element of the array pointed to by paInoutColors and paOutputColors is of the size specified by the ctInpout and ctOutput type. So when converting an COLOR_URGB array of 6 elements, the size of the array is assumed sizeof(struct URGBCOLOR)*6 and NOT sizeof(struct COLOR)*6. So, if you used nColors>1 in your source to translate multiple colors with a single call, you will need to change your source. - paInoutColors and paOutputColors may point to the same color(s). So you only need a single buffer if wanted. Ver 0 Rev 06 Internal Version - not released Ver 0 Rev 07 (07.02.1999) - BUG: Developer example code load.c called ICSStatusWin without TAG_DONE!!!!!!!!!! DEVELOPERS: Please check you do have TAG_DONE in your ICSStatusWin calls! (10 hours) - BUG: Fixed a bug causing the setup gadgets to stay disabled after an error requester (2 hours) - BUG: Fixed a bug in the ICSConvert program (blue channel was overwritting green channel). (10 hours) - BUG: ics.library: Enforcer hit fixed caused by checking if user aborted statuswindow with no status window open. (10 hours) - BUG: Fixed a bug in the graybalance function (only affected the linearization table delivered by ICS if asked by the application). (10 hours) - BUG: Fixed a bug causing small illegal memory access reading/writting user specified color data during TranslateColors() call. (14 hours) - Added: scanner data is now converted to PCS (XYZ or Lab) based on the IT target calibration (missing ICS_Profiles: assign) appeared during selection of a display. (150 hours) - BUG: Fixed a bug in the Rev 06 regression routine (4/11/14/20 terms). (20 hours) - Added: Improved internal structure so ICC profile support can be added easily later on... (40 hours) - Added: Creation of gamma LUT for display is now checked for special gamma cases (1.0,...) in order to increase speed during initialization until the routine can be optimized for more speed. (8 hours) - Added: CIE TC1-34 CIECAM 97s JCh/Jab color space/appearance routines added. (80 hours) - Added: RGB<->XYZ and XYZ<->Lab device depending conversion routines added. (10 hours) - Added: absolut colors are now converted to relativ colors until real gamut mapping is finished. (200 hours) - Added: Cache with hash function added so that it only requires minutes instead of hours to convert a small(!) image. 3D LUTs are required in the final version for acceptable speed on any system. (10 hours) - Added: support for Kodak/Fuji IT 8.7 Targets (5 hours) - Added: new GUI/locale/startup code to ICSConvert and ScanTarget (100 hours) - Added: I have starting to write the user docs. Currently text based. (images/formating/style will be added later...). (4 hours) - Added: Improved DPI support for PNG/IFF DEEP. (4 hours) - Added: Multiple transformation handles can now be created from a single IDC. Note: SetIDCMode() does currently not return an error anymore if you try to enable ICS with transformations linked to the IDC handle wich were created with ICS disabled. (8 hours) - Added: 3D/1D LUT routines are now used for faster color correction. The LUTs are only generated once for a settting and than stored on HD in the ICS_Profiles:ICS_CACHE drawer. (50 hours). - Testing: Basic functions and early performance testing (100 hours) Ver 0 Rev 08 (04.03.1999) - BUG: An old LUT cache was used if scanner profile was overwritten. ICS did not detect the change of scanner profile and thus used the old LUT with the wrong color correction until user changed prefs causing the LUT to be recreated. (2 hours) - Added: Fine controls for monitor are now working. I would like to use CIECAM 97s Lightness/hue/chroma sliders but adding the user interface costs too much work currently on the Amiga for 5-10 users. Will add this feature in case there are more Amiga users. Not really important function as all color sliders should be set to 0 with correct ICS setup/environment. (2 hours) - Added: Support for CorelDraw 5 target added (shipped with some HP scanners) (3 hours) - Testing: Further tests of calculated RGB->Lab function based on reports from KWLee (Primax). Ver 1 Rev 00 (11.03.1999) - Added: Improved Installer script (now with ICS "Remove" option). (4 hours) - Added: New icons and software now generates icons. (12 hours) - Added: Improved error messages if no ref/target file was specified by user in ScanTarget. (1 hour) - Added: ShowManual program added with ICS user documentation (20 hours). - Added: Add Epson Color Ref Chart V1.0 calibration target support after measuring Martin Sprengers Epson Target shipped with GT 8500 (and shipped with GT 5xxx/6xxx?) (10 hours) Ver 1 Rev 01 (17.04.1999) - Minor bug: SAVE flag might got set in ScanTarget filerequester. Fixed (1 hour) - BUG: Kodak Dmin/Dmax values in references files were not read correctly by ScanTarget causing color faults in the final correction. Fixed. Thanks goes to KWLee (Primax) for finding this bug in the scanner profile. (8 hours) - Added: ICS now checks for scanner profile to be version >=2 (just to make sure everybody only uses profiles generated by the fixed ScanTarget V1.01). (2 hours) - Minor bug: NUMBER_OF_FIELDS was set to 9 instead of 4 in example IT 8,7 reference file. (1 min) - BUG: A bug in the used AsyncIO library causes the GIF reading routines to crash. Switched to normal file IO until asyncio library got fixed by author. The bug mainly showed up with interlaced GIF images causing multiple SeekAsync calls (wich cause the crash in ASyncIO). (10 hours) - Added: GIF module now does much less Seek() calls causing a speedup. (3 hours) - Added: manual updated. (2 hours) - Added: Generation of the Scanner RGB->CIE Lab approximation now offers higher precission. The mean CIE Lab dE color fault is now below usualy below dE 1(!) and thus out of visible range. Maximum fault and standard deviation also got greatly reduced. ICS should now get close to other high end Mac/PC solutions as far as scanner characterization goes. (13 hours) - Added: The new Scanner RGB->CIE Lab function also offers more speed beside increased quality. There is even a speedup in the final generation of the RGB LUT during initialization of ICS. (6 hours) - Minor bug: Selecting a wrong file as reference file in ScanTarget could cause a large amount of requesters being displayed. Now a single warning with a final abort requester will appear. (1 hour). - Change: Now expires on 31-Aug-1999 Ver 1 Rev 02 (13.05.1999) - BUG: The fix done for Kodak targets in ScanTarget V1.01 caused a crash when saving profiles for Epson targets (endless recursive loop until crash...). (3 hours) - Minor Bug: Fixed ICSConvert/ICSScan problems with IFF images that are roughly >30% larger than uncompressed causing the IFF loader to prompt an error 48 because of buffer underrun. (So far, the only program I know that seems to save such ugly files: Candy Factory Pro). (8 hours) - Minor Bug: flag field in bitmap header saved by ICSConvert may contain a non-zero value. Shouldn't cause troubles in this case. Anyway, now set to 0. (30 minutes) - Minor Bug: Error requester in ScanTarget showed wrong color names and order (ie. "GS22 darker than GS21" instead of "GS21 darker than GS22"). (30 minutes) - Added: RGB->Lab function during creation of LUT now uses more fixed integer math wich should speed up creation of LUT especialy on non-FPU systems. (5 hours) - Change: Now expires on 31-Sep-1999 Ver 1 Rev 03 (23.05.1999) - BUG: Non-FPU versions of ICS generated "white images" because of possible division by zero fault in XYZ->JCh/Jab color space conversion. Fixed. (5 hours) Ver 1 Rev 04 (12.06.1999) - Minor Bug: ScanTarget and ICSConvert may used the wrong drawer for the preference file when starting from shell from a different drawer. As a result, the user does not get his last settings as default when using these tools from shell. (1 hour) - Added: Older ScanQuix V4 scanner drivers do request an unsupported color space (signed gray) when scanning in b/w mode. ICS now detects these older drivers and automaticly alters the color space from signed to the supported unsigned gray color space. This problem was and will be fixed by newer ScanQuix drivers. Check the RBM www site for ScanQuix updates. (1 hour) - Added: Older ScanQuix V4 drivers do request the 16 Bit grayscale linearization table from ICS for download to the scanner. However, the table is than not downloaded to the scanner nor applied by the ScanQuix driver. ICS now does not forward the linearization table to these old ScanQuix drivers. This problem was and will be fixed by newer ScanQuix drivers. Check the RBM www site for ScanQuix updates. (1 hour) - Changed: SAS/C Compiler settings changed for higher speed (~15% faster) and smaller files. (2 hours) - Changed: Now expires on 30-Dec-1999 Ver 1 Rev 05 (30.06.1999) - Added: Now available: cheap calibration targets offer for everybody! (30 hours) - Added: Support for CorelDraw 6 calibration targets added (4 hours) Warning: Some users did use Corel 6 targets with ICS <= V1.04. This won't work, though there are no error requester - Change: Example target image removed because users without reading the manual used it for their scanner. RTFM! (1 Minute ;-) - Added: Minor enhancements to the manual (3 hours) - Added: Support for Epson Calibration Chart Version 2.0 added - Added: ScanTarget now detects if user tries to calibrate with CorelDraw 5 mode and a CorelDraw 6 target. A warning is yelled in this case. (2 hours) - Minor bug: a typo in the fax number listed in the registration form (my correct fax number as listed in other files is ++49-69-95409598) - Added: New monitor settings for Adobe RGB 1998, Apple RGB, CIE RGB, P22-EBU (=ColorMatchRGB), ColorMatchRGB, Wide Gamut RGB. These new settings are also typical PhotoShop RGB working spaces. (2 hours) Ver 1 Rev 06 (04.09.1999) - Changed: Mainly I rewrote some stuff in order to make the ICS source more portable: - internal error structures changed - ICS_StatusClose can now be called twice (10 hours) - Minor bug: Fixed a bug with TIFF RGB files with more than 1 additional alpha channel (saved by PhotoShop for instance). (5 hours) - Added: Support for TIFF LogLuv compression codec added. (1 hours) - Added: Support for images saved by Hemera products (NetGraphics and ClipArt CDROMs) added. (3 hours) - Added: Docs updated for ImageFX and Camera calibration. (5 hours) - Changed: Now expires on 01-Apr-2000 and Y2K checks (30 minutes) Ver 1 Rev 07 (18.10.1999) - Added: Germany manual added. (10 hours+??? hours). - Changed: Minor typos fixed in english catalog/installer script. Thanks goes to Steve Bowman (Melbourne, Australia) for pointing out. (1 hour) - Minor bug: ICSConvert did not free planar row buffer from c2p routine. Fixed. (1 hour) - Minor bug: Error 48 in IFF body chunk decompression error message while loading badly compressed IFF ILBM images with NOP codes. Again BetaScan does store such badly compressed images (see V1.02 history). A correct IFF loader should read them anyway and thus it was my fault. Thanks goes to Jean-Pierre Sola (Lausanne, Swiss) for pointing out. (2 hours) (End)