From 07f34835358ef65de310934ae726b66c7ca46f68 Mon Sep 17 00:00:00 2001 From: Andrew Hannam Date: Thu, 6 Dec 2012 18:45:54 +1000 Subject: Restructure Create global include file called gfx.h which knows about sub-system dependancies. Deprecate Touchscreen (GINPUT touch is now working properly) Merge Graph into GWIN Change directory structure to reflect sub-system structure Many small bugs fixed Split Nokia6610 gdisp driver into GE8 and GE12 controller versions Fixed broken demos. GFX sub-systems are now clearly defined and new ones should be much easier to add. --- demos/applications/console/main.c | 59 -------- demos/applications/graph/main.c | 51 ------- demos/applications/mandelbrot/gfxconf.h | 69 +++++++++ demos/applications/mandelbrot/main.c | 3 +- demos/applications/notepad/gfxconf.h | 69 +++++++++ demos/applications/notepad/main.c | 39 ++--- demos/modules/console/gfxconf.h | 69 +++++++++ demos/modules/console/main.c | 185 +++++++++++------------ demos/modules/ginput_touch_driver_test/gfxconf.h | 69 +++++++++ demos/modules/ginput_touch_driver_test/main.c | 22 +-- demos/modules/graph/gfxconf.h | 69 +++++++++ demos/modules/graph/main.c | 54 +++++++ demos/modules/gtimer/gfxconf.h | 69 +++++++++ demos/modules/gtimer/main.c | 124 ++++++++------- demos/modules/window/gfxconf.h | 69 +++++++++ demos/modules/window/main.c | 134 ++++++++-------- 16 files changed, 762 insertions(+), 392 deletions(-) delete mode 100644 demos/applications/console/main.c delete mode 100644 demos/applications/graph/main.c create mode 100644 demos/applications/mandelbrot/gfxconf.h create mode 100644 demos/applications/notepad/gfxconf.h create mode 100644 demos/modules/console/gfxconf.h create mode 100644 demos/modules/ginput_touch_driver_test/gfxconf.h create mode 100644 demos/modules/graph/gfxconf.h create mode 100644 demos/modules/graph/main.c create mode 100644 demos/modules/gtimer/gfxconf.h create mode 100644 demos/modules/window/gfxconf.h (limited to 'demos') diff --git a/demos/applications/console/main.c b/demos/applications/console/main.c deleted file mode 100644 index b0e0fb7f..00000000 --- a/demos/applications/console/main.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - 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 . -*/ - -/* - * !!! IMPORTANT !!! - * - * This example dosen't compile yet, there's a problem in the console source. - * This issue will be fixed soon. - */ - -/* - * Please add the following to your halconf.h - * - * #define GFX_USE_CONSOLE TRUE - * #define GDISP_NEED_SCROLL TRUE - */ - -#include "ch.h" -#include "hal.h" -#include "gdisp.h" -#include "chprintf.h" -#include "console.h" - -static GConsole CON1; - -int main(void) { - halInit(); - chSysInit(); - - gdispInit(); - gdispClear(Lime); - - gfxConsoleInit(&CON1, 0, 0, gdispGetWidth(), gdispGetHeight(), &fontLarger, Black, White); - chprintf((BaseSequentialStream *)&CON1, "Hello the time is %d\nGoodbye.", chTimeNow()); - - - while (TRUE) { - - chThdSleepMilliseconds(100); - } -} - diff --git a/demos/applications/graph/main.c b/demos/applications/graph/main.c deleted file mode 100644 index bd50cf60..00000000 --- a/demos/applications/graph/main.c +++ /dev/null @@ -1,51 +0,0 @@ -#include "ch.h" -#include "hal.h" -#include "gdisp.h" -#include "graph.h" -#include "math.h" - -int data[5][2] = { - { 0, 0 }, - { 10, 10 }, - { 20, 20 }, - { 30, 30 }, - { 40, 40 } -}; - -int main(void) { - halInit(); - chSysInit(); - - gdispInit(); - gdispSetOrientation(GDISP_ROTATE_90); - gdispClear(Black); - - Graph G1 = { - gdispGetWidth()/2, - gdispGetHeight()/2, - -150, - 150, - -110, - 110, - 21, - 5, - TRUE, - TRUE, - White, - Grey, - }; - - graphDrawSystem(&G1); - - uint16_t i; - for(i = 0; i < 2500; i++) - graphDrawDot(&G1, i-170, 80*sin(2*0.2*M_PI*i/180), 1, Blue); - - for(i = 0; i < 2500; i++) - graphDrawDot(&G1, i/5-150, 95*sin(2*0.2*M_PI*i/180), 1, Green); - - while(TRUE) { - chThdSleepMilliseconds(100); - } -} - diff --git a/demos/applications/mandelbrot/gfxconf.h b/demos/applications/mandelbrot/gfxconf.h new file mode 100644 index 00000000..726847cd --- /dev/null +++ b/demos/applications/mandelbrot/gfxconf.h @@ -0,0 +1,69 @@ +/** + * This file has a different license to the rest of the GFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_GWIN FALSE +#define GFX_USE_GEVENT FALSE +#define GFX_USE_GTIMER FALSE +#define GFX_USE_GINPUT FALSE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP FALSE +#define GDISP_NEED_TEXT FALSE +#define GDISP_NEED_CIRCLE FALSE +#define GDISP_NEED_ELLIPSE FALSE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_MULTITHREAD FALSE +#define GDISP_NEED_ASYNC FALSE +#define GDISP_NEED_MSGAPI FALSE + +/* Features for the GWIN sub-system. */ +#define GWIN_NEED_BUTTON FALSE +#define GWIN_NEED_CONSOLE FALSE +#define GWIN_NEED_GRAPH FALSE + +/* Features for the GEVENT sub-system. */ +#define GEVENT_ASSERT_NO_RESOURCE FALSE + +/* Features for the GTIMER sub-system. */ +/* NONE */ + +/* Features for the GINPUT sub-system. */ +#define GINPUT_NEED_MOUSE FALSE +#define GINPUT_NEED_KEYBOARD FALSE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + +/* Optional Parameters for various sub-systems */ +/* + #define GDISP_MAX_FONT_HEIGHT 16 + #define GEVENT_MAXIMUM_SIZE 32 + #define GEVENT_MAX_SOURCE_LISTENERS 32 + #define GTIMER_THREAD_WORKAREA_SIZE 512 +*/ + +/* Optional Low Level Driver Definitions */ +/* + #define GDISP_USE_CUSTOM_BOARD FALSE + #define GDISP_SCREEN_WIDTH 320 + #define GDISP_SCREEN_HEIGHT 240 + #define GDISP_USE_FSMC + #define GDISP_USE_GPIO + #define GDISP_VMT_NAME1(x) x##YourDriver1 + #define GDISP_VMT_NAME2(x) x##YourDriver2 +*/ + +#endif /* _GFXCONF_H */ diff --git a/demos/applications/mandelbrot/main.c b/demos/applications/mandelbrot/main.c index 6ab19de1..2fe1141d 100644 --- a/demos/applications/mandelbrot/main.c +++ b/demos/applications/mandelbrot/main.c @@ -20,7 +20,7 @@ #include "ch.h" #include "hal.h" -#include "gdisp.h" +#include "gfx.h" void mandelbrot(float x1, float y1, float x2, float y2) { unsigned int i,j, width, height; @@ -63,7 +63,6 @@ int main(void) { chSysInit(); gdispInit(); - gdispSetOrientation(GDISP_ROTATE_270); /* where to zoom in */ cx = -0.086f; diff --git a/demos/applications/notepad/gfxconf.h b/demos/applications/notepad/gfxconf.h new file mode 100644 index 00000000..cbdb7b95 --- /dev/null +++ b/demos/applications/notepad/gfxconf.h @@ -0,0 +1,69 @@ +/** + * This file has a different license to the rest of the GFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_GWIN FALSE +#define GFX_USE_GEVENT TRUE +#define GFX_USE_GTIMER TRUE +#define GFX_USE_GINPUT TRUE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_TEXT TRUE +#define GDISP_NEED_CIRCLE TRUE +#define GDISP_NEED_ELLIPSE FALSE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_MULTITHREAD FALSE +#define GDISP_NEED_ASYNC FALSE +#define GDISP_NEED_MSGAPI FALSE + +/* Features for the GWIN sub-system. */ +#define GWIN_NEED_BUTTON FALSE +#define GWIN_NEED_CONSOLE FALSE +#define GWIN_NEED_GRAPH FALSE + +/* Features for the GEVENT sub-system. */ +#define GEVENT_ASSERT_NO_RESOURCE FALSE + +/* Features for the GTIMER sub-system. */ +/* NONE */ + +/* Features for the GINPUT sub-system. */ +#define GINPUT_NEED_MOUSE TRUE +#define GINPUT_NEED_KEYBOARD FALSE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + +/* Optional Parameters for various sub-systems */ +/* + #define GDISP_MAX_FONT_HEIGHT 16 + #define GEVENT_MAXIMUM_SIZE 32 + #define GEVENT_MAX_SOURCE_LISTENERS 32 + #define GTIMER_THREAD_WORKAREA_SIZE 512 +*/ + +/* Optional Low Level Driver Definitions */ +/* + #define GDISP_USE_CUSTOM_BOARD FALSE + #define GDISP_SCREEN_WIDTH 320 + #define GDISP_SCREEN_HEIGHT 240 + #define GDISP_USE_FSMC + #define GDISP_USE_GPIO + #define GDISP_VMT_NAME1(x) x##YourDriver1 + #define GDISP_VMT_NAME2(x) x##YourDriver2 +*/ + +#endif /* _GFXCONF_H */ diff --git a/demos/applications/notepad/main.c b/demos/applications/notepad/main.c index 7fec864f..e1b0e333 100644 --- a/demos/applications/notepad/main.c +++ b/demos/applications/notepad/main.c @@ -20,8 +20,7 @@ #include "ch.h" #include "hal.h" -#include "gdisp.h" -#include "touchscreen.h" +#include "gfx.h" #define COLOR_SIZE 20 #define PEN_SIZE 20 @@ -36,25 +35,9 @@ #define DRAW_AREA(x, y) (x >= PEN_SIZE + OFFSET + 3 && x <= gdispGetWidth() && \ y >= COLOR_SIZE + OFFSET + 3 && y <= gdispGetHeight()) -static const SPIConfig spicfg = { - NULL, - TP_CS_PORT, - TP_CS, - /* SPI_CR1_BR_2 | */ SPI_CR1_BR_1 | SPI_CR1_BR_0, -}; - -TouchscreenDriver TOUCHPADD1 = { - &SPID1, - &spicfg, - TP_IRQ_PORT, - TP_IRQ, - TRUE -}; - void drawScreen(void) { char *msg = "ChibiOS/GFX"; - gdispSetOrientation(GDISP_ROTATE_90); gdispClear(White); gdispDrawString(gdispGetWidth()-gdispGetStringWidth(msg, &fontUI2Double)-3, 3, msg, &fontUI2Double, Black); @@ -74,8 +57,9 @@ void drawScreen(void) { gdispDrawString(OFFSET * 2, DRAW_PEN(5), "5", &fontLargeNumbers, Black); } +GEventMouse ev; + int main(void) { - volatile uint16_t x, y; color_t color = Black; uint16_t pen = 0; @@ -83,16 +67,17 @@ int main(void) { chSysInit(); gdispInit(); - tsInit(&TOUCHPADD1); + ginputGetMouse(0); drawScreen(); while (TRUE) { - x = tsReadX(); - y = tsReadY(); + ginputGetMouseStatus(0, &ev); + if (!(ev->current_buttons & GINPUT_MOUSE_BTN_LEFT)) + continue; /* inside color box ? */ - if(y >= OFFSET && y <= COLOR_SIZE) { + if(ev->y >= OFFSET && ev->y <= COLOR_SIZE) { if(GET_COLOR(0)) color = Black; else if(GET_COLOR(1)) color = Red; else if(GET_COLOR(2)) color = Yellow; @@ -101,7 +86,7 @@ int main(void) { else if(GET_COLOR(5)) color = White; /* inside pen box ? */ - } else if(x >= OFFSET && x <= PEN_SIZE) { + } else if(ev->x >= OFFSET && ev->x <= PEN_SIZE) { if(GET_PEN(1)) pen = 0; else if(GET_PEN(2)) pen = 1; else if(GET_PEN(3)) pen = 2; @@ -109,11 +94,11 @@ int main(void) { else if(GET_PEN(5)) pen = 4; /* inside drawing area ? */ - } else if(DRAW_AREA(x, y)) { + } else if(DRAW_AREA(ev->x, ev->y)) { if(pen == 0) - gdispDrawPixel(x, y, color); + gdispDrawPixel(ev->x, ev->y, color); else - gdispFillCircle(x, y, pen, color); + gdispFillCircle(ev->x, ev->y, pen, color); } } } diff --git a/demos/modules/console/gfxconf.h b/demos/modules/console/gfxconf.h new file mode 100644 index 00000000..d3e99de4 --- /dev/null +++ b/demos/modules/console/gfxconf.h @@ -0,0 +1,69 @@ +/** + * This file has a different license to the rest of the GFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_GWIN TRUE +#define GFX_USE_GEVENT FALSE +#define GFX_USE_GTIMER FALSE +#define GFX_USE_GINPUT FALSE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_TEXT TRUE +#define GDISP_NEED_CIRCLE FALSE +#define GDISP_NEED_ELLIPSE FALSE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_MULTITHREAD FALSE +#define GDISP_NEED_ASYNC FALSE +#define GDISP_NEED_MSGAPI FALSE + +/* Features for the GWIN sub-system. */ +#define GWIN_NEED_BUTTON FALSE +#define GWIN_NEED_CONSOLE TRUE +#define GWIN_NEED_GRAPH FALSE + +/* Features for the GEVENT sub-system. */ +#define GEVENT_ASSERT_NO_RESOURCE FALSE + +/* Features for the GTIMER sub-system. */ +/* NONE */ + +/* Features for the GINPUT sub-system. */ +#define GINPUT_NEED_MOUSE FALSE +#define GINPUT_NEED_KEYBOARD FALSE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + +/* Optional Parameters for various sub-systems */ +/* + #define GDISP_MAX_FONT_HEIGHT 16 + #define GEVENT_MAXIMUM_SIZE 32 + #define GEVENT_MAX_SOURCE_LISTENERS 32 + #define GTIMER_THREAD_WORKAREA_SIZE 512 +*/ + +/* Optional Low Level Driver Definitions */ +/* + #define GDISP_USE_CUSTOM_BOARD FALSE + #define GDISP_SCREEN_WIDTH 320 + #define GDISP_SCREEN_HEIGHT 240 + #define GDISP_USE_FSMC + #define GDISP_USE_GPIO + #define GDISP_VMT_NAME1(x) x##YourDriver1 + #define GDISP_VMT_NAME2(x) x##YourDriver2 +*/ + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/console/main.c b/demos/modules/console/main.c index 962969eb..830c9d00 100644 --- a/demos/modules/console/main.c +++ b/demos/modules/console/main.c @@ -1,95 +1,90 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - 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 . -*/ - -/** - * Make sure you have the following stuff enabled in your halconf.h: - * - * #define GFX_USE_GDISP TRUE - * #define GFX_USE_GWIN TRUE - * #define GDISP_NEED_SCROLL TRUE (optional but recommended) - * #define GDISP_NEED_CLIP TRUE (optional but recommended) - * #define GWIN_NEED_CONSOLE TRUE - */ - -#include "ch.h" -#include "hal.h" -#include "chprintf.h" -#include "gdisp.h" -#include "gwin.h" - -/* The handles for our three consoles */ -GHandle GW1, GW2, GW3; - -/* The streams for our three consoles */ -BaseSequentialStream *S1, *S2, *S3; - -int main(void) { - uint8_t i; - - halInit(); - chSysInit(); - - /* initialize and clear the display */ - gdispInit(); - gdispClear(Black); - - /* create the three console windows and set a font for each */ - GW1 = gwinCreateConsole(NULL, 0, 0, gdispGetWidth(), gdispGetHeight()/2, &fontUI2Double); - GW2 = gwinCreateConsole(NULL, 0, gdispGetHeight()/2, gdispGetWidth()/2, gdispGetHeight(), &fontSmall); - GW3 = gwinCreateConsole(NULL, gdispGetWidth()/2, gdispGetHeight()/2, gdispGetWidth(), gdispGetHeight(), &fontSmall); - - /* Set the fore- and background colors for each console */ - gwinSetColor(GW1, Green); - gwinSetBgColor(GW1, Black); - gwinSetColor(GW2, White); - gwinSetBgColor(GW2, Blue); - gwinSetColor(GW3, Black); - gwinSetBgColor(GW3, Red); - - /* clear all console windows - to set background */ - gwinClear(GW1); - gwinClear(GW2); - gwinClear(GW3); - - /* receive the stream pointers of each console */ - S1 = gwinGetConsoleStream(GW1); - S2 = gwinGetConsoleStream(GW2); - S3 = gwinGetConsoleStream(GW3); - - /* Output some data on the first console */ - for(i = 0; i < 10; i++) { - chprintf(S1, "Hello ChibiOS/GFX!\r\n"); - } - - /* Output some data on the second console */ - for(i = 0; i < 16; i++) { - chprintf(S2, "Message Nr.: %d\r\n", i+1); - } - - /* Output some data on the third console */ - for(i = 0; i < 18; i++) { - chprintf(S3, "Message Nr.: %d\r\n", i+1); - } - - while(TRUE) { - chThdSleepMilliseconds(500); - } -} - +/* + ChibiOS/GFX - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + 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 . +*/ + +/** + * The following stuff is optional in your gfxconf.h: + * + * #define GDISP_NEED_SCROLL TRUE (optional but recommended if your GDISP driver supports it) + */ + +#include "ch.h" +#include "hal.h" +#include "chprintf.h" +#include "gfx.h" + +/* The handles for our three consoles */ +GHandle GW1, GW2, GW3; + +/* The streams for our three consoles */ +BaseSequentialStream *S1, *S2, *S3; + +int main(void) { + uint8_t i; + + halInit(); + chSysInit(); + + /* initialize and clear the display */ + gdispInit(); + gdispClear(Black); + + /* create the three console windows and set a font for each */ + GW1 = gwinCreateConsole(NULL, 0, 0, gdispGetWidth(), gdispGetHeight()/2, &fontUI2Double); + GW2 = gwinCreateConsole(NULL, 0, gdispGetHeight()/2, gdispGetWidth()/2, gdispGetHeight(), &fontSmall); + GW3 = gwinCreateConsole(NULL, gdispGetWidth()/2, gdispGetHeight()/2, gdispGetWidth(), gdispGetHeight(), &fontSmall); + + /* Set the fore- and background colors for each console */ + gwinSetColor(GW1, Green); + gwinSetBgColor(GW1, Black); + gwinSetColor(GW2, White); + gwinSetBgColor(GW2, Blue); + gwinSetColor(GW3, Black); + gwinSetBgColor(GW3, Red); + + /* clear all console windows - to set background */ + gwinClear(GW1); + gwinClear(GW2); + gwinClear(GW3); + + /* receive the stream pointers of each console */ + S1 = gwinGetConsoleStream(GW1); + S2 = gwinGetConsoleStream(GW2); + S3 = gwinGetConsoleStream(GW3); + + /* Output some data on the first console */ + for(i = 0; i < 10; i++) { + chprintf(S1, "Hello ChibiOS/GFX!\r\n"); + } + + /* Output some data on the second console */ + for(i = 0; i < 16; i++) { + chprintf(S2, "Message Nr.: %d\r\n", i+1); + } + + /* Output some data on the third console */ + for(i = 0; i < 18; i++) { + chprintf(S3, "Message Nr.: %d\r\n", i+1); + } + + while(TRUE) { + chThdSleepMilliseconds(500); + } +} + diff --git a/demos/modules/ginput_touch_driver_test/gfxconf.h b/demos/modules/ginput_touch_driver_test/gfxconf.h new file mode 100644 index 00000000..a6d40f06 --- /dev/null +++ b/demos/modules/ginput_touch_driver_test/gfxconf.h @@ -0,0 +1,69 @@ +/** + * This file has a different license to the rest of the GFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_GWIN TRUE +#define GFX_USE_GEVENT TRUE +#define GFX_USE_GTIMER TRUE +#define GFX_USE_GINPUT TRUE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_TEXT TRUE +#define GDISP_NEED_CIRCLE FALSE +#define GDISP_NEED_ELLIPSE FALSE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_MULTITHREAD TRUE +#define GDISP_NEED_ASYNC FALSE +#define GDISP_NEED_MSGAPI FALSE + +/* Features for the GWIN sub-system. */ +#define GWIN_NEED_BUTTON TRUE +#define GWIN_NEED_CONSOLE TRUE +#define GWIN_NEED_GRAPH FALSE + +/* Features for the GEVENT sub-system. */ +#define GEVENT_ASSERT_NO_RESOURCE FALSE + +/* Features for the GTIMER sub-system. */ +/* NONE */ + +/* Features for the GINPUT sub-system. */ +#define GINPUT_NEED_MOUSE TRUE +#define GINPUT_NEED_KEYBOARD FALSE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + +/* Optional Parameters for various sub-systems */ +/* + #define GDISP_MAX_FONT_HEIGHT 16 + #define GEVENT_MAXIMUM_SIZE 32 + #define GEVENT_MAX_SOURCE_LISTENERS 32 + #define GTIMER_THREAD_WORKAREA_SIZE 512 +*/ + +/* Optional Low Level Driver Definitions */ +/* + #define GDISP_USE_CUSTOM_BOARD FALSE + #define GDISP_SCREEN_WIDTH 320 + #define GDISP_SCREEN_HEIGHT 240 + #define GDISP_USE_FSMC + #define GDISP_USE_GPIO + #define GDISP_VMT_NAME1(x) x##YourDriver1 + #define GDISP_VMT_NAME2(x) x##YourDriver2 +*/ + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/ginput_touch_driver_test/main.c b/demos/modules/ginput_touch_driver_test/main.c index 78f29f86..d8fe1739 100644 --- a/demos/modules/ginput_touch_driver_test/main.c +++ b/demos/modules/ginput_touch_driver_test/main.c @@ -18,30 +18,10 @@ along with this program. If not, see . */ -/* - * Make sure you have the following enabled in your halconf.h: - * - * #define GFX_USE_GDISP TRUE - * #define GFX_USE_GINPUT TRUE - * #define GFX_USE_GEVENT TRUE - * #define GFX_USE_GTIMER TRUE - * #define GFX_USE_GWIN TRUE - * - * #define GWIN_NEED_CONSOLE TRUE - * #define GWIN_NEED_BUTTON TRUE - * - * #define GINPUT_NEED_MOUSE TRUE - * #define GINPUT_NEED_TOUCH TRUE - * - * #define GDISP_NEED_CLIP TRUE - */ - #include "ch.h" #include "hal.h" #include "chprintf.h" -#include "gdisp.h" -#include "ginput.h" -#include "gwin.h" +#include "gfx.h" static GConsoleObject gc; static GButtonObject gNext; diff --git a/demos/modules/graph/gfxconf.h b/demos/modules/graph/gfxconf.h new file mode 100644 index 00000000..23a675b9 --- /dev/null +++ b/demos/modules/graph/gfxconf.h @@ -0,0 +1,69 @@ +/** + * This file has a different license to the rest of the GFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_GWIN TRUE +#define GFX_USE_GEVENT FALSE +#define GFX_USE_GTIMER FALSE +#define GFX_USE_GINPUT FALSE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_TEXT FALSE +#define GDISP_NEED_CIRCLE TRUE +#define GDISP_NEED_ELLIPSE FALSE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_MULTITHREAD FALSE +#define GDISP_NEED_ASYNC FALSE +#define GDISP_NEED_MSGAPI FALSE + +/* Features for the GWIN sub-system. */ +#define GWIN_NEED_BUTTON FALSE +#define GWIN_NEED_CONSOLE FALSE +#define GWIN_NEED_GRAPH TRUE + +/* Features for the GEVENT sub-system. */ +#define GEVENT_ASSERT_NO_RESOURCE FALSE + +/* Features for the GTIMER sub-system. */ +/* NONE */ + +/* Features for the GINPUT sub-system. */ +#define GINPUT_NEED_MOUSE FALSE +#define GINPUT_NEED_KEYBOARD FALSE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + +/* Optional Parameters for various sub-systems */ +/* + #define GDISP_MAX_FONT_HEIGHT 16 + #define GEVENT_MAXIMUM_SIZE 32 + #define GEVENT_MAX_SOURCE_LISTENERS 32 + #define GTIMER_THREAD_WORKAREA_SIZE 512 +*/ + +/* Optional Low Level Driver Definitions */ +/* + #define GDISP_USE_CUSTOM_BOARD FALSE + #define GDISP_SCREEN_WIDTH 320 + #define GDISP_SCREEN_HEIGHT 240 + #define GDISP_USE_FSMC + #define GDISP_USE_GPIO + #define GDISP_VMT_NAME1(x) x##YourDriver1 + #define GDISP_VMT_NAME2(x) x##YourDriver2 +*/ + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/graph/main.c b/demos/modules/graph/main.c new file mode 100644 index 00000000..bd2da2f6 --- /dev/null +++ b/demos/modules/graph/main.c @@ -0,0 +1,54 @@ +#include "ch.h" +#include "hal.h" +#include "gfx.h" +#include "math.h" + +int data[5][2] = { + { 0, 0 }, + { 10, 10 }, + { 20, 20 }, + { 30, 30 }, + { 40, 40 } +}; + +GGraphObject g; + +GGraphStyle GraphStyle2 = { + { GGRAPH_POINT_DOT, 0, Green }, // point + { GGRAPH_LINE_DOT, 2, Gray }, // line + { GGRAPH_LINE_SOLID, 0, White }, // x axis + { GGRAPH_LINE_SOLID, 0, White }, // y axis + { GGRAPH_LINE_NONE, 0, White, 0 }, // x grid + { GGRAPH_LINE_NONE, 0, White, 0 }, // y grid + GWIN_GRAPH_STYLE_XAXIS_ARROWS|GWIN_GRAPH_STYLE_YAXIS_ARROWS // flags +}; + +int main(void) { + GHandle gh; + uint16_t i; + + halInit(); + chSysInit(); + + gdispInit(); + gdispClear(Black); + + gh = gwinCreateGraph(0, 0, gdispGetWidth(), gdispGetHeight()); + + gwinGraphSetOrigin(gh, 150, 150); + gwinGraphDrawAxis(gh); + + for(i = 0; i < 2500; i++) + gwinGraphDrawPoint(gh, i-170, 80*sin(2*0.2*M_PI*i/180)); + + gwinGraphStartSet(gh); + gwinGraphSetStyle(gh, &GraphStyle2); + + for(i = 0; i < 2500; i++) + gwinGraphDrawPoint(gh, i/5-150, 95*sin(2*0.2*M_PI*i/180)); + + while(TRUE) { + chThdSleepMilliseconds(100); + } +} + diff --git a/demos/modules/gtimer/gfxconf.h b/demos/modules/gtimer/gfxconf.h new file mode 100644 index 00000000..c0f24a7a --- /dev/null +++ b/demos/modules/gtimer/gfxconf.h @@ -0,0 +1,69 @@ +/** + * This file has a different license to the rest of the GFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP FALSE +#define GFX_USE_GWIN FALSE +#define GFX_USE_GEVENT FALSE +#define GFX_USE_GTIMER TRUE +#define GFX_USE_GINPUT FALSE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_TEXT TRUE +#define GDISP_NEED_CIRCLE FALSE +#define GDISP_NEED_ELLIPSE FALSE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_MULTITHREAD FALSE +#define GDISP_NEED_ASYNC FALSE +#define GDISP_NEED_MSGAPI FALSE + +/* Features for the GWIN sub-system. */ +#define GWIN_NEED_BUTTON FALSE +#define GWIN_NEED_CONSOLE FALSE +#define GWIN_NEED_GRAPH FALSE + +/* Features for the GEVENT sub-system. */ +#define GEVENT_ASSERT_NO_RESOURCE FALSE + +/* Features for the GTIMER sub-system. */ +/* NONE */ + +/* Features for the GINPUT sub-system. */ +#define GINPUT_NEED_MOUSE FALSE +#define GINPUT_NEED_KEYBOARD FALSE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + +/* Optional Parameters for various sub-systems */ +/* + #define GDISP_MAX_FONT_HEIGHT 16 + #define GEVENT_MAXIMUM_SIZE 32 + #define GEVENT_MAX_SOURCE_LISTENERS 32 + #define GTIMER_THREAD_WORKAREA_SIZE 512 +*/ + +/* Optional Low Level Driver Definitions */ +/* + #define GDISP_USE_CUSTOM_BOARD FALSE + #define GDISP_SCREEN_WIDTH 320 + #define GDISP_SCREEN_HEIGHT 240 + #define GDISP_USE_FSMC + #define GDISP_USE_GPIO + #define GDISP_VMT_NAME1(x) x##YourDriver1 + #define GDISP_VMT_NAME2(x) x##YourDriver2 +*/ + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/gtimer/main.c b/demos/modules/gtimer/main.c index bb991edc..ae7c2c92 100644 --- a/demos/modules/gtimer/main.c +++ b/demos/modules/gtimer/main.c @@ -1,65 +1,59 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - 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 . -*/ - -/** - * Make sure you have enabled the GTimer module in your halconf.h: - * - * #define GFX_USE_GTIMER TRUE - */ - -#include "ch.h" -#include "hal.h" -#include "gtimer.h" - -GTimer GT1, GT2; - -void callback1(void* arg) { - (void)arg; - - palTogglePad(GPIOD, GPIOD_LED3); -} - -void callback2(void* arg) { - (void)arg; - - palSetPad(GPIOD, GPIOD_LED4); -} - -int main(void) { - halInit(); - chSysInit(); - - /* initialize the timers */ - gtimerInit(>1); - gtimerInit(>2); - - /* continious mode - callback1() called without any argument every 250ms */ - gtimerStart(>1, callback1, NULL, TRUE, 250); - - /* single shot mode - callback2() called without any argument once after 1s */ - gtimerStart(>2, callback2, NULL, FALSE, 1000); - - while(TRUE) { - chThdSleepMilliseconds(500); - } - - return 0; -} - +/* + ChibiOS/GFX - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + 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 . +*/ + +#include "ch.h" +#include "hal.h" +#include "gfx.h" + +GTimer GT1, GT2; + +void callback1(void* arg) { + (void)arg; + + palTogglePad(GPIOD, GPIOD_LED3); +} + +void callback2(void* arg) { + (void)arg; + + palSetPad(GPIOD, GPIOD_LED4); +} + +int main(void) { + halInit(); + chSysInit(); + + /* initialize the timers */ + gtimerInit(>1); + gtimerInit(>2); + + /* continious mode - callback1() called without any argument every 250ms */ + gtimerStart(>1, callback1, NULL, TRUE, 250); + + /* single shot mode - callback2() called without any argument once after 1s */ + gtimerStart(>2, callback2, NULL, FALSE, 1000); + + while(TRUE) { + chThdSleepMilliseconds(500); + } + + return 0; +} + diff --git a/demos/modules/window/gfxconf.h b/demos/modules/window/gfxconf.h new file mode 100644 index 00000000..80c4b327 --- /dev/null +++ b/demos/modules/window/gfxconf.h @@ -0,0 +1,69 @@ +/** + * This file has a different license to the rest of the GFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_GWIN TRUE +#define GFX_USE_GEVENT FALSE +#define GFX_USE_GTIMER FALSE +#define GFX_USE_GINPUT FALSE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_TEXT TRUE +#define GDISP_NEED_CIRCLE TRUE +#define GDISP_NEED_ELLIPSE FALSE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_MULTITHREAD FALSE +#define GDISP_NEED_ASYNC FALSE +#define GDISP_NEED_MSGAPI FALSE + +/* Features for the GWIN sub-system. */ +#define GWIN_NEED_BUTTON FALSE +#define GWIN_NEED_CONSOLE FALSE +#define GWIN_NEED_GRAPH FALSE + +/* Features for the GEVENT sub-system. */ +#define GEVENT_ASSERT_NO_RESOURCE FALSE + +/* Features for the GTIMER sub-system. */ +/* NONE */ + +/* Features for the GINPUT sub-system. */ +#define GINPUT_NEED_MOUSE FALSE +#define GINPUT_NEED_KEYBOARD FALSE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + +/* Optional Parameters for various sub-systems */ +/* + #define GDISP_MAX_FONT_HEIGHT 16 + #define GEVENT_MAXIMUM_SIZE 32 + #define GEVENT_MAX_SOURCE_LISTENERS 32 + #define GTIMER_THREAD_WORKAREA_SIZE 512 +*/ + +/* Optional Low Level Driver Definitions */ +/* + #define GDISP_USE_CUSTOM_BOARD FALSE + #define GDISP_SCREEN_WIDTH 320 + #define GDISP_SCREEN_HEIGHT 240 + #define GDISP_USE_FSMC + #define GDISP_USE_GPIO + #define GDISP_VMT_NAME1(x) x##YourDriver1 + #define GDISP_VMT_NAME2(x) x##YourDriver2 +*/ + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/window/main.c b/demos/modules/window/main.c index c70c94db..88f71be3 100644 --- a/demos/modules/window/main.c +++ b/demos/modules/window/main.c @@ -1,72 +1,62 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - 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 . -*/ - -/** - * Make sure you have the following stuff enabled in your halconf.h: - * - * #define GFX_USE_GDISP TRUE - * #define GDISP_NEED_SCROLL TRUE - * #define GDISP_NEED_CLIP TRUE (optional but recommended) - */ - - -#include "ch.h" -#include "hal.h" -#include "gdisp.h" -#include "gwin.h" - -/* The handles for our two Windows */ -GHandle GW1, GW2; - -int main(void) { - halInit(); - chSysInit(); - - /* Initialize and clear the display */ - gdispInit(); - gdispClear(Lime); - - /* Create two windows */ - GW1 = gwinCreateWindow(NULL, 20, 10, 200, 150); - GW2 = gwinCreateWindow(NULL, 50, 190, 150, 100); - - /* Set fore- and background colors for both windows */ - gwinSetColor(GW1, Black); - gwinSetBgColor(GW1, White); - gwinSetColor(GW2, White); - gwinSetBgColor(GW2, Blue); - - /* Clear both windows - to set background color */ - gwinClear(GW1); - gwinClear(GW2); - - /* - * Draw two filled circles at the same coordinate - * of each window to demonstrate the relative coordinates - * of windows - */ - gwinFillCircle(GW1, 20, 20, 15); - gwinFillCircle(GW2, 20, 20, 15); - - while(TRUE) { - chThdSleepMilliseconds(500); - } -} - +/* + ChibiOS/GFX - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + 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 . +*/ + +#include "ch.h" +#include "hal.h" +#include "gfx.h" + +/* The handles for our two Windows */ +GHandle GW1, GW2; + +int main(void) { + halInit(); + chSysInit(); + + /* Initialize and clear the display */ + gdispInit(); + gdispClear(Lime); + + /* Create two windows */ + GW1 = gwinCreateWindow(NULL, 20, 10, 200, 150); + GW2 = gwinCreateWindow(NULL, 50, 190, 150, 100); + + /* Set fore- and background colors for both windows */ + gwinSetColor(GW1, Black); + gwinSetBgColor(GW1, White); + gwinSetColor(GW2, White); + gwinSetBgColor(GW2, Blue); + + /* Clear both windows - to set background color */ + gwinClear(GW1); + gwinClear(GW2); + + /* + * Draw two filled circles at the same coordinate + * of each window to demonstrate the relative coordinates + * of windows + */ + gwinFillCircle(GW1, 20, 20, 15); + gwinFillCircle(GW2, 20, 20, 15); + + while(TRUE) { + chThdSleepMilliseconds(500); + } +} + -- cgit v1.2.3