Fixes to strchr, mkfats, and NxWidgets from Petteri Aimonen

This commit is contained in:
Gregory Nutt 2013-04-22 08:01:43 -06:00
parent 26e5eb4132
commit d8e05678fe
10 changed files with 110 additions and 60 deletions

View File

@ -329,3 +329,18 @@
From Petteri Aimonen. From Petteri Aimonen.
1.7 2013-xx-xx Gregory Nutt <gnutt@nuttx.org> 1.7 2013-xx-xx Gregory Nutt <gnutt@nuttx.org>
* NxWidgets bitmap_converter.py: Fix bug when image width > 255. From
Petteri Aimonen (2013-4-22).
* NxWM::CScrollbarPanel: Fix spelling error in class name: CScollbarPanel
should be CScrollbarPanel. From Petteri Aimonen (2013-4-22).
* NxWidgets:: CGlyphButton: Generate action event, like CButton does.
From Petteri Aimonen (2013-4-22).
* NxWidgets:: CGlyphButton: Prevent drawing outside of the bitmap size.
From Petteri Aimonen (2013-4-22).
* NxWM::CTaskBar: Add option CONFIG_NXWM_TASKBAR_NO_BORDER to suppress
drawing of the border on the taskbar. From Petteri Aimonen (2013-4-22).
* NxWidgets::CNxTimer: Add function to check if CNxTimer is running.
From Petteri Aimonen (2013-4-22).
* NxWidgets::CNxWidgets: Allow overriding of the checkCollision() method.
From Petteri Aimonen (2013-4-22).

View File

@ -428,6 +428,12 @@ config NXWM_DISABLE_MINIMIZE
windows. If the buttons are small, it's easy to hit minimize windows. If the buttons are small, it's easy to hit minimize
button accidentally when trying to close an application. button accidentally when trying to close an application.
config NXWM_TASKBAR_NO_BORDER
bool "Suppress Taskbar border"
default n
---help---
Suppress drawing a the border around the taskbar.
comment "Tool Bar Configuration" comment "Tool Bar Configuration"
config NXWM_CUSTOM_TOOLBAR_HEIGHT config NXWM_CUSTOM_TOOLBAR_HEIGHT

View File

