Fix rectangle logic
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@2831 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
parent
fefa46c724
commit
36262340a9
|
@ -1185,3 +1185,7 @@
|
|||
|
||||
* examples/nsh/nsh_telnetd.c - Fix compilation errors that happen
|
||||
when both DHCPC and TELNETD are enabled in the Nuttshell.
|
||||
* graphics/nxglib/fb/nxglib_moverectangle.c - Fix a logic error
|
||||
that caused an uninitialized variable warning. I still don't
|
||||
have a test to prove that the changes are correct.
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<tr align="center" bgcolor="#e4e4e4">
|
||||
<td>
|
||||
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
|
||||
<p>Last Updated: August 5, 2010</p>
|
||||
<p>Last Updated: August 7, 2010</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -1858,7 +1858,9 @@ nuttx-5.9 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
|||
|
||||
* examples/nsh/nsh_telnetd.c - Fix compilation errors that happen
|
||||
when both DHCPC and TELNETD are enabled in the Nuttshell.
|
||||
|
||||
* graphics/nxglib/fb/nxglib_moverectangle.c - Fix a logic error
|
||||
that caused an uninitialized variable warning. I still don't
|
||||
have a test to prove that the changes are correct.
|
||||
|
||||
pascal-2.1 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
<li><a href="http://sourceforge.net/projects/nuttx/files/" target="_top">Downloads</a></li>
|
||||
<li><a href="http://sourceforge.net/projects/nuttx/files/buildroot" target="_top">Toolchains</a></li>
|
||||
<li><a href="http://nuttx.cvs.sourceforge.net/nuttx/" target="_top">Browse CVS</a></li>
|
||||
<li><a href="freeports.html" target="header">Free Ports</a></li>
|
||||
<li><a href="http://dir.gmane.org/gmane.comp.embedded.nuttx" target="_top">gmane</a></li>
|
||||
<li><a href="freeports.html" target="header">Free Ports</a></li>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -58,9 +58,9 @@
|
|||
</tr>
|
||||
<td> </td>
|
||||
<td align="left" valign="top">
|
||||
<a href="http://rss.groups.yahoo.com/group/nuttx/rss"><img src="rss.gif" border="0"></a></td>
|
||||
<a href="http://rss.groups.yahoo.com/group/nuttx/rss" target="_top"><img src="rss.gif" border="0"></a></td>
|
||||
<tr>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
11
nuttx/TODO
11
nuttx/TODO
|
@ -12,7 +12,7 @@ NuttX TODO List (Last updated August 7, 2010)
|
|||
(1) USB (drivers/usbdev)
|
||||
(5) Libraries (lib/)
|
||||
(12) File system/Generic drivers (fs/, drivers/)
|
||||
(3) Graphics subystem (graphics/)
|
||||
(2) Graphics subystem (graphics/)
|
||||
(1) Pascal add-on (pcode/)
|
||||
(1) Documentation (Documentation/)
|
||||
(6) Build system / Toolchains
|
||||
|
@ -465,15 +465,6 @@ o Graphics subystem (graphics/)
|
|||
Status: Open
|
||||
Priority: Low (unless you need the p13201 then it is certainly higher).
|
||||
|
||||
Description: When building for a framebuffer driver, there are warnings that a
|
||||
symbol is used before being initialized in graphics/nxglib/ in all
|
||||
of the auto-generated files named nxglib_moverectangle_*bpp.c. This
|
||||
looks like a real error and must be fixed. I don't think that the
|
||||
moverectangle logic is currently being used in any of the examples,
|
||||
so this should not be a big problem.
|
||||
Status: Open
|
||||
Priority: Medium-to-High
|
||||
|
||||
o Pascal Add-On (pcode/)
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
|
|
@ -174,44 +174,71 @@ void NXGL_FUNCNAME(nxgl_moverectangle,NXGLIB_SUFFIX)
|
|||
# endif
|
||||
#endif
|
||||
|
||||
/* Case 1: The destination position (offset) is above the displayed
|
||||
* position (rect)
|
||||
/* sline = address of the first pixel in the top row of the source in
|
||||
* framebuffer memory
|
||||
*/
|
||||
|
||||
if (offset->y < rect->pt1.y)
|
||||
{
|
||||
/* Copy the rectangle from top down. */
|
||||
sline = pinfo->fbmem + rect->pt1.y * stride + NXGL_SCALEX(rect->pt1.x);
|
||||
|
||||
sline = pinfo->fbmem + rect->pt1.y * stride + NXGL_SCALEX(rect->pt1.x);
|
||||
dline = (FAR uint8_t*)sline - offset->y * stride - NXGL_SCALEX(offset->x);
|
||||
/* dline = address of the first pixel in the top row of the destination
|
||||
* in framebuffer memory. We get dline by subtract the offset from the
|
||||
* source position.
|
||||
*/
|
||||
|
||||
dline = (FAR uint8_t*)sline - offset->y * stride - NXGL_SCALEX(offset->x);
|
||||
|
||||
/* Case 1: Is the destination position above the displayed position?
|
||||
* If the Y offset is negative, then the destination is offset to a
|
||||
* postion below (or to the right) in the source in framebuffer memory.
|
||||
*/
|
||||
|
||||
if (offset->y < 0)
|
||||
{
|
||||
/* Yes.. Copy the rectangle from top down (i.e., adding the stride
|
||||
* to move to the next, lower row) */
|
||||
|
||||
while (rows--)
|
||||
{
|
||||
/* Copy the row */
|
||||
|
||||
#if NXGLIB_BITSPERPIXEL < 8
|
||||
nxgl_lowresmemcpy(dline, sline, width, leadmask, tailmask);
|
||||
#else
|
||||
NXGL_MEMCPY(dline, sline, width);
|
||||
#endif
|
||||
/* Point to the next source/dest row below the current one */
|
||||
|
||||
dline += stride;
|
||||
sline += stride;
|
||||
}
|
||||
}
|
||||
|
||||
/* Case 2: The destination position (offset) is below the displayed
|
||||
* position (rect)
|
||||
/* Case 2: No.. the destination position is above (or to the left of)
|
||||
* the displayed source position
|
||||
*/
|
||||
|
||||
else
|
||||
{
|
||||
/* Copy the rectangle from the bottom up */
|
||||
/* Adjust sline and dline to point to the bottom row (+1) of the
|
||||
* source and destination rectangles in framebuffer memory.
|
||||
*/
|
||||
|
||||
sline = pinfo->fbmem + rect->pt2.y * stride + NXGL_SCALEX(rect->pt1.x);
|
||||
dline = (FAR uint8_t*)sline - offset->y * stride - NXGL_SCALEX(offset->x);
|
||||
unsigned int hoffset = rows * stride;
|
||||
sline += hoffset;
|
||||
dline += hoffset;
|
||||
|
||||
/* Copy the rectangle from the bottom up (i.e., subtracting stride
|
||||
* to re-position to the previous, higher row) */
|
||||
|
||||
while (rows--)
|
||||
{
|
||||
/* Point to the next source/dest row above the current one */
|
||||
|
||||
dline -= stride;
|
||||
sline -= stride;
|
||||
|
||||
/* Copy the row */
|
||||
|
||||
#if NXGLIB_BITSPERPIXEL < 8
|
||||
nxgl_lowresmemcpy(dline, sline, width, leadmask, tailmask);
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue