/**
 * \defgroup ui UI
 *
 * \brief
 * Collection of graphical user interface elements.
 *
 * All the widgets share a common interface:
 *
 * - The widget's state is defined with a structure.
 *
 * - The widget is initialized and configured with a `create` function,
 *   returning an int. The first argument is an #oshu::display, and the last one
 *   a *widget*. All the other parameters are widget-specific.
 *
 * - The widget is destroyed with the symmetrical void `destroy` function. Note
 *   that the object itself isn't freed, because it may be allocated on the
 *   stack, or somewhere else.
 *
 * - You can render the widget with its void `show` function. They usually only
 *   take the widget object, but may receive additional parameters.
 *
 */
