## CxImage History

### Version 7.02, 07 - Feb - 2011

Bugfixes

- fixed ximaexif.cpp at lines 169, 395, 653, 676 [chentsiushu]
- LayerCreate: replaced free with delete[] [bobo]

Changes and major additions

- new method: SetRectColor

Project - Libraries - Demo application

- Added new projects for VS2010
- updated LibJpeg to version 8c
- updated LibPng to version 1.5.1

### Version 7.01, 07 - Jan - 2011

Bugfixes

- fixed errors when CXIMAGE_SUPPORT_ALPHA is 0 or CXIMAGE_SUPPORT_DECODE is 0 or CXIMAGE_SUPPORT_ENCODE is 0
- fixed Trace [zjh821224]

Project - Libraries - Demo application

- updated LibPNG to version 1.5.0
- updated wcecompat to support LibPNG 1.5.0

### Version 7.00, 31 - Dec - 2010

Bugfixes

- fixed CxImageJPG::Decode bug with corrupted files: CxFileJpg src(hFile); must be before setjmp to avoid leaks in case of errors [wenfeng248],[jhorner].
- fixed errors when CXIMAGE_SUPPORT_SELECTION is 0 or CXIMAGE_SUPPORT_TRANSFORMATION is 0 or CXIMAGE_SUPPORT_LAYERS is 0
- CxMemFile: fixed EOF logic
- CxImageGIF: added BAD_LINE_WIDTH error.
- fixed "copy and paste" error in CxImage::HistogramRoot(): was ::log in place of ::sqrt
- CxImageICO fixed decoding for icons with alpha layer when there is only 1 transparent color and bpp<=8 [TheAlas]
- CxImageGIF: fixed color problem when frames has larger palette than the 1st one.
- fixed buffer overflow with RLE8 corrupted images
- Crop: added missing call to CopyInfo [joe1203]
- fixed exception in PNG decoder, opening a MNG file
- fixed integer overflow vulnerability in ConvertWmfFiletoEmf [Tielei Wang, TaoWei, Zhiqiang Lin, Wei Zou]
- fixed Divide by Zero exception in libdcr, in case of corrupted files [Kai Sandner]
- fixed Access Violation reading location exception in CxImageTIF::Decode [Stefan Felkel]
- fixed Thumbnail when iDst parameter is not NULL [temper]
- fixed CxImageJPG::Decode compatibility with IJG JPEG 7 [Guido Vollbeding]
- fixed GrayScale conversion from 24bpp with single transparent color.
- fixed row_pointers cleanup in CxImagePNG::Decode [Rezak]
- fixed GlobalUnlock in CreateFromHANDLE
- CxImageJBG::Decode: missing variable initialization [Sebastian Gottschalk]
- fixed Comments size in the EXIFINFO structure [Sebastian Gottschalk]
- CheckFormat : fixed return value when imagetype = CXIMAGE_FORMAT_UNKNOWN

Changes and major additions

- replaced with the "stdint.h" names the long, short and int data types
- new method: Trace
- new method: Draw2HBITMAP
- Dither new options: 8x8 and 16x16 Bayer ordered dither
- CxImageGIF: setting SetRetreiveAllFrames(true) does not anymore require SetFrame(image.GetNumFrames()-1) [altera]
- CreateFromHBITMAP, CreateFromHICON, MakeBitmap, MakeIcon now can handle the transparent layer using the "bTransparency" parameter [brunom]
- GetPixelColorInterpolated and GetAreaColorInterpolated now returns also the rgbReserved component even without alpha layer, for "alpha palette" support with smooth drawing
- Rotate and Rotate2 methods call Rotate180 if the angle is -180.0 or 180.0 [Adrian Cole]
- new methods: RotateExif, GetExifInfo, GetExifThumbnail (for JPG and RAW images) [XBMC]
- moved ExifInfo inside the CXIMAGEINFO structure [XBMC]
- replaced ntohs and ntohl with m_ntohs and m_ntohl [XBMC]
- CxImageGIF allocates dinamically the large member variables
- CxImagePNG: added support for compression level control [Jean-Marie Epitalon]
- CxImage::Encode and CxImage::Decode use pointers instead of static objects. [Luc Langlois]
- CxImageBMP now can read images with BITMAPV5HEADER
- new file format: CxImagePSD (minimal implementation), if CXIMAGE_USE_LIBPSD==1, LibPSD is used; else if CXIMAGE_USE_LIBPSD==0, MyPSD is used [Vitaly Ovchinnikov]
- new option for Draw : bFlipY
- new blending mode for Mix : OpBlendAlpha [brunom]
- faster AlphaSplit
- better alpha channel interpolation in CxImage::Resample (CxImage::Resample2 is still faster)
- better mymngalloc and mymngfree declatation [Ken Yee]
- better CXIMAGE_MAX_MEMORY check

Project - Libraries - Demo application

- updated LibPNG to version 1.4.5
- updated LibDCR to version 8.93
- updated zlib to version 1.2.5
- updated LibJpeg to version 8b, (optional patches in the \doc folder).
- updated LibTIFF to version 3.9.4, (optional patches in the \doc folder, to support images with non standard bitpersamples [Vladimir Kladov])
- patched Jasper to work on WinCE
- Added wcecompat library and sample project for WinCE
- demo: new options for PNG compression level control [Jean-Marie Epitalon]
- Added LibPSD, patched to support the CxImage file management.
- CxImage ocx and VB demo projects in the CxImage_ocx and demo_ocx folders
- Added .dev (wxDev-C++) projects for cximage and console demo

###

### Version 6.00, 31 - Jan - 2008

Bugfixes

