diff --git a/boards/base/Linux/example/Makefile b/boards/base/Linux/example/Makefile index 1d59fe43..e454a811 100644 --- a/boards/base/Linux/example/Makefile +++ b/boards/base/Linux/example/Makefile @@ -52,9 +52,11 @@ include ${GFXLIB}/gfx.mk include ${GFXLIB}/boards/base/Linux/board.mk # Where is our source code - alter these for your project. -MYFILES = $(GFXLIB)/demos/modules/gdisp/basics -MYCSRC = $(MYFILES)/main.c -MYDEFS = +# Either just include the demo makefile or add your own definitions +include $(GFXLIB)/demos/modules/gdisp/basics/demo.mk +#MYFILES = my-project-directory +#MYCSRC = $(MYFILES)/main.c +#MYDEFS = # List all user C define here, like -D_DEBUG=1 UDEFS = $(MYDEFS) $(GFXDEFS) diff --git a/boards/base/Mikromedia-STM32-M4-ILI9341/example/Makefile b/boards/base/Mikromedia-STM32-M4-ILI9341/example/Makefile index c5f88f61..1c314543 100644 --- a/boards/base/Mikromedia-STM32-M4-ILI9341/example/Makefile +++ b/boards/base/Mikromedia-STM32-M4-ILI9341/example/Makefile @@ -82,8 +82,11 @@ include $(GFXLIB)/boards/base/Mikromedia-STM32-M4-ILI9341/ChibiOS_Board/board.mk include $(GFXLIB)/gfx.mk # Where is our source code - alter these for your project. -MYFILES = $(GFXLIB)/demos/modules/gdisp/basics -MYCSRC = $(MYFILES)/main.c +# Either just include the demo makefile or add your own definitions +include $(GFXLIB)/demos/modules/gdisp/basics/demo.mk +#MYFILES = my-project-directory +#MYCSRC = $(MYFILES)/main.c +#MYDEFS = # C sources that can be compiled in ARM or THUMB mode depending on the global # setting. diff --git a/boards/base/Olimex-SAM7EX256-GE8/example/Makefile b/boards/base/Olimex-SAM7EX256-GE8/example/Makefile index d6161d5e..b7b4da1c 100644 --- a/boards/base/Olimex-SAM7EX256-GE8/example/Makefile +++ b/boards/base/Olimex-SAM7EX256-GE8/example/Makefile @@ -64,8 +64,11 @@ include $(GFXLIB)/gfx.mk include $(GFXLIB)/boards/base/Olimex-SAM7EX256-GE8/board.mk # Where is our source code - alter these for your project. -MYFILES = $(GFXLIB)/demos/modules/gdisp/basics -MYCSRC = $(MYFILES)/main.c +# Either just include the demo makefile or add your own definitions +include $(GFXLIB)/demos/modules/gdisp/basics/demo.mk +#MYFILES = my-project-directory +#MYCSRC = $(MYFILES)/main.c +#MYDEFS = # C sources that can be compiled in ARM or THUMB mode depending on the global # setting. diff --git a/boards/base/Win32/example/Makefile b/boards/base/Win32/example/Makefile index 5badd338..94a99caf 100644 --- a/boards/base/Win32/example/Makefile +++ b/boards/base/Win32/example/Makefile @@ -76,8 +76,11 @@ else endif # Where is our source code - alter these for your project. -MYFILES = $(GFXLIB)/demos/modules/gdisp/basics -MYCSRC = $(MYFILES)/main.c +# Either just include the demo makefile or add your own definitions +include $(GFXLIB)/demos/modules/gdisp/basics/demo.mk +#MYFILES = my-project-directory +#MYCSRC = $(MYFILES)/main.c +#MYDEFS = # List C source files here SRC += ${GFXSRC} \ diff --git a/demos/3rdparty/bubbles/demo.mk b/demos/3rdparty/bubbles/demo.mk new file mode 100644 index 00000000..ca577508 --- /dev/null +++ b/demos/3rdparty/bubbles/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/3rdparty/bubbles +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/3rdparty/bubbles/main.c b/demos/3rdparty/bubbles/main.c index 62ef2830..f167b536 100644 --- a/demos/3rdparty/bubbles/main.c +++ b/demos/3rdparty/bubbles/main.c @@ -60,7 +60,7 @@ void matrix (int16_t xyz[3][N], color_t col[N]) xyz[0][i] = x; xyz[1][i] = y; - d = sqrtf(x * x + y * y); /* originally a fastsqrt() call */ + d = sqrt(x * x + y * y); /* originally a fastsqrt() call */ s = sine[(t * 30) % SCALE] + SCALE; xyz[2][i] = sine[(d + s) % SCALE] * sine[(t * 10) % SCALE] / SCALE / 2; @@ -151,11 +151,11 @@ int main (void) gfxInit(); - chThdSleepMilliseconds (10); + gfxSleepMilliseconds (10); gdispClear (background); /* glitches.. */ - chThdSleepMilliseconds (10); + gfxSleepMilliseconds (10); gdispClear (background); /* glitches.. */ - chThdSleepMilliseconds (10); + gfxSleepMilliseconds (10); gdispClear (background); /* glitches.. */ width = (uint16_t)gdispGetWidth(); diff --git a/demos/3rdparty/doom/demo.mk b/demos/3rdparty/doom/demo.mk new file mode 100644 index 00000000..78faf4c2 --- /dev/null +++ b/demos/3rdparty/doom/demo.mk @@ -0,0 +1,65 @@ +DEMODIR = $(GFXLIB)/demos/3rdparty/doom +GFXINC += $(DEMODIR) +GFXSRC += \ + $(DEMODIR)/d_main.c \ + $(DEMODIR)/i_main.c \ + $(DEMODIR)/i_system.c \ + $(DEMODIR)/i_sound.c \ + $(DEMODIR)/i_video.c \ + $(DEMODIR)/i_net.c \ + $(DEMODIR)/doomdef.c \ + $(DEMODIR)/doomstat.c \ + $(DEMODIR)/dstrings.c \ + $(DEMODIR)/tables.c \ + $(DEMODIR)/f_finale.c \ + $(DEMODIR)/f_wipe.c \ + $(DEMODIR)/d_net.c \ + $(DEMODIR)/d_items.c \ + $(DEMODIR)/g_game.c \ + $(DEMODIR)/m_menu.c \ + $(DEMODIR)/m_misc.c \ + $(DEMODIR)/m_argv.c \ + $(DEMODIR)/m_bbox.c \ + $(DEMODIR)/m_fixed.c \ + $(DEMODIR)/m_swap.c \ + $(DEMODIR)/m_cheat.c \ + $(DEMODIR)/m_random.c \ + $(DEMODIR)/am_map.c \ + $(DEMODIR)/p_ceilng.c \ + $(DEMODIR)/p_doors.c \ + $(DEMODIR)/p_enemy.c \ + $(DEMODIR)/p_floor.c \ + $(DEMODIR)/p_inter.c \ + $(DEMODIR)/p_lights.c \ + $(DEMODIR)/p_map.c \ + $(DEMODIR)/p_maputl.c \ + $(DEMODIR)/p_plats.c \ + $(DEMODIR)/p_pspr.c \ + $(DEMODIR)/p_setup.c \ + $(DEMODIR)/p_sight.c \ + $(DEMODIR)/p_spec.c \ + $(DEMODIR)/p_switch.c \ + $(DEMODIR)/p_mobj.c \ + $(DEMODIR)/p_telept.c \ + $(DEMODIR)/p_tick.c \ + $(DEMODIR)/p_saveg.c \ + $(DEMODIR)/p_user.c \ + $(DEMODIR)/r_bsp.c \ + $(DEMODIR)/r_data.c \ + $(DEMODIR)/r_draw.c \ + $(DEMODIR)/r_main.c \ + $(DEMODIR)/r_plane.c \ + $(DEMODIR)/r_segs.c \ + $(DEMODIR)/r_sky.c \ + $(DEMODIR)/r_things.c \ + $(DEMODIR)/w_wad.c \ + $(DEMODIR)/wi_stuff.c \ + $(DEMODIR)/v_video.c \ + $(DEMODIR)/st_lib.c \ + $(DEMODIR)/st_stuff.c \ + $(DEMODIR)/hu_stuff.c \ + $(DEMODIR)/hu_lib.c \ + $(DEMODIR)/s_sound.c \ + $(DEMODIR)/z_zone.c \ + $(DEMODIR)/info.c \ + $(DEMODIR)/sounds.c diff --git a/demos/3rdparty/doom/doom.mk b/demos/3rdparty/doom/doom.mk deleted file mode 100644 index 6581f8c1..00000000 --- a/demos/3rdparty/doom/doom.mk +++ /dev/null @@ -1,64 +0,0 @@ -MYFILES = $(GFXLIB)/demos/3rdparty/doom -MYCSRC = \ - $(MYFILES)/d_main.c \ - $(MYFILES)/i_main.c \ - $(MYFILES)/i_system.c \ - $(MYFILES)/i_sound.c \ - $(MYFILES)/i_video.c \ - $(MYFILES)/i_net.c \ - $(MYFILES)/doomdef.c \ - $(MYFILES)/doomstat.c \ - $(MYFILES)/dstrings.c \ - $(MYFILES)/tables.c \ - $(MYFILES)/f_finale.c \ - $(MYFILES)/f_wipe.c \ - $(MYFILES)/d_net.c \ - $(MYFILES)/d_items.c \ - $(MYFILES)/g_game.c \ - $(MYFILES)/m_menu.c \ - $(MYFILES)/m_misc.c \ - $(MYFILES)/m_argv.c \ - $(MYFILES)/m_bbox.c \ - $(MYFILES)/m_fixed.c \ - $(MYFILES)/m_swap.c \ - $(MYFILES)/m_cheat.c \ - $(MYFILES)/m_random.c \ - $(MYFILES)/am_map.c \ - $(MYFILES)/p_ceilng.c \ - $(MYFILES)/p_doors.c \ - $(MYFILES)/p_enemy.c \ - $(MYFILES)/p_floor.c \ - $(MYFILES)/p_inter.c \ - $(MYFILES)/p_lights.c \ - $(MYFILES)/p_map.c \ - $(MYFILES)/p_maputl.c \ - $(MYFILES)/p_plats.c \ - $(MYFILES)/p_pspr.c \ - $(MYFILES)/p_setup.c \ - $(MYFILES)/p_sight.c \ - $(MYFILES)/p_spec.c \ - $(MYFILES)/p_switch.c \ - $(MYFILES)/p_mobj.c \ - $(MYFILES)/p_telept.c \ - $(MYFILES)/p_tick.c \ - $(MYFILES)/p_saveg.c \ - $(MYFILES)/p_user.c \ - $(MYFILES)/r_bsp.c \ - $(MYFILES)/r_data.c \ - $(MYFILES)/r_draw.c \ - $(MYFILES)/r_main.c \ - $(MYFILES)/r_plane.c \ - $(MYFILES)/r_segs.c \ - $(MYFILES)/r_sky.c \ - $(MYFILES)/r_things.c \ - $(MYFILES)/w_wad.c \ - $(MYFILES)/wi_stuff.c \ - $(MYFILES)/v_video.c \ - $(MYFILES)/st_lib.c \ - $(MYFILES)/st_stuff.c \ - $(MYFILES)/hu_stuff.c \ - $(MYFILES)/hu_lib.c \ - $(MYFILES)/s_sound.c \ - $(MYFILES)/z_zone.c \ - $(MYFILES)/info.c \ - $(MYFILES)/sounds.c diff --git a/demos/3rdparty/notepad-2/demo.mk b/demos/3rdparty/notepad-2/demo.mk new file mode 100644 index 00000000..4fd08c23 --- /dev/null +++ b/demos/3rdparty/notepad-2/demo.mk @@ -0,0 +1,5 @@ +DEMODIR = $(GFXLIB)/demos/3rdparty/notepad-2 +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c \ + $(DEMODIR)/notepadApp.c \ + $(DEMODIR)/notepadCore.c diff --git a/demos/applications/mandelbrot/demo.mk b/demos/applications/mandelbrot/demo.mk new file mode 100644 index 00000000..e2be68d3 --- /dev/null +++ b/demos/applications/mandelbrot/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/applications/mandelbrot +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/applications/notepad/demo.mk b/demos/applications/notepad/demo.mk new file mode 100644 index 00000000..06c7808d --- /dev/null +++ b/demos/applications/notepad/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/applications/notepad +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/applications/notepad/gfxconf.h b/demos/applications/notepad/gfxconf.h index 7ffb22fa..b3920119 100644 --- a/demos/applications/notepad/gfxconf.h +++ b/demos/applications/notepad/gfxconf.h @@ -47,7 +47,6 @@ #define GDISP_NEED_CLIP TRUE #define GDISP_NEED_TEXT TRUE #define GDISP_NEED_CIRCLE TRUE -#define GDISP_NEED_CONTROL TRUE #define GDISP_NEED_MULTITHREAD TRUE /* Builtin Fonts */ diff --git a/demos/applications/notepad/main.c b/demos/applications/notepad/main.c index d2d53464..fb10e86b 100644 --- a/demos/applications/notepad/main.c +++ b/demos/applications/notepad/main.c @@ -79,7 +79,6 @@ int main(void) { gfxInit(); ginputGetMouse(0); - gdispSetOrientation(GDISP_ROTATE_90); drawScreen(); diff --git a/demos/benchmarks/demo.mk b/demos/benchmarks/demo.mk new file mode 100644 index 00000000..d6589586 --- /dev/null +++ b/demos/benchmarks/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/benchmarks +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gadc/demo.mk b/demos/modules/gadc/demo.mk new file mode 100644 index 00000000..d66445af --- /dev/null +++ b/demos/modules/gadc/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gadc +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c $(DEMODIR)/gwinosc.c diff --git a/demos/modules/gadc/gwinosc.c b/demos/modules/gadc/gwinosc.c index 4cc1fc3a..afa12bfc 100644 --- a/demos/modules/gadc/gwinosc.c +++ b/demos/modules/gadc/gwinosc.c @@ -36,7 +36,7 @@ #include "gwinosc.h" /* Include internal GWIN routines so we can build our own superset class */ -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" /* The size of our dynamically allocated audio buffer */ #define AUDIOBUFSZ 64*2 diff --git a/demos/modules/gaudin/demo.mk b/demos/modules/gaudin/demo.mk new file mode 100644 index 00000000..1b57f289 --- /dev/null +++ b/demos/modules/gaudin/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gaudin +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c $(DEMODIR)/gwinosc.c diff --git a/demos/modules/gaudin/gwinosc.c b/demos/modules/gaudin/gwinosc.c index 28a5cf69..43ef1385 100644 --- a/demos/modules/gaudin/gwinosc.c +++ b/demos/modules/gaudin/gwinosc.c @@ -43,7 +43,7 @@ #include "gwinosc.h" /* Include internal GWIN routines so we can build our own superset class */ -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" /* The size of our dynamically allocated audio buffer */ #define AUDIOBUFSZ 64*2 diff --git a/demos/modules/gdisp/basics/demo.mk b/demos/modules/gdisp/basics/demo.mk new file mode 100644 index 00000000..1d62403e --- /dev/null +++ b/demos/modules/gdisp/basics/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gdisp/basics +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gdisp/circles/demo.mk b/demos/modules/gdisp/circles/demo.mk new file mode 100644 index 00000000..89fb5e33 --- /dev/null +++ b/demos/modules/gdisp/circles/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gdisp/circles +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gdisp/fonts/demo.mk b/demos/modules/gdisp/fonts/demo.mk new file mode 100644 index 00000000..5422c3d8 --- /dev/null +++ b/demos/modules/gdisp/fonts/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gdisp/fonts +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gdisp/fonts_cyrillic/demo.mk b/demos/modules/gdisp/fonts_cyrillic/demo.mk new file mode 100644 index 00000000..84f9a1fc --- /dev/null +++ b/demos/modules/gdisp/fonts_cyrillic/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gdisp/fonts_cyrillic +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gdisp/images/demo.mk b/demos/modules/gdisp/images/demo.mk new file mode 100644 index 00000000..afa8001b --- /dev/null +++ b/demos/modules/gdisp/images/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gdisp/images +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gdisp/images_animated/demo.mk b/demos/modules/gdisp/images_animated/demo.mk new file mode 100644 index 00000000..7a478617 --- /dev/null +++ b/demos/modules/gdisp/images_animated/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gdisp/images_animated +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gdisp/multiple_displays/demo.mk b/demos/modules/gdisp/multiple_displays/demo.mk new file mode 100644 index 00000000..a8ebf468 --- /dev/null +++ b/demos/modules/gdisp/multiple_displays/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gdisp/multiple_displays +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gdisp/streaming/demo.mk b/demos/modules/gdisp/streaming/demo.mk new file mode 100644 index 00000000..b1c124fe --- /dev/null +++ b/demos/modules/gdisp/streaming/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gdisp/streaming +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gtimer/demo.mk b/demos/modules/gtimer/demo.mk new file mode 100644 index 00000000..6eebe93f --- /dev/null +++ b/demos/modules/gtimer/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gtimer +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/basic/demo.mk b/demos/modules/gwin/basic/demo.mk new file mode 100644 index 00000000..a5b7a8f2 --- /dev/null +++ b/demos/modules/gwin/basic/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/basic +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/button/demo.mk b/demos/modules/gwin/button/demo.mk new file mode 100644 index 00000000..5b8cd2a5 --- /dev/null +++ b/demos/modules/gwin/button/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/button +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/button/gfxconf.h b/demos/modules/gwin/button/gfxconf.h index 5376bd52..eba3f4ef 100644 --- a/demos/modules/gwin/button/gfxconf.h +++ b/demos/modules/gwin/button/gfxconf.h @@ -48,6 +48,7 @@ #define GDISP_NEED_CLIP TRUE #define GDISP_NEED_CIRCLE TRUE #define GDISP_NEED_TEXT TRUE +#define GDISP_NEED_CONTROL TRUE /* GDISP fonts to include */ #define GDISP_INCLUDE_FONT_UI2 TRUE diff --git a/demos/modules/gwin/button/main.c b/demos/modules/gwin/button/main.c index 6ec8a287..6349ca09 100644 --- a/demos/modules/gwin/button/main.c +++ b/demos/modules/gwin/button/main.c @@ -54,10 +54,16 @@ static void createWidgets(void) { int main(void) { GEvent* pe; + static const orientation_t orients[] = { GDISP_ROTATE_0, GDISP_ROTATE_90, GDISP_ROTATE_180, GDISP_ROTATE_270 }; + unsigned which; // Initialize the display gfxInit(); + // We are currently at GDISP_ROTATE_0 + which = 0; + gdispSetOrientation(orients[which]); + // Set the widget defaults gwinSetDefaultFont(gdispOpenFont("UI2")); gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); @@ -81,7 +87,15 @@ int main(void) { case GEVENT_GWIN_BUTTON: if (((GEventGWinButton*)pe)->button == ghButton1) { // Our button has been pressed - printf("Button clicked\r\n"); + if (++which >= sizeof(orients)/sizeof(orients[0])) + which = 0; + + // Setting the orientation during run-time is a bit naughty particularly with + // GWIN windows. In this case however we know that the button is in the top-left + // corner which should translate safely into any orientation. + gdispSetOrientation(orients[which]); + gdispClear(White); + gwinRedrawDisplay(GDISP, FALSE); } break; diff --git a/demos/modules/gwin/checkbox/demo.mk b/demos/modules/gwin/checkbox/demo.mk new file mode 100644 index 00000000..8e6edf46 --- /dev/null +++ b/demos/modules/gwin/checkbox/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/checkbox +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/checkbox/main.c b/demos/modules/gwin/checkbox/main.c index 51f96518..b6cef40b 100644 --- a/demos/modules/gwin/checkbox/main.c +++ b/demos/modules/gwin/checkbox/main.c @@ -81,7 +81,7 @@ int main(void) { case GEVENT_GWIN_CHECKBOX: if (((GEventGWinCheckbox*)pe)->checkbox == ghCheckbox1) { // The state of our checkbox has changed - printf("Checkbox state: %d\r\n", ((GEventGWinCheckbox*)pe)->isChecked); + //printf("Checkbox state: %d\r\n", ((GEventGWinCheckbox*)pe)->isChecked); } break; diff --git a/demos/modules/gwin/console/demo.mk b/demos/modules/gwin/console/demo.mk new file mode 100644 index 00000000..09851d35 --- /dev/null +++ b/demos/modules/gwin/console/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/console +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/graph/demo.mk b/demos/modules/gwin/graph/demo.mk new file mode 100644 index 00000000..c602c83e --- /dev/null +++ b/demos/modules/gwin/graph/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/graph +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/graph/gfxconf.h b/demos/modules/gwin/graph/gfxconf.h index c09bfc6e..bc65beea 100644 --- a/demos/modules/gwin/graph/gfxconf.h +++ b/demos/modules/gwin/graph/gfxconf.h @@ -39,6 +39,7 @@ /* GFX sub-systems to turn on */ #define GFX_USE_GDISP TRUE #define GFX_USE_GWIN TRUE +#define GFX_USE_GMISC TRUE /* Features for the GDISP sub-system. */ #define GDISP_NEED_VALIDATION TRUE @@ -48,5 +49,8 @@ #define GWIN_NEED_WINDOWMANAGER TRUE #define GWIN_NEED_GRAPH TRUE +/* Features for the GMISC subsystem. */ +#define GMISC_NEED_FASTTRIG TRUE + #endif /* _GFXCONF_H */ diff --git a/demos/modules/gwin/list/demo.mk b/demos/modules/gwin/list/demo.mk new file mode 100644 index 00000000..22b06b09 --- /dev/null +++ b/demos/modules/gwin/list/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/list +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/list/gfxconf.h b/demos/modules/gwin/list/gfxconf.h index ebd35f05..505ff2cc 100644 --- a/demos/modules/gwin/list/gfxconf.h +++ b/demos/modules/gwin/list/gfxconf.h @@ -43,6 +43,7 @@ #define GWIN_NEED_WINDOWMANAGER TRUE #define GWIN_NEED_WIDGET TRUE + #define GWIN_NEED_LABEL TRUE #define GWIN_NEED_LIST TRUE #define GWIN_NEED_LIST_IMAGES TRUE diff --git a/demos/modules/gwin/progressbar/demo.mk b/demos/modules/gwin/progressbar/demo.mk new file mode 100644 index 00000000..dffd40d7 --- /dev/null +++ b/demos/modules/gwin/progressbar/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/progressbar +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/radio/demo.mk b/demos/modules/gwin/radio/demo.mk new file mode 100644 index 00000000..e9e61456 --- /dev/null +++ b/demos/modules/gwin/radio/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/radio +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/radio/main.c b/demos/modules/gwin/radio/main.c index 9287dcf9..a3c493c3 100644 --- a/demos/modules/gwin/radio/main.c +++ b/demos/modules/gwin/radio/main.c @@ -101,7 +101,7 @@ int main(void) { switch(pe->type) { case GEVENT_GWIN_RADIO: - printf("group: %u radio: %s\n", ((GEventGWinRadio *)pe)->group, gwinGetText(((GEventGWinRadio *)pe)->radio)); + //printf("group: %u radio: %s\n", ((GEventGWinRadio *)pe)->group, gwinGetText(((GEventGWinRadio *)pe)->radio)); break; default: diff --git a/demos/modules/gwin/slider/demo.mk b/demos/modules/gwin/slider/demo.mk new file mode 100644 index 00000000..3e358dfa --- /dev/null +++ b/demos/modules/gwin/slider/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/slider +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/slider/main.c b/demos/modules/gwin/slider/main.c index 6e72b447..0897f1f3 100644 --- a/demos/modules/gwin/slider/main.c +++ b/demos/modules/gwin/slider/main.c @@ -77,7 +77,7 @@ int main(void) { switch(pe->type) { case GEVENT_GWIN_SLIDER: - printf("Slider %s = %d\n", gwinGetText(((GEventGWinSlider *)pe)->slider), ((GEventGWinSlider *)pe)->position); + //printf("Slider %s = %d\n", gwinGetText(((GEventGWinSlider *)pe)->slider), ((GEventGWinSlider *)pe)->position); break; default: diff --git a/demos/modules/gwin/widgets/demo.mk b/demos/modules/gwin/widgets/demo.mk new file mode 100644 index 00000000..2e70fa4d --- /dev/null +++ b/demos/modules/gwin/widgets/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/widgets +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/drivers/gadc/AT91SAM7/gadc_lld.c b/drivers/gadc/AT91SAM7/gadc_lld.c index 78a60109..f18f2717 100644 --- a/drivers/gadc/AT91SAM7/gadc_lld.c +++ b/drivers/gadc/AT91SAM7/gadc_lld.c @@ -18,7 +18,7 @@ #if GFX_USE_GADC -#include "gadc/lld/gadc_lld.h" +#include "src/gadc/driver.h" static ADCConversionGroup acg = { FALSE, // circular diff --git a/drivers/gaudin/Win32/gaudin_lld.c b/drivers/gaudin/Win32/gaudin_lld.c index dce4cad3..e798f4ef 100644 --- a/drivers/gaudin/Win32/gaudin_lld.c +++ b/drivers/gaudin/Win32/gaudin_lld.c @@ -15,7 +15,7 @@ #if GFX_USE_GAUDIN /* Include the driver defines */ -#include "gaudin/lld/gaudin_lld.h" +#include "src/gaudin/driver.h" #undef Red #undef Green diff --git a/drivers/gaudin/gadc/gaudin_lld.c b/drivers/gaudin/gadc/gaudin_lld.c index 10730797..972f3dcf 100644 --- a/drivers/gaudin/gadc/gaudin_lld.c +++ b/drivers/gaudin/gadc/gaudin_lld.c @@ -31,7 +31,7 @@ #endif /* Include the driver defines */ -#include "gaudin/lld/gaudin_lld.h" +#include "src/gaudin/driver.h" /*===========================================================================*/ /* External declarations. */ diff --git a/drivers/gdisp/ED060SC4/gdisp_lld.c b/drivers/gdisp/ED060SC4/gdisp_lld.c deleted file mode 100644 index fcc03944..00000000 --- a/drivers/gdisp/ED060SC4/gdisp_lld.c +++ /dev/null @@ -1,606 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/* Low-level E-ink panel driver routines for ED060SC4. */ - -#include "gfx.h" -#include "ed060sc4.h" - -#if GFX_USE_GDISP - -#include "gdisp/lld/emulation.c" - -/* ================================= - * Default configuration - * ================================= */ - -#ifndef GDISP_SCREEN_HEIGHT -# define GDISP_SCREEN_HEIGHT 600 -#endif - -#ifndef GDISP_SCREEN_WIDTH -# define GDISP_SCREEN_WIDTH 800 -#endif - -/* Number of pixels per byte */ -#ifndef EINK_PPB -# define EINK_PPB 4 -#endif - -/* Delay for generating clock pulses. - * Unit is approximate clock cycles of the CPU (0 to 15). - * This should be atleast 50 ns. - */ -#ifndef EINK_CLOCKDELAY -# define EINK_CLOCKDELAY 0 -#endif - -/* Width of one framebuffer block. - * Must be divisible by EINK_PPB and evenly divide GDISP_SCREEN_WIDTH. */ -#ifndef EINK_BLOCKWIDTH -# define EINK_BLOCKWIDTH 20 -#endif - -/* Height of one framebuffer block. - * Must evenly divide GDISP_SCREEN_WIDTH. */ -#ifndef EINK_BLOCKHEIGHT -# define EINK_BLOCKHEIGHT 20 -#endif - -/* Number of block buffers to use for framebuffer emulation. */ -#ifndef EINK_NUMBUFFERS -# define EINK_NUMBUFFERS 40 -#endif - -/* Do a "blinking" clear, i.e. clear to opposite polarity first. - * This reduces the image persistence. */ -#ifndef EINK_BLINKCLEAR -# define EINK_BLINKCLEAR TRUE -#endif - -/* Number of passes to use when clearing the display */ -#ifndef EINK_CLEARCOUNT -# define EINK_CLEARCOUNT 10 -#endif - -/* Number of passes to use when writing to the display */ -#ifndef EINK_WRITECOUNT -# define EINK_WRITECOUNT 4 -#endif - -/* ==================================== - * Lower level driver functions - * ==================================== */ - -#include "gdisp_lld_board.h" - -/** Delay between signal changes, to give time for IO pins to change state. */ -static inline void clockdelay() -{ - #if EINK_CLOCKDELAY & 1 - asm("nop"); - #endif - #if EINK_CLOCKDELAY & 2 - asm("nop"); - asm("nop"); - #endif - #if EINK_CLOCKDELAY & 4 - asm("nop"); - asm("nop"); - asm("nop"); - asm("nop"); - #endif - #if EINK_CLOCKDELAY & 8 - asm("nop"); - asm("nop"); - asm("nop"); - asm("nop"); - asm("nop"); - asm("nop"); - asm("nop"); - asm("nop"); - #endif -} - -/** Fast vertical clock pulse for gate driver, used during initializations */ -static void vclock_quick() -{ - setpin_ckv(TRUE); - eink_delay(1); - setpin_ckv(FALSE); - eink_delay(4); -} - -/** Horizontal clock pulse for clocking data into source driver */ -static void hclock() -{ - clockdelay(); - setpin_cl(TRUE); - clockdelay(); - setpin_cl(FALSE); -} - -/** Start a new vertical gate driver scan from top. - * Note: Does not clear any previous bits in the shift register, - * so you should always scan through the whole display before - * starting a new scan. - */ -static void vscan_start() -{ - setpin_gmode(TRUE); - vclock_quick(); - setpin_spv(FALSE); - vclock_quick(); - setpin_spv(TRUE); - vclock_quick(); -} - -/** Waveform for strobing a row of data onto the display. - * Attempts to minimize the leaking of color to other rows by having - * a long idle period after a medium-length strobe period. - */ -static void vscan_write() -{ - setpin_ckv(TRUE); - setpin_oe(TRUE); - eink_delay(5); - setpin_oe(FALSE); - setpin_ckv(FALSE); - eink_delay(200); -} - -/** Waveform used when clearing the display. Strobes a row of data to the - * screen, but does not mind some of it leaking to other rows. - */ -static void vscan_bulkwrite() -{ - setpin_ckv(TRUE); - eink_delay(20); - setpin_ckv(FALSE); - eink_delay(200); -} - -/** Waveform for skipping a vertical row without writing anything. - * Attempts to minimize the amount of change in any row. - */ -static void vscan_skip() -{ - setpin_ckv(TRUE); - eink_delay(1); - setpin_ckv(FALSE); - eink_delay(100); -} - -/** Stop the vertical scan. The significance of this escapes me, but it seems - * necessary or the next vertical scan may be corrupted. - */ -static void vscan_stop() -{ - setpin_gmode(FALSE); - vclock_quick(); - vclock_quick(); - vclock_quick(); - vclock_quick(); - vclock_quick(); -} - -/** Start updating the source driver data (from left to right). */ -static void hscan_start() -{ - /* Disable latching and output enable while we are modifying the row. */ - setpin_le(FALSE); - setpin_oe(FALSE); - - /* The start pulse should remain low for the duration of the row. */ - setpin_sph(FALSE); -} - -/** Write data to the horizontal row. */ -static void hscan_write(const uint8_t *data, int count) -{ - while (count--) - { - /* Set the next byte on the data pins */ - setpins_data(*data++); - - /* Give a clock pulse to the shift register */ - hclock(); - } -} - -/** Finish and transfer the row to the source drivers. - * Does not set the output enable, so the drivers are not yet active. */ -static void hscan_stop() -{ - /* End the scan */ - setpin_sph(TRUE); - hclock(); - - /* Latch the new data */ - setpin_le(TRUE); - clockdelay(); - setpin_le(FALSE); -} - -/** Turn on the power to the E-Ink panel, observing proper power sequencing. */ -static void power_on() -{ - unsigned i; - - /* First the digital power supply and signal levels. */ - setpower_vdd(TRUE); - setpin_le(FALSE); - setpin_oe(FALSE); - setpin_cl(FALSE); - setpin_sph(TRUE); - setpins_data(0); - setpin_ckv(FALSE); - setpin_gmode(FALSE); - setpin_spv(TRUE); - - /* Min. 100 microsecond delay after digital supply */ - gfxSleepMicroseconds(100); - - /* Then negative voltages and min. 1000 microsecond delay. */ - setpower_vneg(TRUE); - gfxSleepMicroseconds(1000); - - /* Finally the positive voltages. */ - setpower_vpos(TRUE); - - /* Clear the vscan shift register */ - vscan_start(); - for (i = 0; i < GDISP_SCREEN_HEIGHT; i++) - vclock_quick(); - vscan_stop(); -} - -/** Turn off the power, observing proper power sequencing. */ -static void power_off() -{ - /* First the high voltages */ - setpower_vpos(FALSE); - setpower_vneg(FALSE); - - /* Wait for any capacitors to drain */ - gfxSleepMilliseconds(100); - - /* Then put all signals and digital supply to ground. */ - setpin_le(FALSE); - setpin_oe(FALSE); - setpin_cl(FALSE); - setpin_sph(FALSE); - setpins_data(0); - setpin_ckv(FALSE); - setpin_gmode(FALSE); - setpin_spv(FALSE); - setpower_vdd(FALSE); -} - -/* ==================================== - * Framebuffer emulation layer - * ==================================== */ - -#if EINK_PPB == 4 -#define PIXELMASK 3 -#define PIXEL_WHITE 2 -#define PIXEL_BLACK 1 -#define BYTE_WHITE 0xAA -#define BYTE_BLACK 0x55 -#else -#error Unsupported EINK_PPB value. -#endif - -#if GDISP_SCREEN_HEIGHT % EINK_BLOCKHEIGHT != 0 -#error GDISP_SCREEN_HEIGHT must be evenly divisible by EINK_BLOCKHEIGHT -#endif - -#if GDISP_SCREEN_WIDTH % EINK_BLOCKWIDTH != 0 -#error GDISP_SCREEN_WIDTH must be evenly divisible by EINK_BLOCKWIDTH -#endif - -#if EINK_BLOCKWIDTH % EINK_PPB != 0 -#error EINK_BLOCKWIDTH must be evenly divisible by EINK_PPB -#endif - -#if EINK_NUMBUFFERS > 254 -#error EINK_NUMBUFFERS must be at most 254. -#endif - -#define BLOCKS_Y (GDISP_SCREEN_HEIGHT / EINK_BLOCKHEIGHT) -#define BLOCKS_X (GDISP_SCREEN_WIDTH / EINK_BLOCKWIDTH) -#define WIDTH_BYTES (EINK_BLOCKWIDTH / EINK_PPB) - -/* Buffers that store the data for a small area of the display. */ -typedef struct { - uint8_t data[EINK_BLOCKHEIGHT][WIDTH_BYTES]; -} block_t; - -static uint8_t g_next_block; /* Index of the next free block buffer. */ -static block_t g_blocks[EINK_NUMBUFFERS]; - -/* Map that stores the buffers associated to each area of the display. - * Value of 0 means that the block is not allocated. - * Other values are the index in g_blocks + 1. - */ -static uint8_t g_blockmap[BLOCKS_Y][BLOCKS_X]; - -/** Check if the row contains any allocated blocks. */ -static bool_t blocks_on_row(unsigned by) -{ - unsigned bx; - for (bx = 0; bx < BLOCKS_X; bx++) - { - if (g_blockmap[by][bx] != 0) - { - return TRUE; - } - } - return FALSE; -} - -/** Write out a block row. */ -static void write_block_row(unsigned by) -{ - unsigned bx, dy, dx; - for (dy = 0; dy < EINK_BLOCKHEIGHT; dy++) - { - hscan_start(); - for (bx = 0; bx < BLOCKS_X; bx++) - { - if (g_blockmap[by][bx] == 0) - { - for (dx = 0; dx < WIDTH_BYTES; dx++) - { - const uint8_t dummy = 0; - hscan_write(&dummy, 1); - } - } - else - { - block_t *block = &g_blocks[g_blockmap[by][bx] - 1]; - hscan_write(&block->data[dy][0], WIDTH_BYTES); - } - } - hscan_stop(); - - vscan_write(); - } -} - -/** Clear the block map, i.e. deallocate all blocks */ -static void clear_block_map() -{ - unsigned bx, by; - for (by = 0; by < BLOCKS_Y; by++) - { - for (bx = 0; bx < BLOCKS_X; bx++) - { - g_blockmap[by][bx] = 0; - } - } - - g_next_block = 0; -} - -/** Flush all the buffered rows to display. */ -static void flush_buffers() -{ - unsigned by, dy, i; - - for (i = 0; i < EINK_WRITECOUNT; i++) - { - vscan_start(); - - for (by = 0; by < BLOCKS_Y; by++) - { - if (!blocks_on_row(by)) - { - /* Skip the whole row of blocks. */ - for (dy = 0; dy < EINK_BLOCKHEIGHT; dy++) - { - vscan_skip(); - } - } - else - { - /* Write out the blocks. */ - write_block_row(by); - } - } - - vscan_stop(); - } - - clear_block_map(); -} - -/** Initialize a newly allocated block. */ -static void zero_block(block_t *block) -{ - unsigned dx, dy; - for (dy = 0; dy < EINK_BLOCKHEIGHT; dy++) - { - for (dx = 0; dx < WIDTH_BYTES; dx++) - { - block->data[dy][dx] = 0; - } - } -} - -/** Allocate a buffer - * Automatically flushes if all buffers are full. */ -static block_t *alloc_buffer(unsigned bx, unsigned by) -{ - block_t *result; - if (g_blockmap[by][bx] == 0) - { - if (g_next_block >= EINK_NUMBUFFERS) - { - flush_buffers(); - } - - result = &g_blocks[g_next_block]; - g_blockmap[by][bx] = g_next_block + 1; - g_next_block++; - zero_block(result); - return result; - } - else - { - result = &g_blocks[g_blockmap[by][bx] - 1]; - return result; - } -} - -/* =============================== - * Public functions - * =============================== */ - -bool_t gdisp_lld_init(void) -{ - init_board(); - - /* Make sure that all the pins are in "off" state. - * Having any pin high could cause voltage leaking to the - * display, which in turn causes the image to leak slowly away. - */ - power_off(); - - clear_block_map(); - - /* Initialize the global GDISP structure */ - GDISP.Width = GDISP_SCREEN_WIDTH; - GDISP.Height = GDISP_SCREEN_HEIGHT; - GDISP.Orientation = GDISP_ROTATE_0; - GDISP.Powermode = powerOff; - GDISP.Backlight = 0; - GDISP.Contrast = 0; - #if GDISP_NEED_VALIDATION || GDISP_NEED_CLIP - GDISP.clipx0 = 0; - GDISP.clipy0 = 0; - GDISP.clipx1 = GDISP.Width; - GDISP.clipy1 = GDISP.Height; - #endif - - return TRUE; -} - -void gdisp_lld_draw_pixel(coord_t x, coord_t y, color_t color) -{ - block_t *block; - uint8_t byte; - unsigned bx, by, dx, dy; - uint8_t bitpos; - - bx = x / EINK_BLOCKWIDTH; - by = y / EINK_BLOCKHEIGHT; - dx = x % EINK_BLOCKWIDTH; - dy = y % EINK_BLOCKHEIGHT; - - if (bx < 0 || bx >= BLOCKS_X || by < 0 || by >= BLOCKS_Y) - return; - - block = alloc_buffer(bx, by); - - bitpos = (6 - 2 * (dx % EINK_PPB)); - byte = block->data[dy][dx / EINK_PPB]; - byte &= ~(PIXELMASK << bitpos); - if (color) - { - byte |= PIXEL_WHITE << bitpos; - } - else - { - byte |= PIXEL_BLACK << bitpos; - } - block->data[dy][dx / EINK_PPB] = byte; -} - -#if !GDISP_NEED_CONTROL -#error You must enable GDISP_NEED_CONTROL for the E-Ink driver. -#endif - -void gdisp_lld_control(unsigned what, void *value) { - gdisp_powermode_t newmode; - - switch(what) - { - case GDISP_CONTROL_POWER: - newmode = (gdisp_powermode_t)value; - - if (GDISP.Powermode == newmode) - return; - - if (newmode == powerOn) - { - power_on(); - } - else - { - flush_buffers(); - power_off(); - } - GDISP.Powermode = newmode; - break; - - case GDISP_CONTROL_FLUSH: - flush_buffers(); - break; - } -} - -/* =============================== - * Accelerated routines - * =============================== */ - -#if GDISP_HARDWARE_CLEARS - -static void subclear(color_t color) -{ - unsigned x, y; - uint8_t byte; - - hscan_start(); - byte = color ? BYTE_WHITE : BYTE_BLACK; - for (x = 0; x < GDISP_SCREEN_WIDTH; x++) - { - hscan_write(&byte, 1); - } - hscan_stop(); - - setpin_oe(TRUE); - vscan_start(); - for (y = 0; y < GDISP_SCREEN_HEIGHT; y++) - { - vscan_bulkwrite(); - } - vscan_stop(); - setpin_oe(FALSE); -} - -void gdisp_lld_clear(color_t color) -{ - unsigned i; - clear_block_map(); - - if (EINK_BLINKCLEAR) - { - subclear(!color); - gfxSleepMilliseconds(50); - } - - for (i = 0; i < EINK_CLEARCOUNT; i++) - { - subclear(color); - gfxSleepMilliseconds(10); - } - -} -#endif - -#endif diff --git a/drivers/gdisp/ED060SC4/gdisp_lld_ED060SC4.c b/drivers/gdisp/ED060SC4/gdisp_lld_ED060SC4.c index 166f564b..1c61ee93 100644 --- a/drivers/gdisp/ED060SC4/gdisp_lld_ED060SC4.c +++ b/drivers/gdisp/ED060SC4/gdisp_lld_ED060SC4.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_ED060SC4 -#include "../drivers/gdisp/ED060SC4/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/ED060SC4/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_ED060SC4.h" diff --git a/drivers/gdisp/HX8347D/gdisp_lld_HX8347D.c b/drivers/gdisp/HX8347D/gdisp_lld_HX8347D.c index 88d3d19a..35492541 100644 --- a/drivers/gdisp/HX8347D/gdisp_lld_HX8347D.c +++ b/drivers/gdisp/HX8347D/gdisp_lld_HX8347D.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_HX8347D -#include "../drivers/gdisp/HX8347D/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/HX8347D/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_HX8347D.h" diff --git a/drivers/gdisp/ILI9320/gdisp_lld_ILI9320.c b/drivers/gdisp/ILI9320/gdisp_lld_ILI9320.c index 816d9956..ab0cc0ce 100644 --- a/drivers/gdisp/ILI9320/gdisp_lld_ILI9320.c +++ b/drivers/gdisp/ILI9320/gdisp_lld_ILI9320.c @@ -25,8 +25,8 @@ #endif #define GDISP_DRIVER_VMT GDISPVMT_ILI9320 -#include "../drivers/gdisp/ILI9320/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/ILI9320/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_ILI9320.h" diff --git a/drivers/gdisp/ILI9325/gdisp_lld_ILI9325.c b/drivers/gdisp/ILI9325/gdisp_lld_ILI9325.c index 0197a536..e2900514 100644 --- a/drivers/gdisp/ILI9325/gdisp_lld_ILI9325.c +++ b/drivers/gdisp/ILI9325/gdisp_lld_ILI9325.c @@ -25,8 +25,8 @@ #endif #define GDISP_DRIVER_VMT GDISPVMT_ILI9325 -#include "../drivers/gdisp/ILI9325/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/ILI9325/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_ILI9325.h" diff --git a/drivers/gdisp/ILI9341/gdisp_lld_ILI9341.c b/drivers/gdisp/ILI9341/gdisp_lld_ILI9341.c index f4781059..134e3614 100644 --- a/drivers/gdisp/ILI9341/gdisp_lld_ILI9341.c +++ b/drivers/gdisp/ILI9341/gdisp_lld_ILI9341.c @@ -25,8 +25,8 @@ #endif #define GDISP_DRIVER_VMT GDISPVMT_ILI9341 -#include "../drivers/gdisp/ILI9341/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/ILI9341/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_ILI9341.h" @@ -304,7 +304,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) { switch((orientation_t)g->p.ptr) { case GDISP_ROTATE_0: acquire_bus(g); - write_reg(g, 0x36, 0x00); /* X and Y axes non-inverted */ + write_reg(g, 0x36, 0x48); /* X and Y axes non-inverted */ release_bus(g); g->g.Height = GDISP_SCREEN_HEIGHT; g->g.Width = GDISP_SCREEN_WIDTH; diff --git a/drivers/gdisp/ILI9481/gdisp_lld_ILI9481.c b/drivers/gdisp/ILI9481/gdisp_lld_ILI9481.c index c96faf33..748ee469 100644 --- a/drivers/gdisp/ILI9481/gdisp_lld_ILI9481.c +++ b/drivers/gdisp/ILI9481/gdisp_lld_ILI9481.c @@ -25,8 +25,8 @@ #endif #define GDISP_DRIVER_VMT GDISPVMT_ILI9481 -#include "../drivers/gdisp/ILI9481/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/ILI9481/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_ILI9481.h" diff --git a/drivers/gdisp/Nokia6610GE12/gdisp_lld_Nokia6610GE12.c b/drivers/gdisp/Nokia6610GE12/gdisp_lld_Nokia6610GE12.c index 261f6f66..f0603ca8 100644 --- a/drivers/gdisp/Nokia6610GE12/gdisp_lld_Nokia6610GE12.c +++ b/drivers/gdisp/Nokia6610GE12/gdisp_lld_Nokia6610GE12.c @@ -24,8 +24,8 @@ #endif #define GDISP_DRIVER_VMT GDISPVMT_Nokia6610GE12 -#include "../drivers/gdisp/Nokia6610GE12/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/Nokia6610GE12/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_Nokia6610GE12.h" @@ -33,7 +33,7 @@ /* Driver local definitions. */ /*===========================================================================*/ -#include "GE12.h" +#include "drivers/gdisp/Nokia6610GE12/GE12.h" #define GDISP_SCAN_LINES 132 #define GDISP_SLEEP_SIZE 32 /* Sleep mode window lines - this must be 32 on this controller */ diff --git a/drivers/gdisp/Nokia6610GE8/gdisp_lld_Nokia6610GE8.c b/drivers/gdisp/Nokia6610GE8/gdisp_lld_Nokia6610GE8.c index afb060c1..0e2c7e4e 100644 --- a/drivers/gdisp/Nokia6610GE8/gdisp_lld_Nokia6610GE8.c +++ b/drivers/gdisp/Nokia6610GE8/gdisp_lld_Nokia6610GE8.c @@ -59,8 +59,8 @@ #endif #define GDISP_DRIVER_VMT GDISPVMT_Nokia6610GE8 -#include "../drivers/gdisp/Nokia6610GE8/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/Nokia6610GE8/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_Nokia6610GE8.h" @@ -68,7 +68,7 @@ /* Driver local definitions. */ /*===========================================================================*/ -#include "GE8.h" +#include "drivers/gdisp/Nokia6610GE8/GE8.h" #define GDISP_SCAN_LINES 132 diff --git a/drivers/gdisp/RA8875/gdisp_lld_RA8875.c b/drivers/gdisp/RA8875/gdisp_lld_RA8875.c index e3fee636..a4d1d0e1 100644 --- a/drivers/gdisp/RA8875/gdisp_lld_RA8875.c +++ b/drivers/gdisp/RA8875/gdisp_lld_RA8875.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP /*|| defined(__DOXYGEN__)*/ #define GDISP_DRIVER_VMT GDISPVMT_RA8875 -#include "../drivers/gdisp/RA8875/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/RA8875/gdisp_lld_config.h" +#include "src/gdisp/driver.h" /* include the users board interface */ #include "board_RA8875.h" diff --git a/drivers/gdisp/S6D1121/gdisp_lld_S6D1121.c b/drivers/gdisp/S6D1121/gdisp_lld_S6D1121.c index 78b659de..389b27fe 100644 --- a/drivers/gdisp/S6D1121/gdisp_lld_S6D1121.c +++ b/drivers/gdisp/S6D1121/gdisp_lld_S6D1121.c @@ -27,8 +27,8 @@ #endif #define GDISP_DRIVER_VMT GDISPVMT_S6D1121 -#include "../drivers/gdisp/S6D1121/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/S6D1121/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_S6D1121.h" diff --git a/drivers/gdisp/SSD1289/gdisp_lld_SSD1289.c b/drivers/gdisp/SSD1289/gdisp_lld_SSD1289.c index 79ac7dd9..75338745 100644 --- a/drivers/gdisp/SSD1289/gdisp_lld_SSD1289.c +++ b/drivers/gdisp/SSD1289/gdisp_lld_SSD1289.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_SSD1289 -#include "../drivers/gdisp/SSD1289/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/SSD1289/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_SSD1289.h" diff --git a/drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c b/drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c index b7bce1e2..5dd4c2ab 100644 --- a/drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c +++ b/drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_SSD1306 -#include "../drivers/gdisp/SSD1306/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/SSD1306/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_SSD1306.h" @@ -46,7 +46,7 @@ #define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0) -#include "SSD1306.h" +#include "drivers/gdisp/SSD1306/SSD1306.h" /*===========================================================================*/ /* Driver local functions. */ diff --git a/drivers/gdisp/SSD1963/gdisp_lld_SSD1963.c b/drivers/gdisp/SSD1963/gdisp_lld_SSD1963.c index e1924c2d..1e69ef70 100644 --- a/drivers/gdisp/SSD1963/gdisp_lld_SSD1963.c +++ b/drivers/gdisp/SSD1963/gdisp_lld_SSD1963.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_SSD1963 -#include "../drivers/gdisp/SSD1963/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/SSD1963/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #define CALC_PERIOD(w,b,f,p) (p+b+w+f) #define CALC_FPR(w,h,hb,hf,hp,vb,vf,vp,fps) ((fps * CALC_PERIOD(w,hb,hf,hp) * CALC_PERIOD(h,vb,vf,vp) * 1048576)/100000000) @@ -51,7 +51,7 @@ typedef struct LCD_Parameters { /* Driver local functions. */ /*===========================================================================*/ -#include "ssd1963.h" +#include "drivers/gdisp/SSD1963/ssd1963.h" #define write_reg(g, reg, data) { write_index(g, reg); write_data(g, data); } #define write_data16(g, data) { write_data(g, (data)>>8); write_data(g, (data) & 0xFF); } diff --git a/drivers/gdisp/SSD2119/gdisp_lld_SSD2119.c b/drivers/gdisp/SSD2119/gdisp_lld_SSD2119.c index a58d2973..8af9a123 100644 --- a/drivers/gdisp/SSD2119/gdisp_lld_SSD2119.c +++ b/drivers/gdisp/SSD2119/gdisp_lld_SSD2119.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_SSD2119 -#include "../drivers/gdisp/SSD2119/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/SSD2119/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_SSD2119.h" @@ -37,7 +37,7 @@ #define GDISP_INITIAL_BACKLIGHT 100 #endif -#include "ssd2119.h" +#include "drivers/gdisp/SSD2119/ssd2119.h" /*===========================================================================*/ /* Driver local functions. */ diff --git a/drivers/gdisp/ST7565/gdisp_lld_ST7565.c b/drivers/gdisp/ST7565/gdisp_lld_ST7565.c index 5b0e9f27..b3029391 100644 --- a/drivers/gdisp/ST7565/gdisp_lld_ST7565.c +++ b/drivers/gdisp/ST7565/gdisp_lld_ST7565.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_ST7565 -#include "../drivers/gdisp/ST7565/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/ST7565/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #include "board_ST7565.h" @@ -39,7 +39,7 @@ #define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0) -#include "st7565.h" +#include "drivers/gdisp/ST7565/st7565.h" /*===========================================================================*/ /* Driver config defaults for backward compatibility. */ diff --git a/drivers/gdisp/TestStub/gdisp_lld_TestStub.c b/drivers/gdisp/TestStub/gdisp_lld_TestStub.c index 1a5ad81f..f87826aa 100644 --- a/drivers/gdisp/TestStub/gdisp_lld_TestStub.c +++ b/drivers/gdisp/TestStub/gdisp_lld_TestStub.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP /*|| defined(__DOXYGEN__)*/ #define GDISP_DRIVER_VMT GDISPVMT_TestStub -#include "../drivers/gdisp/TestStub/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/gdisp/TestStub/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #ifndef GDISP_SCREEN_HEIGHT #define GDISP_SCREEN_HEIGHT 128 diff --git a/drivers/ginput/dial/GADC/ginput_lld_dial.c b/drivers/ginput/dial/GADC/ginput_lld_dial.c index af633771..cefe5689 100644 --- a/drivers/ginput/dial/GADC/ginput_lld_dial.c +++ b/drivers/ginput/dial/GADC/ginput_lld_dial.c @@ -18,7 +18,7 @@ #if GFX_USE_GINPUT && GINPUT_NEED_DIAL -#include "ginput/lld/dial.h" +#include "src/ginput/driver_dial.h" #if GINPUT_DIAL_NUM_PORTS >= 5 #error "GINPUT: Dial - GADC driver currently only supports 4 devices" diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle.c b/drivers/ginput/toggle/Pal/ginput_lld_toggle.c index 3ed923bc..09290f17 100644 --- a/drivers/ginput/toggle/Pal/ginput_lld_toggle.c +++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle.c @@ -18,7 +18,7 @@ #if (GFX_USE_GINPUT && GINPUT_NEED_TOGGLE) /*|| defined(__DOXYGEN__)*/ -#include "ginput/lld/toggle.h" +#include "src/ginput/driver_toggle.h" GINPUT_TOGGLE_DECLARE_STRUCTURE(); diff --git a/drivers/ginput/touch/ADS7843/ginput_lld_mouse.c b/drivers/ginput/touch/ADS7843/ginput_lld_mouse.c index 074fd7ce..890b65ae 100644 --- a/drivers/ginput/touch/ADS7843/ginput_lld_mouse.c +++ b/drivers/ginput/touch/ADS7843/ginput_lld_mouse.c @@ -18,7 +18,7 @@ #if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) /*|| defined(__DOXYGEN__)*/ -#include "ginput/lld/mouse.h" +#include "src/ginput/driver_mouse.h" #include "ginput_lld_mouse_board.h" diff --git a/drivers/ginput/touch/FT5x06/ginput_lld_mouse.c b/drivers/ginput/touch/FT5x06/ginput_lld_mouse.c index 74670c1e..43baa9b7 100644 --- a/drivers/ginput/touch/FT5x06/ginput_lld_mouse.c +++ b/drivers/ginput/touch/FT5x06/ginput_lld_mouse.c @@ -14,15 +14,13 @@ * @{ */ -#include "ch.h" -#include "hal.h" #include "gfx.h" -#include "ft5x06.h" - #if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) /*|| defined(__DOXYGEN__)*/ -#include "ginput/lld/mouse.h" +#include "src/ginput/driver_mouse.h" + +#include "drivers/ginput/touch/FT5x06/ft5x06.h" // include board abstraction #include "ginput_lld_mouse_board.h" diff --git a/drivers/ginput/touch/MCU/ginput_lld_mouse.c b/drivers/ginput/touch/MCU/ginput_lld_mouse.c index 1e325318..d7a2e314 100644 --- a/drivers/ginput/touch/MCU/ginput_lld_mouse.c +++ b/drivers/ginput/touch/MCU/ginput_lld_mouse.c @@ -19,7 +19,7 @@ #if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) /*|| defined(__DOXYGEN__)*/ -#include "ginput/lld/mouse.h" +#include "src/ginput/driver_mouse.h" #include "ginput_lld_mouse_board.h" diff --git a/drivers/ginput/touch/STMPE811/ginput_lld_mouse.c b/drivers/ginput/touch/STMPE811/ginput_lld_mouse.c index 9ec1bdaa..d650e603 100644 --- a/drivers/ginput/touch/STMPE811/ginput_lld_mouse.c +++ b/drivers/ginput/touch/STMPE811/ginput_lld_mouse.c @@ -16,11 +16,11 @@ #include "gfx.h" -#include "stmpe811.h" - #if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) /*|| defined(__DOXYGEN__)*/ -#include "ginput/lld/mouse.h" +#include "src/ginput/driver_mouse.h" + +#include "drivers/ginput/touch/STMPE811/stmpe811.h" #include "ginput_lld_mouse_board.h" diff --git a/drivers/multiple/Win32/gdisp_lld_Win32.c b/drivers/multiple/Win32/gdisp_lld_Win32.c index 9425bd36..7bd9379f 100644 --- a/drivers/multiple/Win32/gdisp_lld_Win32.c +++ b/drivers/multiple/Win32/gdisp_lld_Win32.c @@ -14,8 +14,8 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_Win32 -#include "../drivers/multiple/Win32/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/multiple/Win32/gdisp_lld_config.h" +#include "src/gdisp/driver.h" #ifndef GDISP_SCREEN_WIDTH #define GDISP_SCREEN_WIDTH 640 @@ -64,12 +64,12 @@ #if GINPUT_NEED_TOGGLE /* Include toggle support code */ - #include "ginput/lld/toggle.h" + #include "src/ginput/driver_toggle.h" #endif #if GINPUT_NEED_MOUSE /* Include mouse support code */ - #include "ginput/lld/mouse.h" + #include "src/ginput/driver_mouse.h" #endif static DWORD winThreadId; diff --git a/drivers/multiple/X/gdisp_lld_X.c b/drivers/multiple/X/gdisp_lld_X.c index dcc76d09..940f4f7b 100644 --- a/drivers/multiple/X/gdisp_lld_X.c +++ b/drivers/multiple/X/gdisp_lld_X.c @@ -15,8 +15,8 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_X11 -#include "../drivers/multiple/X/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" +#include "drivers/multiple/X/gdisp_lld_config.h" +#include "src/gdisp/driver.h" /** * Our color model - Default or 24 bit only. @@ -40,7 +40,7 @@ #if GINPUT_NEED_MOUSE /* Include mouse support code */ - #include "ginput/lld/mouse.h" + #include "src/ginput/driver_mouse.h" #endif #include diff --git a/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c b/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c index 787062f6..18a53580 100644 --- a/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c +++ b/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c @@ -14,9 +14,9 @@ #if GFX_USE_GDISP #define GDISP_DRIVER_VMT GDISPVMT_uGFXnet -#include "../drivers/multiple/uGFXnet/gdisp_lld_config.h" -#include "gdisp/lld/gdisp_lld.h" -#include "../drivers/multiple/uGFXnet/uGFXnetProtocol.h" +#include "drivers/multiple/uGFXnet/gdisp_lld_config.h" +#include "src/gdisp/driver.h" +#include "drivers/multiple/uGFXnet/uGFXnetProtocol.h" #ifndef GDISP_SCREEN_WIDTH #define GDISP_SCREEN_WIDTH 640 @@ -107,7 +107,7 @@ #if GINPUT_NEED_MOUSE /* Include mouse support code */ - #include "ginput/lld/mouse.h" + #include "src/ginput/driver_mouse.h" #endif /*===========================================================================*/ diff --git a/include/gfx.h b/gfx.h similarity index 77% rename from include/gfx.h rename to gfx.h index 0c922669..77aba969 100644 --- a/include/gfx.h +++ b/gfx.h @@ -6,7 +6,7 @@ */ /** - * @file include/gfx.h + * @file gfx.h * @brief GFX system header file. * * @addtogroup GFX @@ -163,40 +163,55 @@ * Get all the options for each sub-system. * */ -#include "gos/options.h" -#include "gfile/options.h" -#include "gmisc/options.h" -#include "gqueue/options.h" -#include "gevent/options.h" -#include "gtimer/options.h" -#include "gdisp/options.h" -#include "gwin/options.h" -#include "ginput/options.h" -#include "gadc/options.h" -#include "gaudin/options.h" -#include "gaudout/options.h" +#include "src/gos/sys_options.h" +#include "src/gfile/sys_options.h" +#include "src/gmisc/sys_options.h" +#include "src/gqueue/sys_options.h" +#include "src/gevent/sys_options.h" +#include "src/gtimer/sys_options.h" +#include "src/gdisp/sys_options.h" +#include "src/gwin/sys_options.h" +#include "src/ginput/sys_options.h" +#include "src/gadc/sys_options.h" +#include "src/gaudin/sys_options.h" +#include "src/gaudout/sys_options.h" /** * Interdependency safety checks on the sub-systems. + * These must be in dependency order. * */ -#include "gfx_rules.h" +#ifndef GFX_DISPLAY_RULE_WARNINGS + #define GFX_DISPLAY_RULE_WARNINGS FALSE +#endif +#include "src/gwin/sys_rules.h" +#include "src/ginput/sys_rules.h" +#include "src/gdisp/sys_rules.h" +#include "src/gaudout/sys_rules.h" +#include "src/gaudin/sys_rules.h" +#include "src/gadc/sys_rules.h" +#include "src/gevent/sys_rules.h" +#include "src/gtimer/sys_rules.h" +#include "src/gqueue/sys_rules.h" +#include "src/gmisc/sys_rules.h" +#include "src/gfile/sys_rules.h" +#include "src/gos/sys_rules.h" /** * Include the sub-system header files */ -#include "gos/gos.h" -#include "gfile/gfile.h" -#include "gmisc/gmisc.h" -#include "gqueue/gqueue.h" -#include "gevent/gevent.h" -#include "gtimer/gtimer.h" -#include "gdisp/gdisp.h" -#include "gwin/gwin.h" -#include "ginput/ginput.h" -#include "gadc/gadc.h" -#include "gaudin/gaudin.h" -#include "gaudout/gaudout.h" +#include "src/gos/sys_defs.h" +#include "src/gfile/sys_defs.h" +#include "src/gmisc/sys_defs.h" +#include "src/gqueue/sys_defs.h" +#include "src/gevent/sys_defs.h" +#include "src/gtimer/sys_defs.h" +#include "src/gdisp/sys_defs.h" +#include "src/gwin/sys_defs.h" +#include "src/ginput/sys_defs.h" +#include "src/gadc/sys_defs.h" +#include "src/gaudin/sys_defs.h" +#include "src/gaudout/sys_defs.h" #ifdef __cplusplus extern "C" { diff --git a/gfx.mk b/gfx.mk index 0ee3e3f1..8ac6e36b 100644 --- a/gfx.mk +++ b/gfx.mk @@ -1,15 +1,15 @@ -GFXINC += $(GFXLIB)/include +GFXINC += $(GFXLIB) GFXSRC += $(GFXLIB)/src/gfx.c -include $(GFXLIB)/src/gos/gos.mk -include $(GFXLIB)/src/gqueue/gqueue.mk -include $(GFXLIB)/src/gdisp/gdisp.mk -include $(GFXLIB)/src/gevent/gevent.mk -include $(GFXLIB)/src/gtimer/gtimer.mk -include $(GFXLIB)/src/gwin/gwin.mk -include $(GFXLIB)/src/ginput/ginput.mk -include $(GFXLIB)/src/gadc/gadc.mk -include $(GFXLIB)/src/gaudin/gaudin.mk -include $(GFXLIB)/src/gaudout/gaudout.mk -include $(GFXLIB)/src/gmisc/gmisc.mk -include $(GFXLIB)/src/gfile/gfile.mk +include $(GFXLIB)/src/gos/sys_make.mk +include $(GFXLIB)/src/gqueue/sys_make.mk +include $(GFXLIB)/src/gdisp/sys_make.mk +include $(GFXLIB)/src/gevent/sys_make.mk +include $(GFXLIB)/src/gtimer/sys_make.mk +include $(GFXLIB)/src/gwin/sys_make.mk +include $(GFXLIB)/src/ginput/sys_make.mk +include $(GFXLIB)/src/gadc/sys_make.mk +include $(GFXLIB)/src/gaudin/sys_make.mk +include $(GFXLIB)/src/gaudout/sys_make.mk +include $(GFXLIB)/src/gmisc/sys_make.mk +include $(GFXLIB)/src/gfile/sys_make.mk diff --git a/include/gfx_rules.h b/include/gfx_rules.h deleted file mode 100644 index 817ff749..00000000 --- a/include/gfx_rules.h +++ /dev/null @@ -1,246 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file include/gfx_rules.h - * @brief GFX system safety rules header file. - * - * @addtogroup GFX - * @{ - */ - -#ifndef _GFX_RULES_H -#define _GFX_RULES_H - -/** - * Safety checks on all the defines. - * - * These are defined in the order of their inter-dependancies. - */ - -#ifndef GFX_DISPLAY_RULE_WARNINGS - #define GFX_DISPLAY_RULE_WARNINGS FALSE -#endif - -#if !GFX_USE_OS_CHIBIOS && !GFX_USE_OS_WIN32 && !GFX_USE_OS_LINUX && !GFX_USE_OS_OSX && !GFX_USE_OS_RAW32 - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GOS: No Operating System has been defined. ChibiOS (GFX_USE_OS_CHIBIOS) has been turned on for you." - #endif - #undef GFX_USE_OS_CHIBIOS - #define GFX_USE_OS_CHIBIOS TRUE -#endif -#if GFX_USE_OS_CHIBIOS + GFX_USE_OS_WIN32 + GFX_USE_OS_LINUX + GFX_USE_OS_OSX + GFX_USE_OS_RAW32 != 1 * TRUE - #error "GOS: More than one operation system has been defined as TRUE." -#endif - -#if GFX_USE_GWIN - #if !GFX_USE_GDISP - #error "GWIN: GFX_USE_GDISP must be TRUE when using GWIN" - #endif - #if !GDISP_NEED_CLIP - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GWIN: Drawing can occur outside the defined windows as GDISP_NEED_CLIP is FALSE" - #endif - #endif - #if GWIN_NEED_IMAGE - #if !GDISP_NEED_IMAGE - #error "GWIN: GDISP_NEED_IMAGE is required when GWIN_NEED_IMAGE is TRUE." - #endif - #endif - #if GWIN_NEED_RADIO - #if !GDISP_NEED_CIRCLE - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GWIN: GDISP_NEED_CIRCLE should be set to TRUE for much nicer radio button widgets." - #endif - #endif - #endif - #if GWIN_NEED_BUTTON || GWIN_NEED_SLIDER || GWIN_NEED_CHECKBOX || GWIN_NEED_LABEL || GWIN_NEED_RADIO || GWIN_NEED_LIST || \ - GWIN_NEED_IMAGE || GWIN_NEED_CHECKBOX || GWIN_NEED_PROGRESSBAR - #if !GWIN_NEED_WIDGET - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GWIN: GWIN_NEED_WIDGET is required when a Widget is used. It has been turned on for you." - #endif - #undef GWIN_NEED_WIDGET - #define GWIN_NEED_WIDGET TRUE - #endif - #endif - #if GWIN_NEED_LIST - #if !GDISP_NEED_TEXT - #error "GWIN: GDISP_NEED_TEXT is required when GWIN_NEED_LIST is TRUE." - #endif - #endif - #if GWIN_NEED_WIDGET - #if !GDISP_NEED_TEXT - #error "GWIN: GDISP_NEED_TEXT is required if GWIN_NEED_WIDGET is TRUE." - #endif - #if !GFX_USE_GINPUT - // This test also ensures that GFX_USE_GEVENT is set - #error "GWIN: GFX_USE_GINPUT (and one or more input sources) is required if GWIN_NEED_WIDGET is TRUE" - #endif - #if !GWIN_NEED_WINDOWMANAGER - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GWIN: GWIN_NEED_WINDOWMANAGER is required if GWIN_NEED_WIDGET is TRUE. It has been turned on for you." - #endif - #undef GWIN_NEED_WINDOWMANAGER - #define GWIN_NEED_WINDOWMANAGER TRUE - #endif - #if !GDISP_NEED_MULTITHREAD - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GWIN: GDISP_NEED_MULTITHREAD is required if GWIN_NEED_WIDGET is TRUE. It has been turned on for you" - #endif - #undef GDISP_NEED_MULTITHREAD - #define GDISP_NEED_MULTITHREAD TRUE - #endif - #endif - #if GWIN_NEED_WINDOWMANAGER - #if !GFX_USE_GQUEUE || !GQUEUE_NEED_ASYNC - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GWIN: GFX_USE_GQUEUE and GQUEUE_NEED_ASYNC is required if GWIN_NEED_WINDOWMANAGER is TRUE. It has been turned on for you." - #endif - #undef GFX_USE_GQUEUE - #undef GQUEUE_NEED_ASYNC - #define GFX_USE_GQUEUE TRUE - #define GQUEUE_NEED_ASYNC TRUE - #endif - #endif - #if GWIN_NEED_CONSOLE - #if !GDISP_NEED_TEXT - #error "GWIN: GDISP_NEED_TEXT is required if GWIN_NEED_CONSOLE is TRUE." - #endif - #endif - #if GWIN_NEED_GRAPH - #endif -#endif - -#if GFX_USE_GINPUT - #if !GFX_USE_GEVENT - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GINPUT: GFX_USE_GEVENT is required if GFX_USE_GINPUT is TRUE. It has been turned on for you." - #endif - #undef GFX_USE_GEVENT - #define GFX_USE_GEVENT TRUE - #endif - #if !GFX_USE_GTIMER - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GINPUT: GFX_USE_GTIMER is required if GFX_USE_GINPUT is TRUE. It has been turned on for you." - #endif - #undef GFX_USE_GTIMER - #define GFX_USE_GTIMER TRUE - #endif -#endif - -#if GFX_USE_GDISP - #if GDISP_TOTAL_CONTROLLERS > 1 - #ifndef GDISP_CONTROLLER_LIST - #error "GDISP Multiple Controllers: You must specify a value for GDISP_CONTROLLER_LIST" - #endif - #ifndef GDISP_CONTROLLER_DISPLAYS - #error "GDISP Multiple Controllers: You must specify a value for GDISP_CONTROLLER_DISPLAYS" - #endif - #ifndef GDISP_PIXELFORMAT - #error "GDISP Multiple Controllers: You must specify a value for GDISP_PIXELFORMAT" - #endif - #endif - #if GDISP_NEED_AUTOFLUSH && GDISP_NEED_TIMERFLUSH - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GDISP: Both GDISP_NEED_AUTOFLUSH and GDISP_NEED_TIMERFLUSH has been set. GDISP_NEED_TIMERFLUSH has disabled for you." - #endif - #undef GDISP_NEED_TIMERFLUSH - #define GDISP_NEED_TIMERFLUSH FALSE - #endif - #if GDISP_NEED_TIMERFLUSH - #if GDISP_NEED_TIMERFLUSH < 50 || GDISP_NEED_TIMERFLUSH > 1200 - #error "GDISP: GDISP_NEED_TIMERFLUSH has been set to an invalid value (FALSE, 50-1200)." - #endif - #if !GFX_USE_GTIMER - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GDISP: GDISP_NEED_TIMERFLUSH has been set but GFX_USE_GTIMER has not been set. It has been turned on for you." - #endif - #undef GFX_USE_GTIMER - #define GFX_USE_GTIMER TRUE - #undef GDISP_NEED_MULTITHREAD - #define GDISP_NEED_MULTITHREAD TRUE - #endif - #endif - #if GDISP_NEED_ANTIALIAS && !GDISP_NEED_PIXELREAD - #if GDISP_HARDWARE_PIXELREAD - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GDISP: GDISP_NEED_ANTIALIAS has been set but GDISP_NEED_PIXELREAD has not. It has been turned on for you." - #endif - #undef GDISP_NEED_PIXELREAD - #define GDISP_NEED_PIXELREAD TRUE - #else - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GDISP: GDISP_NEED_ANTIALIAS has been set but your hardware does not support reading back pixels. Anti-aliasing will only occur for filled characters." - #endif - #endif - #endif - #if (defined(GDISP_INCLUDE_FONT_SMALL) && GDISP_INCLUDE_FONT_SMALL) || (defined(GDISP_INCLUDE_FONT_LARGER) && GDISP_INCLUDE_FONT_LARGER) - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GDISP: An old font (Small or Larger) has been defined. A single default font of UI2 has been added instead." - #warning "GDISP: Please see <$(GFXLIB)/include/gdisp/fonts/fonts.h> for a list of available font names." - #endif - #undef GDISP_INCLUDE_FONT_UI2 - #define GDISP_INCLUDE_FONT_UI2 TRUE - #endif - #if GDISP_NEED_IMAGE - #if !GFX_USE_GFILE - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GDISP: GFX_USE_GFILE is required when GDISP_NEED_IMAGE is TRUE. It has been turned on for you." - #endif - #undef GFX_USE_GFILE - #define GFX_USE_GFILE TRUE - #endif - #endif -#endif - -#if GFX_USE_GAUDIN - #if GFX_USE_GEVENT && !GFX_USE_GTIMER - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GAUDIN: GFX_USE_GTIMER is required if GFX_USE_GAUDIN and GFX_USE_GEVENT are TRUE. It has been turned on for you." - #endif - #undef GFX_USE_GTIMER - #define GFX_USE_GTIMER TRUE - #endif -#endif - -#if GFX_USE_GADC - #if !GFX_USE_GTIMER - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GADC: GFX_USE_GTIMER is required if GFX_USE_GADC is TRUE. It has been turned on for you." - #endif - #undef GFX_USE_GTIMER - #define GFX_USE_GTIMER TRUE - #endif -#endif - -#if GFX_USE_GEVENT -#endif - -#if GFX_USE_GTIMER - #if GFX_USE_GDISP && !GDISP_NEED_MULTITHREAD - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GTIMER: GDISP_NEED_MULTITHREAD has not been specified." - #warning "GTIMER: Make sure you are not performing any GDISP/GWIN drawing operations in the timer callback!" - #endif - #endif -#endif - -#if GFX_USE_GAUDOUT -#endif - -#if GFX_USE_GQUEUE -#endif - -#if GFX_USE_GMISC -#endif - -#if GFX_USE_GFILE -#endif - -#endif /* _GFX_H */ -/** @} */ diff --git a/releases.txt b/releases.txt index f1b1ca83..ea8e7a27 100644 --- a/releases.txt +++ b/releases.txt @@ -15,6 +15,11 @@ FEATURE: Added smooth scrolling to list widget FEATURE: Increased performance of gwinListAddItem() FEATURE: Added FreeRTOS port FEATURE: Added gfxDeinit() +FEATURE: Allow touch screen calibration in any display orientation +FEATURE: New GFILE module to abstract File IO. +FEATURE: Image file handling changed to use new GFILE module. +DEPRECTATE: Old image opening functions deprecated. +FEATURE: Restructure and simplify the include path for GFX *** changes after 1.9 *** diff --git a/include/gadc/lld/gadc_lld.h b/src/gadc/driver.h similarity index 99% rename from include/gadc/lld/gadc_lld.h rename to src/gadc/driver.h index 3de39d9a..4427f4f0 100644 --- a/include/gadc/lld/gadc_lld.h +++ b/src/gadc/driver.h @@ -6,7 +6,7 @@ */ /** - * @file include/gadc/lld/gadc_lld.h + * @file src/gadc/driver.h * @brief GADC - Periodic ADC driver header file. * * @defgroup Driver Driver diff --git a/src/gadc/gadc.c b/src/gadc/gadc.c index c9a4a31b..8ae431b0 100644 --- a/src/gadc/gadc.c +++ b/src/gadc/gadc.c @@ -17,7 +17,7 @@ #if GFX_USE_GADC /* Include the driver defines */ -#include "gadc/lld/gadc_lld.h" +#include "src/gadc/driver.h" #if GADC_MAX_HIGH_SPEED_SAMPLERATE > GADC_MAX_SAMPLE_FREQUENCY/2 #error "GADC: GADC_MAX_HIGH_SPEED_SAMPLERATE has been set too high. It must be less than half the maximum CPU rate" diff --git a/include/gadc/gadc.h b/src/gadc/sys_defs.h similarity index 99% rename from include/gadc/gadc.h rename to src/gadc/sys_defs.h index 1ad5ecb8..f6349dfe 100644 --- a/include/gadc/gadc.h +++ b/src/gadc/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gadc/gadc.h + * @file src/gadc/sys_defs.h * * @addtogroup GADC * diff --git a/src/gadc/gadc.mk b/src/gadc/sys_make.mk similarity index 97% rename from src/gadc/gadc.mk rename to src/gadc/sys_make.mk index cfe04177..05b1e9cc 100644 --- a/src/gadc/gadc.mk +++ b/src/gadc/sys_make.mk @@ -1 +1 @@ -GFXSRC += $(GFXLIB)/src/gadc/gadc.c +GFXSRC += $(GFXLIB)/src/gadc/gadc.c diff --git a/include/gadc/options.h b/src/gadc/sys_options.h similarity index 96% rename from include/gadc/options.h rename to src/gadc/sys_options.h index 9c3988fc..d9519c39 100644 --- a/include/gadc/options.h +++ b/src/gadc/sys_options.h @@ -6,7 +6,7 @@ */ /** - * @file include/gadc/options.h + * @file src/gadc/sys_options.h * @brief GADC - Periodic ADC subsystem options header file. * * @addtogroup GADC diff --git a/src/gadc/sys_rules.h b/src/gadc/sys_rules.h new file mode 100644 index 00000000..7272337e --- /dev/null +++ b/src/gadc/sys_rules.h @@ -0,0 +1,30 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gadc/sys_rules.h + * @brief GADC safety rules header file. + * + * @addtogroup GADC + * @{ + */ + +#ifndef _GADC_RULES_H +#define _GADC_RULES_H + +#if GFX_USE_GADC + #if !GFX_USE_GTIMER + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GADC: GFX_USE_GTIMER is required if GFX_USE_GADC is TRUE. It has been turned on for you." + #endif + #undef GFX_USE_GTIMER + #define GFX_USE_GTIMER TRUE + #endif +#endif + +#endif /* _GADC_RULES_H */ +/** @} */ diff --git a/include/gaudin/lld/gaudin_lld.h b/src/gaudin/driver.h similarity index 97% rename from include/gaudin/lld/gaudin_lld.h rename to src/gaudin/driver.h index 7c1919d3..bd04858a 100644 --- a/include/gaudin/lld/gaudin_lld.h +++ b/src/gaudin/driver.h @@ -6,7 +6,7 @@ */ /** - * @file include/gaudin/lld/gaudin_lld.h + * @file src/gaudin/driver.h * @brief GAUDIN - Audio Input driver header file. * * @defgroup Driver Driver diff --git a/src/gaudin/gaudin.c b/src/gaudin/gaudin.c index 8a425a10..c9ed1c7f 100644 --- a/src/gaudin/gaudin.c +++ b/src/gaudin/gaudin.c @@ -17,7 +17,7 @@ #if GFX_USE_GAUDIN /* Include the driver defines */ -#include "gaudin/lld/gaudin_lld.h" +#include "src/gaudin/driver.h" static gaudin_params aud; static gfxSem *paudSem; diff --git a/include/gaudin/gaudin.h b/src/gaudin/sys_defs.h similarity index 98% rename from include/gaudin/gaudin.h rename to src/gaudin/sys_defs.h index c9150f6d..3f06fa6e 100644 --- a/include/gaudin/gaudin.h +++ b/src/gaudin/sys_defs.h @@ -6,11 +6,11 @@ */ /** - * @file include/gaudin/gaudin.h + * @file src/gaudin/sys_defs.h * * @addtogroup GAUDIN * - * @brief Module to read audio inputs (under development) + * @brief Module to read audio inputs * * @{ */ diff --git a/src/gaudin/gaudin.mk b/src/gaudin/sys_make.mk similarity index 97% rename from src/gaudin/gaudin.mk rename to src/gaudin/sys_make.mk index f134d264..16bb33b7 100644 --- a/src/gaudin/gaudin.mk +++ b/src/gaudin/sys_make.mk @@ -1 +1 @@ -GFXSRC += $(GFXLIB)/src/gaudin/gaudin.c +GFXSRC += $(GFXLIB)/src/gaudin/gaudin.c diff --git a/include/gaudin/options.h b/src/gaudin/sys_options.h similarity index 89% rename from include/gaudin/options.h rename to src/gaudin/sys_options.h index a2c9ab5c..305a6f8d 100644 --- a/include/gaudin/options.h +++ b/src/gaudin/sys_options.h @@ -4,29 +4,29 @@ * * http://ugfx.org/license.html */ - -/** - * @file include/gaudin/options.h - * @brief GAUDIN - Audio Input subsystem options header file. - * - * @addtogroup GAUDIN - * @{ - */ - -#ifndef _GAUDIN_OPTIONS_H -#define _GAUDIN_OPTIONS_H - -/** - * @name GAUDIN Functionality to be included - * @{ - */ -/** - * @} - * - * @name GAUDIN Optional Sizing Parameters - * @{ - */ -/** @} */ - -#endif /* _GAUDIN_OPTIONS_H */ -/** @} */ + +/** + * @file src/gaudin/sys_options.h + * @brief GAUDIN - Audio Input subsystem options header file. + * + * @addtogroup GAUDIN + * @{ + */ + +#ifndef _GAUDIN_OPTIONS_H +#define _GAUDIN_OPTIONS_H + +/** + * @name GAUDIN Functionality to be included + * @{ + */ +/** + * @} + * + * @name GAUDIN Optional Sizing Parameters + * @{ + */ +/** @} */ + +#endif /* _GAUDIN_OPTIONS_H */ +/** @} */ diff --git a/src/gaudin/sys_rules.h b/src/gaudin/sys_rules.h new file mode 100644 index 00000000..21d2552f --- /dev/null +++ b/src/gaudin/sys_rules.h @@ -0,0 +1,30 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gaudin/sys_rules.h + * @brief GAUDIN safety rules header file. + * + * @addtogroup GAUDIN + * @{ + */ + +#ifndef _GAUDIN_RULES_H +#define _GAUDIN_RULES_H + +#if GFX_USE_GAUDIN + #if GFX_USE_GEVENT && !GFX_USE_GTIMER + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GAUDIN: GFX_USE_GTIMER is required if GFX_USE_GAUDIN and GFX_USE_GEVENT are TRUE. It has been turned on for you." + #endif + #undef GFX_USE_GTIMER + #define GFX_USE_GTIMER TRUE + #endif +#endif + +#endif /* _GAUDIN_RULES_H */ +/** @} */ diff --git a/include/gaudout/gaudout.h b/src/gaudout/sys_defs.h similarity index 96% rename from include/gaudout/gaudout.h rename to src/gaudout/sys_defs.h index 9e89ccc2..f22d269c 100644 --- a/include/gaudout/gaudout.h +++ b/src/gaudout/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gaudout/gaudout.h + * @file src/gaudout/sys_defs.h * * @addtogroup GAUDOUT * diff --git a/src/gaudout/gaudout.mk b/src/gaudout/sys_make.mk similarity index 97% rename from src/gaudout/gaudout.mk rename to src/gaudout/sys_make.mk index 004306bc..14f5bac3 100644 --- a/src/gaudout/gaudout.mk +++ b/src/gaudout/sys_make.mk @@ -1 +1 @@ -GFXSRC += $(GFXLIB)/src/gaudout/gaudout.c +GFXSRC += $(GFXLIB)/src/gaudout/gaudout.c diff --git a/include/gaudout/options.h b/src/gaudout/sys_options.h similarity index 89% rename from include/gaudout/options.h rename to src/gaudout/sys_options.h index 3a42429e..929bb42a 100644 --- a/include/gaudout/options.h +++ b/src/gaudout/sys_options.h @@ -4,29 +4,29 @@ * * http://ugfx.org/license.html */ - -/** - * @file include/gaudout/options.h - * @brief GAUDOUT - Audio Output subsystem options header file. - * - * @addtogroup GAUDOUT - * @{ - */ - -#ifndef _GAUDOUT_OPTIONS_H -#define _GAUDOUT_OPTIONS_H - -/** - * @name GAUDOUT Functionality to be included - * @{ - */ -/** - * @} - * - * @name GAUDOUT Optional Sizing Parameters - * @{ - */ -/** @} */ - -#endif /* _GAUDOUT_OPTIONS_H */ -/** @} */ + +/** + * @file src/gaudout/sys_options.h + * @brief GAUDOUT - Audio Output subsystem options header file. + * + * @addtogroup GAUDOUT + * @{ + */ + +#ifndef _GAUDOUT_OPTIONS_H +#define _GAUDOUT_OPTIONS_H + +/** + * @name GAUDOUT Functionality to be included + * @{ + */ +/** + * @} + * + * @name GAUDOUT Optional Sizing Parameters + * @{ + */ +/** @} */ + +#endif /* _GAUDOUT_OPTIONS_H */ +/** @} */ diff --git a/src/gaudout/sys_rules.h b/src/gaudout/sys_rules.h new file mode 100644 index 00000000..50b9a442 --- /dev/null +++ b/src/gaudout/sys_rules.h @@ -0,0 +1,23 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gaudout/sys_rules.h + * @brief GAUDOUT safety rules header file. + * + * @addtogroup GAUDOUT + * @{ + */ + +#ifndef _GAUDOUT_RULES_H +#define _GAUDOUT_RULES_H + +#if GFX_USE_GAUDOUT +#endif + +#endif /* _GAUDOUT_RULES_H */ +/** @} */ diff --git a/include/gdisp/colors.h b/src/gdisp/colors.h similarity index 100% rename from include/gdisp/colors.h rename to src/gdisp/colors.h diff --git a/include/gdisp/lld/gdisp_lld.h b/src/gdisp/driver.h similarity index 99% rename from include/gdisp/lld/gdisp_lld.h rename to src/gdisp/driver.h index e4f9ece2..f45b3f87 100644 --- a/include/gdisp/lld/gdisp_lld.h +++ b/src/gdisp/driver.h @@ -6,7 +6,7 @@ */ /** - * @file include/gdisp/lld/gdisp_lld.h + * @file src/gdisp/driver.h * @brief GDISP Graphic Driver subsystem low level driver header. * * @addtogroup GDISP diff --git a/src/gdisp/fonts/build_fonts.sh b/src/gdisp/fonts/build_fonts.sh index b6c26602..4ce93a40 100644 --- a/src/gdisp/fonts/build_fonts.sh +++ b/src/gdisp/fonts/build_fonts.sh @@ -72,7 +72,7 @@ for file in *.c; do defname='GDISP_INCLUDE_FONT_'$upper echo '#if defined('$defname') && '$defname >> fonts.h echo '#define GDISP_FONT_FOUND' >> fonts.h - echo '#include "../src/gdisp/fonts/'$file'"' >> fonts.h + echo '#include "src/gdisp/fonts/'$file'"' >> fonts.h echo '#endif' >> fonts.h done diff --git a/src/gdisp/fonts/fonts.h b/src/gdisp/fonts/fonts.h index 7d696044..af851dbd 100644 --- a/src/gdisp/fonts/fonts.h +++ b/src/gdisp/fonts/fonts.h @@ -3,87 +3,87 @@ #if defined(GDISP_INCLUDE_FONT_DEJAVUSANS10) && GDISP_INCLUDE_FONT_DEJAVUSANS10 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSans10.c" +#include "src/gdisp/fonts/DejaVuSans10.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANS12_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS12_AA #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSans12_aa.c" +#include "src/gdisp/fonts/DejaVuSans12_aa.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANS12) && GDISP_INCLUDE_FONT_DEJAVUSANS12 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSans12.c" +#include "src/gdisp/fonts/DejaVuSans12.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANS16_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS16_AA #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSans16_aa.c" +#include "src/gdisp/fonts/DejaVuSans16_aa.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANS16) && GDISP_INCLUDE_FONT_DEJAVUSANS16 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSans16.c" +#include "src/gdisp/fonts/DejaVuSans16.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANS24_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS24_AA #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSans24_aa.c" +#include "src/gdisp/fonts/DejaVuSans24_aa.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANS24) && GDISP_INCLUDE_FONT_DEJAVUSANS24 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSans24.c" +#include "src/gdisp/fonts/DejaVuSans24.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANS32_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS32_AA #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSans32_aa.c" +#include "src/gdisp/fonts/DejaVuSans32_aa.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANS32) && GDISP_INCLUDE_FONT_DEJAVUSANS32 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSans32.c" +#include "src/gdisp/fonts/DejaVuSans32.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA) && GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSansBold12_aa.c" +#include "src/gdisp/fonts/DejaVuSansBold12_aa.c" #endif #if defined(GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12) && GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/DejaVuSansBold12.c" +#include "src/gdisp/fonts/DejaVuSansBold12.c" #endif #if defined(GDISP_INCLUDE_FONT_FIXED_10X20) && GDISP_INCLUDE_FONT_FIXED_10X20 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/fixed_10x20.c" +#include "src/gdisp/fonts/fixed_10x20.c" #endif #if defined(GDISP_INCLUDE_FONT_FIXED_5X8) && GDISP_INCLUDE_FONT_FIXED_5X8 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/fixed_5x8.c" +#include "src/gdisp/fonts/fixed_5x8.c" #endif #if defined(GDISP_INCLUDE_FONT_FIXED_7X14) && GDISP_INCLUDE_FONT_FIXED_7X14 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/fixed_7x14.c" +#include "src/gdisp/fonts/fixed_7x14.c" #endif #if defined(GDISP_INCLUDE_FONT_LARGENUMBERS) && GDISP_INCLUDE_FONT_LARGENUMBERS #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/LargeNumbers.c" +#include "src/gdisp/fonts/LargeNumbers.c" #endif #if defined(GDISP_INCLUDE_FONT_UI1) && GDISP_INCLUDE_FONT_UI1 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/UI1.c" +#include "src/gdisp/fonts/UI1.c" #endif #if defined(GDISP_INCLUDE_FONT_UI2) && GDISP_INCLUDE_FONT_UI2 #define GDISP_FONT_FOUND -#include "../src/gdisp/fonts/UI2.c" +#include "src/gdisp/fonts/UI2.c" #endif #if defined(GDISP_INCLUDE_USER_FONTS) && GDISP_INCLUDE_USER_FONTS diff --git a/src/gdisp/gdisp.c b/src/gdisp/gdisp.c index 949bedaf..2ac55f1b 100644 --- a/src/gdisp/gdisp.c +++ b/src/gdisp/gdisp.c @@ -17,7 +17,7 @@ #if GFX_USE_GDISP /* Include the low level driver information */ -#include "gdisp/lld/gdisp_lld.h" +#include "src/gdisp/driver.h" #if 1 #undef INLINE diff --git a/include/gdisp/image.h b/src/gdisp/image.h similarity index 100% rename from include/gdisp/image.h rename to src/gdisp/image.h diff --git a/src/gdisp/mcufont/mf_config.h b/src/gdisp/mcufont/mf_config.h index 36268c6b..88838c1d 100644 --- a/src/gdisp/mcufont/mf_config.h +++ b/src/gdisp/mcufont/mf_config.h @@ -14,7 +14,7 @@ * Configuration settings related to GFX * *******************************************************/ -#include +#include "gfx.h" #if !GFX_USE_GDISP || !GDISP_NEED_TEXT #define MF_NO_COMPILE // Don't compile any font code @@ -31,7 +31,7 @@ #endif #define MF_USE_KERNING GDISP_NEED_TEXT_KERNING -#define MF_FONT_FILE_NAME "../src/gdisp/fonts/fonts.h" +#define MF_FONT_FILE_NAME "src/gdisp/fonts/fonts.h" /* These are not used for now */ #define MF_USE_ADVANCED_WORDWRAP 0 diff --git a/include/gdisp/gdisp.h b/src/gdisp/sys_defs.h similarity index 99% rename from include/gdisp/gdisp.h rename to src/gdisp/sys_defs.h index d1d78145..a40d6e80 100644 --- a/include/gdisp/gdisp.h +++ b/src/gdisp/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gdisp/gdisp.h + * @file src/gdisp/sys_defs.h * @brief GDISP Graphic Driver subsystem header file. * * @addtogroup GDISP @@ -985,7 +985,7 @@ void gdispGDrawBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, co #endif #if GDISP_NEED_IMAGE || defined(__DOXYGEN__) - #include "gdisp/image.h" + #include "src/gdisp/image.h" #endif #endif /* GFX_USE_GDISP */ diff --git a/src/gdisp/gdisp.mk b/src/gdisp/sys_make.mk similarity index 100% rename from src/gdisp/gdisp.mk rename to src/gdisp/sys_make.mk diff --git a/include/gdisp/options.h b/src/gdisp/sys_options.h similarity index 99% rename from include/gdisp/options.h rename to src/gdisp/sys_options.h index 35cccea3..a38e4c6f 100644 --- a/include/gdisp/options.h +++ b/src/gdisp/sys_options.h @@ -6,7 +6,7 @@ */ /** - * @file include/gdisp/options.h + * @file src/gdisp/sys_options.h * @brief GDISP sub-system options header file. * * @addtogroup GDISP diff --git a/src/gdisp/sys_rules.h b/src/gdisp/sys_rules.h new file mode 100644 index 00000000..83c95216 --- /dev/null +++ b/src/gdisp/sys_rules.h @@ -0,0 +1,85 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gdisp/sys_rules.h + * @brief GDISP safety rules header file. + * + * @addtogroup GDISP + * @{ + */ + +#ifndef _GDISP_RULES_H +#define _GDISP_RULES_H + +#if GFX_USE_GDISP + #if GDISP_TOTAL_CONTROLLERS > 1 + #ifndef GDISP_CONTROLLER_LIST + #error "GDISP Multiple Controllers: You must specify a value for GDISP_CONTROLLER_LIST" + #endif + #ifndef GDISP_CONTROLLER_DISPLAYS + #error "GDISP Multiple Controllers: You must specify a value for GDISP_CONTROLLER_DISPLAYS" + #endif + #ifndef GDISP_PIXELFORMAT + #error "GDISP Multiple Controllers: You must specify a value for GDISP_PIXELFORMAT" + #endif + #endif + #if GDISP_NEED_AUTOFLUSH && GDISP_NEED_TIMERFLUSH + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GDISP: Both GDISP_NEED_AUTOFLUSH and GDISP_NEED_TIMERFLUSH has been set. GDISP_NEED_TIMERFLUSH has disabled for you." + #endif + #undef GDISP_NEED_TIMERFLUSH + #define GDISP_NEED_TIMERFLUSH FALSE + #endif + #if GDISP_NEED_TIMERFLUSH + #if GDISP_NEED_TIMERFLUSH < 50 || GDISP_NEED_TIMERFLUSH > 1200 + #error "GDISP: GDISP_NEED_TIMERFLUSH has been set to an invalid value (FALSE, 50-1200)." + #endif + #if !GFX_USE_GTIMER + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GDISP: GDISP_NEED_TIMERFLUSH has been set but GFX_USE_GTIMER has not been set. It has been turned on for you." + #endif + #undef GFX_USE_GTIMER + #define GFX_USE_GTIMER TRUE + #undef GDISP_NEED_MULTITHREAD + #define GDISP_NEED_MULTITHREAD TRUE + #endif + #endif + #if GDISP_NEED_ANTIALIAS && !GDISP_NEED_PIXELREAD + #if GDISP_HARDWARE_PIXELREAD + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GDISP: GDISP_NEED_ANTIALIAS has been set but GDISP_NEED_PIXELREAD has not. It has been turned on for you." + #endif + #undef GDISP_NEED_PIXELREAD + #define GDISP_NEED_PIXELREAD TRUE + #else + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GDISP: GDISP_NEED_ANTIALIAS has been set but your hardware does not support reading back pixels. Anti-aliasing will only occur for filled characters." + #endif + #endif + #endif + #if (defined(GDISP_INCLUDE_FONT_SMALL) && GDISP_INCLUDE_FONT_SMALL) || (defined(GDISP_INCLUDE_FONT_LARGER) && GDISP_INCLUDE_FONT_LARGER) + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GDISP: An old font (Small or Larger) has been defined. A single default font of UI2 has been added instead." + #warning "GDISP: Please see <$(GFXLIB)/include/gdisp/fonts/fonts.h> for a list of available font names." + #endif + #undef GDISP_INCLUDE_FONT_UI2 + #define GDISP_INCLUDE_FONT_UI2 TRUE + #endif + #if GDISP_NEED_IMAGE + #if !GFX_USE_GFILE + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GDISP: GFX_USE_GFILE is required when GDISP_NEED_IMAGE is TRUE. It has been turned on for you." + #endif + #undef GFX_USE_GFILE + #define GFX_USE_GFILE TRUE + #endif + #endif +#endif + +#endif /* _GDISP_RULES_H */ +/** @} */ diff --git a/include/gevent/gevent.h b/src/gevent/sys_defs.h similarity index 99% rename from include/gevent/gevent.h rename to src/gevent/sys_defs.h index 3e3544a2..0e656145 100644 --- a/include/gevent/gevent.h +++ b/src/gevent/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gevent/gevent.h + * @file src/gevent/sys_defs.h * * @addtogroup GEVENT * diff --git a/src/gevent/gevent.mk b/src/gevent/sys_make.mk similarity index 97% rename from src/gevent/gevent.mk rename to src/gevent/sys_make.mk index 59226318..5744ae46 100644 --- a/src/gevent/gevent.mk +++ b/src/gevent/sys_make.mk @@ -1 +1 @@ -GFXSRC += $(GFXLIB)/src/gevent/gevent.c +GFXSRC += $(GFXLIB)/src/gevent/gevent.c diff --git a/include/gevent/options.h b/src/gevent/sys_options.h similarity index 96% rename from include/gevent/options.h rename to src/gevent/sys_options.h index 75b7a749..6a58103f 100644 --- a/include/gevent/options.h +++ b/src/gevent/sys_options.h @@ -6,7 +6,7 @@ */ /** - * @file include/gevent/options.h + * @file src/gevent/sys_options.h * @brief GEVENT sub-system options header file. * * @addtogroup GEVENT diff --git a/src/gevent/sys_rules.h b/src/gevent/sys_rules.h new file mode 100644 index 00000000..8cf7e9b4 --- /dev/null +++ b/src/gevent/sys_rules.h @@ -0,0 +1,23 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gevent/sys_rules.h + * @brief GEVENT safety rules header file. + * + * @addtogroup GEVENT + * @{ + */ + +#ifndef _GEVENT_RULES_H +#define _GEVENT_RULES_H + +#if GFX_USE_GEVENT +#endif + +#endif /* _GEVENT_RULES_H */ +/** @} */ diff --git a/src/gfile/gfile.c b/src/gfile/gfile.c index 9edafea4..8a3abf9c 100644 --- a/src/gfile/gfile.c +++ b/src/gfile/gfile.c @@ -77,42 +77,42 @@ GFILE *gfileStdErr; * The ChibiOS BaseFileStream VMT ********************************************************/ #if GFILE_NEED_CHIBIOSFS && GFX_USE_OS_CHIBIOS - #include "../src/gfile/inc_chibiosfs.c" + #include "src/gfile/inc_chibiosfs.c" #endif /******************************************************** * The Memory Pointer VMT ********************************************************/ #if GFILE_NEED_MEMFS - #include "../src/gfile/inc_memfs.c" + #include "src/gfile/inc_memfs.c" #endif /******************************************************** * The RAM file-system VMT ********************************************************/ #if GFILE_NEED_RAMFS - #include "../src/gfile/inc_ramfs.c" + #include "src/gfile/inc_ramfs.c" #endif /******************************************************** * The FAT file-system VMT ********************************************************/ #ifndef GFILE_NEED_FATFS - #include "../src/gfile/inc_fatfs.c" + #include "src/gfile/inc_fatfs.c" #endif /******************************************************** * The native file-system ********************************************************/ #if GFILE_NEED_NATIVEFS - #include "../src/gfile/inc_nativefs.c" + #include "src/gfile/inc_nativefs.c" #endif /******************************************************** * The ROM file-system VMT ********************************************************/ #if GFILE_NEED_ROMFS - #include "../src/gfile/inc_romfs.c" + #include "src/gfile/inc_romfs.c" #endif /******************************************************** diff --git a/include/gfile/gfile.h b/src/gfile/sys_defs.h similarity index 99% rename from include/gfile/gfile.h rename to src/gfile/sys_defs.h index 62972c47..675bc4b1 100644 --- a/include/gfile/gfile.h +++ b/src/gfile/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gfile/gfile.h + * @file src/gfile/sys_defs.h * @brief GFILE - File IO Routines header file. * * @addtogroup GFILE diff --git a/src/gfile/gfile.mk b/src/gfile/sys_make.mk similarity index 100% rename from src/gfile/gfile.mk rename to src/gfile/sys_make.mk diff --git a/include/gfile/options.h b/src/gfile/sys_options.h similarity index 99% rename from include/gfile/options.h rename to src/gfile/sys_options.h index d73af02c..6e36e6b7 100644 --- a/include/gfile/options.h +++ b/src/gfile/sys_options.h @@ -6,7 +6,7 @@ */ /** - * @file include/gfile/options.h + * @file src/gfile/sys_options.h * @brief GFILE - File IO options header file. * * @addtogroup GFILE diff --git a/src/gfile/sys_rules.h b/src/gfile/sys_rules.h new file mode 100644 index 00000000..8d07144d --- /dev/null +++ b/src/gfile/sys_rules.h @@ -0,0 +1,23 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gfile/sys_rules.h + * @brief GFILE safety rules header file. + * + * @addtogroup GFILE + * @{ + */ + +#ifndef _GFILE_RULES_H +#define _GFILE_RULES_H + +#if GFX_USE_GFILE +#endif + +#endif /* _GFILE_RULES_H */ +/** @} */ diff --git a/src/gfx.c b/src/gfx.c index dfc9cb75..d01d3b1f 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -107,7 +107,7 @@ void gfxDeinit(void) _gaudoutDeinit(); #endif #if GFX_USE_GAUDIN - _gaoudinDeinit(); + _gaudinDeinit(); #endif #if GFX_USE_GADC _gadcDeinit(); diff --git a/src/ginput/dial.c b/src/ginput/dial.c index a9d1858c..410efc1a 100644 --- a/src/ginput/dial.c +++ b/src/ginput/dial.c @@ -17,7 +17,7 @@ #if GFX_USE_GINPUT && GINPUT_NEED_DIAL -#include "ginput/lld/dial.h" +#include "src/ginput/driver_dial.h" static GTIMER_DECL(DialTimer); static struct DialStatus_t { diff --git a/include/ginput/dial.h b/src/ginput/dial.h similarity index 100% rename from include/ginput/dial.h rename to src/ginput/dial.h diff --git a/include/ginput/lld/dial.h b/src/ginput/driver_dial.h similarity index 96% rename from include/ginput/lld/dial.h rename to src/ginput/driver_dial.h index a7ce19ad..bf01da20 100644 --- a/include/ginput/lld/dial.h +++ b/src/ginput/driver_dial.h @@ -6,7 +6,7 @@ */ /** - * @file include/ginput/lld/dial.h + * @file src/ginput/driver_dial.h * @brief GINPUT header file for dial drivers. * * @defgroup Dial Dial diff --git a/include/ginput/lld/mouse.h b/src/ginput/driver_mouse.h similarity index 99% rename from include/ginput/lld/mouse.h rename to src/ginput/driver_mouse.h index 6b8246dc..21d87dac 100644 --- a/include/ginput/lld/mouse.h +++ b/src/ginput/driver_mouse.h @@ -6,7 +6,7 @@ */ /** - * @file include/ginput/lld/mouse.h + * @file src/ginput/driver_mouse.h * @brief GINPUT LLD header file for mouse/touch drivers. * * @defgroup Mouse Mouse diff --git a/include/ginput/lld/toggle.h b/src/ginput/driver_toggle.h similarity index 97% rename from include/ginput/lld/toggle.h rename to src/ginput/driver_toggle.h index c7809342..6d672c91 100644 --- a/include/ginput/lld/toggle.h +++ b/src/ginput/driver_toggle.h @@ -6,7 +6,7 @@ */ /** - * @file include/ginput/lld/toggle.h + * @file src/ginput/driver_toggle.h * @brief GINPUT header file for toggle drivers. * * @defgroup Toggle Toggle diff --git a/include/ginput/keyboard.h b/src/ginput/keyboard.h similarity index 100% rename from include/ginput/keyboard.h rename to src/ginput/keyboard.h diff --git a/src/ginput/mouse.c b/src/ginput/mouse.c index 8bee3499..c7a20ec1 100644 --- a/src/ginput/mouse.c +++ b/src/ginput/mouse.c @@ -17,7 +17,7 @@ #if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) || defined(__DOXYGEN__) -#include "ginput/lld/mouse.h" +#include "src/ginput/driver_mouse.h" #if GINPUT_MOUSE_NEED_CALIBRATION #if !defined(GFX_USE_GDISP) || !GFX_USE_GDISP @@ -39,12 +39,12 @@ #endif typedef struct Calibration_t { - float ax; - float bx; - float cx; - float ay; - float by; - float cy; + float ax; + float bx; + float cx; + float ay; + float by; + float cy; } Calibration; #endif @@ -76,7 +76,57 @@ static struct MouseConfig_t { GDisplay * display; } MouseConfig; +void _tsOrientClip(MouseReading *pt, GDisplay *g, bool_t doClip) { + coord_t w, h; + + w = gdispGGetWidth(g); + h = gdispGGetHeight(g); + + #if GDISP_NEED_CONTROL && !GINPUT_MOUSE_NO_ROTATION + switch(gdispGGetOrientation(g)) { + case GDISP_ROTATE_0: + break; + case GDISP_ROTATE_90: + { + coord_t t = pt->x; + pt->x = w - 1 - pt->y; + pt->y = t; + } + break; + case GDISP_ROTATE_180: + pt->x = w - 1 - pt->x; + pt->y = h - 1 - pt->y; + break; + case GDISP_ROTATE_270: + { + coord_t t = pt->y; + pt->y = h - 1 - pt->x; + pt->x = t; + } + break; + default: + break; + } + #endif + + if (doClip) { + if (pt->x < 0) pt->x = 0; + else if (pt->x >= w) pt->x = w-1; + if (pt->y < 0) pt->y = 0; + else if (pt->y >= h) pt->y = h-1; + } +} + #if GINPUT_MOUSE_NEED_CALIBRATION + static inline void _tsSetIdentity(Calibration *c) { + c->ax = 1; + c->bx = 0; + c->cx = 0; + c->ay = 0; + c->by = 1; + c->cy = 0; + } + static inline void _tsDrawCross(const MousePoint *pp) { gdispGDrawLine(MouseConfig.display, pp->x-15, pp->y, pp->x-2, pp->y, White); gdispGDrawLine(MouseConfig.display, pp->x+2, pp->y, pp->x+15, pp->y, White); @@ -105,41 +155,96 @@ static struct MouseConfig_t { pt->y = (coord_t) (c->ay * pt->x + c->by * pt->y + c->cy); } - static inline void _tsDo3PointCalibration(const MousePoint *cross, const MousePoint *points, Calibration *c) { - float dx, dx0, dx1, dx2, dy0, dy1, dy2; + static inline void _tsDo3PointCalibration(const MousePoint *cross, const MousePoint *points, GDisplay *g, Calibration *c) { + float dx; + coord_t c0, c1, c2; + + #if GDISP_NEED_CONTROL + /* Convert all cross points back to GDISP_ROTATE_0 convention + * before calculating the calibration matrix. + */ + switch(gdispGGetOrientation(g)) { + case GDISP_ROTATE_90: + c0 = cross[0].y; + c1 = cross[1].y; + c2 = cross[2].y; + break; + case GDISP_ROTATE_180: + c0 = c1 = c2 = gdispGGetWidth(g) - 1; + c0 -= cross[0].x; + c1 -= cross[1].x; + c2 -= cross[2].x; + break; + case GDISP_ROTATE_270: + c0 = c1 = c2 = gdispGGetHeight(g) - 1; + c0 -= cross[0].y; + c1 -= cross[1].y; + c2 -= cross[2].y; + break; + case GDISP_ROTATE_0: + default: + c0 = cross[0].x; + c1 = cross[1].x; + c2 = cross[2].x; + break; + } + #else + c0 = cross[0].x; + c1 = cross[1].x; + c2 = cross[2].x; + #endif /* Compute all the required determinants */ - dx = ((float)(points[0].x - points[2].x)) * ((float)(points[1].y - points[2].y)) - - ((float)(points[1].x - points[2].x)) * ((float)(points[0].y - points[2].y)); + dx = (float)(points[0].x - points[2].x) * (float)(points[1].y - points[2].y) + - (float)(points[1].x - points[2].x) * (float)(points[0].y - points[2].y); - dx0 = ((float)(cross[0].x - cross[2].x)) * ((float)(points[1].y - points[2].y)) - - ((float)(cross[1].x - cross[2].x)) * ((float)(points[0].y - points[2].y)); + c->ax = ((float)(c0 - c2) * (float)(points[1].y - points[2].y) + - (float)(c1 - c2) * (float)(points[0].y - points[2].y)) / dx; + c->bx = ((float)(c1 - c2) * (float)(points[0].x - points[2].x) + - (float)(c0 - c2) * (float)(points[1].x - points[2].x)) / dx; + c->cx = (c0 * ((float)points[1].x * (float)points[2].y - (float)points[2].x * (float)points[1].y) + - c1 * ((float)points[0].x * (float)points[2].y - (float)points[2].x * (float)points[0].y) + + c2 * ((float)points[0].x * (float)points[1].y - (float)points[1].x * (float)points[0].y)) / dx; - dx1 = ((float)(cross[1].x - cross[2].x)) * ((float)(points[0].x - points[2].x)) - - ((float)(cross[0].x - cross[2].x)) * ((float)(points[1].x - points[2].x)); + #if GDISP_NEED_CONTROL + switch(gdispGGetOrientation(g)) { + case GDISP_ROTATE_90: + c0 = c1 = c2 = gdispGGetWidth(g) - 1; + c0 -= cross[0].x; + c1 -= cross[1].x; + c2 -= cross[2].x; + break; + case GDISP_ROTATE_180: + c0 = c1 = c2 = gdispGGetHeight(g) - 1; + c0 -= cross[0].y; + c1 -= cross[1].y; + c2 -= cross[2].y; + break; + case GDISP_ROTATE_270: + c0 = cross[0].x; + c1 = cross[1].x; + c2 = cross[2].x; + break; + case GDISP_ROTATE_0: + default: + c0 = cross[0].y; + c1 = cross[1].y; + c2 = cross[2].y; + break; + } + #else + c0 = cross[0].y; + c1 = cross[1].y; + c2 = cross[2].y; + #endif - dx2 = cross[0].x * ((float)points[1].x * (float)points[2].y - (float)points[2].x * (float)points[1].y) - - cross[1].x * ((float)points[0].x * (float)points[2].y - (float)points[2].x * (float)points[0].y) + - cross[2].x * ((float)points[0].x * (float)points[1].y - (float)points[1].x * (float)points[0].y); - - dy0 = ((float)(cross[0].y - cross[2].y)) * ((float)(points[1].y - points[2].y)) - - ((float)(cross[1].y - cross[2].y)) * ((float)(points[0].y - points[2].y)); - - dy1 = ((float)(cross[1].y - cross[2].y)) * ((float)(points[0].x - points[2].x)) - - ((float)(cross[0].y - cross[2].y)) * ((float)(points[1].x - points[2].x)); - - dy2 = cross[0].y * ((float)points[1].x * (float)points[2].y - (float)points[2].x * (float)points[1].y) - - cross[1].y * ((float)points[0].x * (float)points[2].y - (float)points[2].x * (float)points[0].y) + - cross[2].y * ((float)points[0].x * (float)points[1].y - (float)points[1].x * (float)points[0].y); - - /* Now, calculate all the required coefficients */ - c->ax = dx0 / dx; - c->bx = dx1 / dx; - c->cx = dx2 / dx; - - c->ay = dy0 / dx; - c->by = dy1 / dx; - c->cy = dy2 / dx; + c->ay = ((float)(c0 - c2) * (float)(points[1].y - points[2].y) + - (float)(c1 - c2) * (float)(points[0].y - points[2].y)) / dx; + c->by = ((float)(c1 - c2) * (float)(points[0].x - points[2].x) + - (float)(c0 - c2) * (float)(points[1].x - points[2].x)) / dx; + c->cy = (c0 * ((float)points[1].x * (float)points[2].y - (float)points[2].x * (float)points[1].y) + - c1 * ((float)points[0].x * (float)points[2].y - (float)points[2].x * (float)points[0].y) + + c2 * ((float)points[0].x * (float)points[1].y - (float)points[1].x * (float)points[0].y)) / dx; } #endif @@ -166,56 +271,13 @@ static struct MouseConfig_t { #endif static void get_calibrated_reading(MouseReading *pt) { - #if GINPUT_MOUSE_NEED_CALIBRATION || (GDISP_NEED_CONTROL && !GINPUT_MOUSE_NO_ROTATION) - coord_t w, h; - #endif - get_raw_reading(pt); #if GINPUT_MOUSE_NEED_CALIBRATION _tsTransform(pt, &MouseConfig.caldata); #endif - #if GINPUT_MOUSE_NEED_CALIBRATION || (GDISP_NEED_CONTROL && !GINPUT_MOUSE_NO_ROTATION) - w = gdispGGetWidth(MouseConfig.display); - h = gdispGGetHeight(MouseConfig.display); - #endif - - #if GDISP_NEED_CONTROL && !GINPUT_MOUSE_NO_ROTATION - switch(gdispGGetOrientation(MouseConfig.display)) { - case GDISP_ROTATE_0: - break; - case GDISP_ROTATE_90: - { - coord_t t = pt->x; - pt->x = w - 1 - pt->y; - pt->y = t; - } - break; - case GDISP_ROTATE_180: - pt->x = w - 1 - pt->x; - pt->y = h - 1 - pt->y; - break; - case GDISP_ROTATE_270: - { - coord_t t = pt->y; - pt->y = h - 1 - pt->x; - pt->x = t; - } - break; - default: - break; - } - #endif - - #if GINPUT_MOUSE_NEED_CALIBRATION - if (!(MouseConfig.flags & FLG_CAL_RAW)) { - if (pt->x < 0) pt->x = 0; - else if (pt->x >= w) pt->x = w-1; - if (pt->y < 0) pt->y = 0; - else if (pt->y >= h) pt->y = h-1; - } - #endif + _tsOrientClip(pt, MouseConfig.display, !(MouseConfig.flags & FLG_CAL_RAW)); } static void MousePoll(void *param) { @@ -359,12 +421,7 @@ GSourceHandle ginputGetMouse(uint16_t instance) { if ((MouseConfig.flags & FLG_CAL_FREE)) gfxFree((void *)pc); } else if (instance == 9999) { - MouseConfig.caldata.ax = 1; - MouseConfig.caldata.bx = 0; - MouseConfig.caldata.cx = 0; - MouseConfig.caldata.ay = 0; - MouseConfig.caldata.by = 1; - MouseConfig.caldata.cy = 0; + _tsSetIdentity(&MouseConfig.caldata); MouseConfig.flags |= (FLG_CAL_OK|FLG_CAL_SAVED|FLG_CAL_RAW); } else ginputCalibrateMouse(instance); @@ -461,10 +518,6 @@ bool_t ginputCalibrateMouse(uint16_t instance) { gtimerStop(&MouseTimer); MouseConfig.flags &= ~(FLG_CAL_OK|FLG_CAL_SAVED|FLG_CAL_RAW); - #if GDISP_NEED_CONTROL - gdispGSetOrientation(MouseConfig.display, GDISP_ROTATE_0); - #endif - #if GDISP_NEED_CLIP gdispGSetClip(MouseConfig.display, 0, 0, width, height); #endif @@ -511,7 +564,7 @@ bool_t ginputCalibrateMouse(uint16_t instance) { } /* Apply 3 point calibration algorithm */ - _tsDo3PointCalibration(cross, points, &MouseConfig.caldata); + _tsDo3PointCalibration(cross, points, MouseConfig.display, &MouseConfig.caldata); /* Verification of correctness of calibration (optional) : * See if the 4th point (Middle of the screen) coincides with the calibrated @@ -523,6 +576,7 @@ bool_t ginputCalibrateMouse(uint16_t instance) { MouseConfig.t.x = points[3].x; MouseConfig.t.y = points[3].y; _tsTransform(&MouseConfig.t, &MouseConfig.caldata); + _tsOrientClip(&MouseConfig.t, MouseConfig.display, FALSE); /* Calculate the delta */ err = (MouseConfig.t.x - cross[3].x) * (MouseConfig.t.x - cross[3].x) + diff --git a/include/ginput/mouse.h b/src/ginput/mouse.h similarity index 100% rename from include/ginput/mouse.h rename to src/ginput/mouse.h diff --git a/include/ginput/ginput.h b/src/ginput/sys_defs.h similarity index 88% rename from include/ginput/ginput.h rename to src/ginput/sys_defs.h index 3b2e37f5..33259da4 100644 --- a/include/ginput/ginput.h +++ b/src/ginput/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/ginput/ginput.h + * @file src/ginput/sys_defs.h * * @addtogroup GINPUT * @@ -39,10 +39,10 @@ */ // Include various ginput types -#include "ginput/mouse.h" -#include "ginput/keyboard.h" -#include "ginput/toggle.h" -#include "ginput/dial.h" +#include "src/ginput/mouse.h" +#include "src/ginput/keyboard.h" +#include "src/ginput/toggle.h" +#include "src/ginput/dial.h" #endif /* GFX_USE_GINPUT */ diff --git a/src/ginput/ginput.mk b/src/ginput/sys_make.mk similarity index 97% rename from src/ginput/ginput.mk rename to src/ginput/sys_make.mk index ed34d46d..34ac4a55 100644 --- a/src/ginput/ginput.mk +++ b/src/ginput/sys_make.mk @@ -1,5 +1,5 @@ -GFXSRC += $(GFXLIB)/src/ginput/ginput.c \ - $(GFXLIB)/src/ginput/mouse.c \ - $(GFXLIB)/src/ginput/keyboard.c \ - $(GFXLIB)/src/ginput/toggle.c \ - $(GFXLIB)/src/ginput/dial.c +GFXSRC += $(GFXLIB)/src/ginput/ginput.c \ + $(GFXLIB)/src/ginput/mouse.c \ + $(GFXLIB)/src/ginput/keyboard.c \ + $(GFXLIB)/src/ginput/toggle.c \ + $(GFXLIB)/src/ginput/dial.c diff --git a/include/ginput/options.h b/src/ginput/sys_options.h similarity index 96% rename from include/ginput/options.h rename to src/ginput/sys_options.h index 5d903b07..c606262b 100644 --- a/include/ginput/options.h +++ b/src/ginput/sys_options.h @@ -4,111 +4,111 @@ * * http://ugfx.org/license.html */ - -/** - * @file include/ginput/options.h - * @brief GINPUT sub-system options header file. - * - * @addtogroup GINPUT - * @{ - */ - -#ifndef _GINPUT_OPTIONS_H -#define _GINPUT_OPTIONS_H - -/** - * @name GINPUT Functionality to be included - * @{ - */ - /** - * @brief Should mouse/touch functions be included. - * @details Defaults to FALSE - * @note Also add the a mouse/touch hardware driver to your makefile. - * Eg. - * include $(GFXLIB)/drivers/ginput/touch/MCU/ginput_lld.mk - */ - #ifndef GINPUT_NEED_MOUSE - #define GINPUT_NEED_MOUSE FALSE - #endif - /** - * @brief Should keyboard functions be included. - * @details Defaults to FALSE - * @note Also add the a keyboard hardware driver to your makefile. - * Eg. - * include $(GFXLIB)/drivers/ginput/keyboard/XXXX/ginput_lld.mk - */ - #ifndef GINPUT_NEED_KEYBOARD - #define GINPUT_NEED_KEYBOARD FALSE - #endif - /** - * @brief Should hardware toggle/switch/button functions be included. - * @details Defaults to FALSE - * @note Also add the a toggle hardware driver to your makefile. - * Eg. - * include $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld.mk - */ - #ifndef GINPUT_NEED_TOGGLE - #define GINPUT_NEED_TOGGLE FALSE - #endif - /** - * @brief Should analog dial functions be included. - * @details Defaults to FALSE - * @note Also add the a dial hardware driver to your makefile. - * Eg. - * include $(GFXLIB)/drivers/ginput/dial/analog/ginput_lld.mk - */ - #ifndef GINPUT_NEED_DIAL - #define GINPUT_NEED_DIAL FALSE - #endif -/** - * @} - * - * @name GINPUT Optional Sizing Parameters - * @{ - */ -/** - * @} - * - * @name GINPUT Optional Low Level Driver Defines - * @{ - */ - /** - * @brief Use a custom board definition for the mouse/touch driver even if a board definition exists. - * @details Defaults to FALSE - * @details If TRUE, add ginput_lld_mouse_board.h to your project directory and customise it. - * @note Not all GINPUT mouse/touch low level drivers use board definition files. - */ - #ifndef GINPUT_MOUSE_USE_CUSTOM_BOARD - #define GINPUT_MOUSE_USE_CUSTOM_BOARD FALSE - #endif - /** - * @brief Use a custom board definition for the keyboard driver even if a board definition exists. - * @details Defaults to FALSE - * @details If TRUE, add ginput_lld_keyboard_board.h to your project directory and customise it. - * @note Not all GINPUT keyboard low level drivers use board definition files. - */ - #ifndef GINPUT_KEYBOARD_USE_CUSTOM_BOARD - #define GINPUT_KEYBOARD_USE_CUSTOM_BOARD FALSE - #endif - /** - * @brief Use a custom board definition for the toggle driver even if a board definition exists. - * @details Defaults to FALSE - * @details If TRUE, add ginput_lld_toggle_board.h to your project directory and customise it. - * @note Not all GINPUT toggle low level drivers use board definition files. - */ - #ifndef GINPUT_TOGGLE_USE_CUSTOM_BOARD - #define GINPUT_TOGGLE_USE_CUSTOM_BOARD FALSE - #endif - /** - * @brief Use a custom board definition for the dial driver even if a board definition exists. - * @details Defaults to FALSE - * @details If TRUE, add ginput_lld_dial_board.h to your project directory and customise it. - * @note Not all GINPUT dial low level drivers use board definition files. - */ - #ifndef GINPUT_DIAL_USE_CUSTOM_BOARD - #define GINPUT_DIAL_USE_CUSTOM_BOARD FALSE - #endif -/** @} */ - -#endif /* _GINPUT_OPTIONS_H */ -/** @} */ + +/** + * @file src/ginput/sys_options.h + * @brief GINPUT sub-system options header file. + * + * @addtogroup GINPUT + * @{ + */ + +#ifndef _GINPUT_OPTIONS_H +#define _GINPUT_OPTIONS_H + +/** + * @name GINPUT Functionality to be included + * @{ + */ + /** + * @brief Should mouse/touch functions be included. + * @details Defaults to FALSE + * @note Also add the a mouse/touch hardware driver to your makefile. + * Eg. + * include $(GFXLIB)/drivers/ginput/touch/MCU/ginput_lld.mk + */ + #ifndef GINPUT_NEED_MOUSE + #define GINPUT_NEED_MOUSE FALSE + #endif + /** + * @brief Should keyboard functions be included. + * @details Defaults to FALSE + * @note Also add the a keyboard hardware driver to your makefile. + * Eg. + * include $(GFXLIB)/drivers/ginput/keyboard/XXXX/ginput_lld.mk + */ + #ifndef GINPUT_NEED_KEYBOARD + #define GINPUT_NEED_KEYBOARD FALSE + #endif + /** + * @brief Should hardware toggle/switch/button functions be included. + * @details Defaults to FALSE + * @note Also add the a toggle hardware driver to your makefile. + * Eg. + * include $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld.mk + */ + #ifndef GINPUT_NEED_TOGGLE + #define GINPUT_NEED_TOGGLE FALSE + #endif + /** + * @brief Should analog dial functions be included. + * @details Defaults to FALSE + * @note Also add the a dial hardware driver to your makefile. + * Eg. + * include $(GFXLIB)/drivers/ginput/dial/analog/ginput_lld.mk + */ + #ifndef GINPUT_NEED_DIAL + #define GINPUT_NEED_DIAL FALSE + #endif +/** + * @} + * + * @name GINPUT Optional Sizing Parameters + * @{ + */ +/** + * @} + * + * @name GINPUT Optional Low Level Driver Defines + * @{ + */ + /** + * @brief Use a custom board definition for the mouse/touch driver even if a board definition exists. + * @details Defaults to FALSE + * @details If TRUE, add ginput_lld_mouse_board.h to your project directory and customise it. + * @note Not all GINPUT mouse/touch low level drivers use board definition files. + */ + #ifndef GINPUT_MOUSE_USE_CUSTOM_BOARD + #define GINPUT_MOUSE_USE_CUSTOM_BOARD FALSE + #endif + /** + * @brief Use a custom board definition for the keyboard driver even if a board definition exists. + * @details Defaults to FALSE + * @details If TRUE, add ginput_lld_keyboard_board.h to your project directory and customise it. + * @note Not all GINPUT keyboard low level drivers use board definition files. + */ + #ifndef GINPUT_KEYBOARD_USE_CUSTOM_BOARD + #define GINPUT_KEYBOARD_USE_CUSTOM_BOARD FALSE + #endif + /** + * @brief Use a custom board definition for the toggle driver even if a board definition exists. + * @details Defaults to FALSE + * @details If TRUE, add ginput_lld_toggle_board.h to your project directory and customise it. + * @note Not all GINPUT toggle low level drivers use board definition files. + */ + #ifndef GINPUT_TOGGLE_USE_CUSTOM_BOARD + #define GINPUT_TOGGLE_USE_CUSTOM_BOARD FALSE + #endif + /** + * @brief Use a custom board definition for the dial driver even if a board definition exists. + * @details Defaults to FALSE + * @details If TRUE, add ginput_lld_dial_board.h to your project directory and customise it. + * @note Not all GINPUT dial low level drivers use board definition files. + */ + #ifndef GINPUT_DIAL_USE_CUSTOM_BOARD + #define GINPUT_DIAL_USE_CUSTOM_BOARD FALSE + #endif +/** @} */ + +#endif /* _GINPUT_OPTIONS_H */ +/** @} */ diff --git a/src/ginput/sys_rules.h b/src/ginput/sys_rules.h new file mode 100644 index 00000000..f98cc469 --- /dev/null +++ b/src/ginput/sys_rules.h @@ -0,0 +1,37 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/ginput/sys_rules.h + * @brief GINPUT safety rules header file. + * + * @addtogroup GINPUT + * @{ + */ + +#ifndef _GINPUT_RULES_H +#define _GINPUT_RULES_H + +#if GFX_USE_GINPUT + #if !GFX_USE_GEVENT + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GINPUT: GFX_USE_GEVENT is required if GFX_USE_GINPUT is TRUE. It has been turned on for you." + #endif + #undef GFX_USE_GEVENT + #define GFX_USE_GEVENT TRUE + #endif + #if !GFX_USE_GTIMER + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GINPUT: GFX_USE_GTIMER is required if GFX_USE_GINPUT is TRUE. It has been turned on for you." + #endif + #undef GFX_USE_GTIMER + #define GFX_USE_GTIMER TRUE + #endif +#endif + +#endif /* _GINPUT_RULES_H */ +/** @} */ diff --git a/src/ginput/toggle.c b/src/ginput/toggle.c index ec089ecb..aad9c862 100644 --- a/src/ginput/toggle.c +++ b/src/ginput/toggle.c @@ -17,7 +17,7 @@ #if (GFX_USE_GINPUT && GINPUT_NEED_TOGGLE) || defined(__DOXYGEN__) -#include "ginput/lld/toggle.h" +#include "src/ginput/driver_toggle.h" #define GINPUT_TOGGLE_ISON 0x01 #define GINPUT_TOGGLE_INVERT 0x02 diff --git a/include/ginput/toggle.h b/src/ginput/toggle.h similarity index 100% rename from include/ginput/toggle.h rename to src/ginput/toggle.h diff --git a/include/gmisc/gmisc.h b/src/gmisc/sys_defs.h similarity index 99% rename from include/gmisc/gmisc.h rename to src/gmisc/sys_defs.h index ff3d0c76..cbb0111b 100644 --- a/include/gmisc/gmisc.h +++ b/src/gmisc/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gmisc/gmisc.h + * @file src/gmisc/sys_defs.h * @brief GMISC - Miscellaneous Routines header file. * * @addtogroup GMISC diff --git a/src/gmisc/gmisc.mk b/src/gmisc/sys_make.mk similarity index 97% rename from src/gmisc/gmisc.mk rename to src/gmisc/sys_make.mk index 73280699..66d19ab0 100644 --- a/src/gmisc/gmisc.mk +++ b/src/gmisc/sys_make.mk @@ -1,3 +1,3 @@ -GFXSRC += $(GFXLIB)/src/gmisc/gmisc.c \ - $(GFXLIB)/src/gmisc/arrayops.c \ - $(GFXLIB)/src/gmisc/trig.c +GFXSRC += $(GFXLIB)/src/gmisc/gmisc.c \ + $(GFXLIB)/src/gmisc/arrayops.c \ + $(GFXLIB)/src/gmisc/trig.c diff --git a/include/gmisc/options.h b/src/gmisc/sys_options.h similarity index 86% rename from include/gmisc/options.h rename to src/gmisc/sys_options.h index 06f689ec..9cdf37f6 100644 --- a/include/gmisc/options.h +++ b/src/gmisc/sys_options.h @@ -1,78 +1,85 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file include/gmisc/options.h - * @brief GMISC - Miscellaneous Routines options header file. - * - * @addtogroup GMISC - * @{ - */ - -#ifndef _GMISC_OPTIONS_H -#define _GMISC_OPTIONS_H - -/** - * @name GMISC Functionality to be included - * @{ - */ - /** - * @brief Include array operation functions - * @details Defaults to FALSE - */ - #ifndef GMISC_NEED_ARRAYOPS - #define GMISC_NEED_ARRAYOPS FALSE - #endif - /** - * @brief Include fast fixed point trig functions (sin, cos) - * @details Defaults to FALSE - */ - #ifndef GMISC_NEED_FIXEDTRIG - #define GMISC_NEED_FIXEDTRIG FALSE - #endif - /** - * @brief Include fast inverse square root (x^-1/2) - * @details Defaults to FALSE - */ - #ifndef GMISC_NEED_INVSQRT - #define GMISC_NEED_INVSQRT FALSE - #endif -/** - * @} - * - * @name GMISC Optional Parameters - * @{ - */ - /** - * @brief Modifies the @p invsqrt() function to assume a different integer to floating point endianness. - * @note Normally the floating point format and the integer format have - * the same endianness. Unfortunately there are some strange - * processors that don't eg. some very early ARM devices. - * For those where the endianness doesn't match you can fix it by - * defining GMISC_INVSQRT_MIXED_ENDIAN. - * @note This still assumes the processor is using an ieee floating point format. - * - * If you have a software floating point that uses a non-standard - * floating point format (or very strange hardware) then define - * GMISC_INVSQRT_REAL_SLOW and it will do it the hard way. - */ - #ifndef GMISC_INVSQRT_MIXED_ENDIAN - #define GMISC_INVSQRT_MIXED_ENDIAN FALSE - #endif - /** - * @brief Modifies the @p invsqrt() function to do things the long slow way. - * @note This causes the @p invsqrt() function to work regardless of the - * processor floating point format. - * @note This makes the @p invsqrt() function very slow. - */ - #ifndef GMISC_INVSQRT_REAL_SLOW - #define GMISC_INVSQRT_REAL_SLOW FALSE - #endif -/** @} */ - -#endif /* _GMISC_OPTIONS_H */ -/** @} */ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gmisc/sys_options.h + * @brief GMISC - Miscellaneous Routines options header file. + * + * @addtogroup GMISC + * @{ + */ + +#ifndef _GMISC_OPTIONS_H +#define _GMISC_OPTIONS_H + +/** + * @name GMISC Functionality to be included + * @{ + */ + /** + * @brief Include array operation functions + * @details Defaults to FALSE + */ + #ifndef GMISC_NEED_ARRAYOPS + #define GMISC_NEED_ARRAYOPS FALSE + #endif + /** + * @brief Include fast floating point trig functions (fsin, fcos) + * @details Defaults to FALSE + */ + #ifndef GMISC_NEED_FASTTRIG + #define GMISC_NEED_FASTTRIG FALSE + #endif + /** + * @brief Include fast fixed point trig functions (ffsin, ffcos) + * @details Defaults to FALSE + */ + #ifndef GMISC_NEED_FIXEDTRIG + #define GMISC_NEED_FIXEDTRIG FALSE + #endif + /** + * @brief Include fast inverse square root (x^-1/2) + * @details Defaults to FALSE + */ + #ifndef GMISC_NEED_INVSQRT + #define GMISC_NEED_INVSQRT FALSE + #endif +/** + * @} + * + * @name GMISC Optional Parameters + * @{ + */ + /** + * @brief Modifies the @p invsqrt() function to assume a different integer to floating point endianness. + * @note Normally the floating point format and the integer format have + * the same endianness. Unfortunately there are some strange + * processors that don't eg. some very early ARM devices. + * For those where the endianness doesn't match you can fix it by + * defining GMISC_INVSQRT_MIXED_ENDIAN. + * @note This still assumes the processor is using an ieee floating point format. + * + * If you have a software floating point that uses a non-standard + * floating point format (or very strange hardware) then define + * GMISC_INVSQRT_REAL_SLOW and it will do it the hard way. + */ + #ifndef GMISC_INVSQRT_MIXED_ENDIAN + #define GMISC_INVSQRT_MIXED_ENDIAN FALSE + #endif + /** + * @brief Modifies the @p invsqrt() function to do things the long slow way. + * @note This causes the @p invsqrt() function to work regardless of the + * processor floating point format. + * @note This makes the @p invsqrt() function very slow. + */ + #ifndef GMISC_INVSQRT_REAL_SLOW + #define GMISC_INVSQRT_REAL_SLOW FALSE + #endif +/** @} */ + +#endif /* _GMISC_OPTIONS_H */ +/** @} */ diff --git a/src/gmisc/sys_rules.h b/src/gmisc/sys_rules.h new file mode 100644 index 00000000..6c66907a --- /dev/null +++ b/src/gmisc/sys_rules.h @@ -0,0 +1,23 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gmisc/sys_rules.h + * @brief GMISC safety rules header file. + * + * @addtogroup GMISC + * @{ + */ + +#ifndef _GMISC_RULES_H +#define _GMISC_RULES_H + +#if GFX_USE_GMISC +#endif + +#endif /* _GMISC_RULES_H */ +/** @} */ diff --git a/include/gos/chibios.h b/src/gos/chibios.h similarity index 100% rename from include/gos/chibios.h rename to src/gos/chibios.h diff --git a/include/gos/freertos.h b/src/gos/freertos.h similarity index 95% rename from include/gos/freertos.h rename to src/gos/freertos.h index c9d63ec5..dc98185f 100644 --- a/include/gos/freertos.h +++ b/src/gos/freertos.h @@ -1,113 +1,113 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file include/gos/freertos.h - * @brief GOS - Operating System Support header file for FreeRTOS. - */ - -#ifndef _GOS_FREERTOS_H -#define _GOS_FREERTOS_H - -#if GFX_USE_OS_FREERTOS - -#include "FreeRTOS.h" -#include "FreeRTOSConfig.h" -#include "semphr.h" -#include "task.h" - -/*===========================================================================*/ -/* Type definitions */ -/*===========================================================================*/ - -/** - * bool_t, - * int8_t, uint8_t, - * int16_t, uint16_t, - * int32_t, uint32_t, - * size_t - * TRUE, FALSE - * are already defined by FreeRTOS - */ -#define TIME_IMMEDIATE 0 -#define TIME_INFINITE ((delaytime_t)-1) -typedef int8_t bool_t; -typedef uint32_t delaytime_t; -typedef portTickType systemticks_t; -typedef int32_t semcount_t; -typedef void threadreturn_t; -typedef portBASE_TYPE threadpriority_t; - -#define MAX_SEMAPHORE_COUNT ((semcount_t)(((unsigned long)((semcount_t)(-1))) >> 1)) -#define LOW_PRIORITY 0 -#define NORMAL_PRIORITY configMAX_PRIORITIES/2 -#define HIGH_PRIORITY configMAX_PRIORITIES-1 - -/* FreeRTOS will allocate the stack when creating the thread, so pass the size instead of a working area */ -#define DECLARE_THREAD_STACK(name, sz) size_t *name = (size_t *)sz -#define DECLARE_THREAD_FUNCTION(fnName, param) threadreturn_t fnName(void *param) -portTickType MS2ST(portTickType ms); - -typedef struct { - xSemaphoreHandle sem; - semcount_t limit; - semcount_t counter; -} gfxSem; - -typedef xSemaphoreHandle gfxMutex; -typedef xTaskHandl* gfxThreadHandle; - -/*===========================================================================*/ -/* Function declarations. */ -/*===========================================================================*/ - -#ifdef __cplusplus -extern "C" { -#endif - -#define gfxHalt(msg) {} -#define gfxExit() {} -#define gfxAlloc(sz) pvPortMalloc(sz) -#define gfxFree(ptr) vPortFree(ptr) -#define gfxYield() taskYIELD() -#define gfxSystemTicks() xTaskGetTickCount() -#define gfxMillisecondsToTicks(ms) MS2ST(ms) -#define gfxSystemLock() {} -#define gfxSystemUnlock() {} -static inline void gfxMutexInit(xSemaphoreHandle *s) -{ - *s = xSemaphoreCreateMutex(); - vTraceSetMutexName(*s,"uGFXMutex"); // for FreeRTOS+Trace debug -} -#define gfxMutexDestroy(pmutex) vSemaphoreDelete(*pmutex) -#define gfxMutexEnter(pmutex) xSemaphoreTake(*pmutex,portMAX_DELAY) -#define gfxMutexExit(pmutex) xSemaphoreGive(*pmutex) - -void *gfxRealloc(void *ptr, size_t oldsz, size_t newsz); -void gfxSleepMilliseconds(delaytime_t ms); -void gfxSleepMicroseconds(delaytime_t ms); - -void gfxSemInit(gfxSem* psem, semcount_t val, semcount_t limit); -void gfxSemDestroy(gfxSem* psem); -bool_t gfxSemWait(gfxSem* psem, delaytime_t ms); -void gfxSemSignal(gfxSem* psem); -void gfxSemSignalI(gfxSem* psem); -#define gfxSemCounterI(psem) ((psem)->counter) -#define gfxSemCounter(psem) ((psem)->counter) -gfxThreadHandle gfxThreadCreate(void *stackarea, size_t stacksz, threadpriority_t prio, DECLARE_THREAD_FUNCTION((*fn),p), void *param); - -#define gfxThreadWait(thread) {} // never used, not imlpemented -#define gfxThreadMe() {} // never used, not implemented -#define gfxThreadClose(thread) {} - -#ifdef __cplusplus -} -#endif - -#endif /* GFX_USE_OS_FREERTOS */ -#endif /* _GOS_CHIBIOS_H */ - +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gos/freertos.h + * @brief GOS - Operating System Support header file for FreeRTOS. + */ + +#ifndef _GOS_FREERTOS_H +#define _GOS_FREERTOS_H + +#if GFX_USE_OS_FREERTOS + +#include "FreeRTOS.h" +#include "FreeRTOSConfig.h" +#include "semphr.h" +#include "task.h" + +/*===========================================================================*/ +/* Type definitions */ +/*===========================================================================*/ + +/** + * bool_t, + * int8_t, uint8_t, + * int16_t, uint16_t, + * int32_t, uint32_t, + * size_t + * TRUE, FALSE + * are already defined by FreeRTOS + */ +#define TIME_IMMEDIATE 0 +#define TIME_INFINITE ((delaytime_t)-1) +typedef int8_t bool_t; +typedef uint32_t delaytime_t; +typedef portTickType systemticks_t; +typedef int32_t semcount_t; +typedef void threadreturn_t; +typedef portBASE_TYPE threadpriority_t; + +#define MAX_SEMAPHORE_COUNT ((semcount_t)(((unsigned long)((semcount_t)(-1))) >> 1)) +#define LOW_PRIORITY 0 +#define NORMAL_PRIORITY configMAX_PRIORITIES/2 +#define HIGH_PRIORITY configMAX_PRIORITIES-1 + +/* FreeRTOS will allocate the stack when creating the thread, so pass the size instead of a working area */ +#define DECLARE_THREAD_STACK(name, sz) size_t *name = (size_t *)sz +#define DECLARE_THREAD_FUNCTION(fnName, param) threadreturn_t fnName(void *param) +portTickType MS2ST(portTickType ms); + +typedef struct { + xSemaphoreHandle sem; + semcount_t limit; + semcount_t counter; +} gfxSem; + +typedef xSemaphoreHandle gfxMutex; +typedef xTaskHandl* gfxThreadHandle; + +/*===========================================================================*/ +/* Function declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#define gfxHalt(msg) {} +#define gfxExit() {} +#define gfxAlloc(sz) pvPortMalloc(sz) +#define gfxFree(ptr) vPortFree(ptr) +#define gfxYield() taskYIELD() +#define gfxSystemTicks() xTaskGetTickCount() +#define gfxMillisecondsToTicks(ms) MS2ST(ms) +#define gfxSystemLock() {} +#define gfxSystemUnlock() {} +static inline void gfxMutexInit(xSemaphoreHandle *s) +{ + *s = xSemaphoreCreateMutex(); + vTraceSetMutexName(*s,"uGFXMutex"); // for FreeRTOS+Trace debug +} +#define gfxMutexDestroy(pmutex) vSemaphoreDelete(*pmutex) +#define gfxMutexEnter(pmutex) xSemaphoreTake(*pmutex,portMAX_DELAY) +#define gfxMutexExit(pmutex) xSemaphoreGive(*pmutex) + +void *gfxRealloc(void *ptr, size_t oldsz, size_t newsz); +void gfxSleepMilliseconds(delaytime_t ms); +void gfxSleepMicroseconds(delaytime_t ms); + +void gfxSemInit(gfxSem* psem, semcount_t val, semcount_t limit); +void gfxSemDestroy(gfxSem* psem); +bool_t gfxSemWait(gfxSem* psem, delaytime_t ms); +void gfxSemSignal(gfxSem* psem); +void gfxSemSignalI(gfxSem* psem); +#define gfxSemCounterI(psem) ((psem)->counter) +#define gfxSemCounter(psem) ((psem)->counter) +gfxThreadHandle gfxThreadCreate(void *stackarea, size_t stacksz, threadpriority_t prio, DECLARE_THREAD_FUNCTION((*fn),p), void *param); + +#define gfxThreadWait(thread) {} // never used, not imlpemented +#define gfxThreadMe() {} // never used, not implemented +#define gfxThreadClose(thread) {} + +#ifdef __cplusplus +} +#endif + +#endif /* GFX_USE_OS_FREERTOS */ +#endif /* _GOS_CHIBIOS_H */ + diff --git a/include/gos/linux.h b/src/gos/linux.h similarity index 100% rename from include/gos/linux.h rename to src/gos/linux.h diff --git a/include/gos/osx.h b/src/gos/osx.h similarity index 100% rename from include/gos/osx.h rename to src/gos/osx.h diff --git a/include/gos/raw32.h b/src/gos/raw32.h similarity index 100% rename from include/gos/raw32.h rename to src/gos/raw32.h diff --git a/include/gos/gos.h b/src/gos/sys_defs.h similarity index 98% rename from include/gos/gos.h rename to src/gos/sys_defs.h index 54529016..b86d6d6a 100644 --- a/include/gos/gos.h +++ b/src/gos/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gos/gos.h + * @file src/gos/sys_defs.h * @brief GOS - Operating System Support header file * * @addtogroup GOS @@ -428,17 +428,17 @@ * (without any of the documentation overheads) is in the files below. */ #elif GFX_USE_OS_CHIBIOS - #include "gos/chibios.h" + #include "src/gos/chibios.h" #elif GFX_USE_OS_FREERTOS - #include "gos/freertos.h" + #include "src/gos/freertos.h" #elif GFX_USE_OS_WIN32 - #include "gos/win32.h" + #include "src/gos/win32.h" #elif GFX_USE_OS_LINUX - #include "gos/linux.h" + #include "src/gos/linux.h" #elif GFX_USE_OS_OSX - #include "gos/osx.h" + #include "src/gos/osx.h" #elif GFX_USE_OS_RAW32 - #include "gos/raw32.h" + #include "src/gos/raw32.h" #else #error "Your operating system is not supported yet" #endif diff --git a/src/gos/gos.mk b/src/gos/sys_make.mk similarity index 100% rename from src/gos/gos.mk rename to src/gos/sys_make.mk diff --git a/include/gos/options.h b/src/gos/sys_options.h similarity index 97% rename from include/gos/options.h rename to src/gos/sys_options.h index 864cb832..9d2e735f 100644 --- a/include/gos/options.h +++ b/src/gos/sys_options.h @@ -6,7 +6,7 @@ */ /** - * @file include/gos/options.h + * @file src/gos/sys_options.h * @brief GOS - Operating System options header file. * * @addtogroup GOS diff --git a/src/gos/sys_rules.h b/src/gos/sys_rules.h new file mode 100644 index 00000000..ff4a1ecb --- /dev/null +++ b/src/gos/sys_rules.h @@ -0,0 +1,31 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gos/sys_rules.h + * @brief GOS safety rules header file. + * + * @addtogroup GOS + * @{ + */ + +#ifndef _GOS_RULES_H +#define _GOS_RULES_H + +#if !GFX_USE_OS_CHIBIOS && !GFX_USE_OS_WIN32 && !GFX_USE_OS_LINUX && !GFX_USE_OS_OSX && !GFX_USE_OS_RAW32 && !GFX_USE_OS_FREERTOS + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GOS: No Operating System has been defined. ChibiOS (GFX_USE_OS_CHIBIOS) has been turned on for you." + #endif + #undef GFX_USE_OS_CHIBIOS + #define GFX_USE_OS_CHIBIOS TRUE +#endif +#if GFX_USE_OS_CHIBIOS + GFX_USE_OS_WIN32 + GFX_USE_OS_LINUX + GFX_USE_OS_OSX + GFX_USE_OS_RAW32 + GFX_USE_OS_FREERTOS != 1 * TRUE + #error "GOS: More than one operation system has been defined as TRUE." +#endif + +#endif /* _GOS_RULES_H */ +/** @} */ diff --git a/include/gos/win32.h b/src/gos/win32.h similarity index 100% rename from include/gos/win32.h rename to src/gos/win32.h diff --git a/include/gqueue/gqueue.h b/src/gqueue/sys_defs.h similarity index 99% rename from include/gqueue/gqueue.h rename to src/gqueue/sys_defs.h index 865d7d8c..447ea5be 100644 --- a/include/gqueue/gqueue.h +++ b/src/gqueue/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gqueue/gqueue.h + * @file src/gqueue/sys_defs.h * @brief GQUEUE header file. * * @addtogroup GQUEUE diff --git a/src/gqueue/gqueue.mk b/src/gqueue/sys_make.mk similarity index 100% rename from src/gqueue/gqueue.mk rename to src/gqueue/sys_make.mk diff --git a/include/gqueue/options.h b/src/gqueue/sys_options.h similarity index 96% rename from include/gqueue/options.h rename to src/gqueue/sys_options.h index 5ad6bf37..7c8627ce 100644 --- a/include/gqueue/options.h +++ b/src/gqueue/sys_options.h @@ -6,7 +6,7 @@ */ /** - * @file include/gqueue/options.h + * @file src/gqueue/sys_options.h * @brief GQUEUE - Queue options header file. * * @addtogroup GQUEUE diff --git a/src/gqueue/sys_rules.h b/src/gqueue/sys_rules.h new file mode 100644 index 00000000..baeb073d --- /dev/null +++ b/src/gqueue/sys_rules.h @@ -0,0 +1,23 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gqueue/sys_rules.h + * @brief GQUEUE safety rules header file. + * + * @addtogroup GQUEUE + * @{ + */ + +#ifndef _GQUEUE_RULES_H +#define _GQUEUE_RULES_H + +#if GFX_USE_GQUEUE +#endif + +#endif /* _GQUEUE_RULES_H */ +/** @} */ diff --git a/include/gtimer/gtimer.h b/src/gtimer/sys_defs.h similarity index 99% rename from include/gtimer/gtimer.h rename to src/gtimer/sys_defs.h index 06072c7c..45b12162 100644 --- a/include/gtimer/gtimer.h +++ b/src/gtimer/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gtimer/gtimer.h + * @file src/gtimer/sys_defs.h * * @addtogroup GTIMER * diff --git a/src/gtimer/gtimer.mk b/src/gtimer/sys_make.mk similarity index 97% rename from src/gtimer/gtimer.mk rename to src/gtimer/sys_make.mk index e6c2b588..801c31a6 100644 --- a/src/gtimer/gtimer.mk +++ b/src/gtimer/sys_make.mk @@ -1 +1 @@ -GFXSRC += $(GFXLIB)/src/gtimer/gtimer.c +GFXSRC += $(GFXLIB)/src/gtimer/gtimer.c diff --git a/include/gtimer/options.h b/src/gtimer/sys_options.h similarity index 96% rename from include/gtimer/options.h rename to src/gtimer/sys_options.h index 881db138..8dca0b82 100644 --- a/include/gtimer/options.h +++ b/src/gtimer/sys_options.h @@ -6,7 +6,7 @@ */ /** - * @file include/gtimer/options.h + * @file src/gtimer/sys_options.h * @brief GTIMER sub-system options header file. * * @addtogroup GTIMER diff --git a/src/gtimer/sys_rules.h b/src/gtimer/sys_rules.h new file mode 100644 index 00000000..6f277965 --- /dev/null +++ b/src/gtimer/sys_rules.h @@ -0,0 +1,29 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gtimer/sys_rules.h + * @brief GTIMER safety rules header file. + * + * @addtogroup GTIMER + * @{ + */ + +#ifndef _GTIMER_RULES_H +#define _GTIMER_RULES_H + +#if GFX_USE_GTIMER + #if GFX_USE_GDISP && !GDISP_NEED_MULTITHREAD + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GTIMER: GDISP_NEED_MULTITHREAD has not been specified." + #warning "GTIMER: Make sure you are not performing any GDISP/GWIN drawing operations in the timer callback!" + #endif + #endif +#endif + +#endif /* _GTIMER_RULES_H */ +/** @} */ diff --git a/src/gwin/button.c b/src/gwin/button.c index b0fd973a..72d75225 100644 --- a/src/gwin/button.c +++ b/src/gwin/button.c @@ -19,7 +19,7 @@ #if GFX_USE_GWIN && GWIN_NEED_BUTTON -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" // Parameters for various shapes #define RND_CNR_SIZE 5 // Rounded corner size for rounded buttons diff --git a/include/gwin/button.h b/src/gwin/button.h similarity index 100% rename from include/gwin/button.h rename to src/gwin/button.h diff --git a/src/gwin/checkbox.c b/src/gwin/checkbox.c index 13730d50..8cdd51d9 100644 --- a/src/gwin/checkbox.c +++ b/src/gwin/checkbox.c @@ -19,7 +19,7 @@ #if (GFX_USE_GWIN && GWIN_NEED_CHECKBOX) || defined(__DOXYGEN__) -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" // Our checked state #define GCHECKBOX_FLG_CHECKED (GWIN_FIRST_CONTROL_FLAG<<0) diff --git a/include/gwin/checkbox.h b/src/gwin/checkbox.h similarity index 100% rename from include/gwin/checkbox.h rename to src/gwin/checkbox.h diff --git a/include/gwin/class_gwin.h b/src/gwin/class_gwin.h similarity index 100% rename from include/gwin/class_gwin.h rename to src/gwin/class_gwin.h diff --git a/src/gwin/console.c b/src/gwin/console.c index 623404be..0fe4b722 100644 --- a/src/gwin/console.c +++ b/src/gwin/console.c @@ -16,7 +16,7 @@ #include -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" #define GWIN_CONSOLE_USE_CLEAR_LINES TRUE // Clear each line before using it #define GWIN_CONSOLE_USE_FILLED_CHARS FALSE // Use filled characters instead of drawn characters diff --git a/include/gwin/console.h b/src/gwin/console.h similarity index 100% rename from include/gwin/console.h rename to src/gwin/console.h diff --git a/src/gwin/gimage.c b/src/gwin/gimage.c index e4032b96..953aefc3 100644 --- a/src/gwin/gimage.c +++ b/src/gwin/gimage.c @@ -14,7 +14,7 @@ #if GFX_USE_GWIN && GWIN_NEED_IMAGE -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" #define widget(gh) ((GImageObject *)gh) diff --git a/src/gwin/graph.c b/src/gwin/graph.c index 1d513290..c06639fe 100644 --- a/src/gwin/graph.c +++ b/src/gwin/graph.c @@ -14,7 +14,7 @@ #if GFX_USE_GWIN && GWIN_NEED_GRAPH -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" #define GGRAPH_FLG_CONNECTPOINTS (GWIN_FIRST_CONTROL_FLAG<<0) #define GGRAPH_ARROW_SIZE 5 diff --git a/include/gwin/graph.h b/src/gwin/graph.h similarity index 100% rename from include/gwin/graph.h rename to src/gwin/graph.h diff --git a/src/gwin/gwidget.c b/src/gwin/gwidget.c index 75a69667..ad2b7b20 100644 --- a/src/gwin/gwidget.c +++ b/src/gwin/gwidget.c @@ -11,7 +11,7 @@ #include -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" /* Our listener for events for widgets */ static GListener gl; diff --git a/include/gwin/gwidget.h b/src/gwin/gwidget.h similarity index 97% rename from include/gwin/gwidget.h rename to src/gwin/gwidget.h index a18d69b6..4eaf6c81 100644 --- a/include/gwin/gwidget.h +++ b/src/gwin/gwidget.h @@ -277,31 +277,31 @@ bool_t gwinAttachListener(GListener *pl); /* Include extra widget types */ #if GWIN_NEED_BUTTON || defined(__DOXYGEN__) - #include "gwin/button.h" + #include "src/gwin/button.h" #endif #if GWIN_NEED_SLIDER || defined(__DOXYGEN__) - #include "gwin/slider.h" + #include "src/gwin/slider.h" #endif #if GWIN_NEED_CHECKBOX || defined(__DOXYGEN__) - #include "gwin/checkbox.h" + #include "src/gwin/checkbox.h" #endif #if GWIN_NEED_RADIO || defined(__DOXYGEN__) - #include "gwin/radio.h" + #include "src/gwin/radio.h" #endif #if GWIN_NEED_LABEL || defined(__DOXYGEN__) - #include "gwin/label.h" + #include "src/gwin/label.h" #endif #if GWIN_NEED_LIST || defined(__DOXYGEN__) - #include "gwin/list.h" + #include "src/gwin/list.h" #endif #if GWIN_NEED_PROGRESSBAR || defined(__DOXYGEN__) - #include "gwin/progressbar.h" + #include "src/gwin/progressbar.h" #endif #endif /* _GWIDGET_H */ diff --git a/src/gwin/gwin.c b/src/gwin/gwin.c index 485ccaaa..54f42077 100644 --- a/src/gwin/gwin.c +++ b/src/gwin/gwin.c @@ -9,7 +9,7 @@ #if GFX_USE_GWIN -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" // Needed if there is no window manager #define MIN_WIN_WIDTH 1 diff --git a/src/gwin/gwm.c b/src/gwin/gwm.c index e7a71737..9c158f68 100644 --- a/src/gwin/gwm.c +++ b/src/gwin/gwm.c @@ -17,7 +17,7 @@ #if GFX_USE_GWIN && GWIN_NEED_WINDOWMANAGER -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" /*----------------------------------------------- * Data diff --git a/include/gwin/image.h b/src/gwin/image.h similarity index 100% rename from include/gwin/image.h rename to src/gwin/image.h diff --git a/src/gwin/label.c b/src/gwin/label.c index 5619761a..97588a27 100644 --- a/src/gwin/label.c +++ b/src/gwin/label.c @@ -19,7 +19,7 @@ #if GFX_USE_GWIN && GWIN_NEED_LABEL -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" // macros to assist in data type conversions #define gh2obj ((GLabelObject *)gh) diff --git a/include/gwin/label.h b/src/gwin/label.h similarity index 100% rename from include/gwin/label.h rename to src/gwin/label.h diff --git a/src/gwin/list.c b/src/gwin/list.c index 08e6a96d..5b49811c 100644 --- a/src/gwin/list.c +++ b/src/gwin/list.c @@ -19,7 +19,7 @@ #if GFX_USE_GWIN && GWIN_NEED_LIST -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" #include #include diff --git a/include/gwin/list.h b/src/gwin/list.h similarity index 100% rename from include/gwin/list.h rename to src/gwin/list.h diff --git a/src/gwin/progressbar.c b/src/gwin/progressbar.c index a2364d9f..37bad3c8 100644 --- a/src/gwin/progressbar.c +++ b/src/gwin/progressbar.c @@ -19,7 +19,7 @@ #if (GFX_USE_GWIN && GWIN_NEED_PROGRESSBAR) || defined(__DOXYGEN__) -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" // Reset the display position back to the value predicted by the saved progressbar position static void ResetDisplayPos(GProgressbarObject *gsw) { diff --git a/include/gwin/progressbar.h b/src/gwin/progressbar.h similarity index 100% rename from include/gwin/progressbar.h rename to src/gwin/progressbar.h diff --git a/src/gwin/radio.c b/src/gwin/radio.c index 7507634c..f50ffe9b 100644 --- a/src/gwin/radio.c +++ b/src/gwin/radio.c @@ -19,7 +19,7 @@ #if GFX_USE_GWIN && GWIN_NEED_RADIO -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" // Our pressed state #define GRADIO_FLG_PRESSED (GWIN_FIRST_CONTROL_FLAG<<0) diff --git a/include/gwin/radio.h b/src/gwin/radio.h similarity index 100% rename from include/gwin/radio.h rename to src/gwin/radio.h diff --git a/src/gwin/slider.c b/src/gwin/slider.c index 5d6a5ec0..4c91ede6 100644 --- a/src/gwin/slider.c +++ b/src/gwin/slider.c @@ -19,7 +19,7 @@ #if (GFX_USE_GWIN && GWIN_NEED_SLIDER) || defined(__DOXYGEN__) -#include "gwin/class_gwin.h" +#include "src/gwin/class_gwin.h" #ifndef GWIN_SLIDER_DEAD_BAND #define GWIN_SLIDER_DEAD_BAND 5 diff --git a/include/gwin/slider.h b/src/gwin/slider.h similarity index 100% rename from include/gwin/slider.h rename to src/gwin/slider.h diff --git a/include/gwin/gwin.h b/src/gwin/sys_defs.h similarity index 99% rename from include/gwin/gwin.h rename to src/gwin/sys_defs.h index f97919e5..10b5b564 100644 --- a/include/gwin/gwin.h +++ b/src/gwin/sys_defs.h @@ -6,7 +6,7 @@ */ /** - * @file include/gwin/gwin.h + * @file src/gwin/sys_defs.h * * @defgroup Window Window * @ingroup GWIN @@ -841,20 +841,20 @@ extern "C" { /* Include widgets */ #if GWIN_NEED_WIDGET || defined(__DOXYGEN__) - #include "gwin/gwidget.h" + #include "src/gwin/gwidget.h" #endif /* Include extra window types */ #if GWIN_NEED_CONSOLE || defined(__DOXYGEN__) - #include "gwin/console.h" + #include "src/gwin/console.h" #endif #if GWIN_NEED_GRAPH || defined(__DOXYGEN__) - #include "gwin/graph.h" + #include "src/gwin/graph.h" #endif #if GWIN_NEED_IMAGE || defined(__DOXYGEN__) - #include "gwin/image.h" + #include "src/gwin/image.h" #endif #endif /* GFX_USE_GWIN */ diff --git a/src/gwin/gwin.mk b/src/gwin/sys_make.mk similarity index 100% rename from src/gwin/gwin.mk rename to src/gwin/sys_make.mk diff --git a/include/gwin/options.h b/src/gwin/sys_options.h similarity index 99% rename from include/gwin/options.h rename to src/gwin/sys_options.h index 882db572..02467916 100644 --- a/include/gwin/options.h +++ b/src/gwin/sys_options.h @@ -6,7 +6,7 @@ */ /** - * @file include/gwin/options.h + * @file include/gwin/sys_options.h * @brief GWIN sub-system options header file. * * @addtogroup GWIN diff --git a/src/gwin/sys_rules.h b/src/gwin/sys_rules.h new file mode 100644 index 00000000..77f029f0 --- /dev/null +++ b/src/gwin/sys_rules.h @@ -0,0 +1,99 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gwin/sys_rules.h + * @brief GWIN safety rules header file. + * + * @addtogroup GWIN + * @{ + */ + +#ifndef _GWIN_RULES_H +#define _GWIN_RULES_H + +#if GFX_USE_GWIN + #if !GFX_USE_GDISP + #error "GWIN: GFX_USE_GDISP must be TRUE when using GWIN" + #endif + #if !GDISP_NEED_CLIP + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GWIN: Drawing can occur outside the defined windows as GDISP_NEED_CLIP is FALSE" + #endif + #endif + #if GWIN_NEED_IMAGE + #if !GDISP_NEED_IMAGE + #error "GWIN: GDISP_NEED_IMAGE is required when GWIN_NEED_IMAGE is TRUE." + #endif + #endif + #if GWIN_NEED_RADIO + #if !GDISP_NEED_CIRCLE + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GWIN: GDISP_NEED_CIRCLE should be set to TRUE for much nicer radio button widgets." + #endif + #endif + #endif + #if GWIN_NEED_BUTTON || GWIN_NEED_SLIDER || GWIN_NEED_CHECKBOX || GWIN_NEED_LABEL || GWIN_NEED_RADIO || GWIN_NEED_LIST || \ + GWIN_NEED_IMAGE || GWIN_NEED_CHECKBOX || GWIN_NEED_PROGRESSBAR + #if !GWIN_NEED_WIDGET + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GWIN: GWIN_NEED_WIDGET is required when a Widget is used. It has been turned on for you." + #endif + #undef GWIN_NEED_WIDGET + #define GWIN_NEED_WIDGET TRUE + #endif + #endif + #if GWIN_NEED_LIST + #if !GDISP_NEED_TEXT + #error "GWIN: GDISP_NEED_TEXT is required when GWIN_NEED_LIST is TRUE." + #endif + #endif + #if GWIN_NEED_WIDGET + #if !GDISP_NEED_TEXT + #error "GWIN: GDISP_NEED_TEXT is required if GWIN_NEED_WIDGET is TRUE." + #endif + #if !GFX_USE_GINPUT + // This test also ensures that GFX_USE_GEVENT is set + #error "GWIN: GFX_USE_GINPUT (and one or more input sources) is required if GWIN_NEED_WIDGET is TRUE" + #endif + #if !GWIN_NEED_WINDOWMANAGER + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GWIN: GWIN_NEED_WINDOWMANAGER is required if GWIN_NEED_WIDGET is TRUE. It has been turned on for you." + #endif + #undef GWIN_NEED_WINDOWMANAGER + #define GWIN_NEED_WINDOWMANAGER TRUE + #endif + #if !GDISP_NEED_MULTITHREAD + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GWIN: GDISP_NEED_MULTITHREAD is required if GWIN_NEED_WIDGET is TRUE. It has been turned on for you" + #endif + #undef GDISP_NEED_MULTITHREAD + #define GDISP_NEED_MULTITHREAD TRUE + #endif + #endif + #if GWIN_NEED_WINDOWMANAGER + #if !GFX_USE_GQUEUE || !GQUEUE_NEED_ASYNC + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GWIN: GFX_USE_GQUEUE and GQUEUE_NEED_ASYNC is required if GWIN_NEED_WINDOWMANAGER is TRUE. It has been turned on for you." + #endif + #undef GFX_USE_GQUEUE + #undef GQUEUE_NEED_ASYNC + #define GFX_USE_GQUEUE TRUE + #define GQUEUE_NEED_ASYNC TRUE + #endif + #endif + #if GWIN_NEED_CONSOLE + #if !GDISP_NEED_TEXT + #error "GWIN: GDISP_NEED_TEXT is required if GWIN_NEED_CONSOLE is TRUE." + #endif + #endif + #if GWIN_NEED_GRAPH + #endif +#endif + +#endif /* _GWIN_RULES_H */ +/** @} */ diff --git a/tools/uGFXnetDisplay/main.c b/tools/uGFXnetDisplay/main.c index f16fd213..47274a31 100644 --- a/tools/uGFXnetDisplay/main.c +++ b/tools/uGFXnetDisplay/main.c @@ -6,7 +6,7 @@ */ #include "gfx.h" -#include "../drivers/multiple/uGFXnet/uGFXnetProtocol.h" +#include "drivers/multiple/uGFXnet/uGFXnetProtocol.h" #ifndef GDISP_GFXNET_PORT #define GDISP_GFXNET_PORT GNETCODE_DEFAULT_PORT