A layout_manager is the object responsible for placing
the graphicals on a device. The design mirrors recogniser:
part of the device's responsibilities (here, geometry) is delegated to
an associated object.
A layout_manager is attached to a device via
device->layout_manager. The device asks it
to recompute the layout and to paint any background. Conversely, the
manager assigns each managed graphical a layout_interface
(via
graphical->layout_interface) that
intercepts geometry changes and propagates them back so the manager
knows when to recompute.
Class layout_manager itself is an almost-empty abstract
base. The first concrete realisation is table, implementing
HTML-3-like tables. See also layout_interface.
->compute
is pending; the device polls this slot before the next redraw.
layout_manager -> initialiselayout_manager -> attach:graphicallayout_manager -> detachlayout_manager -> unlink<-device.
layout_manager -> computelayout_manager -> compute_bounding_boxlayout_manager -> RedrawArea:area