## CxImage History

### Version 1.00, 07 - Aug - 2001

### Version 1.01, 27 - Aug - 2001

Bugfixes

- PNG Read/Save exceptions with non dword aligned scan lines.
- Mirror() don't handle the last column. <Brian R. Zielinski>

Changes and major additions

- + GrayScale(). <TRK>
- + Rotate().
- + Read Multiple Image for TIFFs & ICONs
- + LoadResource(). <DP>
- Changed GIF read implementation. Added animation handling. <TRK>

Project - Libraries - Demo application

- + Demo: added hatched background and Print functionality. <TRK>
- + Undo/Redo menu. <DP>

### Version 1.10, 23 - Sep - 2001

Bugfixes

- Better exception handling in CxImagePNG & CxImageBMP. <DP>
- Gdi resource leakage and memory corruption in CxImage(HBITMAP). <TRK>
- Rotate() didn't handle transparency. <TRK>
- Fixed TIFF saving 1 & 4 bit images. <DP>

Changes and major additions

- Extended LoadResource() to TIFF format. <DP>
- - Removed info.szFileName : never used, and it's not an image related information. <TRK>
- Reduced fopen/fclose clutter. <TRK><DP>
- Extended constructors with "imagetype" (for future use). <TRK>
- Replaced GetPaletteIndex() with GetPaletteColor() : the function returns a color, not an index.
- Replaced GetFileType() with GetType() : to avoid confusion with the file extension.
- GrayScale() now always create an 8 bit gray scale image. <DP>
- + Implemented transparency in CxImage::Draw(). Now Draw() can also stretch the image, so Stretch() became obsolete. <TRK>
- + CxImage(FILE * stream) constructor. <TRK>
- + JPEG read CMYK format (adobe). <DP>
- + Transparency for PNG. <DP>
- + Enabled reading of RLE-compressed <TRK> and 16 & 32 bit BITFIELD <DP> bitmaps.
- + Unicode version for ReadFile/SaveFile.
- + MakeBitmap() function <Kurt Diesch>
- + JPEG can save 8 bit GrayScale images. <DP>

Project - Libraries - Demo application

