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 struct context.
Painting methods
These painting methods share a common structure of arguments –
node is the current drawing node, bbox is the bbox to be redrawn in
pixel coordinates, bbox_local is the bbox to be redrawn in the
node's coordinate system (in case of _draw_node or
_draw_leaf), or the node's children coordinate system (in
case of _draw_composite – to match the coordinate system of
vcl_composite_get_children).
A painter is supposed to be used as a sequence of calls of
_draw_begin, _draw_node on the root node and
_draw_end. The _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 _draw_node using struct
context and its recursive decomposing. In that case, in
_draw_node, a dispatch and enclosure handling are done, for leaf
handling _draw_leaf is called and for composite handling
_draw_composite. _draw_leaf really draws a leaf and
_draw_composite calls _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)