From 2c95af7413e3d97e3683876a8e201e4a408f5f2b Mon Sep 17 00:00:00 2001 From: Tectu Date: Wed, 27 Jun 2012 11:12:45 +0200 Subject: [PATCH] added shadow support for buttons --- gui.c | 10 +++++++++- gui.h | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gui.c b/gui.c index 70e1dc8a..8b3ba893 100644 --- a/gui.c +++ b/gui.c @@ -135,8 +135,9 @@ uint8_t guiDeleteElement(char *label) { return deleteElement(label); } -uint8_t guiDrawButton(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, char *str, uint16_t fontColor, uint16_t buttonColor, char *label, uint8_t *active, uint8_t *state) { +uint8_t guiDrawButton(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, char *str, uint16_t fontColor, uint16_t buttonColor, uint16_t shadow, char *label, uint8_t *active, uint8_t *state) { struct guiNode_t *newNode; + uint16_t i; newNode = chHeapAlloc(NULL, sizeof(struct guiNode_t)); if(newNode == NULL) @@ -157,6 +158,13 @@ uint8_t guiDrawButton(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, char * lcdDrawRectString(x0, y0, x1, y1, str, fontColor, buttonColor); + if(shadow != 0) { + for(i = 0; i < shadow; i++) { + lcdDrawLine(x1+i, y0-i, x1+i, y1-i-1, Black); + lcdDrawLine(x0+i, y0-i, x1+i, y0-i, Black); + } + } + chHeapFree(newNode); return 1; diff --git a/gui.h b/gui.h index 61dead64..513043aa 100644 --- a/gui.h +++ b/gui.h @@ -63,12 +63,13 @@ uint8_t guiDeleteElement(char *label); * - str: string that gets drawn into the rectangle - button's lable * - fontColor: color of the lable * - buttonColor: color of the rectangle + * - shadow: draws a black shadow with N pixels size if != 0 * - active: pass pointer to variable which holds the state 'active' or 'inactive' * - state: pass pointer to variable whcih will keep the state of the button (pressed / unpressed)' * * return: 1 if button successfully created */ -uint8_t guiDrawButton(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, char *str, uint16_t fontColor, uint16_t buttonColor, char *label, uint8_t *active, uint8_t *state); +uint8_t guiDrawButton(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, char *str, uint16_t fontColor, uint16_t buttonColor, uint16_t shadow, char *label, uint8_t *active, uint8_t *state); uint8_t guiDrawSlider(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint8_t orientation, uint16_t frameColor, uint16_t bkColor, uint16_t valueColor, char *label, uint8_t *active, uint8_t *value);