1xfa/fwl is a Widget Library for XFA Forms. 2 3CFWL_Widget is the base class that widget classes extend. The derived widget 4classes are both controllers and renderers for each widget. The hierarchy is: 5 6* CFWL_Widget 7 * CFWL_Form 8 * CFWL_FormProxy 9 * CFWL_ComboBoxProxy 10 * CFWL_Caret 11 * CFWL_CheckBox 12 * CFWL_ComboBox 13 * CFWL_DateTimePicker 14 * CFWL_Edit 15 * CFWL_Barcode 16 * CFWL_ComboEdit 17 * CFWL_DateTimeEdit 18 * CFWL_ListBox 19 * CFWL_ComboList 20 * CFWL_MonthCalendar 21 * CFWL_PictureBox 22 * CFWL_PushButton 23 * CFWL_ScrollBar 24 * CFWL_SpinButton 25 26These CFWL widgets are instantiated by and closely related to the CXFA classes 27in the xfa/fxfa directory. See xfa/fxfa/README.md. 28 29CFWL_Widget implements IFWL_WidgetDelegate through which it receives messages, 30events and draw calls. 31 32Messages consist of user input for a widget to handle. Each type of message is 33identified by an enum value in Message::Type and has its own class derived from 34the base CFWL_Message. 35 36* CFWL_Message 37 * CFWL_MessageKey 38 * CFWL_MessageKillFocus 39 * CFWL_MessageMouse 40 * CFWL_MessageMouseWheel 41 * CFWL_MessageSetFocus 42 43Events are originated in the widgets and are then handled by other CFWL_Widget 44and CXFA classes. 45 46* CFWL_Event 47 * CFWL_EventCheckWord 48 * CFWL_EventMouse 49 * CFWL_EventScroll 50 * CFWL_EventSelectChanged 51 * CFWL_EventTextChanged 52 * CFWL_EventValidate 53 54The widgets use IFWL_ThemeProvider for rendering everything, calling 55DrawBackground() and DrawText() and passing many options in their parameters, 56respectively of types CFWL_ThemeBackground and CFWL_ThemeText. See 57xfa/fwl/theme/README.md. 58 59