Spent part of today doing a bit of hacking on largeimagelib. Started of by merging in some improvements Dirk Mueller made to KHTML's JPEG loader, to avoid buffering lots of data it when dealing w/non-progressive JPEGs. This means huge JPEGs can now be loaded with capped memory usage. (Of course, the same change makes the lib a lot less important, since after it KHTML became much, much, better at handling huge images even w/QMovie).
I also implemented a little KPart w/zoom buttons using the library. Was a nice crash course in KParts, and my first experience using KIO in fully async mode. It works nicely, including progressive resizing, scales to large images reasonably well (although it's understandably quite sluggish with 35,000 x 35,000 ones, but it does not nearly kill your machine like KView would, and does not force rescale down by 1/8th or so inside the loader like KHTML cleverly does), but needs a lot of work to remove the insane amount of flicker. I also almost feel like reworking some of the core to switch to a tiled mode and not a scan-line based one. I think I know how to implement it sensibly now, and that should help a lot with swap management, and make the cache units have far more consistent sizes. The holy grail, of course, would be to be able to do asynchronous/non-blocking page in, and perhaps even prefetching, but I am not so sure I want to deal with the portability of async I/O.
The next task will probably be adding more loaders. PNG should be fairly easy, I think. MNG should help test animations and to see whether largeimagelib can really fix QMovie's pains w/those. The real challenge, though, will be animated GIF. I am not sure the core is capable enough for it, and I really wish I understood how to use libungif.