KDE Image I/O library --------------------- This library allows applications that use the Qt library (i.e. QImageIO, QImage, QPixmap and friends) to read and write images in extra formats. Current formats include: JPEG JPEG2000 XV EPS NETPBM PNG TIFF TGA PCX SGI (images/x-rgb: *.bw, *.rgb, *.rgba, *.sgi) DDS XCF (Some example files are in kdenonbeta/kimgio_examples.) To use these formats, you only need to: 1. link the application with the libtdeio library 2. Include the header 3. call KImageIO::registerFormats() once, somewhere in your code before you load an image. Writing handlers ---------------- 0. Please read the documentation for the QImageIO class in the Qt documentation. 1. When writing handlers, there is a function naming convention; suppose, for example, we were writing PNG read and write handlers, we would name them void kimgio_png_read ( QImageIO * ); void kimgio_png_write( QImageIO * ); ie kimgio__ This should reduce the chance of identifier clashes with other code. 2. Remember that a given KDE application may try to load dozens of images at once such as when loading icons, or creating thumbnails. Also, it may well be loading them over a network connection. Therefore, - Avoid creating temporary files or allocating too much memory when decoding and encoding. Especially try to avoid firing off external programs. - Don't assume that the IODevice which is the source or target of the image data is pointing to a file on the local filesystem. Use the IODevice methods to read and write image data. - Check for file corruption or premature end of the image, especially before using values read from the file e.g. for memory allocations. 3. If you only have either a reader or the writer for a particular format, don't use NULL in QImageIO::defineIOHandler. Instead, write a stub function for the unimplemented handler which displays a message on standard output. This prevents kimgio-using programs dumping core when attempting to call the unimplemented handler. Yours in good faith and pedantry, Sirtaj Singh Kang , 23 September 1998.