- fixed CxImageTIF decoder against bad value from TIFFStripSize
- typo in CxImage::Create for CXIMAGE_MAX_MEMORY check [philm]
- fixed png_set_background problem with gamma [philm]
- fixed DecreaseBpp: “clrimportant” is no longer ignored when copying “ppal” into image palette [vuhrust]
- fixed exif decoder in ProcessExifDir, creating infinite loops with corrupted header
- fixed CxImageICO::Decode, for icons with missing color count information
- fixed TIFF decoder now handles images with PHOTOMETRIC_PALETTE tag
- fixed CxImageGIF::decoder, stack overflow problem with corrupted gif [yilerwang]
- fixed BMP decoder problem with RLE_4 bitmaps [ignacio]
- better BMP decoder for corrupted RLE_8 bitmaps
- fixed DibReadBitmapInfo for bitfield bitmaps with long header [KitChen]
- fixed CxImageWMF::Decode rounding error in image width and height
- fixed CxImageWMF::ConvertEmfFiletoEmf against invalid file header [Carlos_Abraxas]
- fixed CxImageGIF::Decode, for images with local colour table [debugman]
- CxImageGIF now loads images with invalid (empty) screen descriptor.
- fixed boundary effect problems in Erode, Dilate, Edge, Median, Contour, Filter [juicy_emad]
- fixed Filter behaviour with grayscale case: now the result is the same than the one in generic case.
- fixed UnsharpMask [Darin Warling]
- fixed Draw when smoothing is enabled and zoom is lees than 100%
- fixed SelectionAddPixel: missing info.rSelectionBox update
- fixed bug in SelectionAdd… functions: wrong value assigned to info.rSelectionBox.top and info.rSelectionBox.right, makes unprocessed pixels on selection boundary [Philosoft]
- fixed bug in SelectionAddEllipse when the ellipse is bigger than the image dimension
- SelectionInvert now sets the correct info.rSelectionBox.
- SetEscape(-1) returns the image dimension for all the formats
- fixed Bitfield2RGB to decode 32 bit per pixel data
- fixed CxImageTIF::EncodeBody, when saving 8 bpp images, with TIFFTAG_PREDICTOR==2, the image buffer is corrupted by the tiff encoder. [adnanmn]
- fixed blur_text: iSrc->head.biWidth, not just head.biWidth
- Better CxImageMNG error handling (avoid crash with 0 lenght files)
- fixed cinfo.density_unit handling in CxImageJPG::Decode [andy]
- fixed CxImage::Copy to preserve DPI information [andy]
- fixed SetXDPI/SetYDPI to reflect DPI towards CopyToHandle
- fixed CxImageBMP::Decode if alpha pixels are all zero
- fixed info.nProgress computation, for images with active selection [zhanghk]
- fixed SwapIndex: access violation
- fixed MixFrom: didn’t copy black pixels if the image has no transparency enabled [Matt]
- Removed unnecessary check in DrawStringEx [rowkajhh]
- fixed bug in BlindGetPixelColor: alpha was not handled for images with 8 bpp or less
- fixed bug in Destroy and LayerDeleteAll: info.nNumLayers was not set back to 0. [Matt]
- fixed bug in LayerDelete, when deleting the last layer, info.nNumLayers and pLayers were not set back to 0
- fixed CreateFromHANDLE for 16 bit bitmaps [gofame]
- fixed bug in Flip(): added check whether the temporary image was allocated correctly [Jonathan Marshall]
- Better parameter check in Encode(CxFile * hFile, CxImage ** pImages, int pagecount) for multipage TIF, ICO, GIF
- fixed bug in CxMemFile::GetBuffer: can only detach, avoid inadvertantly attaching to memory that may not be ours [Jason De Arte]
- fixed bug in SetPixelColor: bSetAlpha was ignored for indexed images
- fixed wrong background comparison in Mix with option OpDstCopy [Marquis.D.J], [Sims]
- fixed missing ReleaseDC in DrawStringEx [Chris]
- fixed bug in BlindGetPixelColor: rgb.rgbReserved not assigned in images without alpha layer [Hermann]
- fixed WBMP encoder/decoder: wrong file header handling if width or height are more than 127 [Gary Yang], [Marcus Ackermann]
- fixed bug in CreateFromArray and CreateFromMatrix: bFlipImage parameter was ignored for alpha channel [Vitaly Ovchinnikov]
- fixed Mix with OpScreen option: wrong scaling factor: >>8 -> /255
- fixed CreateFromHANDLE for the case RLE_4 as for the bmp decoder
- Better check against possible overfows in CxImage::Create, if requested width and height are huge [Steve Manzuik]
- fixed RepairChannel: pixels on borders were not processed + fixed rounding error [juicy_emad]
- fixed wrong coefficient in the Stevenson - Arce error diffusion algorithm [Sam Hocevar]
- fixed bug in SetStdPalette: info.last_c_isvalid was not set to false
- fixed bug in Lut: grayscale image without selection, after Lut was no longer a grayscale
- fixed missing ReleaseDC in DrawString [Chris]
- CImageIterator::GetRow(BYTE *buf, int n) will not copy more than GetEffWidth() bytes
- The transparent condition is info.nBkgndIndex>=0, not info.nBkgndIndex!=-1
- SetTransIndex accepts only indexes less than the number of colors
- Fixed bug in RGBtoBGR: memory corruption if lenght>3*width
- info.nAlphaMax no longer affects alpha layer saving TGA and PNG
- fixed BMP and ICO read and write image with alpha layer and width not a multiple of 4
- fixed rounding error in Rotate, in computation of new image size
- typo #define __ixmaJPEG_h -> #define __ximaJPEG_h [wayne]
- fixed pointer casts to DWORD (/Wp64 compatibility)
- fixed CxImageICO::Encode saving 4 or 8 bit icons with transparent color

Changes and major additions

