summaryrefslogtreecommitdiff
path: root/xfa/fwl/README.md
blob: 9285e8934595a78778a48e7721eb6b02d8f095fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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:

* CFWL_Widget
    * CFWL_Form
        * CFWL_FormProxy
            * CFWL_ComboBoxProxy
    * CFWL_Caret
    * CFWL_CheckBox
    * CFWL_ComboBox
    * CFWL_DateTimePicker
    * CFWL_Edit
        * CFWL_Barcode
        * CFWL_ComboEdit
        * CFWL_DateTimeEdit
    * CFWL_ListBox
        * CFWL_ComboList
    * CFWL_MonthCalendar
    * CFWL_PictureBox
    * CFWL_PushButton
    * CFWL_ScrollBar
    * CFWL_SpinButton

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.

* CFWL_Message
    * CFWL_MessageKey
    * CFWL_MessageKillFocus
    * CFWL_MessageMouse
    * CFWL_MessageMouseWheel
    * CFWL_MessageSetFocus

Events are originated in the widgets and are then handled by other CFWL_Widget
and CXFA classes.

* CFWL_Event
    * CFWL_EventCheckWord
    * CFWL_EventMouse
    * CFWL_EventScroll
    * CFWL_EventSelectChanged
    * CFWL_EventTextChanged
    * CFWL_EventValidate

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.