An interface for painters – VCL backends. It does not have any interesting public methods.
Every object implementing the painter interface must also implement the object interface.
A painter should walk through the VCL node tree and draw the appropriate
nodes. Common walking logic can be handled (in implementation of the
painter interface) by using
These painting methods share a common structure of arguments –
node is the current drawing node,
bbox is the bbox to be redrawn in
bbox_local is the bbox to be redrawn in the
node's coordinate system (in case of
_draw_leaf), or the
node's children coordinate system (in
_draw_composite – to match the coordinate system of
A painter is supposed to be used as a sequence of calls of
_draw_node on the root node and
_draw_node function is supposed to draw the node (and, in
case of composite, all its descendants, too). The remaining two functions are used
in a case of implementing
context and its recursive decomposing. In that case, in
_draw_node, a dispatch and enclosure handling are done, for leaf
_draw_leaf is called and for composite handling
_draw_leaf really draws a leaf and
_draw_node on its children.
vcl_painter_draw_begin (void * obj, const struct vcl_rectangle *bbox) vcl_painter_draw_end (void * obj) vcl_painter_draw_node (void * obj, void * node, const struct vcl_rectangle *bbox, const struct geom_rectangle *bbox_local) vcl_painter_draw_leaf (void * obj, void * node, const struct vcl_rectangle *bbox, const struct geom_rectangle *bbox_local) vcl_painter_draw_composite (void * obj, void * node, const struct vcl_rectangle *bbox, const struct geom_rectangle *bbox_local)