The Progressive Graphics File ============================= For more information see http://www.libpgf.org. There you can find some documents concerning this progressive graphic file codec. This project is hosted on the Sourceforge.net platform. For support and questions, please use the installed mailing list and forums there. The Sourceforge URL of our project is: http://sourceforge.net/projects/libpgf ============================= Release Notes Version 7.19.3, (Tue, 15 Jan 2019) ------------------------------------ 1. The new version is a minor update of version 7.15.25. 2. This version fixes a compilation bug seen when ROI support is disabled. Version 7.15.32, (Thu, 6 Aug 2015) ------------------------------------ 1. The new version is a minor update of version 7.15.25. 2. This version improves the reuse of CPGFImage objects for several decoding operations. It clarifies the usage of CPGFImage::Close() and CPGFImage::Destroy() by deletion of Close(). Several reading operations can be performed in the following way: Open(), Read(), GetBitmap(), ResetStreamPos(), Read(), GetBitmap(), ResetStreamPos(), ... Calling Destroy() frees all allocated ressources and reinitializes the object to the same state as the constructor does. This allows the reuse of the CPGFImage object for encoding and decoding: SetHeader(), ImportBitmap(), Write(), ResetStreamPos(), Destroy(), Open(), Read(), GetBitmap() 3. Caching or skipping of user data (meta data) while opening a PGF image can be controlled by a new UserdataPolicy in ConfigureDecoder(). Version 7.15.25, (Sat, 20 June 2015) ------------------------------------ 1. This new version is a replacement of version 6.14.12. In case you use the ROI decoding, we strongly encourage using version 6.15.25 instead of an older version. 2. This version fixes some decoder bugs only seen in ROI decoding. ROI decoding is now also supported for Bitmap and RGB12 image modes. 3. This version introduces a new and more efficient data format for binary images (bitmaps). The new format allows ROI decoding. The decoder supports both the old and the new format, but ROI decoding works only with the new format. 4. The two reserverd bytes in PGFHeader are now used for a more detailled PGF version number. 5. The Visual Studio project files are in the VS12 format. Version 6.14.12, (Wed, 9 April 2014) ------------------------------------ 1. The new version is a minor update of version 6.12.24. 2. It mainly contains some fixes of memory leaks in the OpenMP part and some improvements suggested by cppcheck and Coverity. 3. The Visual Studio project files are in the VS11 format. Version 6.12.24, (Thu, 14 June 2012) ------------------------------------ 1. The new version is a replacement of version 6.11.42. In case you use the ROI encoding scheme, we strongly encourage using version 6.12.24 instead of version 6.11.42. 2. This version fixes some decoder bugs, sometimes seen in ROI decoding. 3. This version allows a simpler user-data handling, especially for uncached metadata. The following two methods in the class PGFimage are designed for this purpose: GetUserDataPos() returns in an opened PGF image the stream position of the user data area. WriteImage() encodes and writes the image at the current stream position. This method is called after WriteHeader(). In case you want to write uncached metadata into the stream, then do that after WriteHeader() and just before WriteImage(). If you are not interested in writing uncached metadata, then you usually use Write() instead of WriteImage(). WriteHeader() and WriteImage() are called inside of Write(). Version 6.11.42, (Sun, 23 Oct 2011) ----------------------------------- 1. The new version is a replacement of version 6.11.24. We strongly encourage using version 6.11.42 instead of version 6.11.24. 2. This version fixes some decoder bugs, only seen in lossless compression of large images. 3. The rarely used, but sometimes misused, background information (3 Bytes) in the PGFHeader has been replaced by UINT8 usedBitsPerChannel; // number of used bits per channel // in 16- and 32-bit per channel modes UINT8 reserved1, reserved2; // not used The value usedBitsPerChannel is helpful in case you have more than 8 (16) but less than 16 (32) significant bits per channel, stored in the most significant bits of a pixel. For example, you have a grayscale image with 14 bit significant data per pixel stored in the ImageModeGray16 pixel format. In case you have left shifted the 14 bits to be the most significant 14 bits, then you should set usedBitsPerChannel=14. This will increase the compression ratio without any drawbacks, because the 14 bits are internally right shifted. On the other side, if the 14 bits are the least significant bits in your 16 bit pixel format, then you shoulden’t set usedBitsPerChannel. It will be automatically set to 16, but this is no problem, since the not used most significant bits per pixel are never coded at all. So, in both cases the same compression ratio will result.