What's new in CxImage 6.0
Apr 14, 2009
- 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 EditCut 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