More NX Console fixes... good progress but still not ready for prime time

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4533 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2012-03-28 01:52:00 +00:00
parent 28752af7d4
commit 638dcbf1b5
3 changed files with 76 additions and 66 deletions

View File

@ -1,59 +1,67 @@
<html> <html>
<head> <head>
<title>NxWidgets</title> <title>NxWidgets</title>
</head> </head>
<body background="backgd.gif"> <body background="backgd.gif">
<hr><hr> <hr><hr>
<table width ="100%"> <table width ="100%">
<tr align="center" bgcolor="#e4e4e4"> <tr align="center" bgcolor="#e4e4e4">
<td> <td>
<h1><big><font color="#3c34ec"><i>NxWidgets</i></font></big></h1> <h1><big><font color="#3c34ec"><i>NxWidgets</i></font></big></h1>
<p>Last Updated: March 24, 2012</p> <p>Last Updated: March 27, 2012</p>
</td> </td>
</tr> </tr>
</table> </table>
<h1>NXWidgets</h1> <h1>NXWidgets</h1>
<p> <p>
In order to better support NuttX based platforms, a special graphical userinterface has been created called NXWidgets. In order to better support NuttX based platforms, a special graphical userinterface has been created called NXWidgets.
NXWidgets is written in C++ and integrates seamlessly with the NuttX <a href="NXGraphicsSubsystem.html">NX graphics subsystem</a> in order to provide graphic objects, or &quot;widgets,&quot; in the NX Graphics Subsystem NXWidgets is written in C++ and integrates seamlessly with the NuttX <a href="NXGraphicsSubsystem.html">NX graphics subsystem</a> in order to provide graphic objects, or &quot;widgets,&quot; in the NX Graphics Subsystem
</p> </p>
<p> <p>
Some of the features of NXWidgets include: Some of the features of NXWidgets include:
</p> </p>
<ul> <ul>
<li><b>Conservative C++</b>. <li><b>Conservative C++</b>.
NXWidgets is written entirely in C++ but using only selected &quot;embedded friendly&quot; C++ constructs that are fully supported under NuttX. NXWidgets is written entirely in C++ but using only selected &quot;embedded friendly&quot; C++ constructs that are fully supported under NuttX.
No additional C++ support libraries are required. No additional C++ support libraries are required.
</li> </li>
<li><b>NX Integration</b>. <li><b>NX Integration</b>.
NXWidgets integrate seamlessly with the <a href="NXGraphicsSubsystem.html">NX graphics subsystem</a>. NXWidgets integrate seamlessly with the <a href="NXGraphicsSubsystem.html">NX graphics subsystem</a>.
Think of the X server under Linux … the NX graphics system is like a tiny X server that provides windowing under NuttX. 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. By adding NXWidgets, you can support graphics objects like buttons and text boxes in the NX windows and toolbars.
</li> </li>
<li><b>Small Footprint</b>. <li><b>Small Footprint</b>.
NXWidgets is tailored for use MCUs in embedded applications. NXWidgets is tailored for use MCUs in embedded applications.
It is ideally suited for mid- and upper-range of most MCU families. It is ideally 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. A complete NXWidgets is possible in as little as 40Kb of FLASH and maybe 4Kb of SRAM.
</li> </li>
<li><b>Output Devices</b>. <li><b>Output Devices</b>.
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. 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.
</li> </li>
<li><b>Input Devices</b>. <li><b>Input Devices</b>.
NXWidgets will accept position and selection inputs from a mouse or a touchscreen. 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 USB keyboard. It will also support character input from a keyboard such as a 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. 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.
</li> </li>
<li><b>Many Graphic Objects</b>. <li><b>Many Graphic Objects</b>.
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. 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.
</li> </li>
<li><b>DOxygen Documentation</ba> <li><b>DOxygen Documentation</b>
DOxygen documentation is available. DOxygen documentation is available.
</li> </li>
</ul> </ul>
<p> <p>
Note: Many of the fundamental classed in NxWidgets derive from the Antony Note: Many of the fundamental classed in NxWidgets derive from the Antony
Dzeryn's &quot;Woopsi&quot; project: http://woopsi.org/ which also has a BSD style Dzeryn's &quot;Woopsi&quot; project: http://woopsi.org/ which also has a BSD style
license. See the COPYING file for details. license. See the COPYING file for details.
</p> </p>
</body> <h1>NXWidgets DOxygen Documentation</h1>
</html> <p>
DOxygen documentation for the NxWidgets-1.0 is now available online at <a href="http://www.nx-engineering.com/nxwidgets_v1_0/">this location</a>.
</p>
<p>
Thanks go to Jose Pablo Carballo for contributing this!
</p>
</p>
</body>
</html>

View File

@ -135,16 +135,11 @@ void nxbe_bitmap(FAR struct nxbe_window_s *wnd, FAR const struct nxgl_rect_s *de
} }
#endif #endif
/* Offset the rectangle and image origin by the window origin */
nxgl_rectoffset(&bounds, dest, wnd->bounds.pt1.x, wnd->bounds.pt1.y);
nxgl_vectoradd(&offset, origin, &wnd->bounds.pt1);
/* Verify that the destination rectangle begins "below" and to the "right" /* Verify that the destination rectangle begins "below" and to the "right"
* of the origin * of the origin
*/ */
if (bounds.pt1.x < origin->x || bounds.pt1.y < origin->y) if (dest->pt1.x < origin->x || dest->pt1.y < origin->y)
{ {
gdbg("Bad dest start position\n"); gdbg("Bad dest start position\n");
return; return;
@ -154,13 +149,18 @@ void nxbe_bitmap(FAR struct nxbe_window_s *wnd, FAR const struct nxgl_rect_s *de
* width of the source bitmap data (taking into account the bitmap origin) * width of the source bitmap data (taking into account the bitmap origin)
*/ */
deststride = (((bounds.pt2.x - origin->x + 1) * wnd->be->plane[0].pinfo.bpp + 7) >> 3); deststride = (((dest->pt2.x - origin->x + 1) * wnd->be->plane[0].pinfo.bpp + 7) >> 3);
if (deststride > stride) if (deststride > stride)
{ {
gdbg("Bad dest width\n"); gdbg("Bad dest width\n");
return; return;
} }
/* Offset the rectangle and image origin by the window origin */
nxgl_rectoffset(&bounds, dest, wnd->bounds.pt1.x, wnd->bounds.pt1.y);
nxgl_vectoradd(&offset, origin, &wnd->bounds.pt1);
/* Clip to the limits of the window and of the background screen */ /* Clip to the limits of the window and of the background screen */
nxgl_rectintersect(&remaining, &bounds, &wnd->bounds); nxgl_rectintersect(&remaining, &bounds, &wnd->bounds);

View File

@ -149,7 +149,9 @@ struct nxcon_glyph_s
uint8_t height; /* Height of this glyph (in rows) */ uint8_t height; /* Height of this glyph (in rows) */
uint8_t width; /* Width of this glyph (in pixels) */ uint8_t width; /* Width of this glyph (in pixels) */
uint8_t stride; /* Width of the glyph row (in bytes) */ uint8_t stride; /* Width of the glyph row (in bytes) */
#ifdef CONFIG_NXCONSOLE_FONTCACHE
uint8_t usecnt; /* Use count */ uint8_t usecnt; /* Use count */
#endif
FAR uint8_t *bitmap; /* Allocated bitmap memory */ FAR uint8_t *bitmap; /* Allocated bitmap memory */
}; };