- support for UNICODE [Eric Jesover]
- SetStdPalette works also for 1 bpp images
- CxImageICO now decodes Vista (png) icons.
- ximatif.cpp: updated to support images with non standard bitpersamples [Vladimir Kladov]
- New method: AlphaFromTransparency
- New method: GaussianBlur, faster than Filter and accepts arbitrary smoothing radius
- updated CxImageMNG to handle MNGs with alpha layer
- New method: SwapRGB2BGR
- Replaced GetPixelColor, GetPixelIndex, AlphaGet, SelectionIsInside with the “blind” version, in the methods where it is safe. Up to +25% speed gain.
- RotateLeft and RotateRight now preserve the selection layer
- New method: TextBlur, selective blur on diagonal lines or round borders
- New methods: SelectionSet, SelectionGet, BlindSelectionGet, BlindSelectionIsInside
- DrawStringEx now draws strings also with “antialias” option. Updated the CXTEXTINFO structure with a new “smooth” variable.
- Improved RedEyeRemove
- Added parameter “level” in SelectionAddRect, SelectionAddEllipse, SelectionAddPixel, SelectionAddPolygon, SelectionAddColor, SelectionClear: multiple selections, remove selection area with level=0.
- New method: SelectionRebuildBox
- New method: SelectiveBlur [nipper]
- CxImageBMP now reads/writes 32 bit images (alpha channel) [f22_storm] [Rasqual]
- New method: SetType
- New image format: SKA (built in)
- ENUM_CXIMAGE_FORMATS: assigned unique integral values for every CXIMAGE_FORMAT_XXX [Alvaro Segura] [Balabasnia]
- Faster CxImagePCX::Encode
- CxMemFile increased preallocation from 4kbyte to 64kbyte, for better speed performance
- CxMemFile::Alloc now returns a bool, to tell if the allocation has been successful
- New method: GetTransparentMask, works for simple transparency and with alpha channel
- new file format: CxImageRAW
- CxImageRAW, decoder quality can be set through SetCodecOption
- New methods: Dump, UnDump, DumpSize
- AlphaCreate now returns bool
- Added support for writing multipage icons, also in vista format, [Alas]
- CxImageJAS::Decode always force conversion to sRGB. [Nudel]
- New static methods: GetNumTypes, GetTypeIdFromName, GetTypeIdFromIndex, GetTypeIndexFromId
- Replaced “catch (char *” with “catch (const char *” for compatibility with linux compilers [Lars Munch]
- fixed problem with bcc32, in CxImagePNG::user_.. methods; added PNGAPI and removed casts in png_set_write_fn, png_set_read_fn, png_set_error_fn calls [Ivan_A._Krestinin]
- Faster Flip [qhbo]
- New methods: SelectionMirror, SelectionFlip
- Flip and Mirror: added parameters to select if transform also the selection (default=no) and alpha (default=yes) layers
- Draw and Draw2: added ::SaveDC and ::RestoreDC, to work in MM_ANISOTROPIC, MM_HIENGLISH, and similar modes [Greg Peatfield]
- CreateFromHANDLE now handles also top-down bitmaps [heavyweight]
- New options for jpeg encoder: ENCODE_SUBSAMPLE_422 (4:2:2, medium sub sampling), ENCODE_SUBSAMPLE_444 (4:4:4, no sub sampling). If none specified, encoder will use 4:1:1 high sub sampling.
- CreateFromHICON now works also with 32bit icons [Arlen Albert Keshabian]
- New methods: GetJpegQualityF, SetJpegQualityF, extended the JPEG quality parameter to use float numbers, necessary for low compression rate in JPEG2000 [Stefan Schürmans]
- New parameter for QIShrink: bChangeBpp, useful for B/W image thumbnails [Artiom Mirolubov]
- New method: Threshold2: Filters only the pixels with a lightness less (or more) than the threshold level, and preserves the colors for the unfiltered pixels. [wangsongtao]
- Faster GrayScale (2x) for 1 and 4 bpp images [Thomas M. Boser]
- GetVersion and GetVersionNumber now are static members
- Replaced “memcmp” operations between pixel and background color with IsTransparent(x,y), to avoid wrong behaviour with black pixels or in images with alpha layer. Affected methods: Mix and MixFrom
- New method: LayerDrawAll
- New methods: KernelHanning, KernelPower
- Added CXIMAGE_SUPPORT_DECODE switch for all the formats
- UnsharpMask now support selections
- Slightly faster: Resample (in bilinear case), Colorize, AlphaStrip
- New method: Solarize [Priyank Bolia]
- New method: GammaRGB
- New method: SelectionGetPointer
- Better Expand: now handles alpha and selection channels
- New methods BlindSetPixelColr and BlindSetPixelIndex
- New method: FloodFill
- New method: Saturate
- New method: ConvertColorSpace
- New method: OptimalThreshold
- HistogramStretch added threshold parameter
- NewMethods: Threshold(CxImage*)
- NewMethods: AdaptiveThreshold
- Improved PNG decoder/encoder
- Better throw/catch message error handling in case of throw””
- Encode2RGBA: new bFlipY parameter [AMSN]
- New method: CheckFormat [AMSN]
- New Methods: Get/SetDisposalMethod, Get/SetRetreiveAllFrames, GetFrame, DestroyFrames [AMSN]
- CxImageGIF, now can decode all frames in a single pass, if enabled with SetRetreiveAllFrames [AMSN]
- CxImageGIF::Encode, new option: bLocalDispMeth enables the creation of animated gifs with independent disposal method for each frame
- New methods: ntohs and ntohl for big little endian conversion in built in formats (bmp, ico, tga, pcx, gif, ska)
- pLayers : renamed with ppLayers, replaced malloc with new
- new option for Mix: OpAvg
- MakeBitmap edited to work also with windows CE [Vincent_RICHOMME]
- CxImage::Blt now paints the image also in positions different than (0,0). [RT]
- Defined try, thorw, catch for compilers without exception handling [RT]

Project - Libraries - Demo application

- minor configuration editing for VC8 warnings (_CRT_SECURE_NO_DEPRECATE)
- Demo, new menu: graph data extraction
- LibTIFF: tif_getimage.c updated to support images with non standard bitpersamples [Vladimir Kladov]
- Demoview: fixed crash printing images with DPI=0
- added libMNG version 1.0.10
- Updated DlgText to test the “antialias” option in DrawStringEx
- Demo, new menu: RedEyeRemove
- Demo, new menu: Blur selection border
- Demo: DecreaseBpp preserves transparent color
- Demo: remember last file type used for unknown file type
- Demo: DlgDataExt preview image
- defined MNG_ERROR_TELLTALE in libmng
- Demo: now pastes also metafile pictures
- Added LibDCR
- Demo: custom clipboard copy/paste (Dump/Undump testing)
- Demo: new options for the JPEG format subsampling
- Updated libpng to version 1.2.24
- Better console demo (demo2): support UNICODE and batch conversion [Ian Knight]
- Demo: more options for RAW file format interpolation
- Demo: removed the unused Edit\Cut menu and toolbar button
- Removed unnecessary definitions for MBCS and AFXDLL in the projects settings [Pixelpoint]
- Demo: Erode, Dilate now use a kernel=3
- Demo: new dialog for custom linear filters [Priyank Bolia]
- Demo: filter parameters are shared between all documents
- Demo: added 2nd toolbar for commom operations
- Demo, new menu: Expand, GammaRGB
- Demo, new tool: FloodFill
- Demo, new menu: Saturate, histogram saturation
- Demo, new menu: HistogramStretch with threshold parameter
- Demo, new menu: AdaptiveThreshold
- Better CQuantizer rounding behaviour
- updated ZLIB to 1.2.3 (no changes)
- updated jasper to 1.900.1 (casts, minor config)
- removed CXIMAGE_FORMAT_J2K, and j2k (now openjpeg) -> use jasper for j2k images
- Demo, new menu: add shadow
- Demo: display animated GIF
- working version and demo for Pocket PC 2003 [Vincent_RICHOMME]
- Updated project configurations to build in VC++express2005 and VC++2008
- console demo: removed MFC dependencies, now can build with VC++express2005 + PSDK

### Version 5.99c, 17 - Oct - 2004

Bugfixes

- CxImageTIF::Encode: default compression for 4 bpp image was NONE, now it's LZW.
- CxMemFile::Seek: fixed bug introduced in version 5.99b: seeking beyond file size is legal !!!

### Version 5.99b, 10 - Oct - 2004

Bugfixes

- fixed SetXDPI and SetYDPI to accept only positive dpi values
- fixed EXIF decoder against invalid TAG_EXIF_OFFSET / TAG_INTEROP_OFFSET
- fixed missing definitions in ximawnd.cpp when CXIMAGE_SUPPORT_BMP is 0
- fixed `CxFileJas` constructor to avoid crashes, when Jasper deals with its temporary files, decoding large images [vho]
- removed default `imagetype` value from `CxImage::Save` [Choi Byungtae]
- fixed `Mean()` for images with an active selection [Admir Hodzic]
- fixed GIF decoder for animated images with corrupted frames.
- fixed GIF decoder for images with screen descriptor larger than the first frame.
- fixed GIF decoder to handle the disposal methods correctly.
- CxImageWMF reads images mapped in MM_TEXT, when MM_ANISOTROPIC fails.
- fixed `Clear` for 1 and 4 bpp images.
- fixed typo in ximajpg.cpp: ENTRPY_OPT_SUPPORTED -] ENTROPY_OPT_SUPPORTED [Boum]
- fixed potential memory overflow in RLE decoder reading corrupted bitmaps.
- Better UNICODE support [Cesar M] and fixed TCHAR mappings for Linux.
- fixed bug in `IsTransparent`, for images with a valid alpha layer.
- fixed bug in `Create`: a vaild image was created even if width or height were zero.
- CxMemFile: fixed problem for compilers where malloc(0) returns 0, + improvements in Alloc and Seek.

Changes and major additions

- new functions: `Rotate2()` [BD], `Resample2()` [BD] `QIShrink()` [BD] , `RedEyeRemove()` [???] , `Edge()`,
  `SelectionSplit()`, `IsSamePalette, BlendPixelColor`, `GetVersionNumber, Encode2RGBA`
- new dithering algorithms: Bayer, Burkes, Stucki, Jarvis-Judice-Ninke, Sierra, Stevenson-Arce [Franco Gerevini]
- renamed `AlphaGetBits` with `AlphaGetPointer` [BD]
- new compiler switch: CXIMAGE_SUPPORT_INTERPOLATION to enable pixel color interpolations,
  implemented in the ximaint.cpp module [BD]
- New bEnableInterpolation parameter for `Skew()`
- New `blend` parameter for `Colorize()`
- color conversion routines now are declared as `static`
- `FFT2` now works also with Borland compilers
- more interpolation kernels [Vladimír Kloucek]
- Smooth stretching parameter for `Draw`, thanks to [Vladimír Kloucek] and [BD]
- Added `FreeMemory` function, to avoid heap problems using `Encode` with memory buffers [livecn]
- new `bMixAlpha` parameter and new `OpScreen` blending mode for `Mix()`
- LZW compression is the default algorithm for GIF compression.
- CxImagePNG now can encode interlaced images
- Get/SetCodecOption now has an "ImageType" parameter, so that each format keeps its specific options
- Faster `RotateLeft` and `RotateRight` [BD]
- CxImageJPG now can write back the EXIF information (verbatim copy).

Project - Libraries - Demo application

- Demo: new dialogs for Resample, Rotate, Skew with more options, JPEG compression
- New license based on zlib/libpng philosophy, see ximage.h and ./doc/license.txt
- Demo: new tool: tracker
- Demo: new View/Smooth menu to test smooth drawing in zoom and stretch modes
- Demo: more CodecOptions on the Options dialog, enabled LZW compression for GIF and TIF formats.
- PNG: updated to libpng 1.2.7
- JBIG: updated to version 1.6
- Better documentation : now using Doxygen.

###

### Version 5.99a, 08 - Feb - 2004

Bugfixes

- fixed bug in AlphaCopy, AlphaSet, SelectionCopy [Tacho]

Changes and major additions

- ---

Project - Libraries - Demo application

- Demo: fixed save/restore window position and options

###

### Version 5.99, 31 - Jan - 2004

Bugfixes

- fixed linking problems when CXIMAGE_SUPPORT_ENCODE is 0 [Schuberth] [Squidge]
- fixed missing in parentheses in CreateFromMatrix and CreateFromArray [sihun] [H.C.Anderson]
- fixed incorrect decoding for 4-bit RLE Windows bitmaps [chupeev]
- Removed unreachable code in Resample [Lucian Ioan]
- CxImagePNG::Encode : removed useless call to iter.GetRow [Chieh An Lu]
- fixed color comparison using long integers (if rgbReserved is not 0) in CxImagePNG and CxImageICO [James Dickson]
- CxExifInfo now reads the exif data also in a second directory [Richard Collins]
- Dither now preserves DPI information
- fixed PNG decoder for interlaced images with transparent layer
- fixed GIF decoder bug for animated images with local color table.
- fixed problem in Draw() with indexed images, when 2 indexes hold the same color and 1 is transparent.
- fixed memory overrun in Crop() for 8 and 24 bpp images. [DT]
- fixed BMP decoder when loading 8 bit resources with less than 256 colors [DT]
- CxImageTIF now handles TIFFTAG_RESOLUTIONUNIT [Trifon]
- Fix for decoding 8 bpp tifs with alpha layer [Nick Holgate]
- fixed error in mymngerror() [Arkadiy Olovyannikov]
- fixed TIFFTAG_PREDICTOR, saving 1 and 4 bpp images with LZW compression [Hermann62]

Changes and major additions

- Renamed DrawText with DrawString
- New bGetAlpha parameter for GetPixelColor
- CxImageICO now reads also windows cursors (.CUR)
- support for UNICODE [Igor Rosenberg]
- Renamed Get/SetEncodeOption with Get/SetCodecOption [chupeev]
- AlphaCreate also initializes the layer to full opaque.
- new functions: DrawStringEx, InitTextInfo, CropRotatedRectangle [VATI], MixFrom [Kenneth Ballard], UnsharpMask [nipper], Lut
- increased default JPEG quality to 90 [VATI]
- CxImageTIF::Decode saves original compression in info.dwCodecOption [DPR]
- new functions: CxImageTIF::TIFFOpenEx and CxImageTIF::TIFFCloseEx, to handle directly a TIFF directory.
- CxImageJPG::Decode and CxImageJPG::Encode handles more jpeg DECODE_XXX and ENCODE_XXX methods
  (through SetCodecOption and SetJpegQuality) [chupeev]
- new dwRop parameter for Stretch, allows raster-operation codes. [?]
- Faster Filter() for 8bit grayscale images [Thomas M. Boser]
- SetEscape(-1) before Decode returns the image width and height only ( for bmp, jpg, gif, tif ) [ignacio]
- new Set/GetJpegScale() before Decode, to open a resized image (for jpeg only) [ignacio]
- new function : CircleTransform for FishEye, Swirle, Cilinder, bathroom effects [Arkadiy Olovyannikov]
- new methos for HistogramStretch: 0 = luminance [dave], 1 = linked channels [nipper], 2 = independent channels [nipper], and for grayscale images
- faster Light and Gamma [nipper]
- CImageIterator new methods: Get/SetCol() to extract a single column.
- Better error checking in image initialization functions.
- CreateFromHANDLE now reads also RLE compressed bitmaps [Michael Gandyra]

Project - Libraries - Demo application

- Updated zlib to 1.2.1.[Tuncer M. Ayaz]
- Demo: status bar updated after Crop or drag & drop [VATI]
- demoview.h : new Dpoint2d structure [VATI]
- demodoc.h : new LEN2D macro [VATI]
- Demo: save/restore window position [VATI]
- Demo: new DlgText features [VATI]
- Demo: new Selection tool options: CTRL+Rclick = move selection, shift+Lclick= rect selection, Rclick on a rect selection = rotate selection [VATI]
- Moved tif_xfile.cpp from LibTiff to CxImage directory and workspace
- Demo2 : Updated FindFormat
- Demo : new Mix dialog and menus for CircleTransform

###

### Version 5.80, 27 - Sep - 2003

Bugfixes

- Fixed head.biSize initialization: moved from Startup() to Create() [ralphw]
- Fixed problem in SetTransColor when rgbReserved is not 0 and in the image there is an alpha layer.
- CxImageBMP::Decode : force rgbReserved=0 in the palette , to avoid problems with some WinXp bitmaps. [Colin Urquhart]
- Fixed warnings for size_t type in iA64 compiler [Frank Sowinski]
- GrayScale from 1, 4 and 24 bit images now preserves info and selection layer
- CxImageICO::Decode will not create the alpha layer if it's not strictly necessary;
  and reads images embedded inside a file [yuandi]
- CxImageJPG::Decode : check image allocation before further processing.
- Fixed DLL_EXP definition and inlined CxImage destructor for older VC++ compilers [Wassily Gibin]
- Fixed CxFileJas::JasClose() bug with memory files [osamu44]
- Added missing casts in floating point functions in CxExifInfo [Branko Drevenšek] [Tuncer M. Ayaz]
- Fixed memory leak in CreateFromHICON [Sims]
- Fixed access violation in CxImageTIF::Decode with some CieLab images [Vitaly Titov]
- Fixed GDI leak in CxImage::DrawText() [Henry P.]
- Crop now works also with the alpha layer. [oboolo]
- Fixed bias and canvas size in CxImage::Rotate()
- CxImageGIF now stores the comment before the image body.
- Encode() functions now check both file and image handlers with EncodeSafeCheck()
- IncreaseBpp to 24 bit from images with simple transparency, now sets the correct transparent color.
- CxImageBMP::DibReadBitmapInfo accepts non standard headers if the stored information is valid
- CxImage::Decode with CXIMAGE_FORMAT_UNKNOWN, now preserves CxImage::info
- Fixed sizeof(BITMAPFILEHEADER) in CxImageBMP, to avoid struct alignment errors

Changes and major additions

- New functions Get/SetClrImportant()
- Added new clrimportant parameter for DecreaseBpp
- Faster Light() for full RGB images
- GetPixelIndex returns the index of the top-left pixel when the coordinates are out of the image and no background color is selected
- CxImagePNG::Encode saves info.nBkgndColor (or white) as bKGD color, for IE
- Added "bEditAlpha" parameter to DrawText.
- New functions:
  SelectionAddPixel [Anatoly Ivasyuk],
  DrawLine [JDL],
  IsTransparent(long x, long y) [Sims],
  AlphaGetBits(), Expand(), Thumbnail() [Colin Urquhart]
  CreateFromMatrix(), CreateFromArray() , replace CreateFromARGB()
- CXIMAGE_MAX_MEMORY prevents huge allocations
- GetBits() returns the pointer to the first byte in a generic row
- New bDetachBuffer parameter in CxMemFile::GetBuffer, to get the buffer for read only purpose [Wassily Gibin]
- Faster (x4!) bicubic interpolation and fixed bias error [Kristian Kratzenstein]
- CxImagePNG::Encode saves only the minimum number of palette colors for small images [Basara]
- Added "hpal" parameter to CxImage::CreateFromHBITMAP, for indexed DCs [Zahi Kapeluto]
- CxImageTGA::Decode now reads also images with illegal packets [Colin Urquhart]

Project - Libraries - Demo application

- Updated CQuantizer to handle color reduction to less than 16 colors
- JAS_IMAGE_INMEMTHRESH increased to avoid jasper temporary file
- Updated JBig library: JBIG-KIT 1.5 (2003-06-11)
- \jpeg\jmorecfg.h : fixed INT32 redefinition for Borland C++ Builder6

###

### Version 5.71, 25 - Apr - 2003

Changes and major additions

- new formats: JP2, JPC, PGX, PNM, RAS (through JasPer)
- new functions: Set/GetFlags( ), LayerCreate( ), LayerDelete( ), LayerDeleteAll( ), GetLayer( ), GetParent( ), GetNumLayers( )

Project - Libraries - Demo application

- New C library : JasPer 1.700.2

### Version 5.70, 19 - Apr - 2003

Bugfixes

- fixed RGB2GRAY macro [H. Muelner] [jurgene]
- SelectionAddPolygon and SelectionAddColor compute correctly info.rSelectionBox
- fixed SelectionAddPolygon when the polygon touches the image borders.
- fixed EXIF reader
- fixed CxImageGIF::DecodeExtension
- CxImageTIF::EncodeBody : better error handling, and switch for different compression tags.
- CImageIterator : fixed friend declaration in ximaiter.h, line 37 [gazzivan]
- fixed DPI default values in CreateFromHANDLE
- CxImageBMP now reads OS2 bitmaps
- fixed cast problem in Histogram functions [Tuncer M. Ayaz]
- fixed memory corruption in RotateLeft( ) RotateRight( ) for 1 bpp images. [Stroupe David R]

Changes and major additions

- New MakeBitmap(hdc) implementation when hdc is 0 [jaslet]
- Light( ) : shifted down the contrast parameter so that the neutral value is 0.
- New filters: Jitter( ), Skew( )
- Negative( ) moved in BASICTRANSFORMATIONS

Project - Libraries - Demo application

- New CxImageCrtDll.dsp project, to build a dll without mfc [Anatoly Ivasyuk]
- fixed bug in Window/Duplicate with no image in the document. [corwinkrisw]
- \jpeg\jdmarker.c line 1091 : skip check for unknown marker, to decode partially corrupted files.

###

### Version 5.61, 10 - Mar - 2003

Bugfixes

- fixed SplitXYZ and floating point constants in ximadsp.cpp [???]

###

###

### Version 5.60, 09 - Mar - 2003

Bugfixes

- CxImagePNG read/save DPI
- SelectionAddRect computes correctly info.rSelectionBox [arnold wittenberg]

Changes and major additions

- better RGB2GRAY macro [dave]
- new functions: HistogramStretch( ), HistogramEqualize( ), HistogramNormalize( ), HistogramRoot( ), HistogramLog( ) [dave]
- GetPixelColor returns the color of the top-left pixel when the coordinates are out of the image and no background color is selected
- new function: Contour( )
- new bicubic spline interpolation for Resample( )
- Faster GetNearestPixel( ) [RJ]

Project - Libraries - Demo application

- Demo: fixed "move" tool

### Version 5.55, 17 - Feb - 2003

Changes and major additions

- fixed bug in CreateFromARGB [Olivier Ansquer]
- CxImageTGA::Decode flips the alpha channel when required [lioucr]
- CxImageGIF::DecodeExtension, fixed problem when extension information is more than 3 bytes. [TomPeakz]

Project - Libraries - Demo application

- jpeg\jdcolor.c, line 384 changed again to permit null conversion if the output space is undefined OR input and output sapaces are the same[DP]

### Version 5.53, 27 - Jan - 2003

Changes and major additions

- New functions: CreateFromHICON
- Replaced SetPaletteIndex with SetPaletteColor and GetRGB with GetPaletteColor

Project - Libraries - Demo application

- Demo : fixed GDI leak in LineDDAProc [jh]
- jpeg\jdcolor.c, line 384 changed to permit null conversion if the output space is undefined (OJPEG) [DP]
- tiff\tif_ojpeg.c from line 1374 to line 1407 : avoid sampling factors check [DP]

###

### Version 5.51, 19 - Jan - 2003

Bugfixes

- fixed GDI leak in CxImage::Draw when pClipRect is not null [Carsten Leue]

Project - Libraries - Demo application

- Updated LIBPNG to 1.2.5 [Tuncer M. Ayaz]
- added jpeg_reset_huff_decode function in jpeg\jdhuff.c for the broadest possible support for OJPEG files
  (implemented by Scott Marovich at HP [marovich(at)hpl(dot)hp(dot)com])
  jpeg\jdmarker.c : line 204 and 261 allow SOI and SOF duplicate only if cinfo-]global_state == DSTATE_INHEADER
  (should be illegal, but OJPEG files have an illegal structure [DP])
