aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2014-02-03 18:02:23 +1000
committerinmarket <andrewh@inmarket.com.au>2014-02-03 18:02:23 +1000
commitd0b363bb125d0913246796a597ecea4aeb8d578b (patch)
tree66f69c1a83b7c6a4407964ded39dcec4b1dc91c1
parenta6c22fc364c25e8673488f0f5c36e3538546d898 (diff)
parentd869d9b3b80cb9ab2314840b2fa274e89e5342db (diff)
downloaduGFX-d0b363bb125d0913246796a597ecea4aeb8d578b.tar.gz
uGFX-d0b363bb125d0913246796a597ecea4aeb8d578b.tar.bz2
uGFX-d0b363bb125d0913246796a597ecea4aeb8d578b.zip
Merge branch 'master' into gfile
-rw-r--r--demos/modules/gwin/list/gfxconf.h137
-rw-r--r--demos/modules/gwin/list/main.c2
-rw-r--r--releases.txt1
-rw-r--r--src/gdisp/gdisp.c24
-rw-r--r--src/gfx.c12
-rw-r--r--src/gtimer/gtimer.c3
6 files changed, 40 insertions, 139 deletions
diff --git a/demos/modules/gwin/list/gfxconf.h b/demos/modules/gwin/list/gfxconf.h
index 7c4d6fae..ebd35f05 100644
--- a/demos/modules/gwin/list/gfxconf.h
+++ b/demos/modules/gwin/list/gfxconf.h
@@ -28,161 +28,45 @@
///////////////////////////////////////////////////////////////////////////
#define GFX_USE_GDISP TRUE
-#define GDISP_NEED_AUTOFLUSH FALSE
-#define GDISP_NEED_TIMERFLUSH FALSE
#define GDISP_NEED_VALIDATION TRUE
#define GDISP_NEED_CLIP TRUE
-#define GDISP_NEED_CIRCLE FALSE
-#define GDISP_NEED_ELLIPSE FALSE
-#define GDISP_NEED_ARC FALSE
#define GDISP_NEED_CONVEX_POLYGON TRUE
-#define GDISP_NEED_SCROLL FALSE
-#define GDISP_NEED_PIXELREAD FALSE
-#define GDISP_NEED_CONTROL FALSE
-#define GDISP_NEED_QUERY FALSE
-#define GDISP_NEED_MULTITHREAD FALSE
-#define GDISP_NEED_STREAMING FALSE
#define GDISP_NEED_TEXT TRUE
- #define GDISP_NEED_ANTIALIAS FALSE
- #define GDISP_NEED_UTF8 FALSE
- #define GDISP_NEED_TEXT_KERNING FALSE
- #define GDISP_INCLUDE_FONT_UI1 FALSE
- #define GDISP_INCLUDE_FONT_UI2 FALSE
- #define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANS10 FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANS12 FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANS16 FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANS24 FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANS32 FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 FALSE
- #define GDISP_INCLUDE_FONT_FIXED_10x20 FALSE
- #define GDISP_INCLUDE_FONT_FIXED_7x14 FALSE
- #define GDISP_INCLUDE_FONT_FIXED_5x8 FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA TRUE
- #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA FALSE
- #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA FALSE
- #define GDISP_INCLUDE_USER_FONTS FALSE
-
+ #define GDISP_INCLUDE_FONT_UI2 TRUE
#define GDISP_NEED_IMAGE TRUE
- #define GDISP_NEED_IMAGE_NATIVE FALSE
#define GDISP_NEED_IMAGE_GIF TRUE
- #define GDISP_NEED_IMAGE_BMP FALSE
- #define GDISP_NEED_IMAGE_BMP_1 FALSE
- #define GDISP_NEED_IMAGE_BMP_4 FALSE
- #define GDISP_NEED_IMAGE_BMP_4_RLE FALSE
- #define GDISP_NEED_IMAGE_BMP_8 FALSE
- #define GDISP_NEED_IMAGE_BMP_8_RLE FALSE
- #define GDISP_NEED_IMAGE_BMP_16 FALSE
- #define GDISP_NEED_IMAGE_BMP_24 FALSE
- #define GDISP_NEED_IMAGE_BMP_32 FALSE
- #define GDISP_NEED_IMAGE_JPG FALSE
- #define GDISP_NEED_IMAGE_PNG FALSE
- #define GDISP_NEED_IMAGE_ACCOUNTING FALSE
-
-#define GDISP_NEED_STARTUP_LOGO FALSE
-
-#define GDISP_DEFAULT_ORIENTATION GDISP_ROTATE_LANDSCAPE
-#define GDISP_LINEBUF_SIZE 128
-
-#define GDISP_TOTAL_DISPLAYS 1
- #if GDISP_TOTAL_DISPLAYS > 1
- #define GDISP_HARDWARE_STREAM_WRITE FALSE
- #define GDISP_HARDWARE_STREAM_READ FALSE
- #define GDISP_HARDWARE_STREAM_POS FALSE
- #define GDISP_HARDWARE_DRAWPIXEL FALSE
- #define GDISP_HARDWARE_CLEARS FALSE
- #define GDISP_HARDWARE_FILLS FALSE
- #define GDISP_HARDWARE_BITFILLS FALSE
- #define GDISP_HARDWARE_SCROLL FALSE
- #define GDISP_HARDWARE_PIXELREAD FALSE
- #define GDISP_HARDWARE_CONTROL FALSE
- #define GDISP_HARDWARE_QUERY FALSE
- #define GDISP_HARDWARE_CLIP FALSE
- #endif
-
-#define GDISP_TOTAL_CONTROLLERS 1
- #if GDISP_TOTAL_CONTROLLERS > 1
- #define GDISP_CONTROLLER_LIST GDISPVMT_Win32, GDISPVMT_Win32
- #define GDISP_CONTROLLER_DISPLAYS 1, 1
- #define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_RGB888
- #endif
-
-#define GDISP_USE_GFXNET FALSE
- #define GDISP_GFXNET_PORT 13001
- #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP FALSE
- #define GDISP_DONT_WAIT_FOR_NET_DISPLAY FALSE
- #define GDISP_GFXNET_UNSAFE_SOCKETS FALSE
-
///////////////////////////////////////////////////////////////////////////
// GWIN //
///////////////////////////////////////////////////////////////////////////
#define GFX_USE_GWIN TRUE
-#define GWIN_NEED_WINDOWMANAGER FALSE
-
-#define GWIN_NEED_CONSOLE FALSE
- #define GWIN_CONSOLE_USE_HISTORY FALSE
- #define GWIN_CONSOLE_HISTORY_AVERAGING FALSE
- #define GWIN_CONSOLE_HISTORY_ATCREATE FALSE
- #define GWIN_CONSOLE_USE_BASESTREAM FALSE
- #define GWIN_CONSOLE_USE_FLOAT FALSE
-#define GWIN_NEED_GRAPH FALSE
-
+#define GWIN_NEED_WINDOWMANAGER TRUE
#define GWIN_NEED_WIDGET TRUE
- #define GWIN_NEED_LABEL TRUE
- #define GWIN_NEED_BUTTON FALSE
- #define GWIN_BUTTON_LAZY_RELEASE FALSE
- #define GWIN_NEED_SLIDER FALSE
- #define GWIN_NEED_CHECKBOX FALSE
- #define GWIN_NEED_IMAGE FALSE
- #define GWIN_NEED_IMAGE_ANIMATION FALSE
- #define GWIN_NEED_RADIO FALSE
#define GWIN_NEED_LIST TRUE
#define GWIN_NEED_LIST_IMAGES TRUE
- #define GWIN_NEED_PROGRESSBAR FALSE
///////////////////////////////////////////////////////////////////////////
// GEVENT //
///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GEVENT FALSE
-
-#define GEVENT_ASSERT_NO_RESOURCE FALSE
-#define GEVENT_MAXIMUM_SIZE 32
-#define GEVENT_MAX_SOURCE_LISTENERS 32
-
+#define GFX_USE_GEVENT TRUE
///////////////////////////////////////////////////////////////////////////
// GTIMER //
///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GTIMER FALSE
-
-#define GTIMER_THREAD_PRIORITY HIGH_PRIORITY
-#define GTIMER_THREAD_WORKAREA_SIZE 2048
-
+#define GFX_USE_GTIMER TRUE
///////////////////////////////////////////////////////////////////////////
// GQUEUE //
///////////////////////////////////////////////////////////////////////////
#define GFX_USE_GQUEUE FALSE
-#define GQUEUE_NEED_ASYNC FALSE
-#define GQUEUE_NEED_GSYNC FALSE
-#define GQUEUE_NEED_FSYNC FALSE
-
-
///////////////////////////////////////////////////////////////////////////
// GINPUT //
///////////////////////////////////////////////////////////////////////////
#define GFX_USE_GINPUT TRUE
-
#define GINPUT_NEED_MOUSE TRUE
-#define GINPUT_NEED_KEYBOARD FALSE
-#define GINPUT_NEED_TOGGLE FALSE
-#define GINPUT_NEED_DIAL FALSE
///////////////////////////////////////////////////////////////////////////
@@ -190,33 +74,20 @@
///////////////////////////////////////////////////////////////////////////
#define GFX_USE_GADC FALSE
-#define GADC_MAX_LOWSPEED_DEVICES 4
-
-
///////////////////////////////////////////////////////////////////////////
// GAUDIN //
///////////////////////////////////////////////////////////////////////////
#define GFX_USE_GAUDIN FALSE
-
///////////////////////////////////////////////////////////////////////////
// GAUDOUT //
///////////////////////////////////////////////////////////////////////////
#define GFX_USE_GAUDOUT FALSE
-
///////////////////////////////////////////////////////////////////////////
// GMISC //
///////////////////////////////////////////////////////////////////////////
#define GFX_USE_GMISC FALSE
-#define GMISC_NEED_ARRAYOPS FALSE
-#define GMISC_NEED_FASTTRIG FALSE
-#define GMISC_NEED_FIXEDTRIG FALSE
-#define GMISC_NEED_INVSQRT FALSE
- #define GMISC_INVSQRT_MIXED_ENDIAN FALSE
- #define GMISC_INVSQRT_REAL_SLOW FALSE
-
-
#endif /* _GFXCONF_H */
diff --git a/demos/modules/gwin/list/main.c b/demos/modules/gwin/list/main.c
index fca5f018..36820c23 100644
--- a/demos/modules/gwin/list/main.c
+++ b/demos/modules/gwin/list/main.c
@@ -81,7 +81,7 @@ int main(void) {
gfxInit();
// Set the widget defaults
- gwinSetDefaultFont(gdispOpenFont("DejaVuSans12_AA"));
+ gwinSetDefaultFont(gdispOpenFont("UI2"));
gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE);
gdispClear(White);
diff --git a/releases.txt b/releases.txt
index 6d33e662..f2cb77d5 100644
--- a/releases.txt
+++ b/releases.txt
@@ -13,6 +13,7 @@ FEATURE: Added gwinGetColor() and gwinGetBgColor()
FEATURE: Console does now have an optional buffer (GWIN_CONSOLE_USE_HISTORY)
FEATURE: Added smooth scrolling to list widget
FEATURE: Increased performance of gwinListAddItem()
+FEATURE: Added gfxDeinit()
*** changes after 1.9 ***
diff --git a/src/gdisp/gdisp.c b/src/gdisp/gdisp.c
index 3031c455..949bedaf 100644
--- a/src/gdisp/gdisp.c
+++ b/src/gdisp/gdisp.c
@@ -2769,8 +2769,14 @@ void gdispGDrawBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, co
#if GDISP_NEED_ANTIALIAS && GDISP_HARDWARE_PIXELREAD
static void drawcharline(int16_t x, int16_t y, uint8_t count, uint8_t alpha, void *state) {
#define GD ((GDisplay *)state)
- if (y < GD->t.clipy0 || y >= GD->t.clipy1)
+ if (y < GD->t.clipy0 || y >= GD->t.clipy1 || x+count <= GD->t.clipx0 || x >= GD->t.clipx1)
return;
+ if (x < GD->t.clipx0) {
+ count -= GD->t.clipx0 - x;
+ x = GD->t.clipx0;
+ }
+ if (x+count > GD->t.clipx1)
+ count = GD->t.clipx1 - x;
if (alpha == 255) {
GD->p.x = x; GD->p.y = y; GD->p.x1 = x+count-1; GD->p.color = GD->t.color;
hline_clip(GD);
@@ -2786,8 +2792,14 @@ void gdispGDrawBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, co
#else
static void drawcharline(int16_t x, int16_t y, uint8_t count, uint8_t alpha, void *state) {
#define GD ((GDisplay *)state)
- if (y < GD->t.clipy0 || y >= GD->t.clipy1)
+ if (y < GD->t.clipy0 || y >= GD->t.clipy1 || x+count <= GD->t.clipx0 || x >= GD->t.clipx1)
return;
+ if (x < GD->t.clipx0) {
+ count -= GD->t.clipx0 - x;
+ x = GD->t.clipx0;
+ }
+ if (x+count > GD->t.clipx1)
+ count = GD->t.clipx1 - x;
if (alpha > 0x80) { // A best approximation when using anti-aliased fonts but we can't actually draw them anti-aliased
GD->p.x = x; GD->p.y = y; GD->p.x1 = x+count-1; GD->p.color = GD->t.color;
hline_clip(GD);
@@ -2799,8 +2811,14 @@ void gdispGDrawBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, co
#if GDISP_NEED_ANTIALIAS
static void fillcharline(int16_t x, int16_t y, uint8_t count, uint8_t alpha, void *state) {
#define GD ((GDisplay *)state)
- if (y < GD->t.clipy0 || y >= GD->t.clipy1)
+ if (y < GD->t.clipy0 || y >= GD->t.clipy1 || x+count <= GD->t.clipx0 || x >= GD->t.clipx1)
return;
+ if (x < GD->t.clipx0) {
+ count -= GD->t.clipx0 - x;
+ x = GD->t.clipx0;
+ }
+ if (x+count > GD->t.clipx1)
+ count = GD->t.clipx1 - x;
if (alpha == 255) {
GD->p.color = GD->t.color;
} else {
diff --git a/src/gfx.c b/src/gfx.c
index 46003f09..dfc9cb75 100644
--- a/src/gfx.c
+++ b/src/gfx.c
@@ -15,6 +15,8 @@
#include "gfx.h"
+static bool_t initDone = FALSE;
+
/* These init functions are defined by each module but not published */
extern void _gosInit(void);
extern void _gosDeinit(void);
@@ -57,6 +59,11 @@ extern void _gosDeinit(void);
void gfxInit(void)
{
+ /* Ensure we only initialise once */
+ if (initDone)
+ return;
+ initDone = TRUE;
+
// These must be initialised in the order of their dependancies
_gosInit();
@@ -91,8 +98,11 @@ void gfxInit(void)
void gfxDeinit(void)
{
- // We deinitialise the opposit way as we initialised
+ if (!initDone)
+ return;
+ initDone = FALSE;
+ // We deinitialise the opposite way as we initialised
#if GFX_USE_GAUDOUT
_gaudoutDeinit();
#endif
diff --git a/src/gtimer/gtimer.c b/src/gtimer/gtimer.c
index 3f772e39..3e0b6966 100644
--- a/src/gtimer/gtimer.c
+++ b/src/gtimer/gtimer.c
@@ -128,6 +128,7 @@ void _gtimerDeinit(void)
{
gfxSemDestroy(&waitsem);
gfxMutexDestroy(&mutex);
+ // Need to destroy GTimer thread here
}
void gtimerInit(GTimer* pt)
@@ -137,7 +138,7 @@ void gtimerInit(GTimer* pt)
void gtimerDeinit(GTimer* pt)
{
- (void)pt;
+ gtimerStop(pt);
}
void gtimerStart(GTimer *pt, GTimerFunction fn, void *param, bool_t periodic, delaytime_t millisec) {