# Vampyre Imaging Library History

## Vampyre Imaging Library History

You can find a listing of Imaging versions on this page. There is the release date of each version together with a short note and a list of the most important changes that were made. You can find the change tags explained here Changes Legend.
Version 0.26.4 - 11th October 2009
For complete list of changes see File Notes section at the end of each source file.
- [+]
  APNG file format (Animated PNG) loading, animating, and saving added to existing PNG support.
- [+]
  Arbitrary angle image rotation.
- [*]
  Mac OS X (Intel) compatibility (garbled LCL bitmaps in Carbon, JPEG 2000 support, ...).
- [+]
  XPM file format saving added, JPEG 2000 file format loading improved.
- [+/F]
  New canvas methods: premultiply and unpremultiply alpha. New methods for TFastARGB32Canvas: InvertColors, DrawAlpha/StretchDrawAlpha. Fixed DrawAlpha/StretchDrawAlpha destination alpha calculation.
- [+]
  Three new extensions in Extras/Extensions directory: ImagingJpegIJL.pas uses Intel Jpeg Library to load/save Jpegs (DLL needed), ImagingSquishLib.pas uses Squish DXTC library with Imaging (DLL needed), ElderImagerySky.pas loads SKY images from Daggerfall.
- [+]
  Conversions between RGB and YCoCg colorspaces.
- [F]
  Bug fixes: loading of some GIFs when using D2009+ failed, bugged XPM loading in Linux, indexed images resizing leak, PNM saving using D2009+, DXT3 alpha encoding, RGB>>CMYK conversion, garbled images in Lazarus GTK IDE.
- [*]
  Delphi 2010 and Lazarus 0.9.28 compatibility fixes.
Version 0.26.2 - 28th December 2008
For complete list of changes see File Notes section at the end of each source file.
- [*]
  Delphi 2009 and Lazarus 0.9.26 compatibility fixes. New project files for Delphi 2009 added. Kylix and CLX stuff removed.
- [+]
  New canvas methods: flood and boundary fills, color channel fills, color level adjustment, histogram calculation.
- [+]
  Animated GIF support rewritten and it now properly animates all tested GIFs (several thousand, true color ones too).
- [+]
  Added new Extras/Contrib directory with Imaging modifications, extensions, demos, etc. contributed by users (now with ExtraGIF, NIF loader, and HqResampler).
- [*]
  Changed LINK defined symbols that control which file formats will be automatically registered. More in File Format Extensions
- [+]
  PSD images with alpha channel are now saved as layers to get proper transparency when opened in Photoshop.
- [*]
  Changed conditional compilation of ImagingComponents.pas unit to properly work with LCL widget sets other than Win32 and GTK.
- [*]
  Removed linking against libstdc++ library in JPEG 2000 headers in Unix (replaced with libc and Pascal functions).
- [F]
  Fixed problem with loading of progressive JPEGs (out of memory) when using FPC Win32.
Version 0.26.0 - 27th August 2008
For complete list of changes see File Notes section at the end of each source file.
- [+]
  New data formats using 3Dc compression added: ifATI1N and ifATI2N. DDS file format updated to be able to load and save images in this format. OpenGL and Direct3D extensions were updated to allow creating textures in these formats.
- [+]
  Canvas class was extended with many new methods and effects. They include image drawing with blending (custom blending factors), filtered image stretching, nonlinear filters (min, max, median), point transforms (contrast, brightness, gamma, threshold), and blended rectangle filling.
- [+]
  New unit ImagingBinary.pas was added to Extras extensions with morphologic operations on binary images.
- [+]
  XPM file format loader was added to Extras extensions.
- [E]
  LCL Imager and Image Browser demos were extended with new functionality provided by canvas class (blending, filters, morphology, etc.).
- [*]
  Updated OpenJpeg library (JPEG 2000) to version with my CDEF patch that saves JP2 files with alpha properly.
- [*]
  Changed some file format loaders/savers to be more thread safe so more images can be loaded concurrently..
- [F]
  Many bugs in library fixed (GIF, BMP, and PNM loaders, ConvertSpecial, linear filters, ...).
Version 0.24.2 - 11th December 2007
For complete list of changes see File Notes section at the end of each source file.
- [*]
  Updated OpenJpeg library (JPEG 2000) to latest revision and added Imaging JPEG support for 64bit Linux.
- [F]
  Fixed various user reported bugs in file format support for GIF and JPEG images.
- [*/+]
  Compatibility changes and project files for new Pascal compilers/IDEs: Lazarus 0.9.24 (LCL support update), FPC 2.2, RAD Studio 2007 (project files).