- tiff\tif_jpeg.c from line 673 to line 697 : avoid sampling factors check [DP]

###

### Version 5.50, 07 - Jan - 2003

Bugfixes

- CxImageTIF : added support for tiled images
- CxImageTIF : faster decoding with TIFFNumberOfDirectories, instead of looping [Robert Abram]
- CxImageTIF : fixed stripsize check when samplesperpixel is more than 1.
- DecreaseBpp( ) and IncreaseBpp( ) preserve info
- Tile( ) fixed when the rectangle is not a multiple of the image dimension. [dock]
- Added missing casts in floating point functions [Tuncer M. Ayaz]
- CxImageGIF : fixed loop counter saving animated gifs [handong]
- CxImageGIF::get_byte : fixed overflow when reading corrupted images.
- CxImageGIF::get_num_frames : fixed undefined TabCol structure.
- CxImageGIF : a palette without white is accepted.
- CxImageGIF : avoid byte order problems with Solaris [candan]
- CxImageTGA : Encode now saves the last palette entry.
- CxImageICO : Decode reads Bpp from the bitmapinfoheader instead of icondirentry [CoreyRLucier]
- CxImageJBG : fixed Encode crash when copying pixels form cximage to the decoder buffer.

Changes and major additions

- Replaced IsAlphaPaletteEnabled with AlphaPaletteIsEnabled, AlphaIsValidPalette with AlphaPaletteIsValid, GetSelectionBox with SelectionGetBox
- New SplitCMYK( ), GetPixelGray( ), AlphaPaletteSplit( )
- Added the bLocalColorMap parameter to CxImageGIF::Encode, for animated gifs with local palettes
- New AlphaSet(CxImage &from): creates the alpha channel from a gray scale image.
- One or more images can be appended directly to a TIF file, using CxImageTIF::Encode(file,true); or Encode(hFile,pImages,pagecount) [RJ]
- Fast RotateLeft( ) and RotateRight( ) for BW images [Robert Abram]
- SetPixelColor( ) and GetPixelColor( ) handle alpha in RGBQUAD::rgbReserved.
- IncreaseBpp is faster for conversion to 4 and 8 bpp, AlphaPalette converted to an alpha channel for conversion to 24 bpp.
- info.nProgress updated in the dsp and transformation functions [Anatoly Ivasyuk].
- New info.dwEncodeOption parameter to select the compression scheme for GIF and TIF.
- New CxImageWMF::Decode parameters: nForceWidth,nForceHeight to force the final dimension of the image.
- CxImageJ2K::Encode : new formula for compression rate, so the quality for j2k and jpg are similar.
- Added CXIMAGE_FORMAT_UNKNOWN for automatic image type detection.

Project - Libraries - Demo application

- Fixed exception in DlgHisto
- CQuantize handles palettes with alpha information
- better dump of the memory leaks [dave]

###

### Version 5.11, 29 - Sep - 2002

Bugfixes

- ximadefs.h : added pragma pack(1) for BMP structures alignment with Linux compilers

### Version 5.10, 23 - Sep - 2002

Bugfixes

- CxImageGIF : restored lzw algorithm. [Olivier Ansquer]
- CxImageTIFF : added support for CIELAB images.
- CxImageTGA : fixed problem decoding corrupted files.
- CxImageBMP: fixed problem with os2 and 16bit images [Cui Ying Jie]

Changes and major additions

- New DrawText function.
- Added iDst parameter in Resample( ) [CSC]
- New SelectionToHRGN( ) and SelectionAddColor( ) [elrod]
- Replaced HasAlpha with AlphaIsValid, HasSelection with SelectionIsValid, HasAlphaPalette with AlphaIsValidPalette
- New CreateFromARGB( ) [Olivier Ansquer]
- Added DLL_EXP for CxImageTIF and CxImageGIF [Olivier Ansquer]

###

### 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 [Tuncer M. Ayaz].
- 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.

###

### 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.[Tuncer M. Ayaz]
- Added OJPEG_SUPPORT (not for Wang).

