mirror of
https://github.com/apache/nuttx.git
synced 2026-05-24 07:46:16 +08:00
graphics: Extend NXBE data structures to include the per-window framebuffer (pwfb) vtable. Add logic to initialize the pwfb vtable.
This commit is contained in:
+19
-5
@@ -1,7 +1,8 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxbe/nxbe.h
|
||||
*
|
||||
* Copyright (C) 2008-2011, 2013, 2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2008-2011, 2013, 2016, 2019 Gregory Nutt. All rights
|
||||
* reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -67,14 +68,12 @@
|
||||
|
||||
/* Rasterization ************************************************************/
|
||||
|
||||
/* A tiny vtable of raster operation function pointers. The types of the
|
||||
/* A vtable of raster operation function pointers. The types of the
|
||||
* function points must match the rasterizer types exported by nxglib
|
||||
*/
|
||||
|
||||
struct nxbe_plane_s
|
||||
struct nxbe_vtable_s
|
||||
{
|
||||
/* Raster operation callbacks for this bits-per-pixel value */
|
||||
|
||||
CODE void (*setpixel)(FAR NX_PLANEINFOTYPE *pinfo,
|
||||
FAR const struct nxgl_point_s *pos,
|
||||
nxgl_mxpixel_t color);
|
||||
@@ -96,6 +95,21 @@ struct nxbe_plane_s
|
||||
FAR const void *src,
|
||||
FAR const struct nxgl_point_s *origin,
|
||||
unsigned int srcstride);
|
||||
};
|
||||
|
||||
/* Encapsulates everything needed support window rasterization commands. */
|
||||
|
||||
struct nxbe_plane_s
|
||||
{
|
||||
/* Raster device operation callbacks for this plane */
|
||||
|
||||
struct nxbe_vtable_s dev;
|
||||
|
||||
#ifdef CONFIG_NX_RAMBACKED
|
||||
/* Raster per-window framebuffer operation callbacks for this plane */
|
||||
|
||||
struct nxbe_vtable_s pwfb;
|
||||
#endif
|
||||
|
||||
/* Framebuffer plane info describing destination video plane */
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxbe/nxbe_bitmap.c
|
||||
*
|
||||
* Copyright (C) 2008-2009, 2012, 2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2008-2009, 2012, 2016, 2019 Gregory Nutt. All rights
|
||||
* reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -76,10 +77,10 @@ static void nxs_clipcopy(FAR struct nxbe_clipops_s *cops,
|
||||
{
|
||||
struct nx_bitmap_s *bminfo = (struct nx_bitmap_s *)cops;
|
||||
|
||||
/* Copy the rectangular region */
|
||||
/* Copy the rectangular region to the graphics device. */
|
||||
|
||||
plane->copyrectangle(&plane->pinfo, rect, bminfo->src,
|
||||
&bminfo->origin, bminfo->stride);
|
||||
plane->dev.copyrectangle(&plane->pinfo, rect, bminfo->src,
|
||||
&bminfo->origin, bminfo->stride);
|
||||
|
||||
#ifdef CONFIG_NX_UPDATE
|
||||
/* Notify external logic that the display has been updated */
|
||||
|
||||
+108
-44
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxbe/nxbe_configure.c
|
||||
*
|
||||
* Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2008-2010, 2019 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -134,89 +134,153 @@ int nxbe_configure(FAR NX_DRIVERTYPE *dev, FAR struct nxbe_state_s *be)
|
||||
#ifndef CONFIG_NX_DISABLE_1BPP
|
||||
if (be->plane[i].pinfo.bpp == 1)
|
||||
{
|
||||
be->plane[i].setpixel = nxgl_setpixel_1bpp;
|
||||
be->plane[i].fillrectangle = nxgl_fillrectangle_1bpp;
|
||||
be->plane[i].getrectangle = nxgl_getrectangle_1bpp;
|
||||
be->plane[i].filltrapezoid = nxgl_filltrapezoid_1bpp;
|
||||
be->plane[i].moverectangle = nxgl_moverectangle_1bpp;
|
||||
be->plane[i].copyrectangle = nxgl_copyrectangle_1bpp;
|
||||
be->plane[i].dev.setpixel = nxgl_setpixel_1bpp;
|
||||
be->plane[i].dev.fillrectangle = nxgl_fillrectangle_1bpp;
|
||||
be->plane[i].dev.getrectangle = nxgl_getrectangle_1bpp;
|
||||
be->plane[i].dev.filltrapezoid = nxgl_filltrapezoid_1bpp;
|
||||
be->plane[i].dev.moverectangle = nxgl_moverectangle_1bpp;
|
||||
be->plane[i].dev.copyrectangle = nxgl_copyrectangle_1bpp;
|
||||
|
||||
#ifdef CONFIG_NX_RAMBACKED
|
||||
be->plane[i].pwfb.setpixel = nxgl_setpixel_1bpp;
|
||||
be->plane[i].pwfb.fillrectangle = nxgl_fillrectangle_1bpp;
|
||||
be->plane[i].pwfb.getrectangle = nxgl_getrectangle_1bpp;
|
||||
be->plane[i].pwfb.filltrapezoid = nxgl_filltrapezoid_1bpp;
|
||||
be->plane[i].pwfb.moverectangle = nxgl_moverectangle_1bpp;
|
||||
be->plane[i].pwfb.copyrectangle = nxgl_copyrectangle_1bpp;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef CONFIG_NX_DISABLE_2BPP
|
||||
if (be->plane[i].pinfo.bpp == 2)
|
||||
{
|
||||
be->plane[i].setpixel = nxgl_setpixel_2bpp;
|
||||
be->plane[i].fillrectangle = nxgl_fillrectangle_2bpp;
|
||||
be->plane[i].getrectangle = nxgl_getrectangle_2bpp;
|
||||
be->plane[i].filltrapezoid = nxgl_filltrapezoid_2bpp;
|
||||
be->plane[i].moverectangle = nxgl_moverectangle_2bpp;
|
||||
be->plane[i].copyrectangle = nxgl_copyrectangle_2bpp;
|
||||
be->plane[i].dev.setpixel = nxgl_setpixel_2bpp;
|
||||
be->plane[i].dev.fillrectangle = nxgl_fillrectangle_2bpp;
|
||||
be->plane[i].dev.getrectangle = nxgl_getrectangle_2bpp;
|
||||
be->plane[i].dev.filltrapezoid = nxgl_filltrapezoid_2bpp;
|
||||
be->plane[i].dev.moverectangle = nxgl_moverectangle_2bpp;
|
||||
be->plane[i].dev.copyrectangle = nxgl_copyrectangle_2bpp;
|
||||
|
||||
#ifdef CONFIG_NX_RAMBACKED
|
||||
be->plane[i].pwfb.setpixel = nxgl_setpixel_2bpp;
|
||||
be->plane[i].pwfb.fillrectangle = nxgl_fillrectangle_2bpp;
|
||||
be->plane[i].pwfb.getrectangle = nxgl_getrectangle_2bpp;
|
||||
be->plane[i].pwfb.filltrapezoid = nxgl_filltrapezoid_2bpp;
|
||||
be->plane[i].pwfb.moverectangle = nxgl_moverectangle_2bpp;
|
||||
be->plane[i].pwfb.copyrectangle = nxgl_copyrectangle_2bpp;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef CONFIG_NX_DISABLE_4BPP
|
||||
if (be->plane[i].pinfo.bpp == 4)
|
||||
{
|
||||
be->plane[i].setpixel = nxgl_setpixel_4bpp;
|
||||
be->plane[i].fillrectangle = nxgl_fillrectangle_4bpp;
|
||||
be->plane[i].getrectangle = nxgl_getrectangle_4bpp;
|
||||
be->plane[i].filltrapezoid = nxgl_filltrapezoid_4bpp;
|
||||
be->plane[i].moverectangle = nxgl_moverectangle_4bpp;
|
||||
be->plane[i].copyrectangle = nxgl_copyrectangle_4bpp;
|
||||
be->plane[i].dev.setpixel = nxgl_setpixel_4bpp;
|
||||
be->plane[i].dev.fillrectangle = nxgl_fillrectangle_4bpp;
|
||||
be->plane[i].dev.getrectangle = nxgl_getrectangle_4bpp;
|
||||
be->plane[i].dev.filltrapezoid = nxgl_filltrapezoid_4bpp;
|
||||
be->plane[i].dev.moverectangle = nxgl_moverectangle_4bpp;
|
||||
be->plane[i].dev.copyrectangle = nxgl_copyrectangle_4bpp;
|
||||
|
||||
#ifdef CONFIG_NX_RAMBACKED
|
||||
be->plane[i].pwfb.setpixel = nxgl_setpixel_4bpp;
|
||||
be->plane[i].pwfb.fillrectangle = nxgl_fillrectangle_4bpp;
|
||||
be->plane[i].pwfb.getrectangle = nxgl_getrectangle_4bpp;
|
||||
be->plane[i].pwfb.filltrapezoid = nxgl_filltrapezoid_4bpp;
|
||||
be->plane[i].pwfb.moverectangle = nxgl_moverectangle_4bpp;
|
||||
be->plane[i].pwfb.copyrectangle = nxgl_copyrectangle_4bpp;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef CONFIG_NX_DISABLE_8BPP
|
||||
if (be->plane[i].pinfo.bpp == 8)
|
||||
{
|
||||
be->plane[i].setpixel = nxgl_setpixel_8bpp;
|
||||
be->plane[i].fillrectangle = nxgl_fillrectangle_8bpp;
|
||||
be->plane[i].getrectangle = nxgl_getrectangle_8bpp;
|
||||
be->plane[i].filltrapezoid = nxgl_filltrapezoid_8bpp;
|
||||
be->plane[i].moverectangle = nxgl_moverectangle_8bpp;
|
||||
be->plane[i].copyrectangle = nxgl_copyrectangle_8bpp;
|
||||
be->plane[i].dev.setpixel = nxgl_setpixel_8bpp;
|
||||
be->plane[i].dev.fillrectangle = nxgl_fillrectangle_8bpp;
|
||||
be->plane[i].dev.getrectangle = nxgl_getrectangle_8bpp;
|
||||
be->plane[i].dev.filltrapezoid = nxgl_filltrapezoid_8bpp;
|
||||
be->plane[i].dev.moverectangle = nxgl_moverectangle_8bpp;
|
||||
be->plane[i].dev.copyrectangle = nxgl_copyrectangle_8bpp;
|
||||
|
||||
#ifdef CONFIG_NX_RAMBACKED
|
||||
be->plane[i].pwfb.setpixel = nxgl_setpixel_8bpp;
|
||||
be->plane[i].pwfb.fillrectangle = nxgl_fillrectangle_8bpp;
|
||||
be->plane[i].pwfb.getrectangle = nxgl_getrectangle_8bpp;
|
||||
be->plane[i].pwfb.filltrapezoid = nxgl_filltrapezoid_8bpp;
|
||||
be->plane[i].pwfb.moverectangle = nxgl_moverectangle_8bpp;
|
||||
be->plane[i].pwfb.copyrectangle = nxgl_copyrectangle_8bpp;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef CONFIG_NX_DISABLE_16BPP
|
||||
if (be->plane[i].pinfo.bpp == 16)
|
||||
{
|
||||
be->plane[i].setpixel = nxgl_setpixel_16bpp;
|
||||
be->plane[i].fillrectangle = nxgl_fillrectangle_16bpp;
|
||||
be->plane[i].getrectangle = nxgl_getrectangle_16bpp;
|
||||
be->plane[i].filltrapezoid = nxgl_filltrapezoid_16bpp;
|
||||
be->plane[i].moverectangle = nxgl_moverectangle_16bpp;
|
||||
be->plane[i].copyrectangle = nxgl_copyrectangle_16bpp;
|
||||
be->plane[i].dev.setpixel = nxgl_setpixel_16bpp;
|
||||
be->plane[i].dev.fillrectangle = nxgl_fillrectangle_16bpp;
|
||||
be->plane[i].dev.getrectangle = nxgl_getrectangle_16bpp;
|
||||
be->plane[i].dev.filltrapezoid = nxgl_filltrapezoid_16bpp;
|
||||
be->plane[i].dev.moverectangle = nxgl_moverectangle_16bpp;
|
||||
be->plane[i].dev.copyrectangle = nxgl_copyrectangle_16bpp;
|
||||
|
||||
#ifdef CONFIG_NX_RAMBACKED
|
||||
be->plane[i].pwfb.setpixel = nxgl_setpixel_16bpp;
|
||||
be->plane[i].pwfb.fillrectangle = nxgl_fillrectangle_16bpp;
|
||||
be->plane[i].pwfb.getrectangle = nxgl_getrectangle_16bpp;
|
||||
be->plane[i].pwfb.filltrapezoid = nxgl_filltrapezoid_16bpp;
|
||||
be->plane[i].pwfb.moverectangle = nxgl_moverectangle_16bpp;
|
||||
be->plane[i].pwfb.copyrectangle = nxgl_copyrectangle_16bpp;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef CONFIG_NX_DISABLE_24BPP
|
||||
if (be->plane[i].pinfo.bpp == 24)
|
||||
{
|
||||
be->plane[i].setpixel = nxgl_setpixel_24bpp;
|
||||
be->plane[i].fillrectangle = nxgl_fillrectangle_24bpp;
|
||||
be->plane[i].getrectangle = nxgl_getrectangle_24bpp;
|
||||
be->plane[i].filltrapezoid = nxgl_filltrapezoid_24bpp;
|
||||
be->plane[i].moverectangle = nxgl_moverectangle_24bpp;
|
||||
be->plane[i].copyrectangle = nxgl_copyrectangle_24bpp;
|
||||
be->plane[i].dev.setpixel = nxgl_setpixel_24bpp;
|
||||
be->plane[i].dev.fillrectangle = nxgl_fillrectangle_24bpp;
|
||||
be->plane[i].dev.getrectangle = nxgl_getrectangle_24bpp;
|
||||
be->plane[i].dev.filltrapezoid = nxgl_filltrapezoid_24bpp;
|
||||
be->plane[i].dev.moverectangle = nxgl_moverectangle_24bpp;
|
||||
be->plane[i].dev.copyrectangle = nxgl_copyrectangle_24bpp;
|
||||
|
||||
#ifdef CONFIG_NX_RAMBACKED
|
||||
be->plane[i].pwfb.setpixel = nxgl_setpixel_24bpp;
|
||||
be->plane[i].pwfb.fillrectangle = nxgl_fillrectangle_24bpp;
|
||||
be->plane[i].pwfb.getrectangle = nxgl_getrectangle_24bpp;
|
||||
be->plane[i].pwfb.filltrapezoid = nxgl_filltrapezoid_24bpp;
|
||||
be->plane[i].pwfb.moverectangle = nxgl_moverectangle_24bpp;
|
||||
be->plane[i].pwfb.copyrectangle = nxgl_copyrectangle_24bpp;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef CONFIG_NX_DISABLE_32BPP
|
||||
if (be->plane[i].pinfo.bpp == 32)
|
||||
{
|
||||
be->plane[i].setpixel = nxgl_setpixel_32bpp;
|
||||
be->plane[i].fillrectangle = nxgl_fillrectangle_32bpp;
|
||||
be->plane[i].getrectangle = nxgl_getrectangle_32bpp;
|
||||
be->plane[i].filltrapezoid = nxgl_filltrapezoid_32bpp;
|
||||
be->plane[i].moverectangle = nxgl_moverectangle_32bpp;
|
||||
be->plane[i].copyrectangle = nxgl_copyrectangle_32bpp;
|
||||
be->plane[i].dev.setpixel = nxgl_setpixel_32bpp;
|
||||
be->plane[i].dev.fillrectangle = nxgl_fillrectangle_32bpp;
|
||||
be->plane[i].dev.getrectangle = nxgl_getrectangle_32bpp;
|
||||
be->plane[i].dev.filltrapezoid = nxgl_filltrapezoid_32bpp;
|
||||
be->plane[i].dev.moverectangle = nxgl_moverectangle_32bpp;
|
||||
be->plane[i].dev.copyrectangle = nxgl_copyrectangle_32bpp;
|
||||
|
||||
#ifdef CONFIG_NX_RAMBACKED
|
||||
be->plane[i].pwfb.setpixel = nxgl_setpixel_1bpp;
|
||||
be->plane[i].pwfb.fillrectangle = nxgl_fillrectangle_32bpp;
|
||||
be->plane[i].pwfb.getrectangle = nxgl_getrectangle_32bpp;
|
||||
be->plane[i].pwfb.filltrapezoid = nxgl_filltrapezoid_32bpp;
|
||||
be->plane[i].pwfb.moverectangle = nxgl_moverectangle_32bpp;
|
||||
be->plane[i].pwfb.copyrectangle = nxgl_copyrectangle_32bpp;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
gerr("ERROR: Unsupported pinfo[%d] BPP: %d\n", i, be->plane[i].pinfo.bpp);
|
||||
gerr("ERROR: Unsupported pinfo[%d] BPP: %d\n",
|
||||
i, be->plane[i].pinfo.bpp);
|
||||
return -ENOSYS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxbe/nxbe_fill.c
|
||||
*
|
||||
* Copyright (C) 2008-2009, 2011, 2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2008-2009, 2011, 2016, 2019 Gregory Nutt. All rights
|
||||
* reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -73,9 +74,9 @@ static void nxbe_clipfill(FAR struct nxbe_clipops_s *cops,
|
||||
{
|
||||
struct nxbe_fill_s *fillinfo = (struct nxbe_fill_s *)cops;
|
||||
|
||||
/* Draw the rectangle */
|
||||
/* Draw the rectangle to the graphics device. */
|
||||
|
||||
plane->fillrectangle(&plane->pinfo, rect, fillinfo->color);
|
||||
plane->dev.fillrectangle(&plane->pinfo, rect, fillinfo->color);
|
||||
|
||||
#ifdef CONFIG_NX_UPDATE
|
||||
/* Notify external logic that the display has been updated */
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxbe/nxbe_filltrapezoid.c
|
||||
*
|
||||
* Copyright (C) 2008-2009, 2012, 2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2008-2009, 2012, 2016, 2019 Gregory Nutt. All rights
|
||||
* reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -91,7 +92,8 @@ static void nxbe_clipfilltrapezoid(FAR struct nxbe_clipops_s *cops,
|
||||
|
||||
/* Draw the trapezond */
|
||||
|
||||
plane->filltrapezoid(&plane->pinfo, &fillinfo->trap, rect, fillinfo->color);
|
||||
plane->dev.filltrapezoid(&plane->pinfo, &fillinfo->trap, rect,
|
||||
fillinfo->color);
|
||||
|
||||
#ifdef CONFIG_NX_UPDATE
|
||||
/* Notify external logic that the display has been updated */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxbe/nxbe_fill.c
|
||||
* graphics/nxbe/nxbe_getrectangle.c
|
||||
*
|
||||
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2011, 2019 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -117,6 +117,8 @@ void nxbe_getrectangle(FAR struct nxbe_window_s *wnd,
|
||||
if (!nxgl_nullrect(&remaining))
|
||||
{
|
||||
FAR struct nxbe_plane_s *pplane = &wnd->be->plane[plane];
|
||||
pplane->getrectangle(&pplane->pinfo, &remaining, dest, deststride);
|
||||
|
||||
pplane->dev.getrectangle(&pplane->pinfo, &remaining, dest,
|
||||
deststride);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxbe/nxbe_move.c
|
||||
*
|
||||
* Copyright (C) 2008-2009, 2011-2012, 2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2008-2009, 2011-2012, 2016, 2019 Gregory Nutt. All rights
|
||||
* reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -89,9 +90,9 @@ static void nxbe_clipmovesrc(FAR struct nxbe_clipops_s *cops,
|
||||
offset.x = rect->pt1.x + info->offset.x;
|
||||
offset.y = rect->pt1.y + info->offset.y;
|
||||
|
||||
/* Move the source rectangle to the destination position */
|
||||
/* Move the source rectangle to the destination position in the device */
|
||||
|
||||
plane->moverectangle(&plane->pinfo, rect, &offset);
|
||||
plane->dev.moverectangle(&plane->pinfo, rect, &offset);
|
||||
|
||||
#ifdef CONFIG_NX_UPDATE
|
||||
/* Notify external logic that the display has been updated */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxbe/nxbe_setpixel.c
|
||||
*
|
||||
* Copyright (C) 2011, 2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2011, 2016, 2019 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -73,9 +73,9 @@ static void nxbe_clipfill(FAR struct nxbe_clipops_s *cops,
|
||||
{
|
||||
struct nxbe_setpixel_s *fillinfo = (struct nxbe_setpixel_s *)cops;
|
||||
|
||||
/* Set the pixel */
|
||||
/* Set the pixel in the graphics device. */
|
||||
|
||||
plane->setpixel(&plane->pinfo, &rect->pt1, fillinfo->color);
|
||||
plane->dev.setpixel(&plane->pinfo, &rect->pt1, fillinfo->color);
|
||||
|
||||
#ifdef CONFIG_NX_UPDATE
|
||||
/* Notify external logic that the display has been updated */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxglib/nxglib_bitblit.h
|
||||
*
|
||||
* Copyright (C) 2008-2011 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2008-2011, 2019 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
||||
Reference in New Issue
Block a user