mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 08:36:24 +08:00
NX for 4bpp
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2671 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
@@ -560,15 +560,15 @@ CONFIG_NX_DISABLE_8BPP=y
|
|||||||
CONFIG_NX_DISABLE_16BPP=y
|
CONFIG_NX_DISABLE_16BPP=y
|
||||||
CONFIG_NX_DISABLE_24BPP=y
|
CONFIG_NX_DISABLE_24BPP=y
|
||||||
CONFIG_NX_DISABLE_32BPP=y
|
CONFIG_NX_DISABLE_32BPP=y
|
||||||
CONFIG_NX_PACKEDMSFIRST=n
|
CONFIG_NX_PACKEDMSFIRST=y
|
||||||
CONFIG_NX_LCDDRIVER=y
|
CONFIG_NX_LCDDRIVER=y
|
||||||
CONFIG_LCD_MAXPOWER=1
|
CONFIG_LCD_MAXPOWER=1
|
||||||
CONFIG_LCD_MAXCONTRAST=255
|
CONFIG_LCD_MAXCONTRAST=255
|
||||||
CONFIG_NX_MOUSE=y
|
CONFIG_NX_MOUSE=y
|
||||||
CONFIG_NX_KBD=y
|
CONFIG_NX_KBD=y
|
||||||
#CONFIG_NXTK_BORDERWIDTH=4
|
#CONFIG_NXTK_BORDERWIDTH=4
|
||||||
#CONFIG_NXTK_BORDERCOLOR1
|
CONFIG_NXTK_BORDERCOLOR1=6
|
||||||
#CONFIG_NXTK_BORDERCOLOR2
|
CONFIG_NXTK_BORDERCOLOR2=4
|
||||||
CONFIG_NXTK_AUTORAISE=n
|
CONFIG_NXTK_AUTORAISE=n
|
||||||
CONFIG_NXFONT_SANS=y
|
CONFIG_NXFONT_SANS=y
|
||||||
CONFIG_NXFONTS_CHARBITS=7
|
CONFIG_NXFONTS_CHARBITS=7
|
||||||
@@ -697,7 +697,7 @@ CONFIG_EXAMPLES_NSH_MMCSDMINOR=0
|
|||||||
# nx_eventnotify(). Default: 4
|
# nx_eventnotify(). Default: 4
|
||||||
CONFIG_EXAMPLES_NX_VPLANE=0
|
CONFIG_EXAMPLES_NX_VPLANE=0
|
||||||
CONFIG_EXAMPLES_NX_DEVNO=0
|
CONFIG_EXAMPLES_NX_DEVNO=0
|
||||||
CONFIG_EXAMPLES_NX_BGCOLOR=4
|
CONFIG_EXAMPLES_NX_BGCOLOR=2
|
||||||
CONFIG_EXAMPLES_NX_COLOR1=10
|
CONFIG_EXAMPLES_NX_COLOR1=10
|
||||||
CONFIG_EXAMPLES_NX_COLOR2=12
|
CONFIG_EXAMPLES_NX_COLOR2=12
|
||||||
CONFIG_EXAMPLES_NX_TBCOLOR=8
|
CONFIG_EXAMPLES_NX_TBCOLOR=8
|
||||||
|
|||||||
@@ -47,6 +47,9 @@
|
|||||||
#include <nuttx/spi.h>
|
#include <nuttx/spi.h>
|
||||||
#include <nuttx/p14201.h>
|
#include <nuttx/p14201.h>
|
||||||
|
|
||||||
|
#include "lm3s_internal.h"
|
||||||
|
#include "lm3s6965ek_internal.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Pre-Processor Definitions
|
* Pre-Processor Definitions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -63,7 +66,7 @@
|
|||||||
*
|
*
|
||||||
************************************************************************************/
|
************************************************************************************/
|
||||||
|
|
||||||
void weak_function lm3s_oledinitialize(void);
|
void lm3s_oledinitialize(void)
|
||||||
{
|
{
|
||||||
FAR struct spi_dev_s *spi;
|
FAR struct spi_dev_s *spi;
|
||||||
int ret;
|
int ret;
|
||||||
|
|||||||
+16
-13
@@ -124,6 +124,12 @@
|
|||||||
# define CONFIG_LCD_MAXPOWER 1
|
# define CONFIG_LCD_MAXPOWER 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* The leftmost column is contained in bits 7:4 */
|
||||||
|
|
||||||
|
#ifndef CONFIG_NX_PACKEDMSFIRST
|
||||||
|
# warning "CONFIG_NX_PACKEDMSFIRST needs to be set"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Define the following to enable register-level debug output */
|
/* Define the following to enable register-level debug output */
|
||||||
|
|
||||||
#undef CONFIG_LCD_RITDEBUG
|
#undef CONFIG_LCD_RITDEBUG
|
||||||
@@ -624,6 +630,10 @@ static inline void rit_clear(FAR struct rit_dev_s *priv)
|
|||||||
FAR uint8_t *ptr = g_framebuffer;
|
FAR uint8_t *ptr = g_framebuffer;
|
||||||
unsigned int row;
|
unsigned int row;
|
||||||
|
|
||||||
|
/* Initialize the framebuffer */
|
||||||
|
|
||||||
|
memset(g_framebuffer, (RIT_Y4_BLACK << 4) | RIT_Y4_BLACK, RIT_YRES * RIT_XRES / 2);
|
||||||
|
|
||||||
/* Set a window to fill the entire display */
|
/* Set a window to fill the entire display */
|
||||||
|
|
||||||
rit_sndcmd(priv, g_setallcol, sizeof(g_setallcol));
|
rit_sndcmd(priv, g_setallcol, sizeof(g_setallcol));
|
||||||
@@ -698,7 +708,7 @@ static int rit_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffer,
|
|||||||
|
|
||||||
/* Get the beginning of the run in the framebuffer */
|
/* Get the beginning of the run in the framebuffer */
|
||||||
|
|
||||||
run = g_framebuffer + row * RIT_XRES / 2 + start;
|
run = g_framebuffer + row * RIT_XRES / 2;
|
||||||
|
|
||||||
/* Copy the run into the framebuffer, handling nibble alignment */
|
/* Copy the run into the framebuffer, handling nibble alignment */
|
||||||
|
|
||||||
@@ -706,14 +716,15 @@ static int rit_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffer,
|
|||||||
{
|
{
|
||||||
/* Beginning of buffer is properly aligned */
|
/* Beginning of buffer is properly aligned */
|
||||||
|
|
||||||
memcpy(run, buffer, aend - start);
|
memcpy(&run[start], buffer, aend - start);
|
||||||
|
|
||||||
/* Handle an final partial byte */
|
/* Handle any final partial byte */
|
||||||
|
|
||||||
if (aend != end)
|
if (aend != end)
|
||||||
{
|
{
|
||||||
/* The leftmost column being contained in bits 7:4 */
|
/* The leftmost column is contained in bits 7:4 */
|
||||||
# warning "Missing logic"
|
|
||||||
|
run[end] = (run[end] & 0x0f) | (buffer[aend - start] & 0xf0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -833,8 +844,6 @@ static int rit_getvideoinfo(FAR struct lcd_dev_s *dev,
|
|||||||
static int rit_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int planeno,
|
static int rit_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int planeno,
|
||||||
FAR struct lcd_planeinfo_s *pinfo)
|
FAR struct lcd_planeinfo_s *pinfo)
|
||||||
{
|
{
|
||||||
FAR struct rit_dev_s *priv = (FAR struct rit_dev_s *)dev;
|
|
||||||
|
|
||||||
DEBUGASSERT(priv && pinfo && planeno == 0);
|
DEBUGASSERT(priv && pinfo && planeno == 0);
|
||||||
gvdbg("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
gvdbg("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||||
@@ -979,12 +988,6 @@ FAR struct lcd_dev_s *rit_initialize(FAR struct spi_dev_s *spi, unsigned int dev
|
|||||||
priv->contrast = RIT_CONTRAST;
|
priv->contrast = RIT_CONTRAST;
|
||||||
priv->on = false;
|
priv->on = false;
|
||||||
|
|
||||||
/* Initialize the framebuffer */
|
|
||||||
|
|
||||||
#ifdef CONFIG_P14201_FRAMEBUFFER
|
|
||||||
memset(g_framebuffer, (RIT_Y4_BLACK << 4) | RIT_Y4_BLACK, RIT_YRES * RIT_XRES / 2);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Clear the display */
|
/* Clear the display */
|
||||||
|
|
||||||
rit_clear(priv);
|
rit_clear(priv);
|
||||||
|
|||||||
+42
-3
@@ -154,6 +154,9 @@ nxeg_renderglyph(FAR struct nxeg_state_s *st,
|
|||||||
{
|
{
|
||||||
FAR struct nxeg_glyph_s *glyph = NULL;
|
FAR struct nxeg_glyph_s *glyph = NULL;
|
||||||
FAR nxgl_mxpixel_t *ptr;
|
FAR nxgl_mxpixel_t *ptr;
|
||||||
|
#if CONFIG_EXAMPLES_NX_BPP < 8
|
||||||
|
nxgl_mxpixel_t pixel;
|
||||||
|
#endif
|
||||||
int bmsize;
|
int bmsize;
|
||||||
int row;
|
int row;
|
||||||
int col;
|
int col;
|
||||||
@@ -184,18 +187,54 @@ nxeg_renderglyph(FAR struct nxeg_state_s *st,
|
|||||||
{
|
{
|
||||||
/* Initialize the glyph memory to the background color */
|
/* Initialize the glyph memory to the background color */
|
||||||
|
|
||||||
#if CONFIG_EXAMPLES_NX_BPP < 8 || CONFIG_EXAMPLES_NX_BPP == 24
|
#if CONFIG_EXAMPLES_NX_BPP < 8
|
||||||
# error "Additional logic is needed here"
|
pixel = st->color[0];
|
||||||
#else
|
# if CONFIG_EXAMPLES_NX_BPP == 1
|
||||||
|
/* Pack 1-bit pixels into a 2-bits */
|
||||||
|
|
||||||
|
pixel &= 0x01;
|
||||||
|
pixel = (pixel) << 1 |pixel;
|
||||||
|
# endif
|
||||||
|
# if CONFIG_EXAMPLES_NX_BPP < 4
|
||||||
|
/* Pack 2-bit pixels into a nibble */
|
||||||
|
|
||||||
|
pixel &= 0x03;
|
||||||
|
pixel = (pixel) << 2 |pixel;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Pack 4-bit nibbles into a byte */
|
||||||
|
|
||||||
|
pixel &= 0x0f;
|
||||||
|
pixel = (pixel) << 4 |pixel;
|
||||||
|
|
||||||
|
ptr = (FAR nxgl_mxpixel_t *)glyph->bitmap;
|
||||||
|
for (row = 0; row < glyph->height; row++)
|
||||||
|
{
|
||||||
|
for (col = 0; col < glyph->stride; col++)
|
||||||
|
{
|
||||||
|
/* Transfer the packed bytes into the buffer */
|
||||||
|
|
||||||
|
*ptr++ = pixel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#elif CONFIG_EXAMPLES_NX_BPP == 24
|
||||||
|
# error "Additional logic is needed here for 24bpp support"
|
||||||
|
|
||||||
|
#else /* CONFIG_EXAMPLES_NX_BPP = {8,16,32} */
|
||||||
|
|
||||||
ptr = (FAR nxgl_mxpixel_t *)glyph->bitmap;
|
ptr = (FAR nxgl_mxpixel_t *)glyph->bitmap;
|
||||||
for (row = 0; row < glyph->height; row++)
|
for (row = 0; row < glyph->height; row++)
|
||||||
{
|
{
|
||||||
|
/* Just copy the color value into the glyph memory */
|
||||||
|
|
||||||
for (col = 0; col < glyph->width; col++)
|
for (col = 0; col < glyph->width; col++)
|
||||||
{
|
{
|
||||||
*ptr++ = st->color[0];
|
*ptr++ = st->color[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Then render the glyph into the allocated memory */
|
/* Then render the glyph into the allocated memory */
|
||||||
|
|
||||||
ret = RENDERER((FAR nxgl_mxpixel_t*)glyph->bitmap,
|
ret = RENDERER((FAR nxgl_mxpixel_t*)glyph->bitmap,
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ static inline void nxgl_fillrun_1bpp(FAR uint8_t *run, nxgl_mxpixel_t color,
|
|||||||
uint8_t wide = (color & 1) != 0 ? 0xff : 0x00;
|
uint8_t wide = (color & 1) != 0 ? 0xff : 0x00;
|
||||||
|
|
||||||
/* Fill the run with the color (it is okay to run a fractional byte over
|
/* Fill the run with the color (it is okay to run a fractional byte over
|
||||||
* the end
|
* the end)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
memset(run, wide, nbytes);
|
memset(run, wide, nbytes);
|
||||||
@@ -120,7 +120,7 @@ static inline void nxgl_fillrun_2bpp(FAR uint8_t *run, nxgl_mxpixel_t color,
|
|||||||
uint8_t wide = g_wide_2bpp[color & 3];
|
uint8_t wide = g_wide_2bpp[color & 3];
|
||||||
|
|
||||||
/* Fill the run with the color (it is okay to run a fractional byte over
|
/* Fill the run with the color (it is okay to run a fractional byte over
|
||||||
* the end
|
* the end)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
memset(run, wide, nbytes);
|
memset(run, wide, nbytes);
|
||||||
@@ -140,7 +140,7 @@ static inline void nxgl_fillrun_4bpp(FAR uint8_t *run, nxgl_mxpixel_t color,
|
|||||||
uint8_t wide = narrow | (narrow << 4);
|
uint8_t wide = narrow | (narrow << 4);
|
||||||
|
|
||||||
/* Fill the run with the color (it is okay to run a fractional byte over
|
/* Fill the run with the color (it is okay to run a fractional byte over
|
||||||
* the end
|
* the end)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
memset(run, wide, nbytes);
|
memset(run, wide, nbytes);
|
||||||
|
|||||||
@@ -61,6 +61,8 @@
|
|||||||
# define CONFIG_NXTK_BORDERCOLOR1 0x00a9a9a9
|
# define CONFIG_NXTK_BORDERCOLOR1 0x00a9a9a9
|
||||||
# elif !defined(CONFIG_NX_DISABLE_16BPP)
|
# elif !defined(CONFIG_NX_DISABLE_16BPP)
|
||||||
# define CONFIG_NXTK_BORDERCOLOR1 0xad55
|
# define CONFIG_NXTK_BORDERCOLOR1 0xad55
|
||||||
|
# elif !defined(CONFIG_NX_DISABLE_4BPP)
|
||||||
|
# define CONFIG_NXTK_BORDERCOLOR1 6
|
||||||
# else
|
# else
|
||||||
# define CONFIG_NXTK_BORDERCOLOR1 'B'
|
# define CONFIG_NXTK_BORDERCOLOR1 'B'
|
||||||
# endif
|
# endif
|
||||||
@@ -71,6 +73,8 @@
|
|||||||
# define CONFIG_NXTK_BORDERCOLOR2 0x00696969
|
# define CONFIG_NXTK_BORDERCOLOR2 0x00696969
|
||||||
# elif !defined(CONFIG_NX_DISABLE_16BPP)
|
# elif !defined(CONFIG_NX_DISABLE_16BPP)
|
||||||
# define CONFIG_NXTK_BORDERCOLOR2 0x6b4d
|
# define CONFIG_NXTK_BORDERCOLOR2 0x6b4d
|
||||||
|
# elif !defined(CONFIG_NX_DISABLE_4BPP)
|
||||||
|
# define CONFIG_NXTK_BORDERCOLOR2 4
|
||||||
# else
|
# else
|
||||||
# define CONFIG_NXTK_BORDERCOLOR2 'b'
|
# define CONFIG_NXTK_BORDERCOLOR2 'b'
|
||||||
# endif
|
# endif
|
||||||
|
|||||||
Reference in New Issue
Block a user