###

### 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.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 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 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.02, 24 - Jan - 2002

Bugfixes

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

### 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 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. [Tuncer M. Ayaz]
- LoadResource() now works with network applications. [Tuncer M. Ayaz]
- 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 1.25, 28 - Oct - 2001

Bugfixes

- Added support for 32 bit PNGs and 16 bit TIFs

### 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.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.01, 27 - Aug - 2001

Bugfixes

- PNG Read/Save exceptions with non dword aligned scan lines.
- Mirror() doesn'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.00, 07 - Aug - 2001

### PEOPLE:

[DP] : Davide Pizzolato (www(dot)xdp(dot)it)
[TRK] : Troels Knakkergaard (TRK(at)lyngsoe(dot)com)
[Brian R(dot) Zielinski] : Brian R. 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)
[Tuncer M. Ayaz] : Tuncer M. Ayaz (tuncer(dot)ayaz(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)
[Olivier Ansquer] : Olivier Ansquer (olivier(dot)ansquer(at)freesbee(dot)fr)
[elrod] : Mark B. Elrod (elrod(at)bluedoor(dot)com)
[Cui Ying Jie] : Cui Ying Jie (cuiyj(at)163(dot)net)
[dock] : dock (dock(at)cmmail(dot)com)
[handong] : handong (jhandong(at)netian(dot)com)
[candan] : candan (candan(at)mail(dot)pagic(dot)net)
[RJ] : Roger Jane (roger(dot)jane(at)microtest(dot)co(dot)uk)
[Robert Abram] : Robert Abram (robert(dot)abram(at)prgx(dot)com)
[dave] : dave(at)posortho(dot)com)
[CoreyRLucier] : CoreyRLucier(at)aol(dot)com)
[Carsten Leue] : Carsten Leue (carsten(dot)leue(at)iwr(dot)uni-heidelberg(dot)de)
[jh] : jh (jhprivate(at)fescomail(dot)net)
[lioucr] : lioucr (lioucr(at)yahoo(dot)ca)
[TomPeakz] : TomPeakz (topman(at)vip(dot)sina(dot)com)
[arnold wittenberg] : Arnold Wittenberg (a(dot)wittenberg(at)eramco(dot)nl)
[H. Muelner] : Helmut Muelner (hmuelner(at)iicm(dot)edu)
[jurgene] : Jürgen Eidt (jurgene(at)hotmail(dot)com)
[W. Morrison] : William Morrison (Bill(at)rosinante(dot)com)
[jaslet] : Bertrand Jaslet (jaslet(at)hotmail(dot)com)
[corwinkrisw] : corwinkrisw (corwinkrisw(at)yahoo(dot)com)
[gazzivan] : gazzivan (gazzivan(at)libero(dot)it)
[Stroupe David R] : Stroupe David R (x5011) (David(dot)Stroupe(at)siemens(dot)com)
[Frank Sowinski] : Frank Sowinski (Frank(dot)Sowinski(at)fujitsu-siemens(dot)com)
[JDL] : Jordan DeLozier (support(at)triosade(dot)com)
[Wassily Gibin] : Wassily Gibin (vasily(at)gibin(dot)net)
[osamu44] : osamu44 (osamu44(at)juno(dot)ocn(dot)ne(dot)jp)
[Sims] : Sims (siminfrance(at)hotmail(dot)com)
[Vitaly Titov] : Vitaly Titov (vitalyt(at)scanvecamiable(dot)com)
[Branko Drevenšek] / [BD] : Branko Drevenšek (branko(dot)drevensek(at)uni-mb(dot)si)
[Henry P.]: Henry P. (hdpham(at)allersoft(dot)com)
[Kristian Kratzenstein] : Kristian Kratzenstein (kristian(at)kratzenstein(dot)dyndns(dot)org)
[Basara] : Alexey Silinov (basara(at)in-cubus(dot)com)
[ralphw] : Ralph Walden (ralphw(at)exmsft(dot)com)
[Zahi Kapeluto] : Zahi Kapeluto (zahi(at)locationet(dot)com)
[Colin Urquhart] : Colin Urquhart (colin(dot)urquhart(at)primetv(dot)com(dot)au)
[oboolo] : Ludovic Baillet (oboolo(at)baillet(dot)org)
[yuandi] : yuandi (yuandi(at)www(dot)ps2love(dot)com)
[Schuberth] : Sebastian Schuberth (s(dot)schuberth(at)tu-bs(dot)de)
[Squidge] : Squidge (paulc(at)ibiblio(dot)org)
[sihun] : sihun (shsung(at)mbc(dot)co(dot)kr)
[H.C.Anderson] : Howard C. Anderson (howard(dot)anderson(at)anadigm(dot)com)
[chupeev] : alexander chupeev (chupeev(at)tmn(dot)ru)
[Lucian Ioan] : Lucian Ioan (xtndd(at)yahoo(dot)com)
[Chieh An Lu] : Chieh An Lu (calu(at)interactiveedge(dot)com)
[James Dickson] : James Dickson (Jamie(at)jdnet(dot)co(dot)uk)
[Richard Collins] : Richard Collins (rtc(at)steel-connections(dot)com)
[Igor Rosenberg] : Igor Rosenberg (rosenberg(at)infotrust.sk)
[DT] : Diego Tartara (dtartara(at)hotmail(dot)com)
[VATI] : Varga Attila (attila_varga(at)freemail(dot)hu)
[DPR] : DPR (info(at)brutzler(dot)de)
[Trifon] : Trifon (trifon(dot)alekov(at)dotrix(dot)be)
[Nick Holgate] : Nick Holgate (nick(at)barhop(dot)co(dot)uk)
[Kenneth Ballard] : Kenneth Ballard (ken_ballard(at)hotmail(dot)com)
[Thomas M. Boser] : Thomas M. Boser (tom(dot)boser(at)olimllc(dot)com)
[ignacio] : Ignacio Alvarez (ignacio(at)xentient(dot)com)
[Arkadiy Olovyannikov] : Arkadiy Olovyannikov (ark(at)msun(dot)ru)
[nipper] : nipper (nipper(at)rpnet(dot)cz)
[Hermann62] : Hermann62 (hild(at)smi-software)
[Michael Gandyra] : Michael Gandyra (M(dot)Gandyra(at)steinbichler(dot)de)
[Tacho] : Tacho (tacho_fortin(at)hotmail(dot)com )
[Franco Gerevini] : Franco Gerevini
[Admir Hodzic] : Admir Hodzic (fathsoft(at)fathsoft(dot)com)
[Vladimír Kloucek] : Vladimír Kloucek (vladimir(dot)kloucek(at)samo(dot)cz)
[Cesar M] : Cesar Mello (cmello(at)gmail(dot)com)
[Eric Jesover] : Eric Jesover (eric(at)jesover(dot)net)
[Vladimir Kladov] : Vladimir Kladov (vk(at)kolmck(dot)net)
[RT] : Riccardo Trocca
[Adrian Cole] : Adrian Cole
[XBMC] : http://xbmc.org/
[Kai Sandner] : Kai Sandner
[Stefan Felkel] : Stefan Felkel
[temper] : temper
[altera] : altera
[Jean-Marie Epitalon] : Jean-Marie Epitalon
[Luc Langlois] : Luc Langlois
[Guido Vollbeding] : Guido Vollbeding
[wenfeng248] : wenfeng248
[brunom] : brunom
[Vitaly Ovchinnikov] : Vitaly Ovchinnikov
[Rezak] : Rezak
[Ken Yee] : Ken Yee
[Sebastian Gottschalk] : Sebastian Gottschalk
[zjh821224] : zjh821224
[chentsiushu] : chentsiushu