INTRODUCTION

The Silicon Graphics Image Format Library (IFL) 1.3.1 provides support for opening, reading, writing and creating image files in a format independent manner. IFL 1.3.1 includes support for the TIFF, GIF, PNG, JFIF(JPEG), SGI, BMP, PBM, PGM, PPM, XPM, XBM, FIT and Raw formats on all platforms. On IRIX, support for PhotoCD, NITF, USGS DOQ, SGI movie file, QuickTime, Alias|WaveFront, SOFTIMAGE and YUV file formats is also included.
IFL software consists of a primary library that provides the format independent interface, and the header files for compiling new software using these libraries. Documentation consists of online man pages for all object classes and supporting routines.

CHANGES AND ADDITIONS

This chapter lists the changes and additions to the Image Format Library since the 1.1 release.

New formats added

Support for BMP, NITF, XBM, XPM, SGI movie, QuickTime movie and old style DOQ files has been added.

New file format database generation

Modifications to the ifl_database are now affected through the ifldbgen program. To add new database entries, the new entry should be written to a separate file, and that file placed in the /usr/lib/ifl/database directory. Running the /usr/lib/ifl/ifldbgen program will assemble the new ifl_database, writing it to /usr/lib/ifl/ifl_database. See the IFL developer manual page for more details.

Freeware libraries broken out

In previous versions of IFL on Irix, some of the included freeware libraries were combined into the IFL library with a symlink from the freeware library name to the IFL library. With this release of IFL, these libraries are now stand alone. These libraries include libjpeg.so and libtiff.so. On WIN32 the freeware libraries are hidden.

GIF support expanded

Support animated and transparent GIFs was missing the previous releases. These features were added in release 1.2.

C API added to Windows version

Support for the C API has been added to IFL for Windows. Applications must link against cifl.lib in addition to ifl.lib when using the C API.

Names of .DLLs and .LIBs changed to protect the innocent

This change only applies to IFL for Windows. Unknown to the IFL engineering team, another product (CosmoWorlds) has been shipping it's own version of the IFL DLL's which are not compatible with this official version. To avoid this problem we have renamed all of the IFL DLLs and LIBS to have a '0' suffix. These DLLs are in fact binary compatible with the previous official version without the suffix. In the future, if a binary incompatible change is made, the suffix will be incremented. If you don't care about CosmoWorlds and want the bug fixes in this version for a product that is linked against the older DLL name, just copy the new DLLs over the version without the suffix. New and re-released programs that use IFL should be changed to use the new names.

Default install directory changed for IFL for windows

The default install directory used to be "C:/Program Files/Silicon Graphics/Image Format Library/". This has been changed to "C:/Program Files/Silicon Graphics/IFL 1.3.1/" so that multiple versions can be concurrently installed.

BUG FIXES

This chapter lists the bugs in version 1.1 that have been fixed in version 1.3.1 of the Image Format Library.

Small setTile request on iflJFIFFile causes program abort

Attempting to set a tile that is smaller than the entire image on an empty JFIF file would result in a JPEG library error.

iflLut::getOrigin and iflLut::getChan return bogus results

When requesting the origin or channel for an invalid channel (i.e., equal to the number of channels), these functions would return a bogus value instead of NULL.

YUV documentation did not specify file limitations

The iflYUV man page did not specify the required creation method. This has been added with this release.

iflJFIFFile leaks memory

When opening a new JFIF file, the iflJFIFFile object would leak memory.

No init if iflLut::setDomain with min==max

When calling iflLut::setDomain with min == max, the scale and bias values were not initialized. This could cause problems for single bit palette images.

Colormap generated in correct format for TIFF files

In previous versions the colormap could be written to a TIFF file in an incorrect format (not scaled to the full 16-bit range expected). This is now fixed and a warning will be issued when reading files with colormaps in the wrong format.

Cannot read FIT files > 4.2GB

Prior to version 1.2 the FIT file reader could not read files > 4.2GB (32 bit limitation). This limitation is no longer present in this release.

GIF support expanded

Support for animated and transparent GIFs was missing prior to release 1.2. These features are included in this release.

iflRaw does not recognize non-integral range

iflRaw did not recognize non-integral range when specified in the file name.

iflTIFF complains about unknown tags

When an unknown tag was encountered, iflTIFF would produce a rather annoying warning message. This feature has been removed.

iflRaw files dataOffset member not initialized

When an iflRaw file was created, the dataOffset member was not initialized. This could cause the writes to the file at random offsets.

All calls to exit() were replaced with calls to iflError()

There were a few places in the library where exit() was called directly. These have been replaced by calls to iflError. The only calls to exit() that remain are in the supplied (and overrideable) iflError handlers.

PPM format could not handle getPage on a newly created file

This problem has been corrected.

The YUV format didn't allow creating all formats

The createFile method now chooses the default format based on the image size.

KNOWN PROBLEMS AND WORKAROUNDS

This chapter lists the known problems in version 1.3.1 of the Image Format Library and, where known, ways to work around them.

Output to an image file in SGI format

Output to an image file in Silicon Graphics' classic .rgb format does not support arbitrary min and max values set. Use TIFF format if you wish to set arbitrary min and max pixel values.