xfa/fwl is a Widget Library for XFA Forms.
CFWL_Widget is the base class that widget classes extend. The derived widget classes are both controllers and renderers for each widget. The hierarchy is:
These CFWL widgets are instantiated by and closely related to the CXFA classes in the xfa/fxfa directory. See xfa/fxfa/README.md.
CFWL_Widget implements IFWL_WidgetDelegate through which it receives messages, events and draw calls.
Messages consist of user input for a widget to handle. Each type of message is identified by an enum value in Message::Type and has its own class derived from the base CFWL_Message.
Events are originated in the widgets and are then handled by other CFWL_Widget and CXFA classes.
The widgets use IFWL_ThemeProvider for rendering everything, calling DrawBackground() and DrawText() and passing many options in their parameters, respectively of types CFWL_ThemeBackground and CFWL_ThemeText. See xfa/fwl/theme/README.md.