- Removed MFC-dependency (#include <afxwin.h>) <TRK>
- Changed jconfig.h with HAVE_BOOLEAN stuff <TRK>
- + new tiff_c.c module in theTIFF library, for straight C Runtime Library file functions. <TRK>
- Demo : now using Project|Dependencies.
- + Zoomin/Zoomout menu <DP>
- + Capture window menu <DP>
- + Acquire from TWAIN source <DP>

### Version 1.23, 15 - Oct - 2001

Bugfixes

- Fixed PNG reading interlaced and gray scale images. <DP>
- Fixed PNG saving 1 & 4 bit images. <DP>
- Fixed GIF saving and reading 1 & 4 bit images. <DP>
- Added safe checks in CImageIterator::SetRow() <DP> and in CxImagePNG::Decode() <yeonjun jeong>

Changes and major additions

- + Basic MNG encoder/decoder.
- + Get/SetTransIndex(): on the fly transparency for indexed images (1, 4, 8 bpp) <TRK>
- + Get/SetTransColor(): on the fly transparency for RGB images (24 bpp) <DP>
- + GIF encoder saves transparency information <TRK>
- + PNG encoder saves transparency information <DP>
- + SwapIndex() function for palette operations with transparency <DP>
- + Resample() function <Steve McMahon>
- + Get/SetEscape() to quit the slow loops.
- + Get/SetProgress() to monitor the slow loops.
- + SetStdPalette() to create a standard palette for 256 and 16 colors images.
- + DecreaseBpp()/IncreaseBpp().

Project - Libraries - Demo application

- Transparency handling menu <DP>
- Fixed cast problem in Jcapimin.c, comparing JPEG_LIB_VERSION <F. Livraghi>
- Resample, DecreaseBpp, IncreaseBpp menu <DP>
- Stopwatch and ProgressBar in the status bar <DP>
- Image computations are in a separate thread <DP>
- Added CQuantizer class to implement the color reduction with the octree algorithm. <Jeff Prosise>

### Version 1.25, 28 - Oct - 2001

Bugfixes

- Added support for 32 bit PNGs and 16 bit TIFs

### Version 2.00, 29 - Dec - 2001

Bugfixes

- fixed deadlock in GIF decoder
- PNG decoder reads 16 bit grayscale images.
- TIF decoder reads 4 bit grayscale images.
- fixed bug in CreateFromHBITMAP() <Wil Stark>
- Fixed PNG encoder bug, buffer allocation error with BW images.

Changes and major additions

- MNG decoder handles the background information.
- TIF encoder now uses COMPRESSION_JPEG for 24 bit images.
- LoadResource(): added new parameter to work with dlls. <Ayatu>
- LoadResource() now works with network applications. <Ayatu>
- Changed CxImage() constructors, Copy() and Transfer() interface and implementation <Kirk>
- Added CreateFromHANDLE() and CreateFromHBITMAP() in place of the old constructors.
- Automatic file format recognition in ReadFile() <Patrick Hoffmann>
- Faster Draw() implementation for transparent images. (Thanks to Paul Reynolds and Ron Gery)
- New Get/SetJpegQuality() for JPEG and TIF encoders.
- New Get/SetXDPI(), Get/SetYDPI() for BMP and TIF formats.
- New Dither() function, with Floyd-Steinberg or Ordered-Dithering BW conversion (Thanks to Kenny Hoff and Steve McMahon)
- New functions : Crop(), SplitRGB(), SplitYUV(), SplitHSL().
- New functions : Colorize(), Light(), Threshold(), Mean(), Filter(), Dilate(), Erode().

Project - Libraries - Demo application

- Removed bad pixels from "Capture Window" <Qiang>
- New menus: Blur, Soften, Edge, Sharpen, Emboss, Dilate, Erode, Threshold, Dither, ...

### Version 3.00, 20 - Jan - 2002

Bugfixes

- fixed HSLtoRGB() conversion <F. Livraghi >
- CxImagePNG: fixed deallocation bug in Encode() <Ranger>
- CxImagePNG: now reads 2 bpp images.
- CxImageBMP: fixed DPI rounding error <DIH>
- CreateFromHANDLE now handles the DPI information <Jeff Hu>

Changes and major additions

- New pixel ALPHA channel, overall opacity. (14 dedicated functions)
- New Alpha Palette. (5 dedicated functions)
- New Region Selection (rectangle, ellipse, polygon - 11 dedicated functions).
- New "copypixels", "copyselection", "copyalpha" options for constructor/Copy()
- New "errordiffusion" option for DecreasBPP().
- New Draw() implementation with support for alpha channel, alpha palette, opacity, transparency.
- New PCX decoder CxImagePCX
- New TGA decoder/encoder CxImageTGA (with alpha channel)
- High resolution shrink for Resample() <Henrik Stellmann>
- CxImagePNG now reads/saves the transparency information (palette and alpha channel)

Project - Libraries - Demo application

- Updated PNG library: Libpng version 1.2.1
- Free-hand selection with the left mouse button.

###

### Version 3.02, 24 - Jan - 2002

Bugfixes

- CxImagePNG: fixed allocation bug in Decode()
- CxImagePNG: cast error saving 8 bpp images.

###

### Version 3.09, 21 - Feb - 2002

Bugfixes

- Rotation() and Resample() handle the alpha channel. <MTA>
- CxImagePNG: Encode() merges the transparent color with the alpha channel.
- Fixed exceptions and leaks in Draw() <RG>
- CxImageBMP now reads 32 bpp BITFIELD images.
- Decode() correctly loads multipage ICO and TIF files. <REC>

###

### Version 3.21, 11 - Mar - 2002

Bugfixes

- Fixed memory leakage in CxImagePNG::Encode() <Rob Cass>.
- Fixed CxImageICO::Decode() problem with 16 colors icons <Rogier>.

Changes and major additions

- CxImageICO reads/saves icons with transparent pixels.
- CxImageTIF::Decode() now takes care of the orientation tag.
- New RotateLeft(), RotateRight(), Rotate180() functions <MKVY>.
- Faster Draw() implementation for images with transparency <DJT>.

Project - Libraries - Demo application

- Updated BCMenu: version 3.01.
- Replaced CreateThread() with _beginthread() to avoid small memory leaks.

###

### Version 4.00, 12 - May - 2002

Bugfixes

- Fixed JPEG error handler <CSC>
- Fixed _tiffSizeProc in tif_c.c to load images with missing stripcount.
- Transformations preserve info.dwType perameter <CSC>
- Createfromhandle() bugfix for 32bitfield images <JA>
- GetPixelColor bugfix when the coordinates are in the outside of the image <Mpwolski>

Changes and major additions

- New CxFile class to read/write memory files and disk files.
- Added support for Read/Write 32bpp TIFFs with apha channel.
- New methods : Mix() <Mpwolski>, Destroy(), IsIndexed()
- Read/Write support for Multipage TIFF <Abe>
- Read/Write support for Animated GIF (gif89a), with comment, loops and disposal method
- Added xOffset and yOffset in CxImage::info
- Changed names : ReadFile -> Load ; SaveFile -> Save
- LoadResource uses CxFile

Project - Libraries - Demo application

- Updated BCMenu: version 3.03.
- LibTiff : enabled alpha (tif_getimage.c;Ln:212), enabled ZIP_SUPPORT
- Pane view function with "shift+Lbutton"
- Updated LibTiff to 3.5.7
- New URL download dialog; WebGrab class by Chris Maunder

###

### Version 4.01, 15 - May - 2002

Changes and major additions

- Added some constructors and Encode()/Decode() methods to work with memory buffers directly.

Project - Libraries - Demo application

- Changed URL download dialog.

###

### Version 4.10, 01 - Jun - 2002

Bugfixes

- Fixed PNG error handler.
- Fixed TGA decoder for RLE encoded pictures with alpha channel <Ole Lange> and 15 bit pictures.
- Fixed BMP decoder for 32 bit images.

Changes and major additions

- Added Read/Write support for 24 and 32 bit ICONs.
- new bAppend parameter in CxImageTIF::Encode() for better multi page TIF creation. <Abe>

Project - Libraries - Demo application

- Updated zlib to 1.1.4.<Ayatu>
- Added OJPEG_SUPPORT (not for Wang).

###

### Version 5.00, 23 - Aug - 2002

Bugfixes

- CxImageTIF::Decode : fixed default orientation. <vho>
- CxImageTIF::Encode saves 1bpp always with PHOTOMETRIC_MINISWHITE <abe>
- CxImageJPG::Encode : fixed jpg encoder for memory files.
- CxImageICO::Encode : fixed problem with 4bpp images with transparency.
- CxImagePNG::Encode : fixed problem when info.bColorType was wrong <Kwyshell>
- removed info.bColorType and changed GetColorType() implementation.
- CxImageBMP::Decode handles TopDown Bitmaps <Flanders>, small bugfix <CSC>
- CxImageTIF::Encode : TIFFSetField(m_tif, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(m_tif, -1)); gives better compression <REC>
- Load( ) returns the correct info.nNumFrame when info.nFrame<0.
- removed bug in tif_xfile.c when encoding memory files.
- CxImageBMP::Decode loads correctly OS2 bmps.
- bugfix in Resample( ) when (newx==width && newy==height)
- better operator= definition <Anatoly Ivasyuk>

Changes and major additions

- new formats: WBMP, WMF - EMF <vho>, JBIG, JPEG2000.
- new full codec for PCX, with support for RGBA images.
- new methods: GetVersion, IsTransparent <vho>, ShiftRGB, Median, Gamma, Noise, Combine, FFT, Repair, AlphaSplit
- added r/w support for 8bpp TIFFs with alpha layer.
- added support for TrueColor, RLE and uncompressed GIFs.
- added CXIMAGEJPG_SUPPORT_EXIF for JPGs.
- new switches: CXIMAGE_SUPPORT_DECODE, CXIMAGE_SUPPORT_ENCODE,
  CXIMAGE_SUPPORT_WINDOWS, CXIMAGE_SUPPORT_WINCE <T.Peck>
- SetEscape can abort the codecs loops <vho>.
- added ximadefs.h to adjust automatically the switches.
- the codecs for ICO, PNG, TGA and TIF work also with CXIMAGE_SUPPORT_ALPHA = 0 <vho>
- added DPI information support for jpeg <Koray Geçici>
- new CxFile CxMemFile CxIOFile implementations <CSC>
- MakeBitmap( ) creates a real DIB if HDC == 0 <CSC>
- Draw( ) added pClipRect parameter.
- CxImageTIF::Decode : re-enabled error handler for debugging;

Project - Libraries - Demo application

- Zlib : replaced zlib.rc and zlib.def <ayatu>.
- Demo: new tools, histogram, palette, replaced xshadebutton with xtargetbutton.
- Updated LIBPNG to 1.2.4
- LibTIFF::tiff_read.c::ln188: commented to decode strange images, it's not dangerous.
- LibTIFF small changes to compile under linux (tiff_xfile.cpp, tiff_jpeg.c, tiff_ojpeg.c, tiffiop.h)
- LibJPEG : small changes to compile under linux (jmorecfg.h)
- Added project for DLL build and console applications.

### PEOPLE:

<DP> : Davide Pizzolato <ing(dot)davide(dot)pizzolato(at)libero(dot)it>
<TRK> : Troels Knakkergaard <TRK(at)lyngsoe(dot)com>
<Brian R(dot) Zielinski> : Brian R(dot) Zielinski <brianz(at)digital(dot)risserimaging(dot)com>
<Kurt Diesch> : Kurt Diesch <kdiesch(at)enjoysoft(dot)com>
<F. Livraghi > : Francesco Livraghi <info(at)ceccoing(dot)it>
<Steve McMahon> : Steve McMahon <steve(at)dogma(dot)demon(dot)co(dot)uk>
<Ayatu> : Tuncer M(dot) Ayaz <ayatu(at)gmx(dot)de>
<Kirk> : Kirk Korver <kirk(at)the-right-stuff(dot)com>
<Qiang> : Qiang Liu <liuq(at)ee(dot)washington(dot)edu>
<Patrick Hoffmann> : Patrick Hoffmann <hoffmann(at)novacom(dot)net>
<Wil Stark> : Wil Stark <wil_stark(at)agilent(dot)com>
<DIH> : Dominic I. Holmes <DIH(dot)Junk(at)DigitalFormation(dot)com>
<Henrik Stellmann> : Henrik Stellmann <henrik(dot)stellmann(at)volleynet(dot)de>
<Ranger> : Ranger <RangerMail(at)mail(dot)ru>
<Jeff Hu> : Jeff Hu <v120160(at)yahoo(dot)com(dot)tw>
<MTA> : Matthew Armstrong <ArmstroM(at)faro(dot)com>
<REC> : Robert Edward Caldecott <rec(at)kerridge(dot)com>
<RG> : Roberto Guerzoni <r(dot)guerzoni(at)infomotion(dot)mo(dot)it>
<MKVY> : Murali Krishna V Yelchuru <muralikrishnayv(at)yahoo(dot)com>
<Rogier> Rogier Reedijk <xs4free(at)wish(dot)net>
<Rob Cass> : Rob Cass <rcass(at)compusult(dot)nf(dot)ca>
<DJT> : Dave Turnbull (Camel) <dave(at)camel(dot)co(dot)uk>
<JA> : Jörgen Alfredsson <jorgen(dot)alfredsson(at)kamera(dot)com>
<Mpwolski> : Mwolski <mpwolski(at)hotmail(dot)com>
<CSC> : Chris Shearer Cooper <cscooper(at)frii(dot)com>
<Abe> : Abe <God(dot)bless(at)marihuana(dot)com>
<Ole Lange> : Ole Lange <ol(at)ams-soft(dot)de>
<vho> : Volker Horch <vhorch(at)gmx(dot)de>
<Kwyshell> : Kwyshell <kwyshell(at)yahoo(dot)com(dot)tw>
<Flanders> : Flanders <flanders(at)2moors(dot)freeserve(dot)co(dot)uk>
<Anatoly Ivasyuk> : Anatoly Ivasyuk <aivasyuk(at)dtlink(dot)com>
<T.Peck> : T. Peck <tpeck(at)roundwave(dot)com>
<Koray Geçici> : Koray Geçici <kgecici(at)tam(dot)net(dot)tr>)

Updated 23. aug 2002 00:00 by Davide Pizzolato <ing(.)davide(.)pizzolato(at)libero(.)it>