@ -73,7 +73,7 @@
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h> #include <nuttx/config.h>
#include <stdint.h> #include <stdint.h>
@ -87,11 +87,11 @@
/**************************************************************************** /****************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
****************************************************************************/ ****************************************************************************/
/**************************************************************************** /****************************************************************************
* Implementation Classes * Implementation Classes
****************************************************************************/ ****************************************************************************/
#if defined(__cplusplus) #if defined(__cplusplus)
namespace NXWidgets namespace NXWidgets
@ -156,7 +156,16 @@ namespace NXWidgets
virtual void onClick(nxgl_coord_t x, nxgl_coord_t y); virtual void onClick(nxgl_coord_t x, nxgl_coord_t y);
/** /**
* Raises an action event and redraws the button. * Raises an action event.
*
* @param x The x coordinate of the mouse.
* @param y The y coordinate of the mouse.
*/
virtual void onPreRelease(nxgl_coord_t x, nxgl_coord_t y);
/**
* Raises a release event and redraws the button.
* *
* @param x The x coordinate of the mouse. * @param x The x coordinate of the mouse.
* @param y The y coordinate of the mouse. * @param y The y coordinate of the mouse.

View File

@ -73,7 +73,7 @@
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h> #include <nuttx/config.h>
#include <stdint.h> #include <stdint.h>
@ -87,11 +87,11 @@
/**************************************************************************** /****************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
****************************************************************************/ ****************************************************************************/
/**************************************************************************** /****************************************************************************
* Implementation Classes * Implementation Classes
****************************************************************************/ ****************************************************************************/
#if defined(__cplusplus) #if defined(__cplusplus)
namespace NXWidgets namespace NXWidgets
@ -102,7 +102,7 @@ namespace NXWidgets
* Timer widget. It can drive time-based events, animations, etc. * Timer widget. It can drive time-based events, animations, etc.
* *
* Using the timer is simple: * Using the timer is simple:
* - Create an instance of the CNxTimer and add it as a child to a widget. * - Create an instance of the CNxTimer and add it as a child to a widget.
* - Call the instance's "start()" method. * - Call the instance's "start()" method.
* - Catch the timer's action event and call any code that should run. * - Catch the timer's action event and call any code that should run.
*/ */
@ -169,6 +169,12 @@ namespace NXWidgets
void stop(void); void stop(void);
/**
* Returns true if the timer is currently running.
*/
inline bool isRunning() const { return m_isRunning; }
/** /**
* Set the timeout of this timer. This timeout value will not * Set the timeout of this timer. This timeout value will not
* take effect until start() or reset() is called. * take effect until start() or reset() is called.
@ -181,7 +187,7 @@ namespace NXWidgets
{ {
m_timeout = timeout; m_timeout = timeout;
} }
/** /**
* Return the timeout of this timer. * Return the timeout of this timer.
* *

View File

@ -1215,7 +1215,7 @@ namespace NXWidgets
* @return True if a collision occurred. * @return True if a collision occurred.
*/ */
bool checkCollision(nxgl_coord_t x, nxgl_coord_t y) const; virtual bool checkCollision(nxgl_coord_t x, nxgl_coord_t y) const;
/** /**
* Checks if the supplied rectangle definition collides with this widget. * Checks if the supplied rectangle definition collides with this widget.
@ -1227,8 +1227,8 @@ namespace NXWidgets
* @return True if a collision occurred. * @return True if a collision occurred.
*/ */
bool checkCollision(nxgl_coord_t x, nxgl_coord_t y, virtual bool checkCollision(nxgl_coord_t x, nxgl_coord_t y,
nxgl_coord_t width, nxgl_coord_t height) const; nxgl_coord_t width, nxgl_coord_t height) const;
/** /**
* Checks if the supplied widget collides with this widget. * Checks if the supplied widget collides with this widget.

View File

@ -73,7 +73,7 @@
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h> #include <nuttx/config.h>
#include <stdint.h> #include <stdint.h>
@ -93,11 +93,11 @@
/**************************************************************************** /****************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
****************************************************************************/ ****************************************************************************/
/**************************************************************************** /****************************************************************************
* Implementation Classes * Implementation Classes
****************************************************************************/ ****************************************************************************/
#if defined(__cplusplus) #if defined(__cplusplus)
namespace NXWidgets namespace NXWidgets
@ -105,8 +105,8 @@ namespace NXWidgets
/** /**
* Class containing a scrolling panel bordered by scrollbars. * Class containing a scrolling panel bordered by scrollbars.
*/ */
class CScollbarPanel : public CNxWidget, public IScrollable, class CScrollbarPanel : public CNxWidget, public IScrollable,
public CWidgetEventHandler public CWidgetEventHandler
{ {
protected: protected:
CWidgetControl *m_widgetControl; /**< Widget control instance */ CWidgetControl *m_widgetControl; /**< Widget control instance */
@ -143,13 +143,13 @@ namespace NXWidgets
* Destructor. * Destructor.
*/ */
virtual ~CScollbarPanel(void) { } virtual ~CScrollbarPanel(void) { }
/** /**
* Copy constructor is protected to prevent usage. * Copy constructor is protected to prevent usage.
*/ */
inline CScollbarPanel(const CScollbarPanel &scrollbarPanel) inline CScrollbarPanel(const CScrollbarPanel &scrollbarPanel)
: CNxWidget(scrollbarPanel) { } : CNxWidget(scrollbarPanel) { }
public: public:
@ -169,11 +169,11 @@ namespace NXWidgets
* the style into its own internal style object. * the style into its own internal style object.
*/ */
CScollbarPanel(CWidgetControl *pWidgetControl, CScrollbarPanel(CWidgetControl *pWidgetControl,
nxgl_coord_t x, nxgl_coord_t y, nxgl_coord_t x, nxgl_coord_t y,
nxgl_coord_t width, nxgl_coord_t height, nxgl_coord_t width, nxgl_coord_t height,
uint32_t flags, uint32_t flags,
CWidgetStyle *style = (CWidgetStyle *)NULL); CWidgetStyle *style = (CWidgetStyle *)NULL);
/** /**
* Scroll the panel by the specified amounts. * Scroll the panel by the specified amounts.
@ -183,7 +183,7 @@ namespace NXWidgets
*/ */
virtual void scroll(int32_t dx, int32_t dy); virtual void scroll(int32_t dx, int32_t dy);
/** /**
* Reposition the panel's scrolling region to the specified coordinates. * Reposition the panel's scrolling region to the specified coordinates.
* *
@ -216,7 +216,7 @@ namespace NXWidgets
*/ */
virtual void setCanvasWidth(const int32_t width); virtual void setCanvasWidth(const int32_t width);
/** /**
* Sets the height of the virtual canvas. * Sets the height of the virtual canvas.
* *
@ -248,7 +248,7 @@ namespace NXWidgets
*/ */
virtual const int32_t getCanvasX(void) const; virtual const int32_t getCanvasX(void) const;
/** /**
* Gets the y coordinate of the virtual canvas. * Gets the y coordinate of the virtual canvas.
* *
@ -264,7 +264,7 @@ namespace NXWidgets
*/ */
virtual const int32_t getCanvasWidth(void) const; virtual const int32_t getCanvasWidth(void) const;
/** /**
* Gets the height of the virtual canvas. * Gets the height of the virtual canvas.
* *

View File

@ -70,7 +70,7 @@
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h> #include <nuttx/config.h>
#include <sys/types.h> #include <sys/types.h>
@ -193,16 +193,16 @@ void CGlyphButton::drawContents(CGraphicsPort *port)
if (isEnabled()) if (isEnabled())
{ {
port->drawBitmap(rect.getX(), rect.getY(), port->drawBitmap(rect.getX() + m_bitmapX, rect.getY() + m_bitmapY,
rect.getWidth(), rect.getHeight(), bitmap->width, bitmap->height,
bitmap, m_bitmapX, m_bitmapY, bitmap, 0, 0,
CONFIG_NXWIDGETS_TRANSPARENT_COLOR); CONFIG_NXWIDGETS_TRANSPARENT_COLOR);
} }
else else
{ {
port->drawBitmapGreyScale(rect.getX(), rect.getY(), port->drawBitmapGreyScale(rect.getX() + m_bitmapX, rect.getY() + m_bitmapY,
rect.getWidth(), rect.getHeight(), bitmap->width, bitmap->height,
bitmap, m_bitmapX, m_bitmapY); bitmap, 0, 0);
} }
} }
@ -237,7 +237,7 @@ void CGlyphButton::drawOutline(CGraphicsPort *port)
nxgl_coord_t color1; nxgl_coord_t color1;
nxgl_coord_t color2; nxgl_coord_t color2;
if (isClicked()) if (isClicked())
{ {
// Bevelled into the screen // Bevelled into the screen
@ -252,7 +252,7 @@ void CGlyphButton::drawOutline(CGraphicsPort *port)
color1 = getShineEdgeColor(); color1 = getShineEdgeColor();
color2 = getShadowEdgeColor(); color2 = getShadowEdgeColor();
} }
port->drawBevelledRect(getX(), getY(), port->drawBevelledRect(getX(), getY(),
getWidth(), getHeight(), getWidth(), getHeight(),
color1, color2); color1, color2);
@ -272,7 +272,19 @@ void CGlyphButton::onClick(nxgl_coord_t x, nxgl_coord_t y)
} }
/** /**
* Raises an action event and redraws the button. * Raises an action event.
*
* @param x The x coordinate of the mouse.
* @param y The y coordinate of the mouse.
*/
void CGlyphButton::onPreRelease(nxgl_coord_t x, nxgl_coord_t y)
{
m_widgetEventHandlers->raiseActionEvent();
}
/**
* Raises a release event and redraws the button.
* *
* @param x The x coordinate of the mouse. * @param x The x coordinate of the mouse.
* @param y The y coordinate of the mouse. * @param y The y coordinate of the mouse.

View File

@ -70,7 +70,7 @@
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h> #include <nuttx/config.h>
#include <stdint.h> #include <stdint.h>
@ -104,10 +104,10 @@ using namespace NXWidgets;
* the style into its own internal style object. * the style into its own internal style object.
*/ */
CScollbarPanel::CScollbarPanel(CWidgetControl *pWidgetControl, CScrollbarPanel::CScrollbarPanel(CWidgetControl *pWidgetControl,
nxgl_coord_t x, nxgl_coord_t y, nxgl_coord_t x, nxgl_coord_t y,
nxgl_coord_t width, nxgl_coord_t height, nxgl_coord_t width, nxgl_coord_t height,
uint32_t flags, CWidgetStyle *style) uint32_t flags, CWidgetStyle *style)
: CNxWidget(pWidgetControl, x, y, width, height, flags, style) : CNxWidget(pWidgetControl, x, y, width, height, flags, style)
{ {
m_scrollbarWidth = 10; m_scrollbarWidth = 10;
@ -136,7 +136,7 @@ CScollbarPanel::CScollbarPanel(CWidgetControl *pWidgetControl,
* @param dy The vertical distance to scroll. * @param dy The vertical distance to scroll.
*/ */
void CScollbarPanel::scroll(int32_t dx, int32_t dy) void CScrollbarPanel::scroll(int32_t dx, int32_t dy)
{ {
m_panel->scroll(dx, dy); m_panel->scroll(dx, dy);
} }
@ -148,7 +148,7 @@ void CScollbarPanel::scroll(int32_t dx, int32_t dy)
* @param y The new y coordinate of the scrolling region. * @param y The new y coordinate of the scrolling region.
*/ */
void CScollbarPanel::jump(int32_t x, int32_t y) void CScrollbarPanel::jump(int32_t x, int32_t y)
{ {
m_panel->jump(x, y); m_panel->jump(x, y);
} }
@ -159,7 +159,7 @@ void CScollbarPanel::jump(int32_t x, int32_t y)
* @param allow True to allow horizontal scrolling; false to deny it. * @param allow True to allow horizontal scrolling; false to deny it.
*/ */
void CScollbarPanel::setAllowsVerticalScroll(bool allow) void CScrollbarPanel::setAllowsVerticalScroll(bool allow)
{ {
m_panel->setAllowsVerticalScroll(allow); m_panel->setAllowsVerticalScroll(allow);
@ -182,7 +182,7 @@ void CScollbarPanel::setAllowsVerticalScroll(bool allow)
* @param allow True to allow horizontal scrolling; false to deny it. * @param allow True to allow horizontal scrolling; false to deny it.
*/ */
void CScollbarPanel::setAllowsHorizontalScroll(bool allow) void CScrollbarPanel::setAllowsHorizontalScroll(bool allow)
{ {
m_panel->setAllowsHorizontalScroll(allow); m_panel->setAllowsHorizontalScroll(allow);
@ -205,7 +205,7 @@ void CScollbarPanel::setAllowsHorizontalScroll(bool allow)
* @param width The width of the virtual canvas. * @param width The width of the virtual canvas.
*/ */
void CScollbarPanel::setCanvasWidth(const int32_t width) void CScrollbarPanel::setCanvasWidth(const int32_t width)
{ {
m_panel->setCanvasWidth(width); m_panel->setCanvasWidth(width);
m_scrollbarHorizontal->setMaximumValue(width); m_scrollbarHorizontal->setMaximumValue(width);
@ -217,7 +217,7 @@ void CScollbarPanel::setCanvasWidth(const int32_t width)
* @param height The height of the virtual canvas. * @param height The height of the virtual canvas.
*/ */
void CScollbarPanel::setCanvasHeight(const int32_t height) void CScrollbarPanel::setCanvasHeight(const int32_t height)
{ {
m_panel->setCanvasHeight(height); m_panel->setCanvasHeight(height);
m_scrollbarVertical->setMaximumValue(height); m_scrollbarVertical->setMaximumValue(height);
@ -229,7 +229,7 @@ void CScollbarPanel::setCanvasHeight(const int32_t height)
* @return True if vertical scrolling is allowed. * @return True if vertical scrolling is allowed.
*/ */
bool CScollbarPanel::allowsVerticalScroll(void) const bool CScrollbarPanel::allowsVerticalScroll(void) const
{ {
return m_panel->allowsVerticalScroll(); return m_panel->allowsVerticalScroll();
} }
@ -240,7 +240,7 @@ bool CScollbarPanel::allowsVerticalScroll(void) const
* @return True if horizontal scrolling is allowed. * @return True if horizontal scrolling is allowed.
*/ */
bool CScollbarPanel::allowsHorizontalScroll(void) const bool CScrollbarPanel::allowsHorizontalScroll(void) const
{ {
return m_panel->allowsHorizontalScroll(); return m_panel->allowsHorizontalScroll();
} }
@ -251,7 +251,7 @@ bool CScollbarPanel::allowsHorizontalScroll(void) const
* @return The x coordinate of the virtual canvas. * @return The x coordinate of the virtual canvas.
*/ */
const int32_t CScollbarPanel::getCanvasX(void) const const int32_t CScrollbarPanel::getCanvasX(void) const
{ {
return m_panel->getCanvasX(); return m_panel->getCanvasX();
} }
@ -262,7 +262,7 @@ const int32_t CScollbarPanel::getCanvasX(void) const
* @return The y coordinate of the virtual canvas. * @return The y coordinate of the virtual canvas.
*/ */
const int32_t CScollbarPanel::getCanvasY(void) const const int32_t CScrollbarPanel::getCanvasY(void) const
{ {
return m_panel->getCanvasY(); return m_panel->getCanvasY();
} }
@ -273,7 +273,7 @@ const int32_t CScollbarPanel::getCanvasY(void) const
* @return The width of the virtual canvas. * @return The width of the virtual canvas.
*/ */
const int32_t CScollbarPanel::getCanvasWidth(void) const const int32_t CScrollbarPanel::getCanvasWidth(void) const
{ {
return m_panel->getCanvasWidth(); return m_panel->getCanvasWidth();
} }
@ -284,7 +284,7 @@ const int32_t CScollbarPanel::getCanvasWidth(void) const
* @return The height of the virtual canvas. * @return The height of the virtual canvas.
*/ */
const int32_t CScollbarPanel::getCanvasHeight(void) const const int32_t CScrollbarPanel::getCanvasHeight(void) const
{ {
return m_panel->getCanvasHeight(); return m_panel->getCanvasHeight();
} }
@ -295,7 +295,7 @@ const int32_t CScollbarPanel::getCanvasHeight(void) const
* @param e The event data. * @param e The event data.
*/ */
void CScollbarPanel::handleScrollEvent(const CWidgetEventArgs &e) void CScrollbarPanel::handleScrollEvent(const CWidgetEventArgs &e)
{ {
if (e.getSource() != NULL) if (e.getSource() != NULL)
{ {
@ -323,7 +323,7 @@ void CScollbarPanel::handleScrollEvent(const CWidgetEventArgs &e)
* @param e The event data. * @param e The event data.
*/ */
void CScollbarPanel::handleValueChangeEvent(const CWidgetEventArgs &e) void CScrollbarPanel::handleValueChangeEvent(const CWidgetEventArgs &e)
{ {
if (e.getSource() != NULL) if (e.getSource() != NULL)
{ {
@ -352,7 +352,7 @@ void CScollbarPanel::handleValueChangeEvent(const CWidgetEventArgs &e)
* Creates the child widgets. * Creates the child widgets.
*/ */
void CScollbarPanel::buildUI(void) void CScrollbarPanel::buildUI(void)
{ {
CRect rect; CRect rect;
getClientRect(rect); getClientRect(rect);
@ -432,7 +432,7 @@ void CScollbarPanel::buildUI(void)
* @see redraw() * @see redraw()
*/ */
void CScollbarPanel::drawContents(CGraphicsPort *port) void CScrollbarPanel::drawContents(CGraphicsPort *port)
{ {
port->drawFilledRect(0, 0, getWidth(), getHeight(), getBackgroundColor()); port->drawFilledRect(0, 0, getWidth(), getHeight(), getBackgroundColor());
} }

View File

@ -1112,11 +1112,13 @@ bool CTaskbar::redrawTaskbarWindow(void)
port->drawFilledRect(0, 0, windowSize.w, windowSize.h, port->drawFilledRect(0, 0, windowSize.w, windowSize.h,
CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR); CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR);
#ifndef CONFIG_NXWM_TASKBAR_NO_BORDER
// Add a border to the task bar to delineate it from the background window // Add a border to the task bar to delineate it from the background window
port->drawBevelledRect(0, 0, windowSize.w, windowSize.h, port->drawBevelledRect(0, 0, windowSize.w, windowSize.h,
CONFIG_NXWM_DEFAULT_SHINEEDGECOLOR, CONFIG_NXWM_DEFAULT_SHINEEDGECOLOR,
CONFIG_NXWM_DEFAULT_SHADOWEDGECOLOR); CONFIG_NXWM_DEFAULT_SHADOWEDGECOLOR);
#endif
// Begin adding icons in the upper left corner // Begin adding icons in the upper left corner

View File

@ -64,7 +64,7 @@ def encode_row(img, palette, y):
for x in range(0, img.size[0]): for x in range(0, img.size[0]):
c = quantize(img.getpixel((x, y)), palette) c = quantize(img.getpixel((x, y)), palette)
if c == color: if c == color and repeats < 255:
repeats += 1 repeats += 1
else: else:
if color is not None: if color is not None: