2020-07-23 15:19:35 +02:00
|
|
|
|
# Graphics / `nxwidgets` NXWidgets
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
|
|
|
|
In order to better support NuttX based platforms, a special graphical user
|
2020-07-23 15:19:35 +02:00
|
|
|
|
interface has been created called NXWidgets. NXWidgets is written in C++ and
|
|
|
|
|
integrates seamlessly with the NuttX NX graphics subsystem in order to provide
|
|
|
|
|
graphic objects, or _widgets_, in the NX Graphics Subsystem
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
|
|
|
|
Some of the features of NXWidgets include:
|
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
- Conservative C++
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
NXWidgets is written entirely in C++ but using only selected _embedded
|
|
|
|
|
friendly_ C++ constructs that are fully supported under NuttX. No additional
|
|
|
|
|
C++ support libraries are required.
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
- NX Integration
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
NXWidgets integrate seamlessly with the NX graphics system. Think of the X
|
|
|
|
|
server under Linux – the NX graphics system is like a tiny X server that
|
|
|
|
|
provides windowing under NuttX. By adding NXWidgets, you can support graphics
|
|
|
|
|
objects like buttons and text boxes in the NX windows and toolbars.
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
- Small Footprint
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
|
|
|
|
NXWidgets is tailored for use MCUs in embedded applications. It is ideally
|
2020-07-23 15:19:35 +02:00
|
|
|
|
suited for mid- and upper-range of most MCU families. A complete NXWidgets is
|
|
|
|
|
possible in as little as 40Kb of FLASH and maybe 4Kb of SRAM.
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
- Output Devices
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
|
|
|
|
NXWidgets will work on the high-end frame buffer devices as well as on LCDs
|
|
|
|
|
connected via serial or parallel ports to a small MCU.
|
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
- Input Devices
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
|
|
|
|
NXWidgets will accept position and selection inputs from a mouse or a
|
|
|
|
|
touchscreen. It will also support character input from a keyboard such as a
|
2020-07-23 15:19:35 +02:00
|
|
|
|
USB keyboard. NXWidgets supports on very special widget called `CKeypad` that
|
|
|
|
|
will provide keyboard input via an on-screen keypad that can be operated via
|
|
|
|
|
mouse or touchscreen inputs.
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
- Many Graphic Objects
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
|
|
|
|
Some of the graphic objects supported by NXWidgets include labels, buttons,
|
|
|
|
|
text boxes, button arrays, check boxes, cycle buttons, images, sliders,
|
|
|
|
|
scrollable list boxes, progress bars, and more.
|
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
**Note**: Many of the fundamental classed in NxWidgets derive from the Antony
|
|
|
|
|
Dzeryn's _Woopsi_ project: http://woopsi.org/ which also has a BSD style
|
|
|
|
|
license. See the `COPYING` file for details.
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
## Directory Structure
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
- `Kconfig`
|
2012-09-26 00:04:51 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
This is a `Kconfig` file that should be provided at `apps/NxWidgets/Kconfig`.
|
2012-09-26 00:04:51 +02:00
|
|
|
|
When copied to that location, it will be used by the NuttX configuration
|
|
|
|
|
systems to configure settings for NxWidgets and NxWM
|
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
- `nxwidgets`
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
The source code, header files, and build environment for NxWidgets is provided
|
|
|
|
|
in this directory.
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
- `UnitTests`
|
2012-05-05 19:27:03 +02:00
|
|
|
|
|
2020-07-23 15:19:35 +02:00
|
|
|
|
Provides a collection of unit-level tests for many of the individual widgets
|
|
|
|
|
provided by `nxwidgets`.
|