Requirements for the user interface:
G001 Each entity on the screen is an instance of a C++ class. It can be painted again and attributes can change with function calls.
G002 Every entity is painted on top of a graphic. This graphic can be the entire screen, a message-box, a 1D scroll list or 2D scroll list.
G003 Every dialog, message-box, 1D scroll list or 2D scroll list can catch keyboard buttons, swipe events, touch-screen press and release and other events.
Dialogs
D001 Every dialog can catch keyboard buttons in a function, which is obligatory for each dialog.
D002 Every message box is derived from a dialog and has a similar structure. The lifespan is probably less than the dialog.
D003 Every graphical screen can be composed of multiple dialogs. It is wise that dialogs do not occupy the same space on screen. For a background dialog this is not a problem.
Objects
U001 The background object can be used to create any background.
U001.01 Each background can have one colour, two colours or a graphical pattern.
U001.02 Each background has a radius on corners of up to half the object height.
U001.03 Each background can have several fill patterns.
U001.04 Each background becomes 40% darker when pressed and slowly goes back to normal when released.
U002 The image object can be used to paint a picture
U002.01 Each image can be resized
U002.02 Each image is loaded once from disk to memory
U002.03 Each image background becomes 40% darker when pressed and slowly goes back to normal, even when a picture has a transparant background.
U002.04 Each image starts without a label. This can be added later.
U003 Swype dialog
U004 After glow
U005 Amount
U006 Audio
U007 background
U008 bar-graph
U009 button
U010 dialog-event
U011 dialog-list
U012 dialog-object
U013 dialog
U014 drag-object
U015 font
U016 graphics
U017 hand-writer
U018 info-button
U019 json-object
U020 key-file
U021 label
U022 message-box
U023 rect
U024 point
U025 size
U026 rectangle
U027 slider
U028 surface
U029 swype-dialog
U030 text
U031 touch