How does ZMW works?

Last modified: Mon Jul 5 13:18:30 CEST 2004

The details of the figures applies to the 0.0.8 ZMW version.

The core of the method is a stack of information about the widgets being traversed. The figure shows a possible stack state when widget /0/0 is being traversed. Each item of the stack contains information about the widget being traversed at this level and the job being currently done. For example the drawing or compute-required-size pass number.

In order to draw a widget, the widget must be traversed many times in order to compute its size becauses sizes are not stored. and it is traversed 3 times to make the drawing. The next figure, does not shows how the /0 required/allocated size is computed because it is the same way than for the /0/0 widget. So the execution starts when the widget /0 must be drawn.

In the normal case /0 allocated size has been computed by its parent. So the state of /0 has been lost with all the informations about its children. So its children sizes must be recomputed before any drawing.

Red color indicates that the data is being modified, green indicates that the value is yet computed. The cyan indicates the program fragment being executed.