All VCL objects support the object interface, but this interface specifies
only a destroy method. The most important interface is the node
interface. All VCL nodes have to implement it. Every leaf node should
implement either the shape interface or the mask interface (that depends on the way
it describes its shape).
Every non-leaf (container) node should
implement the container interface, and either the composite interface or
the enclosure interface (that depends on the supported number of children –
enclosure has exactly one child, composite has any
number of children). Composite nodes often support the placement interface
- it is used to add and remove children to a composite node, but there
are composite nodes without support of this interface – they have another way
to get children nodes. The node coordinate changing system supports
the transformation interface. And the last interface –
the painter interface – encapsulates drawing backends.