- [D]
  LCL Imager demo updated - operation timing added. Supports alpha blending with new Lazarus.
- [+]
  New features added to OpenGL texture builder: skip mipmap levels and alternate pow2 texture resizing.
- [+]
  Pascal translation of Hq resampler with Imaging demo added to Extras directory.
- [F]
  Some bugs in library fixed.
Version 0.24.0 - 27th June 2007
For complete list of changes see File Notes section at the end of each source file.
- [D]
  Documentation updated to version 0.24.
- [+]
  TIFF image file format loading and saving added to Extras. Not yet native Object Pascal.
- [+]
  GIF image file format loading and saving added to core library.
- [+]
  New compressed image data format added: ifBTC (block truncation coding).
- [*]
  Changed headers of some low level interface functions.
- [+]
  High level interface in ImagingClasses.pas unit was slightly extended.
- [+]
  Other library enhancements (color conversions for 16bit channels, new buffered file IO, ...).
- [+/*/F]
  Compatibility enhancements (Bitmap saving, JPEG loading, DDS loading/saving, UNIX compilation, Win64 compilation, FPC compilation, ...).
- [F]
  Many bugs in library fixed.
- [+]
  Photoshop PSD image file format loading and saving added to Extras.
Version 0.22.0 - 25.01.2007
For complete list of changes see File Notes section at the end of each source file.
- [D]
  Documentation updated to version 0.22.
- [E]
  Some demos were extended, updated, and some bugs were fixed.
- [+]
  New unit ImagingColors.pas added. Some color space conversion functions are there now.
- [*/F]
  High level interface in ImagingClasses.pas unit was extended and many bugs were fixed there.
- [+]
  Canvas class was extended. FrameRect, Rectangle, Ellipse, and Line methods were added, and you can now specify PenColor, PenMode, and FillMode. New convolution kernels were added too.
- [+]
  JPEG 2000 image file format loading and saving added to Extras. Not yet native Object Pascal.
- [+]
  PCX (ZSoft Paintbrush) image file format loading added to Extras.
- [+]
  PBM, PGM, PPM, PAM, PFM (Portable Maps) image file formats loading and saving added.
- [+]
  Elder Imagery extension added to Extras for loading and saving images from older Bethesda games (Daggerfall mainly).
- [+]
  Added new Extras package (located in (ImagingRoot)\Extras folder) with additional extensions, demos, and tools for Imaging.
- [+]
  Functions added to the low level interface: EnumFileFormats.
- [+/*]
  Many changes to image file format loader/saver classes for easier creation of new formats (old formats were updated and some (Bitmap, DDS) have various parts rewritten). Some new stuff added (file name masks). Also file format enumeration functions were added.
- [F]
  Many bugs in library fixed.
Version 0.20.0 - 30.10.2006
- [E]
  New demo VampConvert replaced old DXTTool. Demo High Level was removed because other demos now use high level interface more.
- [+]
  Added new unit ImagingCanvases.pas with classes for drawing/effects functions added (not much functionality here yet).
- [+/F]
  High level interface in ImagingClasses.pas unit was extended and several bugs here were fixed.
- [*]
  Imaging now compiles and works on 64bit AMD64 CPU architecture (tested in Linux).
- [+]
  VCL/CLX/LCL support in ImagingComponents.pas unit was extended.
- [+]
  New image data formats based on half-float (FP16) type added: ifR16F, ifA16R16G16B16F, ifA16B16G16R16F. Direct3D and OpenGL extensions now create textures in these formats too.
- [+]
  New low level interface functions: IsFileFormatSupported, GetPixelDirect, SetPixelDirect, GetPixel32, SetPixel32, GetPixelFP, SetPixelFP. GetPixelBytes was removed (same data can be obtained by GetImageFormatInfo).
- [F/*]
  Many many bug fixes in many parts of the library as well as some optimizations, changes, and tweaks.
Version 00.18 - 25.04.2006

Source code is about 620 KiB in size.

- [D]
  Documentation updated to version 0.18.
- [E]
  Demos were extended or updated.
- [+]
  High level interface in ImagingClasses.pas unit was extended.
- [*/+]
  Mipmap generation in library core and in Direct3D 9 and OpenGL extensions is now filtered. Also Direct3D 9 extension was extended and works with D3D surfaces now.
- [F]
  There was a bug in conversion between Imaging image and TBitmap in ImagingComponents.pas unit when using LCL component set (with GTK interface).
- [*]
  Imaging now compiles and works in FreeBSD and maybe in other Unixes as well.
