<commit_before>fgui - GUI toolkit for microcontrollers
=======================================
<NAME> <bjorn (dot) forsman (at) gmail (dot) com>

WARNING: fgui is pre-alpha software.

fgui is a small GUI toolkit written in C. It is designed to run on very small
embedded systems, i.e. 8-bit microcontrollers and up, while still provinding an
easy to use API.

fgui widgets are placed in a tree structure and input events propagate from the
currently focused widget and all the way up to the root widget. If a widget
signals that it has handled the event, the propagation stops. Widgets that
support user callbacks also support a userdata pointer.

To use fgui, the application must initialize its display device and supply an
implementation of this function:

  fgui_set_pixel(uint16_t x, uint16_t y, uint32_t color)

Then include `fgui.h` and explore the API. Basic drawing primitives such as
line and rectangle are located in `fgui_primitives.h`. Font drawing is in
`fgui_font.h` and the widgets are located in `fgui_<widget>.h`. fgui is
object-oriented and `fgui_widget.h` is the base "class" for all widgets.

fgui comes with an http://www.libsdl.org/[SDL] test program, try it:

----
$ cd fgui && mkdir build && cmake .. && make && ./tests/fgui_test
----


Features
--------

* basic drawing primitives:
** line
** rectangle (empty + filled)
** circle (empty + filled)
** triangle (only empty)
* monospaced font drawing
* widgets:
** label
** push button - supports "on click" callback
** lineedit - single line text input
** combobox - supports "item changed" callback
* no dynamic memory allocation
* example/test program using fgui with SDL, http://www.libsdl.org/


Possible features
-----------------

* widgets:
** hierarchical menu (submenus and actions)
* widget coordinates relative to parent
* make parent widgets draw their children (currently all widgets must be drawn
  'manually' by the application)
* clipping (widgets should not draw anything outside their border)
* input validators (for textedit)


License
-------

fgui is released under the MIT open source license. See LICENSE.txt or go to
http://www.opensource.org/licenses/MIT for full license text.<commit_msg>README: add 'Related products' section<commit_after>fgui - GUI toolkit for microcontrollers
=======================================
<NAME> <bjorn (dot) forsman (at) gmail (dot) com>

WARNING: fgui is pre-alpha software.

fgui is a small GUI toolkit written in C. It is designed to run on very small
embedded systems, i.e. 8-bit microcontrollers and up, while still provinding an
easy to use API.

fgui widgets are placed in a tree structure and input events propagate from the
currently focused widget and all the way up to the root widget. If a widget
signals that it has handled the event, the propagation stops. Widgets that
support user callbacks also support a userdata pointer.

To use fgui, the application must initialize its display device and supply an
implementation of this function:

  fgui_set_pixel(uint16_t x, uint16_t y, uint32_t color)

Then include `fgui.h` and explore the API. Basic drawing primitives such as
line and rectangle are located in `fgui_primitives.h`. Font drawing is in
`fgui_font.h` and the widgets are located in `fgui_<widget>.h`. fgui is
object-oriented and `fgui_widget.h` is the base "class" for all widgets.

fgui comes with an http://www.libsdl.org/[SDL] test program, try it:

----
$ cd fgui && mkdir build && cmake .. && make && ./tests/fgui_test
----


Features
--------

* basic drawing primitives:
** line
** rectangle (empty + filled)
** circle (empty + filled)
** triangle (only empty)
* monospaced font drawing
* widgets:
** label
** push button - supports "on click" callback
** lineedit - single line text input
** combobox - supports "item changed" callback
* no dynamic memory allocation
* example/test program using fgui with SDL, http://www.libsdl.org/


Possible features
-----------------

* widgets:
** hierarchical menu (submenus and actions)
* widget coordinates relative to parent
* make parent widgets draw their children (currently all widgets must be drawn
  'manually' by the application)
* clipping (widgets should not draw anything outside their border)
* input validators (for textedit)


License
-------

fgui is released under the MIT open source license. See LICENSE.txt or go to
http://www.opensource.org/licenses/MIT for full license text.


Related projects
----------------

* http://www.segger.com/cms/emwin.html[emWin] (not free software)
* http://www.swellsoftware.com/products/cpeg.php[C/PEG] (not free software)
* http://www.easygui.com/[easyGUI] (not free software)
* http://www.contiki-os.org/[Contiki], a whole RTOS, not just GUI
{'fraction_non_alphanumeric': 0.1146076972145439, 'fraction_numerical': 0.002976823304273868, 'mean_word_length': 3.9725158562367864, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 10, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '754503', 'n_tokens_mistral': 1392, 'n_tokens_neox': 1315, 'n_words': 602}