diff options
Diffstat (limited to 'demos/modules')
| -rw-r--r-- | demos/modules/gwin/textedit/demo.mk | 3 | ||||
| -rw-r--r-- | demos/modules/gwin/textedit/gfxconf.h | 76 | ||||
| -rw-r--r-- | demos/modules/gwin/textedit/main.c | 157 | ||||
| -rw-r--r-- | demos/modules/gwin/widgets/main.c | 7 | 
4 files changed, 240 insertions, 3 deletions
| diff --git a/demos/modules/gwin/textedit/demo.mk b/demos/modules/gwin/textedit/demo.mk new file mode 100644 index 00000000..2cd40fd3 --- /dev/null +++ b/demos/modules/gwin/textedit/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/textedit +GFXINC +=   $(DEMODIR) +GFXSRC +=	$(DEMODIR)/main.c diff --git a/demos/modules/gwin/textedit/gfxconf.h b/demos/modules/gwin/textedit/gfxconf.h new file mode 100644 index 00000000..4faaae82 --- /dev/null +++ b/demos/modules/gwin/textedit/gfxconf.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org> + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *    * Redistributions of source code must retain the above copyright + *      notice, this list of conditions and the following disclaimer. + *    * Redistributions in binary form must reproduce the above copyright + *      notice, this list of conditions and the following disclaimer in the + *      documentation and/or other materials provided with the distribution. + *    * Neither the name of the <organization> nor the + *      names of its contributors may be used to endorse or promote products + *      derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* The operating system to use. One of these must be defined - preferably in your Makefile */ +//#define GFX_USE_OS_CHIBIOS	FALSE +//#define GFX_USE_OS_WIN32		FALSE +//#define GFX_USE_OS_LINUX		FALSE +//#define GFX_USE_OS_OSX		FALSE + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP			TRUE +#define GFX_USE_GWIN			TRUE +#define GFX_USE_GINPUT			TRUE +#define GFX_USE_GEVENT			TRUE +#define GFX_USE_GTIMER			TRUE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION	TRUE +#define GDISP_NEED_CLIP			TRUE +#define GDISP_NEED_TEXT			TRUE +#define GDISP_NEED_TEXT_KERNING	TRUE +#define GDISP_NEED_MULTITHREAD  TRUE + +/* GDISP fonts to include */ +#define GDISP_INCLUDE_FONT_UI2	TRUE +#define GDISP_INCLUDE_FONT_DEJAVUSANS16	TRUE + +/* Features for the GWIN subsystem. */ +#define GWIN_NEED_WINDOWMANAGER TRUE +#define GWIN_NEED_WIDGET        TRUE +#define GWIN_NEED_CONSOLE		TRUE +#define GWIN_NEED_TEXTEDIT		TRUE +#define GWIN_NEED_BUTTON		TRUE + +/* Features for the GINPUT subsystem. */ +#define GINPUT_NEED_MOUSE		TRUE + +/* One or both of these */ +#define GINPUT_NEED_KEYBOARD	TRUE +#define GWIN_NEED_KEYBOARD       TRUE + +/* Features for the GQUEUE subsystem. */ +#define GFX_USE_GQUEUE                               TRUE +#define GQUEUE_NEED_ASYNC                            TRUE + +#endif /* _GFXCONF_H */ + diff --git a/demos/modules/gwin/textedit/main.c b/demos/modules/gwin/textedit/main.c new file mode 100644 index 00000000..4072f983 --- /dev/null +++ b/demos/modules/gwin/textedit/main.c @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org> + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *    * Redistributions of source code must retain the above copyright + *      notice, this list of conditions and the following disclaimer. + *    * Redistributions in binary form must reproduce the above copyright + *      notice, this list of conditions and the following disclaimer in the + *      documentation and/or other materials provided with the distribution. + *    * Neither the name of the <organization> nor the + *      names of its contributors may be used to endorse or promote products + *      derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "gfx.h" + +static GHandle		ghConsole; +static GHandle		ghTextedit1; +static GHandle		ghTextedit2; +static GHandle		ghTextedit3; +static GListener	gl; +#if GWIN_NEED_KEYBOARD +	static GHandle		ghKeyboard; +#endif + +static void guiCreate(void) +{ +	GWidgetInit	wi; +	gwinWidgetClearInit(&wi); + +	// Console +	wi.g.show = TRUE; +	wi.g.x = 0; +	wi.g.y = 0; +	wi.g.width = gdispGetWidth()/2; +	wi.g.height = gdispGetHeight(); +	ghConsole = gwinConsoleCreate(0, &wi.g); +	gwinSetColor(ghConsole, Yellow); +	gwinSetBgColor(ghConsole, Black); +	gwinSetFont(ghConsole, gdispOpenFont("UI2")); +	gwinClear(ghConsole); + +	// TextEdit1 +	wi.g.show = TRUE; +	wi.g.x = gdispGetWidth()/2 + 10; +	wi.g.y = 20; +	wi.g.width = 200; +	wi.g.height = 35; +	wi.text = "Use the TAB key"; +	ghTextedit1 = gwinTexteditCreate(0, &wi, 100); + +	// TextEdit2 +	wi.g.show = TRUE; +	wi.g.x = gdispGetWidth()/2 + 10; +	wi.g.y = 100; +	wi.g.width = 200; +	wi.g.height = 35; +	wi.text = "to switch between"; +	ghTextedit2 = gwinTexteditCreate(0, &wi, 20); +	//gwinTexteditSetBorder(ghTextedit2, FALSE); + +	// TextEdit3 +	wi.g.show = TRUE; +	wi.g.x = gdispGetWidth()/2 + 10; +	wi.g.y = 180; +	wi.g.width = 200; +	wi.g.height = 35; +	wi.text = "the different widgets"; +	ghTextedit3 = gwinTexteditCreate(0, &wi, 100); +	//gwinTexteditSetBorder(ghTextedit3, TRUE); + +	// Virtual keyboard +#if GWIN_NEED_KEYBOARD +	wi.g.show = TRUE; +	wi.g.x = 0; +	wi.g.y = gdispGetHeight()*3/4; +	wi.g.width = gdispGetWidth(); +	wi.g.height = gdispGetHeight()/4; +	ghKeyboard = gwinKeyboardCreate(0, &wi); +#endif + +} + +int main(void) { +	GEventKeyboard* pk; +	unsigned i; + +	gfxInit(); + +	gdispClear(Silver); +	gwinSetDefaultFont(gdispOpenFont("DejaVuSans16")); +	gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); +	gwinSetDefaultColor(Black); +	gwinSetDefaultBgColor(White); + +	geventListenerInit(&gl); +	geventAttachSource(&gl, ginputGetKeyboard(0), GLISTEN_KEYTRANSITIONS|GLISTEN_KEYUP); + +	guiCreate(); + +	gwinPrintf(ghConsole, "Keyboard Monitor...\n"); + +	while(1) { +		// Get an Event +		pk = (GEventKeyboard *)geventEventWait(&gl, TIME_INFINITE); + +		if (pk->type != GEVENT_KEYBOARD) +			continue; + +		gwinPrintf(ghConsole, "KEYSTATE: 0x%04X [ %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s]", +			pk->keystate, +			(!pk->keystate ? "NONE " : ""), +			((pk->keystate & GKEYSTATE_KEYUP) ? "KEYUP " : ""), +			((pk->keystate & GKEYSTATE_REPEAT) ? "REPEAT " : ""), +			((pk->keystate & GKEYSTATE_SPECIAL) ? "SPECIAL " : ""), +			((pk->keystate & GKEYSTATE_RAW) ? "RAW " : ""), +			((pk->keystate & GKEYSTATE_SHIFT_L) ? "LSHIFT " : ""), +			((pk->keystate & GKEYSTATE_SHIFT_R) ? "RSHIFT " : ""), +			((pk->keystate & GKEYSTATE_CTRL_L) ? "LCTRL " : ""), +			((pk->keystate & GKEYSTATE_CTRL_R) ? "RCTRL " : ""), +			((pk->keystate & GKEYSTATE_ALT_L) ? "LALT " : ""), +			((pk->keystate & GKEYSTATE_ALT_R) ? "RALT " : ""), +			((pk->keystate & GKEYSTATE_FN) ? "FN " : ""), +			((pk->keystate & GKEYSTATE_COMPOSE) ? "COMPOSE " : ""), +			((pk->keystate & GKEYSTATE_WINKEY) ? "WINKEY " : ""), +			((pk->keystate & GKEYSTATE_CAPSLOCK) ? "CAPSLOCK " : ""), +			((pk->keystate & GKEYSTATE_NUMLOCK) ? "NUMLOCK " : ""), +			((pk->keystate & GKEYSTATE_SCROLLLOCK) ? "SCROLLLOCK " : "") +			); +		if (pk->bytecount) { +			gwinPrintf(ghConsole, " Keys:"); +			for (i = 0; i < pk->bytecount; i++) +				gwinPrintf(ghConsole, " 0x%02X", (uint8_t)pk->c[i]); +			gwinPrintf(ghConsole, " ["); +			for (i = 0; i < pk->bytecount; i++) +				gwinPrintf(ghConsole, "%c", pk->c[i] >= ' ' && pk->c[i] <= '~' ? pk->c[i] : ' '); +			gwinPrintf(ghConsole, "]"); +		} +		gwinPrintf(ghConsole, "\n"); +	} +} + diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index d5bfb6d2..8f5a6329 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -49,13 +49,14 @@  /* Our custom yellow style */  static const GWidgetStyle YellowWidgetStyle = {  	Yellow,							// window background +	HTML2COLOR(0x800000),			// focus  	// enabled color set  	{  		HTML2COLOR(0x0000FF),		// text  		HTML2COLOR(0x404040),		// edge  		HTML2COLOR(0xE0E0E0),		// fill -		HTML2COLOR(0xE0E0E0),		// progress - inactive area +		HTML2COLOR(0xE0E0E0)		// progress - inactive area  	},  	// disabled color set @@ -63,7 +64,7 @@ static const GWidgetStyle YellowWidgetStyle = {  		HTML2COLOR(0xC0C0C0),		// text  		HTML2COLOR(0x808080),		// edge  		HTML2COLOR(0xE0E0E0),		// fill -		HTML2COLOR(0xC0E0C0),		// progress - active area +		HTML2COLOR(0xC0E0C0)		// progress - active area  	},  	// pressed color set @@ -72,7 +73,7 @@ static const GWidgetStyle YellowWidgetStyle = {  		HTML2COLOR(0x404040),		// edge  		HTML2COLOR(0x808080),		// fill  		HTML2COLOR(0x00E000),		// progress - active area -	}, +	}  };  /* The variables we need */ | 