- [+]
  Functions added to the low level interface: StretchRect.
- [+/*]
  Filtered resizing and stretching implemented. ResizeImage and other functions now take advantage of it.
- [+]
  MNG (Multiple Network Graphics) image file format loading and saving added. Supports usage of PNG and JNG frames, animation capabilities are not used.
- [+]
  JNG (JPEG Network Graphics) image file format loading and saving added. Supports 8 bit gray and 24 bit RGB images with optional alpha channel.
- [*/-]
  PNG support moved from ImagingPng unit to the new ImagingNetworkGraphics.pas unit. Old unit was removed from Imaging.
- [+]
  New unit ImagingNetworkGraphics.pas added for future handling of all Network Graphics image formats.
Version 00.16 - 22.12.2005

Source code is about 535 KiB in size.

- [D]
  Documentation updated to version 0.16.
- [E]
  New demos created: D3D Demo, OpenGL Demo (Object Pascal).
- [+]
  Functions added to the low level interface: RotateImage.
- [E]
  New demos created: SDL Demo, LCL Demo (Object Pascal).
- [+]
  Extension for creating/loading/saving Direct3D 9 textures using Imaging added to the new ImagingDirect3D9.pas unit.
- [+]
  Extension for creating/loading/saving SDL surfaces using Imaging added to the new ImagingSDL.pas unit.
- [+]
  Extension for creating/loading/saving OpenGL textures using Imaging added to the new ImagingOpenGL.pas unit.
- [+]
  Functions added to the low level interface: ReplaceColor.
- [+]
  TGraphic
  descendant classes which use Imaging added for VCL, CLX and LCL components sets. They are in the new ImagingComponents.pas unit.
- [F*]
  Bugs (in 48/64 bit image handling) fixed in PNG (Portable Network Graphics) image file format handling and support for color keying (if present in image) added.
- [F]
  Headers of some functions exported from Imaging dll/so library were changed in ImagingExport.pas unit and in the wrappers for the other languages.
- [+]
  New options ImagingLoadOverrideFormat and ImagingSaveOverrideFormat added. Also all option values are checked for validity before they are used.
Version 00.14 - 10.07.2005

Source code is about 418 KiB in size.

- [D]
  Documentation updated to version 0.14.
- [E]
  New demos created: High Level (Object Pascal), dotNET Demo01 (Delphi.NET).
- [*]
  You can now use Imaging with MPL or LGPL license.
- [*]
  Large changes in Delphi.NET wrapper. Function names and parameter types are now almost same as in Object Pascal without using dll. Some .NET only things added too.
- [+]
  Functions added to low level interface: NewPalette, CopyPalette, FreePalette, DetermineFileFormat, DetermineStreamFormat, DetermineMemoryFormat, GetPixelsSize.
- [*]
  Pixel format conversions rewritten to get better color quality when converting from low bitcounts to higher (visible mainly when using formats like ifR3G3B2 or ifA4R4G4B4).
- [+]
  Functions added to low level interface: MapImageToPalette, FillRect, SplitImage, MakePaletteForImages.
- [+]
  Basic high level interface created. Classes TSingleImage and TMultiImage added to ImagingClasses.pas unit.
- [+]
  Functions added to low level interface: CopyRect.
- [+]
  New image formats added: ifA16Gray16.
- [+]
  PNG (Portable Network Graphics) image file format loading and saving added. Supports 1, 2, 4, 8, 16, 24, 32, 48 and 64 bit images. 1, 2 and 4 bit images can be only loaded.
- [F]
  Various bugs fixed in Imaging, ImagingBitmap and ImagingExport units, look there for details.
- [+]
  Functions added to low level interface: GenerateMipMaps, TestImagesInArray.
- [+]
  Added wrapper unit for Delphi.NET.
Version 00.12 - 13.03.2005

First version released to the public. Source code size was about 250 KiB in size.

- [*]
  DXTC compression and decompression code optimized and it is now about 20% faster.
- [T]
  VampyreDoc tool for documentation management created. It can create XHMTL and HTMLHelp documentation from XML based projects.
- [+]
  New field IsRBSwapped added to TImageFormatInfo record. It is used in conversions and in channel related functions to distinguish between ARGB and ABGR formats.
- [+]
  New image formats added: ifA32R32G32B32F, ifA16B16G16R16, ifB16G16R16.
- [+]
  Functions added to low level interface: ReduceColors, GetImageFormatInfo.
- [*]
  Image format conversions between all types of formats are now supported (ChannelToIndex and FloatToIndex implemented).
