Hack for font background when we cannot read from the LCD; Candidate fix for ILI9325 LCD

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4763 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2012-05-22 23:49:15 +00:00
parent 0c093cee78
commit 357e4b55dd
4 changed files with 70 additions and 1 deletions

View File

@ -144,3 +144,11 @@
example.
* NXWidgets::CNxTkWindow: Back out height adjustment in the getSize()
method. The code was correct as it was before.
* NXWidgets::CButtonArray and NXWidgets::CGraphicsPort: There is
a kludge in there to handle the case where we cannot read the
background data because the LCD does not support read operations.
In that case, we just use the default background color. However,
that doesn't work either for the case where the background color
changes when the widget is selected. Thenthe background color
in the font is wrong. Fixed in CButtonArrary, but the problem
probably exists in other places as well.

View File

@ -127,3 +127,18 @@ o Platform specific issues
The fixed version is available in SVN but won't be in a released
version until NuttX-6.198 is released.
Priorioty: Low, but really annoying.
Title: BUGS WHEN CANNOT READ FROM LCD
Description: There is a kludge in there to handle the case where we cannot
read the background data because the LCD does not support read
operations. You cannot read from the STM3240G-EVAL LCD right
now (it might be possible, but I have not figured out how yet).
In that case, we just use the default background color. However,
that doesn't work either for the case where the background color
changes when the widget is selected. Then the background color
in the font is wrong. There is a hack in in CButtonArrary that
fixed this problem, but the problem certainly exists in other
places as well and begs for a better solution.
Status: Open
Priority: Medium-Low

View File

@ -151,6 +151,36 @@ namespace NXWidgets
const nxgl_coord_t getY(void) const;
/**
* Get the background color that will be used to fill in the spaces
* when rendering fonts. This background color is ONLY used if the
* LCD device does not support reading GRAM contents.
*
* @return. The current background color being used.
*/
#ifdef CONFIG_NX_WRITEONLY
nxgl_mxpixel_t getBackColor(void) const
{
return m_backColor;
}
#endif
/**
* Set the background color that will be used to fill in the spaces
* when rendering fonts. This background color is ONLY used if the
* LCD device does not support reading GRAM contents.
*
* @return. The current background color being used.
*/
#ifdef CONFIG_NX_WRITEONLY
void setBackColor(nxgl_mxpixel_t backColor)
{
m_backColor = backColor;
}
#endif
/**
* Draw a pixel into the window.
*

View File

@ -519,9 +519,25 @@ void CButtonArray::drawButton(CGraphicsPort *port, int column, int row, bool use
pos.x = x + alignX;
pos.y = y + alignY;
// And draw the button text
// Set the CGraphicsControl background to match the selected background color.
// This is only necessary if we cannot read from the LCD. If we cannot read
// from then the font background is set to this background color.
// REVISIT: This begs for a more generalized solution.
#ifdef CONFIG_NX_WRITEONLY
nxgl_mxpixel_t saveColor = port->getBackColor();
port->setBackColor(backColor);
#endif
// And draw the button text.
port->drawText(&pos, &rect, getFont(), *text, 0, text->getLength(), textColor);
// Restore the default background color
#ifdef CONFIG_NX_WRITEONLY
port->setBackColor(saveColor);
#endif
}
/**