1
0
Fork 0
forked from nuttx/nuttx-update

Documentation: migrate "NuttX Graphics Subsystem (NX)" from wiki

link to wiki: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=139629474
This commit is contained in:
raiden00pl 2023-11-04 17:58:33 +01:00 committed by Xiang Xiao
parent bfd342b4eb
commit 63558cf72f

View file

@ -2,6 +2,63 @@
NX
==
Overview
========
NX provides a tiny windowing system in the spirit of X, but greatly scaled
down and appropriate for most resource-limited embedded environments.
The current NX implementation supports the general following, high-level
features:
* **Virtual Vertical Graphics Space** Windows that reside in a virtual,
vertical space so that it makes sense to talk about one window being
on top of another and obscuring the window below it.
* **Client/Server Model** A standard client server/model was adopted.
NX may be considered a server and other logic that presents the windows
are NX clients.
* **Multi-User Support** NX includes front-end logic to an NX server
daemon that can serve multiple NX client threads. The NX sever
thread/daemon serializes graphics operations from multiple clients.
* **Minimal Graphics Toolset** The actual implementation of the graphics
operations is performed by common, back-end logic. This back-end supports
only a primitive set of graphic and rendering operations.
* **Device Interface** NX supports any graphics device either of two
device interfaces:
#. Any device with random accesss video memory using the NuttX framebuffer
driver interface (see include/nuttx/video/fb.h).
#. Any LCD-like device than can accept raster line runs through a parallel
or serial interface (see include/nuttx/lcd/lcd.h). By default, NX is
configured to use the frame buffer driver unless CONFIG_NX_LCDDRIVER
is defined =y in your NuttX configuration file.
* **Transparent to NX Client** The window client on "sees" the sub-window
that is operates in and does not need to be concerned with the virtual,
vertical space (other that to respond to redraw requests from NX when needed).
* **Framed Windows and Toolbars** NX also adds the capability to support
windows with frames and toolbars on top of the basic windowing support.
These are windows such as those shown in the screenshot above. These framed
windows sub-divide one one window into three relatively independent
subwindows: A frame, the contained window and an (optional) toolbar window.
* **Mouse Support** NX provides support for a mouse or other X/Y pointing
devices. APIs are provided to allow external devices to give X/Y position
information and mouse button presses to NX. NX will then provide the mouse
input to the relevant window clients via callbacks. Client windows only
receive the mouse input callback if the mouse is positioned over a visible
portion of the client window; X/Y position is provided to the client in the
relative coordinate system of the client window.
* **Keyboard input** NX also supports keyboard/keypad devices. APIs are provided
to allow external devices to give keypad information to NX. NX will then
provide the mouse input to the top window on the display (the window that
has the focus) via a callback function.
Pre-Processor Definitions
=========================