From 8362bf63dea22bbf6736609b0f49c152f975eb63 Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 20 Jan 2010 01:29:50 +0000 Subject: Added old abandoned KDE3 version of koffice git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- krita/doc/dirty.txt | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 krita/doc/dirty.txt (limited to 'krita/doc/dirty.txt') diff --git a/krita/doc/dirty.txt b/krita/doc/dirty.txt new file mode 100644 index 00000000..91a870bf --- /dev/null +++ b/krita/doc/dirty.txt @@ -0,0 +1,53 @@ +Dirty marking and rendering + +Krita organizes layers in the form of a tree, with a grouplayer at the root: + +group1 == image->rootLayer() + layer2 + layer3 + layer4 + group2 + layer6 + layer7 + adjustmentlayer 1 + layer9 + group3 + adjustmentlayer 2 + layer10 + layer11 + group4 + layer12 + layer13 + + +In this example, group1 is the rootlayer; layer13 is group3 is shown topmost +in the layerbox, with group4 right under that, and layer13 is the "highest" +paint layer in the complete tree. + +Compositing + +At every group level, a projection layer caches the result of compositing +the layerstack in a projection paint device. The cached projection is then +composited with the layers of that level, etc, until everything is composited +onto the projection or the root layer. The image does _not_ have a projection +anymore. + +We composite from layer2 downwards onto the projection of rootLayer, group1. + + +Dirty marking + +In order to do the least possible amount of work (which is very important, +especially with large amounts of layers and adjustment layers), we keep track +of which layer is dirty. Groups without dirty layers are not recomposited; this +dirtiness of course travels upwards, meaning that the rootlayer will always be +dirty. + +XXX: Should we keep a structure with dirty rects for every layer, so we +can determine whether the changed rect in a layer is actually in the area +we are recompositing? I don't think so, since we should always try to keep + +Adjustment layers also keep a copy of the result of their work; if in group 2, +layer 9 is adjusted, we do not want to composite layer 6 and 7 and filter the +result through adjustmentlayer 1; we want to composite the changes in layer 9 +directly onto the cached result of the adjustment layer. \ No newline at end of file -- cgit v1.2.1