aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2014-02-19 07:45:47 +1000
committerinmarket <andrewh@inmarket.com.au>2014-02-19 07:45:47 +1000
commit6d372f13528f44919ec193d03248d55a53484968 (patch)
tree66f6ba33c6bcfed2b5b3846cf1f309e9b7e715e6
parent03914d2d2b438062d3062e2c3a588d53d3040cff (diff)
parent37966ff16d923bbca53c9464815cb49cbd7fc3be (diff)
downloaduGFX-6d372f13528f44919ec193d03248d55a53484968.tar.gz
uGFX-6d372f13528f44919ec193d03248d55a53484968.tar.bz2
uGFX-6d372f13528f44919ec193d03248d55a53484968.zip
Merge branch 'master' into freertos
-rw-r--r--boards/base/Linux/example/Makefile8
-rw-r--r--boards/base/Mikromedia-STM32-M4-ILI9341/example/Makefile7
-rw-r--r--boards/base/Olimex-SAM7EX256-GE8/example/Makefile7
-rw-r--r--boards/base/Win32/example/Makefile7
-rw-r--r--demos/3rdparty/bubbles/demo.mk3
-rw-r--r--demos/3rdparty/bubbles/main.c8
-rw-r--r--demos/3rdparty/doom/demo.mk65
-rw-r--r--demos/3rdparty/doom/doom.mk64
-rw-r--r--demos/3rdparty/notepad-2/demo.mk5
-rw-r--r--demos/applications/mandelbrot/demo.mk3
-rw-r--r--demos/applications/notepad/demo.mk3
-rw-r--r--demos/applications/notepad/gfxconf.h1
-rw-r--r--demos/applications/notepad/main.c1
-rw-r--r--demos/benchmarks/demo.mk3
-rw-r--r--demos/modules/gadc/demo.mk3
-rw-r--r--demos/modules/gadc/gwinosc.c2
-rw-r--r--demos/modules/gaudin/demo.mk3
-rw-r--r--demos/modules/gaudin/gwinosc.c2
-rw-r--r--demos/modules/gdisp/basics/demo.mk3
-rw-r--r--demos/modules/gdisp/circles/demo.mk3
-rw-r--r--demos/modules/gdisp/fonts/demo.mk3
-rw-r--r--demos/modules/gdisp/fonts_cyrillic/demo.mk3
-rw-r--r--demos/modules/gdisp/images/demo.mk3
-rw-r--r--demos/modules/gdisp/images_animated/demo.mk3
-rw-r--r--demos/modules/gdisp/multiple_displays/demo.mk3
-rw-r--r--demos/modules/gdisp/streaming/demo.mk3
-rw-r--r--demos/modules/gtimer/demo.mk3
-rw-r--r--demos/modules/gwin/basic/demo.mk3
-rw-r--r--demos/modules/gwin/button/demo.mk3
-rw-r--r--demos/modules/gwin/button/gfxconf.h1
-rw-r--r--demos/modules/gwin/button/main.c16
-rw-r--r--demos/modules/gwin/checkbox/demo.mk3
-rw-r--r--demos/modules/gwin/checkbox/main.c2
-rw-r--r--demos/modules/gwin/console/demo.mk3
-rw-r--r--demos/modules/gwin/graph/demo.mk3
-rw-r--r--demos/modules/gwin/graph/gfxconf.h4
-rw-r--r--demos/modules/gwin/list/demo.mk3
-rw-r--r--demos/modules/gwin/list/gfxconf.h1
-rw-r--r--demos/modules/gwin/progressbar/demo.mk3
-rw-r--r--demos/modules/gwin/radio/demo.mk3
-rw-r--r--demos/modules/gwin/radio/main.c2
-rw-r--r--demos/modules/gwin/slider/demo.mk3
-rw-r--r--demos/modules/gwin/slider/main.c2
-rw-r--r--demos/modules/gwin/widgets/demo.mk3
-rw-r--r--drivers/gadc/AT91SAM7/gadc_lld.c2
-rw-r--r--drivers/gaudin/Win32/gaudin_lld.c2
-rw-r--r--drivers/gaudin/gadc/gaudin_lld.c2
-rw-r--r--drivers/gdisp/ED060SC4/gdisp_lld.c606
-rw-r--r--drivers/gdisp/ED060SC4/gdisp_lld_ED060SC4.c4
-rw-r--r--drivers/gdisp/HX8347D/gdisp_lld_HX8347D.c4
-rw-r--r--drivers/gdisp/ILI9320/gdisp_lld_ILI9320.c4
-rw-r--r--drivers/gdisp/ILI9325/gdisp_lld_ILI9325.c4
-rw-r--r--drivers/gdisp/ILI9341/gdisp_lld_ILI9341.c6
-rw-r--r--drivers/gdisp/ILI9481/gdisp_lld_ILI9481.c4
-rw-r--r--drivers/gdisp/Nokia6610GE12/gdisp_lld_Nokia6610GE12.c6
-rw-r--r--drivers/gdisp/Nokia6610GE8/gdisp_lld_Nokia6610GE8.c6
-rw-r--r--drivers/gdisp/RA8875/gdisp_lld_RA8875.c4
-rw-r--r--drivers/gdisp/S6D1121/gdisp_lld_S6D1121.c4
-rw-r--r--drivers/gdisp/SSD1289/gdisp_lld_SSD1289.c4
-rw-r--r--drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c6
-rw-r--r--drivers/gdisp/SSD1963/gdisp_lld_SSD1963.c6
-rw-r--r--drivers/gdisp/SSD2119/gdisp_lld_SSD2119.c6
-rw-r--r--drivers/gdisp/ST7565/gdisp_lld_ST7565.c6
-rw-r--r--drivers/gdisp/TestStub/gdisp_lld_TestStub.c4
-rw-r--r--drivers/ginput/dial/GADC/ginput_lld_dial.c2
-rw-r--r--drivers/ginput/toggle/Pal/ginput_lld_toggle.c2
-rw-r--r--drivers/ginput/touch/ADS7843/ginput_lld_mouse.c2
-rw-r--r--drivers/ginput/touch/FT5x06/ginput_lld_mouse.c8
-rw-r--r--drivers/ginput/touch/MCU/ginput_lld_mouse.c2
-rw-r--r--drivers/ginput/touch/STMPE811/ginput_lld_mouse.c6
-rw-r--r--drivers/multiple/Win32/gdisp_lld_Win32.c8
-rw-r--r--drivers/multiple/X/gdisp_lld_X.c6
-rw-r--r--drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c8
-rw-r--r--gfx.h (renamed from include/gfx.h)67
-rw-r--r--gfx.mk26
-rw-r--r--include/gfx_rules.h246
-rw-r--r--releases.txt5
-rw-r--r--src/gadc/driver.h (renamed from include/gadc/lld/gadc_lld.h)2
-rw-r--r--src/gadc/gadc.c2
-rw-r--r--src/gadc/sys_defs.h (renamed from include/gadc/gadc.h)2
-rw-r--r--src/gadc/sys_make.mk (renamed from src/gadc/gadc.mk)2
-rw-r--r--src/gadc/sys_options.h (renamed from include/gadc/options.h)2
-rw-r--r--src/gadc/sys_rules.h30
-rw-r--r--src/gaudin/driver.h (renamed from include/gaudin/lld/gaudin_lld.h)2
-rw-r--r--src/gaudin/gaudin.c2
-rw-r--r--src/gaudin/sys_defs.h (renamed from include/gaudin/gaudin.h)4
-rw-r--r--src/gaudin/sys_make.mk (renamed from src/gaudin/gaudin.mk)2
-rw-r--r--src/gaudin/sys_options.h (renamed from include/gaudin/options.h)52
-rw-r--r--src/gaudin/sys_rules.h30
-rw-r--r--src/gaudout/sys_defs.h (renamed from include/gaudout/gaudout.h)2
-rw-r--r--src/gaudout/sys_make.mk (renamed from src/gaudout/gaudout.mk)2
-rw-r--r--src/gaudout/sys_options.h (renamed from include/gaudout/options.h)52
-rw-r--r--src/gaudout/sys_rules.h23
-rw-r--r--src/gdisp/colors.h (renamed from include/gdisp/colors.h)0
-rw-r--r--src/gdisp/driver.h (renamed from include/gdisp/lld/gdisp_lld.h)2
-rw-r--r--src/gdisp/fonts/build_fonts.sh2
-rw-r--r--src/gdisp/fonts/fonts.h34
-rw-r--r--src/gdisp/gdisp.c2
-rw-r--r--src/gdisp/image.h (renamed from include/gdisp/image.h)0
-rw-r--r--src/gdisp/mcufont/mf_config.h4
-rw-r--r--src/gdisp/sys_defs.h (renamed from include/gdisp/gdisp.h)4
-rw-r--r--src/gdisp/sys_make.mk (renamed from src/gdisp/gdisp.mk)0
-rw-r--r--src/gdisp/sys_options.h (renamed from include/gdisp/options.h)2
-rw-r--r--src/gdisp/sys_rules.h85
-rw-r--r--src/gevent/sys_defs.h (renamed from include/gevent/gevent.h)2
-rw-r--r--src/gevent/sys_make.mk (renamed from src/gevent/gevent.mk)2
-rw-r--r--src/gevent/sys_options.h (renamed from include/gevent/options.h)2
-rw-r--r--src/gevent/sys_rules.h23
-rw-r--r--src/gfile/gfile.c12
-rw-r--r--src/gfile/sys_defs.h (renamed from include/gfile/gfile.h)2
-rw-r--r--src/gfile/sys_make.mk (renamed from src/gfile/gfile.mk)0
-rw-r--r--src/gfile/sys_options.h (renamed from include/gfile/options.h)2
-rw-r--r--src/gfile/sys_rules.h23
-rw-r--r--src/gfx.c2
-rw-r--r--src/ginput/dial.c2
-rw-r--r--src/ginput/dial.h (renamed from include/ginput/dial.h)0
-rw-r--r--src/ginput/driver_dial.h (renamed from include/ginput/lld/dial.h)2
-rw-r--r--src/ginput/driver_mouse.h (renamed from include/ginput/lld/mouse.h)2
-rw-r--r--src/ginput/driver_toggle.h (renamed from include/ginput/lld/toggle.h)2
-rw-r--r--src/ginput/keyboard.h (renamed from include/ginput/keyboard.h)0
-rw-r--r--src/ginput/mouse.c238
-rw-r--r--src/ginput/mouse.h (renamed from include/ginput/mouse.h)0
-rw-r--r--src/ginput/sys_defs.h (renamed from include/ginput/ginput.h)10
-rw-r--r--src/ginput/sys_make.mk (renamed from src/ginput/ginput.mk)10
-rw-r--r--src/ginput/sys_options.h (renamed from include/ginput/options.h)216
-rw-r--r--src/ginput/sys_rules.h37
-rw-r--r--src/ginput/toggle.c2
-rw-r--r--src/ginput/toggle.h (renamed from include/ginput/toggle.h)0
-rw-r--r--src/gmisc/sys_defs.h (renamed from include/gmisc/gmisc.h)2
-rw-r--r--src/gmisc/sys_make.mk (renamed from src/gmisc/gmisc.mk)6
-rw-r--r--src/gmisc/sys_options.h (renamed from include/gmisc/options.h)163
-rw-r--r--src/gmisc/sys_rules.h23
-rw-r--r--src/gos/chibios.h (renamed from include/gos/chibios.h)0
-rw-r--r--src/gos/freertos.h (renamed from include/gos/freertos.h)226
-rw-r--r--src/gos/linux.h (renamed from include/gos/linux.h)0
-rw-r--r--src/gos/osx.h (renamed from include/gos/osx.h)0
-rw-r--r--src/gos/raw32.h (renamed from include/gos/raw32.h)0
-rw-r--r--src/gos/sys_defs.h (renamed from include/gos/gos.h)14
-rw-r--r--src/gos/sys_make.mk (renamed from src/gos/gos.mk)0
-rw-r--r--src/gos/sys_options.h (renamed from include/gos/options.h)2
-rw-r--r--src/gos/sys_rules.h31
-rw-r--r--src/gos/win32.h (renamed from include/gos/win32.h)0
-rw-r--r--src/gqueue/sys_defs.h (renamed from include/gqueue/gqueue.h)2
-rw-r--r--src/gqueue/sys_make.mk (renamed from src/gqueue/gqueue.mk)0
-rw-r--r--src/gqueue/sys_options.h (renamed from include/gqueue/options.h)2
-rw-r--r--src/gqueue/sys_rules.h23
-rw-r--r--src/gtimer/sys_defs.h (renamed from include/gtimer/gtimer.h)2
-rw-r--r--src/gtimer/sys_make.mk (renamed from src/gtimer/gtimer.mk)2
-rw-r--r--src/gtimer/sys_options.h (renamed from include/gtimer/options.h)2
-rw-r--r--src/gtimer/sys_rules.h29
-rw-r--r--src/gwin/button.c2
-rw-r--r--src/gwin/button.h (renamed from include/gwin/button.h)0
-rw-r--r--src/gwin/checkbox.c2
-rw-r--r--src/gwin/checkbox.h (renamed from include/gwin/checkbox.h)0
-rw-r--r--src/gwin/class_gwin.h (renamed from include/gwin/class_gwin.h)0
-rw-r--r--src/gwin/console.c2
-rw-r--r--src/gwin/console.h (renamed from include/gwin/console.h)0
-rw-r--r--src/gwin/gimage.c2
-rw-r--r--src/gwin/graph.c2
-rw-r--r--src/gwin/graph.h (renamed from include/gwin/graph.h)0
-rw-r--r--src/gwin/gwidget.c2
-rw-r--r--src/gwin/gwidget.h (renamed from include/gwin/gwidget.h)14
-rw-r--r--src/gwin/gwin.c2
-rw-r--r--src/gwin/gwm.c2
-rw-r--r--src/gwin/image.h (renamed from include/gwin/image.h)0
-rw-r--r--src/gwin/label.c2
-rw-r--r--src/gwin/label.h (renamed from include/gwin/label.h)0
-rw-r--r--src/gwin/list.c2
-rw-r--r--src/gwin/list.h (renamed from include/gwin/list.h)0
-rw-r--r--src/gwin/progressbar.c2
-rw-r--r--src/gwin/progressbar.h (renamed from include/gwin/progressbar.h)0
-rw-r--r--src/gwin/radio.c2
-rw-r--r--src/gwin/radio.h (renamed from include/gwin/radio.h)0
-rw-r--r--src/gwin/slider.c2
-rw-r--r--src/gwin/slider.h (renamed from include/gwin/slider.h)0
-rw-r--r--src/gwin/sys_defs.h (renamed from include/gwin/gwin.h)10
-rw-r--r--src/gwin/sys_make.mk (renamed from src/gwin/gwin.mk)0
-rw-r--r--src/gwin/sys_options.h (renamed from include/gwin/options.h)2
-rw-r--r--src/gwin/sys_rules.h99
-rw-r--r--tools/uGFXnetDisplay/main.c2
180 files changed, 1385 insertions, 1592 deletions
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 <X11/Xlib.h>
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
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
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
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
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
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
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
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
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
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
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
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
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
index efd7076c..efd7076c 100644
--- a/include/gdisp/colors.h
+++ b/src/gdisp/colors.h
diff --git a/include/gdisp/lld/gdisp_lld.h b/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
index 607f1007..607f1007 100644
--- a/include/gdisp/image.h
+++ b/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 <gfx.h>
+#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
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
index a133ce37..a133ce37 100644
--- a/src/gdisp/gdisp.mk
+++ b/src/gdisp/sys_make.mk
diff --git a/include/gdisp/options.h b/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
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
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
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
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
index 381bd6f6..381bd6f6 100644
--- a/src/gfile/gfile.mk
+++ b/src/gfile/sys_make.mk
diff --git a/include/gfile/options.h b/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
index a90b5e46..a90b5e46 100644
--- a/include/ginput/dial.h
+++ b/src/ginput/dial.h
diff --git a/include/ginput/lld/dial.h b/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
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
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
index d2bebeb8..d2bebeb8 100644
--- a/include/ginput/keyboard.h
+++ b/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;
- /* 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));
-
- 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));
-
- 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));
-
- 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));
+ #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
- 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));
+ /* 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);
- 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);
+ 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;
- /* Now, calculate all the required coefficients */
- c->ax = dx0 / dx;
- c->bx = dx1 / dx;
- c->cx = dx2 / dx;
+ #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
- 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
index 669eaec6..669eaec6 100644
--- a/include/ginput/mouse.h
+++ b/src/ginput/mouse.h
diff --git a/include/ginput/ginput.h b/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
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
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
index 73cf1e27..73cf1e27 100644
--- a/include/ginput/toggle.h
+++ b/src/ginput/toggle.h
diff --git a/include/gmisc/gmisc.h b/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
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
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
index 6373aa43..6373aa43 100644
--- a/include/gos/chibios.h
+++ b/src/gos/chibios.h
diff --git a/include/gos/freertos.h b/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
index f8b049e9..f8b049e9 100644
--- a/include/gos/linux.h
+++ b/src/gos/linux.h
diff --git a/include/gos/osx.h b/src/gos/osx.h
index 56e0551e..56e0551e 100644
--- a/include/gos/osx.h
+++ b/src/gos/osx.h
diff --git a/include/gos/raw32.h b/src/gos/raw32.h
index eb5b5e18..eb5b5e18 100644
--- a/include/gos/raw32.h
+++ b/src/gos/raw32.h
diff --git a/include/gos/gos.h b/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
index 8ef22121..8ef22121 100644
--- a/src/gos/gos.mk
+++ b/src/gos/sys_make.mk
diff --git a/include/gos/options.h b/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
index c704a288..c704a288 100644
--- a/include/gos/win32.h
+++ b/src/gos/win32.h
diff --git a/include/gqueue/gqueue.h b/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
index ab8a0423..ab8a0423 100644
--- a/src/gqueue/gqueue.mk
+++ b/src/gqueue/sys_make.mk
diff --git a/include/gqueue/options.h b/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
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
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
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
index d11764d6..d11764d6 100644
--- a/include/gwin/button.h
+++ b/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
index 946f7e4a..946f7e4a 100644
--- a/include/gwin/checkbox.h
+++ b/src/gwin/checkbox.h
diff --git a/include/gwin/class_gwin.h b/src/gwin/class_gwin.h
index ae5ac756..ae5ac756 100644
--- a/include/gwin/class_gwin.h
+++ b/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 <string.h>
-#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
index 252b627e..252b627e 100644
--- a/include/gwin/console.h
+++ b/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
index 65a64126..65a64126 100644
--- a/include/gwin/graph.h
+++ b/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 <string.h>
-#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
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
index 66aba3d1..66aba3d1 100644
--- a/include/gwin/image.h
+++ b/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
index 3fe0f3d7..3fe0f3d7 100644
--- a/include/gwin/label.h
+++ b/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 <string.h>
#include <stdlib.h>
diff --git a/include/gwin/list.h b/src/gwin/list.h
index cfe6aeb2..cfe6aeb2 100644
--- a/include/gwin/list.h
+++ b/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
index c9efe46b..c9efe46b 100644
--- a/include/gwin/progressbar.h
+++ b/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
index 3ee2918f..3ee2918f 100644
--- a/include/gwin/radio.h
+++ b/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
index 8f87745c..8f87745c 100644
--- a/include/gwin/slider.h
+++ b/src/gwin/slider.h
diff --git a/include/gwin/gwin.h b/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
index 4c670ea2..4c670ea2 100644
--- a/src/gwin/gwin.mk
+++ b/src/gwin/sys_make.mk
diff --git a/include/gwin/options.h b/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