CxImage History
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
Drevenek> <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
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 Drevenek> / <BD> : Branko Drevenek (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)