Revision 806939

Go back to digest for 18th May 2008

Features in Office

Bart Coppens committed changes in /trunk/koffice/krita/image:

Since it was very nice weather the past few days, I spent some time outside, hacking a fun feature into my new tiles code (instead of tracking down nasty asserts). Introducing KisDataManagerProxy and his friends, we should now have enough infrastructure ready in the new tiles code to load paint devices directly from a stored file. This should cut out some memory and swap usage when loading huge files in the future (as they are loaded directly from (compressed) image files.

Current infrastructure limitations do unfortunately imply that we need to manually cache some decoded image lines (as opposed to just being able to have tiles that have the size of 1xImageWidth like Gegl). Also, because of this, the code is geared towards line-based file formats, and is somewhat less useful for file formats that can have actual tiles (TIFF, OpenEXR). But people wanting to support those, should be able to provide their own implementation of the proxy very easily. Hopefully those problems aren't too much of an issue.

Since I wanted to do fun things, not boring things, I didn't actually implement a backend for an image decoder. What is included is a nice test case (which happens to pass, so I'm hoping most of the code is OK), which could be used as an example for a _real_ implementation (I'm looking at you, Cyrille :P)

File Changes

Added 5 files
  • /trunk/koffice/krita/image/tiles_new
  •   /kis_datamanagerproxy.h
  •   /kis_tilesourcefile.cc
  •   /kis_tilesourcefile.h
  •   /tests/kis_tiles_from_file_tester.cpp
  •   /tests/kis_tiles_from_file_tester.h
Modified 11 files
  • /trunk/koffice/krita/image
  •   /CMakeLists.txt
  •   /tiles_new/kis_sharedtiledata.cc
  •   /tiles_new/kis_tile.cc
  •   /tiles_new/kis_tile.h
  •   /tiles_new/kis_tileddatamanager.cc
  •   /tiles_new/kis_tileddatamanager.h
  •   /tiles_new/kis_tilestore.h
  •   /tiles_new/kis_tilestorefromfile.h
  •   /tiles_new/tests/CMakeLists.txt
  •   /tiles_new/tests/kis_tile_sharing_tester.cpp
  •   /tiles_new/tests/kis_tile_sharing_tester.h
16 files changed in total