aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--old/gui/gui.c334
-rw-r--r--old/gui/gui.h115
-rw-r--r--old/gui/gui.mk3
3 files changed, 0 insertions, 452 deletions
diff --git a/old/gui/gui.c b/old/gui/gui.c
deleted file mode 100644
index 9eeaa73a..00000000
--- a/old/gui/gui.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2012
- Joel Bodenmann aka Tectu <joel@unormal.org>
-
- This file is part of ChibiOS/GFX.
-
- ChibiOS/GFX is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/GFX is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "gui.h"
-
-static struct guiNode_t *firstGUI = NULL;
-uint16_t x, y; // global touchpad coordinates
-
-static uint8_t addElement(struct guiNode_t *newNode) {
- struct guiNode_t *new;
-
- if(firstGUI == NULL) {
- firstGUI = chHeapAlloc(NULL, sizeof(struct guiNode_t));
- if(firstGUI == NULL)
- return 0;
-
- *firstGUI = *newNode;
- firstGUI->next = NULL;
- } else {
- new = firstGUI;
- while(new->next != NULL)
- new = new->next;
-
- new->next = chHeapAlloc(NULL, sizeof(struct guiNode_t));
- if(new->next == NULL)
- return 0;
-
- new = new->next;
- *new = *newNode;
- new->next = NULL;
- }
-
- return 1;
-}
-
-static uint8_t deleteElement(char *label) {
- struct guiNode_t *pointer, *pointer1;
-
- if(firstGUI != NULL) {
- if(strcmp(firstGUI->label, label) == 0) {
- pointer = firstGUI->next;
- chHeapFree(firstGUI);
- firstGUI = pointer;
- } else {
- pointer = firstGUI;
-
- while(pointer->next != NULL) {
- pointer1 = pointer->next;
-
- if(strcmp(firstGUI->label, label) == 0) {
- pointer->next = pointer1->next;
- chHeapFree(pointer1);
- break;
- }
-
- pointer = pointer1;
-
- }
- }
-
- return 1; // successful
- }
-
- return 0; // not successful
-}
-
-void guiPrintElements(BaseSequentialStream *chp) {
- struct guiNode_t *pointer = firstGUI;
-
- chprintf(chp, "\r\n\nguiNodes:\r\n\n");
-
- while(pointer != NULL) {
- chprintf(chp, "x0: %d\r\n", pointer->x0);
- chprintf(chp, "y0: %d\r\n", pointer->y0);
- chprintf(chp, "x1: %d\r\n", pointer->x1);
- chprintf(chp, "y1: %d\r\n", pointer->y1);
- chprintf(chp, "label: %s\r\n", pointer->label);
- chprintf(chp, "active: %d\r\n", *(pointer->active));
- chprintf(chp, "state: %d\r\n", *(pointer->state));
- chprintf(chp, "*next: 0x%x\r\n", pointer->next);
- chprintf(chp, "\r\n\n");
- pointer = pointer->next;
- }
-}
-
-static inline void buttonUpdate(struct guiNode_t *node) {
- if(x >= node->x0 && x <= node->x1 && y >= node->y0 && y <= node->y1) {
- *(node->state) = 1;
- } else {
- *(node->state) = 0;
- }
-}
-
-static inline void sliderUpdate(struct guiNode_t *node) {
- uint16_t length = 1;
-
- if(node->orientation == horizontal)
- length = node->x1 - node->x0;
- else if(node->orientation == vertical)
- length = node->y1 - node->y0;
-
- if(node->mode == modePassive) {
- node->percentage = *(node->state);
- } else if(node->mode == modeActive) {
- if(x >= node->x0 && x <= node->x1 && y >= node->y0 && y <= node->y1) {
- if(node->orientation == horizontal) {
- node->percentage = (((x - node->x0) * 100) / length);
- } else if(node->orientation == vertical) {
- node->percentage = (((y - node->y0) * 100) / length);
- }
- }
-
- *(node->state) = node->percentage;
- }
-
- // a bit of safety here
- if(node->percentage > 100)
- node->percentage = 100;
-
- if(node->orientation == horizontal) {
- node->value = ((((node->x1)-(node->x0)) * node->percentage) / 100);
- if(node->oldValue > node->value || node->value == 0)
- lcdFillArea(node->x0+1, node->y0+1, node->x1, node->y1, node->bkColor);
- else
- lcdDrawRect(node->x0+1, node->y0+1, node->x0+node->value, node->y1, filled, node->valueColor);
- } else if(node->orientation == vertical) {
- node->value = ((((node->y1)-(node->y0)) * node->percentage) / 100);
- if(node->oldValue > node->value || node->value == 0)
- lcdFillArea(node->x0+1, node->y0+1, node->x1, node->y1, node->bkColor);
- else
- lcdDrawRect(node->x0+1, node->y0+1, node->x1, node->y0+node->value, filled, node->valueColor);
- }
-
- node->oldValue = node->value;
-}
-
-static inline void wheelUpdate(struct guiNode_t *node) {
- (void)node;
-}
-
-static inline void keymatrixUpdate(struct guiNode_t *node) {
- (void)node;
-}
-
-static void guiThread(const uint16_t interval) {
- struct guiNode_t *node;
-
- chRegSetThreadName("GUI");
-
- while(TRUE) {
- for(node = firstGUI; node; node = node->next) {
- // check if GUI element is set active
- if(*(node->active) == active) {
- x = tpReadX();
- y = tpReadY();
-
- switch(node->type) {
- case button:
- buttonUpdate(node);
- break;
- case slider:
- sliderUpdate(node);
- break;
- case wheel:
- wheelUpdate(node);
- break;
- case keymatrix:
- keymatrixUpdate(node);
- break;
- }
- }
- }
-
- chThdSleepMilliseconds(interval);
- }
-}
-
-Thread *guiInit(uint16_t interval, tprio_t priority) {
- Thread *tp = NULL;
-
- tp = chThdCreateFromHeap(NULL, THD_WA_SIZE(512), priority, guiThread, interval);
-
- return tp;
-}
-
-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, font_t font, 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)
- return 0;
-
- newNode->type = button;
- newNode->label = label;
- newNode->x0 = x0;
- newNode->y0 = y0;
- newNode->x1 = x1;
- newNode->y1 = y1;
- newNode->shadow = shadow;
- newNode->active = active;
- newNode->state = state;
-
- if(addElement(newNode) != 1)
- return 0;
-
- lcdDrawRectString(x0, y0, x1, y1, str, font, fontColor, buttonColor);
-
- if(shadow != 0) {
- for(i = 0; i < shadow; i++) {
- lcdDrawLine(x0+shadow, y1+i, x1+shadow-1, y1+i, Black);
- lcdDrawLine(x1+i, y0+shadow, x1+i, y1+shadow-1, Black);
- }
- }
-
- chHeapFree(newNode);
-
- return 1;
-}
-
-uint8_t guiDrawSlider(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint8_t orientation, uint8_t mode, uint16_t frameColor, uint16_t bkColor, uint16_t valueColor, char *label, uint8_t *active, uint8_t *value) {
- struct guiNode_t *newNode;
-
- newNode = chHeapAlloc(NULL, sizeof(struct guiNode_t));
- if(newNode == NULL)
- return 0;
-
- newNode->type = slider;
- newNode->label = label;
- newNode->x0 = x0;
- newNode->y0 = y0;
- newNode->x1 = x1;
- newNode->y1 = y1;
- newNode->mode = mode;
- newNode->bkColor = bkColor;
- newNode->valueColor = valueColor;
- newNode->state = value;
- newNode->active = active;
- newNode->orientation = orientation;
- newNode->percentage = 0;
-
- if(addElement(newNode) != 1)
- return 0;
-
- (void)bkColor;
- (void)valueColor;
-
- // lcdDraw functions
- lcdDrawRect(x0, y0, x1, y1, frame, frameColor);
-
- chHeapFree(newNode);
-
- return 1;
-}
-
-uint8_t guiDrawWheel(uint16_t x0, uint16_t y0, uint16_t radius1, uint16_t radius2, uint16_t bkColor, uint16_t valueColor, char *label, uint8_t *active, uint8_t *value) {
- struct guiNode_t *newNode;
-
- newNode = chHeapAlloc(NULL, sizeof(struct guiNode_t));
- if(newNode == NULL)
- return 0;
-
- newNode->type = wheel;
- newNode->label = label;
- newNode->x0 = x0;
- newNode->y0 = y0;
- newNode->r1 = radius1;
- newNode->r2 = radius2;
- newNode->active = active;
- newNode->state = value;
-
- if(addElement(newNode) != 1)
- return 0;
-
- (void)bkColor;
- (void)valueColor;
- // lcdDraw functions
-
- chHeapFree(newNode);
-
- return 1;
-}
-
-uint8_t guiDrawKeymatrix(uint16_t x0, uint16_t y0, uint16_t size, uint16_t space, uint16_t shadow, uint16_t buttonColor, uint16_t fontColor, font_t font, char *label, uint8_t *active, uint8_t *value) {
- struct guiNode_t *newNode;
-
- newNode = chHeapAlloc(NULL, sizeof(struct guiNode_t));
- if(newNode == NULL)
- return 0;
-
- newNode->type = keymatrix;
- newNode->label = label;
- newNode->x0 = x0;
- newNode->y0 = y0;
- newNode->shadow = shadow;
- newNode->active = active;
- newNode->state = value;
-
- if(addElement(newNode) != 1)
- return 0;
-
- // lcdDraw functions
- (void)size;
- (void)space;
- (void)buttonColor;
- (void)fontColor;
- (void)font;
-
- chHeapFree(newNode);
-
- return 1;
-}
-
diff --git a/old/gui/gui.h b/old/gui/gui.h
deleted file mode 100644
index a5ca445e..00000000
--- a/old/gui/gui.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2012
- Joel Bodenmann aka Tectu <joel@unormal.org>
-
- This file is part of ChibiOS/GFX.
-
- ChibiOS/GFX is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/GFX is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef GUI_H
-#define GUI_H
-
-#include "ch.h"
-#include "hal.h"
-#include "glcd.h"
-#include "chprintf.h"
-#include "touchpad.h"
-#include <string.h>
-
-struct guiNode_t {
- uint8_t type;
- uint16_t x0;
- uint16_t y0;
- uint16_t x1;
- uint16_t y1;
- uint16_t r1;
- uint16_t r2;
- uint16_t shadow;
- uint16_t bkColor;
- uint16_t valueColor;
- uint16_t value;
- uint16_t oldValue;
- uint16_t percentage;
- uint8_t orientation;
- uint8_t mode;
- uint8_t *active;
- uint8_t *state;
- char *label;
- struct guiNode_t *next;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum {button, slider, wheel, keymatrix};
-enum {horizontal, vertical};
-enum {inactive, active};
-enum {modePassive, modeActive};
-
-/*
- * Description: creates the GUI thread
- *
- * param: - interval: thread sleep in milliseconds after each GUI element update
- * - priority: priority of the thread
- *
- * return: pointer to created thread
- */
-Thread *guiInit(uint16_t interval, tprio_t priority);
-
-/*
- * Description: prints all GUI elements structs (linked list)
- *
- * param: - chp: pointer to output stream
- *
- * return: none
- */
-void guiPrintElements(BaseSequentialStream *chp);
-
-/*
- * Description: deletes a GUI element from the linked list
- *
- * param: - label: label of the element (parameter of each guiDrawXXX function)
- *
- * return: 1 if successful, 0 otherwise
- */
-uint8_t guiDeleteElement(char *label);
-
-/*
- * Description: draws a button on the screen and keeps it's state up to date
- *
- * param: - x0, y0, x1, y1: start and end coordinates of the button's rectangle
- * - 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, font_t font, 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, uint8_t mode, uint16_t frameColor, uint16_t bkColor, uint16_t valueColor, char *label, uint8_t *active, uint8_t *value);
-
-uint8_t guiDrawWheel(uint16_t x0, uint16_t y0, uint16_t radius1, uint16_t radius2, uint16_t bkColor, uint16_t valueColor, char *label, uint8_t *active, uint8_t *value);
-
-uint8_t guiDrawKeymatrix(uint16_t x0, uint16_t y0, uint16_t buttonSize, uint16_t space, uint16_t shadow, uint16_t buttonColor, uint16_t fontColor, font_t font, char *label, uint8_t *active, uint8_t *value);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/old/gui/gui.mk b/old/gui/gui.mk
deleted file mode 100644
index 6d6d5456..00000000
--- a/old/gui/gui.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-GDISP_GUI_SRC = $(GFXLIB)/gui/gui.c
-
-GDISP_GUI_INC = $(GFXLIB)/gui