- [+]
  Color quantization with support for alpha channel (using Median Cut algorithm) added.
- [F]
  Fixed huge memory leak in Windows Bitmap file format (occurred when loading 8bit uncompressed image).
- [E]
  Demos created: DXT Tool (Object Pascal), Test (C/C++), VCL Image Browser (Object Pascal).
- [U]
  Vampyre Imaging Library project registered at SourceForge (03.12.2004).
- [+]
  Added PushOptions and PopOptions low level functions for pushing and popping Imaging options.
- [*]
  SwapChannels
  and SwapChannelsOfPalette low level functions extended to allow to swap all channels, not only red and blue.
- [*]
  Checked and if necessary added support for special image formats (only DXTC images now) in all low level functions.
- [+]
  DXT1, DXT3 and DXT5 decoding and encoding added.
- [+]
  DDS (DirecDraw Surface) image file format saving added. Supports mipmaps, cube maps, volume textures and ordinary images.
- [E]
  Demos created: Benchmark (Object Pascal/C++).
Version 00.11 - 18.11.2004

Source code size was about 150 KiB in size.

- [+]
  New image format added: ifR32F, ifDXT1, ifDXT3, ifDXT5.
- [+]
  DDS (DirecDraw Surface) image file format loading added. Supports mipmaps, cube maps, volume textures and ordinary images.
- [+]
  New image formats added: ifX8R8G8B8, ifX1R5G5B5, ifX4R4G4B4.
- [+]
  Property SupportedFormats added to TImageFileFormat class. It is set of TImageFormat values which can be saved by this file format. Also MakeCompatible method was added. It converts unsupported formats to supported before saving.
- [*]
  Made PasZLib library compatible with all compilers and platforms supported by Imaging (needed for PNG support).
- [+]
  New low level functions for palette support added: FindColor, FillGrayscalePalette, FillCustomPalette, SwapChannelsOfPalette.
- [+]
  Added import unit and header for Object Pascal and C/C++ to enable using Imaging library compiled into dynamic link library (dll/so).
- [+]
  BMP (Windows Bitmap) image file format loading and saving added. Supports 1, 4, 8, 16, 24 and 32 bit images with or without RLE compression. 1 and 4 bit images can be only loaded.
- [+]
  Added support for function inlining in Delphi 2005 (although not tested yet) and Free Pascal (although compiler crashes on this now).
- [+]
  New image formats added: ifA8Gray8, ifR3G3B2, ifR1G1B1.
- [+]
  New low level functions added: ConvertImage, FlipImage, MirrorImage, SwapChannels, CloneImage, FreeImagesInArray, ResizeImage.
- [+]
  Added image format conversion engine which will support all members of TImageFormat. Some indexed and special format conversions are not implemented yet.
- [+]
  TGA (Truevision Targa) image file format loading and saving added. Supports 8, 15/16, 24 and 32 bit images with or without RLE compression.
Version 00.10 - 23.09.2004

First working version. Source code size was about 80 KiB in size.

- [+]
  JPEG (Joint Photographic Experts Group) image file format loading and saving added. Supports 8 and 24 bit images.
- [*]
  Made PasJpeg library compatible with all compilers and platforms supported by Imaging.
- [+]
  Initial low level functions added: InitImage, NewImage, TestImage, FreeImage, LoadImageFromFile, LoadImageFromStream, LoadImageFromMemory, LoadMultiImageFromFile, LoadMultiImageFromStream, LoadMultiImageFromMemory, SaveImageToFile, SaveImageToStream, SaveImageToMemory, SaveMultiImageToFile, SaveMultiImageToStream, SaveMultiImageToMemory, SetOption, GetOption, SetUserFileIO, ResetFileIO, GetPixelBytes.
- [+]
  Initial image formats added: ifUnknown, ifDefault, ifIndex8, ifGray8, ifGray16, ifGray32, ifGray64, ifR5G6B5, ifA1R5G5B5, ifA4R4G4B4, ifR8G8B8, ifA8R8G8B8, ifR16G16B16, ifA16R16G16B16, ifA32B32G32R32F.
- [*]
  Basic structure of library created.
- [U]
  Vampyre Imaging Library project started (about 08.09.2004).
Changes Legend
- [+]
  Addition (new features, functions etc.)
- [-]
  Removal (old features, functions etc.)
- [*]
  Change (existing features, functions etc. changed or extended)
- [F]
  Bug fix
- [D]
  Documentation related
- [E]
  Examples and demos related
- [T]
  Tools related
- [U]
  Unique event
Top