PNG is the best cross-platform lossless image format available today. It outperforms GIF in compression ratios, progressive download speed over the internet, and has a greater range of pixel depths available, from 1 bit per pixel to 48 bits per pixel. GraphApp uses PNG to store its portable fonts. PNG relies on ZLIB for some of its compression requirements.
JPEG is the de facto standard for storing lossy image data, such as photographs.
GIF is the outmoded image format developed by Compuserve bask in the 1980's. GIF is a service mark of Compuserve. It's an old format these days. PNG and MNG give better performance so you should use them if you can.
Can I remove some of these formats from the library?
The following sections give more detailed instructions on how to remove specific image formats from the library.
How can I remove GIF support?
To remove GIF format from the library:
How can I remove JPEG support?
How can I remove PNG support?
PNG relies on ZLIB for some of its compression abilities, so if you remove PNG you can also remove ZLIB from the library.
Removing PNG occurs in much the same way as removing GIF, except that the files you'll remove from linking will be in libpng/ and libz/, and the string you should search for will be "png" instead of "gif".
How much support for PNG does GraphApp have?
How much support for GIF89a does GraphApp have?
GraphApp can load such files into an ImageList data structure. The control information is lost in the process. The control information tells a web browser or other GIF viewer program how to display the images, what time delay exists between them, and so on.
The common technique for loading images in GraphApp only returns one image. If using this technique, GraphApp only loads the first image in a GIF89a file, ignoring the remainder.
GraphApp has no built-in animation facilities, so drawing a GIF89a image to a window will not automatically make it animate. Programs such as web browsers which support animation of GIF89a files do so by using a timer event handler which redraws the image every second or so, going to the next image in the file each time.
How much support for MNG does GraphApp have?
GraphApp currently has no support for MNG. The standard implementation for MNG is one megabyte in size, and it was felt that adding MNG support would bloat the GraphApp code base too much.
Of course, linking to the dynamic library for MNG would not increase GraphApp's distributed code base size much, and this is one option being considered for the future.
Can I use the LibPNG DLL instead of compiling the code into GraphApp?
The standard GraphApp distribution does not contain this option, because there are too many varieties of these DLLs floating around to guarantee that GraphApp will link to all of them correctly. Therefore, we just bundle with GraphApp some versions of these libraries which are known to work.
But feel free to create a customised GraphApp Makefile which dynamically links to these libraries, and try it on your system. It should work fine.