summaryrefslogtreecommitdiff
path: root/examples/imx7_colibri_m4/low_power_demo/ugui/ugui.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/imx7_colibri_m4/low_power_demo/ugui/ugui.h')
-rw-r--r--examples/imx7_colibri_m4/low_power_demo/ugui/ugui.h847
1 files changed, 847 insertions, 0 deletions
diff --git a/examples/imx7_colibri_m4/low_power_demo/ugui/ugui.h b/examples/imx7_colibri_m4/low_power_demo/ugui/ugui.h
new file mode 100644
index 0000000..2ef2235
--- /dev/null
+++ b/examples/imx7_colibri_m4/low_power_demo/ugui/ugui.h
@@ -0,0 +1,847 @@
+/* -------------------------------------------------------------------------------- */
+/* -- µGUI - Generic GUI module (C)Achim Döbler, 2015 -- */
+/* -------------------------------------------------------------------------------- */
+// µGUI is a generic GUI module for embedded systems.
+// This is a free software that is open for education, research and commercial
+// developments under license policy of following terms.
+//
+// Copyright (C) 2015, Achim Döbler, all rights reserved.
+// URL: http://www.embeddedlightning.com/
+//
+// * The µGUI module is a free software and there is NO WARRANTY.
+// * No restriction on use. You can use, modify and redistribute it for
+// personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY.
+// * Redistributions of source code must retain the above copyright notice.
+//
+/* -------------------------------------------------------------------------------- */
+/* -- REVISION HISTORY -- */
+/* -------------------------------------------------------------------------------- */
+// Mar 18, 2015 V0.3 Driver support added.
+// Window and object support added.
+// Touch support added.
+// Fixed some minor bugs.
+//
+// Oct 20, 2014 V0.2 Function UG_DrawRoundFrame() added.
+// Function UG_FillRoundFrame() added.
+// Function UG_DrawArc() added.
+// Fixed some minor bugs.
+//
+// Oct 11, 2014 V0.1 First release.
+/* -------------------------------------------------------------------------------- */
+#include <stdint.h>
+
+#ifndef __UGUI_H
+#define __UGUI_H
+
+
+/* -------------------------------------------------------------------------------- */
+/* -- CONFIG SECTION -- */
+/* -------------------------------------------------------------------------------- */
+
+/* Enable needed fonts here */
+#define USE_FONT_4X6
+#define USE_FONT_5X8
+#define USE_FONT_5X12
+#define USE_FONT_6X8
+//#define USE_FONT_6X10
+#define USE_FONT_7X12
+#define USE_FONT_8X8
+#define USE_FONT_8X12
+#define USE_FONT_8X14
+#define USE_FONT_10X16
+#define USE_FONT_12X16
+#define USE_FONT_12X20
+#define USE_FONT_16X26
+#define USE_FONT_22X36
+#define USE_FONT_24X40
+//#define USE_FONT_32X53
+
+/* Specify platform-dependent integer types here */
+
+#define __UG_CONST const
+typedef uint8_t UG_U8;
+typedef int8_t UG_S8;
+typedef uint16_t UG_U16;
+typedef int16_t UG_S16;
+typedef uint32_t UG_U32;
+typedef int32_t UG_S32;
+
+
+/* Example for dsPIC33
+typedef unsigned char UG_U8;
+typedef signed char UG_S8;
+typedef unsigned int UG_U16;
+typedef signed int UG_S16;
+typedef unsigned long int UG_U32;
+typedef signed long int UG_S32;
+*/
+
+/* -------------------------------------------------------------------------------- */
+/* -------------------------------------------------------------------------------- */
+
+
+
+
+/* -------------------------------------------------------------------------------- */
+/* -- µGUI FONTS -- */
+/* -- Source: http://www.mikrocontroller.net/user/show/benedikt -- */
+/* -------------------------------------------------------------------------------- */
+typedef struct
+{
+ unsigned char* p;
+ UG_S16 char_width;
+ UG_S16 char_height;
+} UG_FONT;
+
+#ifdef USE_FONT_4X6
+ extern const UG_FONT FONT_4X6;
+#endif
+#ifdef USE_FONT_5X8
+ extern const UG_FONT FONT_5X8;
+#endif
+#ifdef USE_FONT_5X12
+ extern const UG_FONT FONT_5X12;
+#endif
+#ifdef USE_FONT_6X8
+ extern const UG_FONT FONT_6X8;
+#endif
+#ifdef USE_FONT_6X10
+ extern const UG_FONT FONT_6X10;
+#endif
+#ifdef USE_FONT_7X12
+ extern const UG_FONT FONT_7X12;
+#endif
+#ifdef USE_FONT_8X8
+ extern const UG_FONT FONT_8X8;
+#endif
+#ifdef USE_FONT_8X12
+ extern const UG_FONT FONT_8X12;
+#endif
+#ifdef USE_FONT_8X14
+ extern const UG_FONT FONT_8X14;
+#endif
+#ifdef USE_FONT_10X16
+ extern const UG_FONT FONT_10X16;
+#endif
+#ifdef USE_FONT_12X16
+ extern const UG_FONT FONT_12X16;
+#endif
+#ifdef USE_FONT_12X20
+ extern const UG_FONT FONT_12X20;
+#endif
+#ifdef USE_FONT_16X26
+ extern const UG_FONT FONT_16X26;
+#endif
+#ifdef USE_FONT_22X36
+ extern const UG_FONT FONT_22X36;
+#endif
+#ifdef USE_FONT_24X40
+ extern const UG_FONT FONT_24X40;
+#endif
+#ifdef USE_FONT_32X53
+ extern const UG_FONT FONT_32X53;
+#endif
+
+/* -------------------------------------------------------------------------------- */
+/* -- TYPEDEFS -- */
+/* -------------------------------------------------------------------------------- */
+typedef struct S_OBJECT UG_OBJECT;
+typedef struct S_WINDOW UG_WINDOW;
+typedef UG_S8 UG_RESULT;
+typedef UG_U32 UG_COLOR;
+/* -------------------------------------------------------------------------------- */
+/* -- DEFINES -- */
+/* -------------------------------------------------------------------------------- */
+#ifndef NULL
+ #define NULL ((void*) 0)
+#endif
+
+/* Alignments */
+#define ALIGN_H_LEFT (1<<0)
+#define ALIGN_H_CENTER (1<<1)
+#define ALIGN_H_RIGHT (1<<2)
+#define ALIGN_V_TOP (1<<3)
+#define ALIGN_V_CENTER (1<<4)
+#define ALIGN_V_BOTTOM (1<<5)
+#define ALIGN_BOTTOM_RIGHT (ALIGN_V_BOTTOM|ALIGN_H_RIGHT)
+#define ALIGN_BOTTOM_CENTER (ALIGN_V_BOTTOM|ALIGN_H_CENTER)
+#define ALIGN_BOTTOM_LEFT (ALIGN_V_BOTTOM|ALIGN_H_LEFT)
+#define ALIGN_CENTER_RIGHT (ALIGN_V_CENTER|ALIGN_H_RIGHT)
+#define ALIGN_CENTER (ALIGN_V_CENTER|ALIGN_H_CENTER)
+#define ALIGN_CENTER_LEFT (ALIGN_V_CENTER|ALIGN_H_LEFT)
+#define ALIGN_TOP_RIGHT (ALIGN_V_TOP|ALIGN_H_RIGHT)
+#define ALIGN_TOP_CENTER (ALIGN_V_TOP|ALIGN_H_CENTER)
+#define ALIGN_TOP_LEFT (ALIGN_V_TOP|ALIGN_H_LEFT)
+
+/* Default IDs */
+#define OBJ_ID_0 0
+#define OBJ_ID_1 1
+#define OBJ_ID_2 2
+#define OBJ_ID_3 3
+#define OBJ_ID_4 4
+#define OBJ_ID_5 5
+#define OBJ_ID_6 6
+#define OBJ_ID_7 7
+#define OBJ_ID_8 8
+#define OBJ_ID_9 9
+#define OBJ_ID_10 10
+#define OBJ_ID_11 11
+#define OBJ_ID_12 12
+#define OBJ_ID_13 13
+#define OBJ_ID_14 14
+#define OBJ_ID_15 15
+#define OBJ_ID_16 16
+#define OBJ_ID_17 17
+#define OBJ_ID_18 18
+#define OBJ_ID_19 19
+
+/* -------------------------------------------------------------------------------- */
+/* -- FUNCTION RESULTS -- */
+/* -------------------------------------------------------------------------------- */
+#define UG_RESULT_FAIL -1
+#define UG_RESULT_OK 0
+
+/* -------------------------------------------------------------------------------- */
+/* -- UNIVERSAL STRUCTURES -- */
+/* -------------------------------------------------------------------------------- */
+/* Area structure */
+typedef struct
+{
+ UG_S16 xs;
+ UG_S16 ys;
+ UG_S16 xe;
+ UG_S16 ye;
+} UG_AREA;
+
+/* Text structure */
+typedef struct
+{
+ char* str;
+ const UG_FONT* font;
+ UG_AREA a;
+ UG_COLOR fc;
+ UG_COLOR bc;
+ UG_U8 align;
+ UG_S16 h_space;
+ UG_S16 v_space;
+} UG_TEXT;
+
+/* -------------------------------------------------------------------------------- */
+/* -- BITMAP -- */
+/* -------------------------------------------------------------------------------- */
+typedef struct
+{
+ void* p;
+ UG_U16 width;
+ UG_U16 height;
+ UG_U8 bpp;
+ UG_U8 colors;
+} UG_BMP;
+
+#define BMP_BPP_1 (1<<0)
+#define BMP_BPP_2 (1<<1)
+#define BMP_BPP_4 (1<<2)
+#define BMP_BPP_8 (1<<3)
+#define BMP_BPP_16 (1<<4)
+#define BMP_BPP_32 (1<<5)
+#define BMP_RGB888 (1<<0)
+#define BMP_RGB565 (1<<1)
+#define BMP_RGB555 (1<<2)
+
+/* -------------------------------------------------------------------------------- */
+/* -- MESSAGE -- */
+/* -------------------------------------------------------------------------------- */
+/* Message structure */
+typedef struct
+{
+ UG_U8 type;
+ UG_U8 id;
+ UG_U8 sub_id;
+ UG_U8 event;
+ void* src;
+} UG_MESSAGE;
+
+/* Message types */
+#define MSG_TYPE_NONE 0
+#define MSG_TYPE_WINDOW 1
+#define MSG_TYPE_OBJECT 2
+
+/* -------------------------------------------------------------------------------- */
+/* -- TOUCH -- */
+/* -------------------------------------------------------------------------------- */
+/* Touch structure */
+typedef struct
+{
+ UG_U8 state;
+ UG_S16 xp;
+ UG_S16 yp;
+} UG_TOUCH;
+
+
+#define TOUCH_STATE_PRESSED 1
+#define TOUCH_STATE_RELEASED 0
+
+/* -------------------------------------------------------------------------------- */
+/* -- OBJECTS -- */
+/* -------------------------------------------------------------------------------- */
+/* Object structure */
+struct S_OBJECT
+{
+ UG_U8 state; /* object state */
+ UG_U8 touch_state; /* object touch state */
+ void (*update) (UG_WINDOW*,UG_OBJECT*); /* pointer to object-specific update function */
+ UG_AREA a_abs; /* absolute area of the object */
+ UG_AREA a_rel; /* relative area of the object */
+ UG_U8 type; /* object type */
+ UG_U8 id; /* object ID */
+ UG_U8 event; /* object-specific events */
+ void* data; /* pointer to object-specific data */
+};
+
+/* Currently supported objects */
+#define OBJ_TYPE_NONE 0
+#define OBJ_TYPE_BUTTON 1
+#define OBJ_TYPE_TEXTBOX 2
+#define OBJ_TYPE_IMAGE 3
+
+/* Standard object events */
+#define OBJ_EVENT_NONE 0
+#define OBJ_EVENT_CLICKED 1
+
+/* Object states */
+#define OBJ_STATE_FREE (1<<0)
+#define OBJ_STATE_VALID (1<<1)
+#define OBJ_STATE_BUSY (1<<2)
+#define OBJ_STATE_VISIBLE (1<<3)
+#define OBJ_STATE_ENABLE (1<<4)
+#define OBJ_STATE_UPDATE (1<<5)
+#define OBJ_STATE_REDRAW (1<<6)
+#define OBJ_STATE_TOUCH_ENABLE (1<<7)
+#define OBJ_STATE_INIT (OBJ_STATE_FREE | OBJ_STATE_VALID)
+
+/* Object touch states */
+#define OBJ_TOUCH_STATE_CHANGED (1<<0)
+#define OBJ_TOUCH_STATE_PRESSED_ON_OBJECT (1<<1)
+#define OBJ_TOUCH_STATE_PRESSED_OUTSIDE_OBJECT (1<<2)
+#define OBJ_TOUCH_STATE_RELEASED_ON_OBJECT (1<<3)
+#define OBJ_TOUCH_STATE_RELEASED_OUTSIDE_OBJECT (1<<4)
+#define OBJ_TOUCH_STATE_IS_PRESSED_ON_OBJECT (1<<5)
+#define OBJ_TOUCH_STATE_IS_PRESSED (1<<6)
+#define OBJ_TOUCH_STATE_CLICK_ON_OBJECT (1<<7)
+#define OBJ_TOUCH_STATE_INIT 0
+
+/* -------------------------------------------------------------------------------- */
+/* -- WINDOW -- */
+/* -------------------------------------------------------------------------------- */
+/* Title structure */
+typedef struct
+{
+ char* str;
+ const UG_FONT* font;
+ UG_S8 h_space;
+ UG_S8 v_space;
+ UG_U8 align;
+ UG_COLOR fc;
+ UG_COLOR bc;
+ UG_COLOR ifc;
+ UG_COLOR ibc;
+ UG_U8 height;
+} UG_TITLE;
+
+/* Window structure */
+struct S_WINDOW
+{
+ UG_U8 objcnt;
+ UG_OBJECT* objlst;
+ UG_U8 state;
+ UG_COLOR fc;
+ UG_COLOR bc;
+ UG_S16 xs;
+ UG_S16 ys;
+ UG_S16 xe;
+ UG_S16 ye;
+ UG_U8 style;
+ UG_TITLE title;
+ void (*cb)( UG_MESSAGE* );
+};
+
+/* Window states */
+#define WND_STATE_FREE (1<<0)
+#define WND_STATE_VALID (1<<1)
+#define WND_STATE_BUSY (1<<2)
+#define WND_STATE_VISIBLE (1<<3)
+#define WND_STATE_ENABLE (1<<4)
+#define WND_STATE_UPDATE (1<<5)
+#define WND_STATE_REDRAW_TITLE (1<<6)
+
+/* Window styles */
+#define WND_STYLE_2D (0<<0)
+#define WND_STYLE_3D (1<<0)
+#define WND_STYLE_HIDE_TITLE (0<<1)
+#define WND_STYLE_SHOW_TITLE (1<<1)
+
+/* -------------------------------------------------------------------------------- */
+/* -- BUTTON OBJECT -- */
+/* -------------------------------------------------------------------------------- */
+/* Button structure */
+typedef struct
+{
+ UG_U8 state;
+ UG_U8 style;
+ UG_COLOR fc;
+ UG_COLOR bc;
+ UG_COLOR afc;
+ UG_COLOR abc;
+ const UG_FONT* font;
+ char* str;
+}UG_BUTTON;
+
+/* Default button IDs */
+#define BTN_ID_0 OBJ_ID_0
+#define BTN_ID_1 OBJ_ID_1
+#define BTN_ID_2 OBJ_ID_2
+#define BTN_ID_3 OBJ_ID_3
+#define BTN_ID_4 OBJ_ID_4
+#define BTN_ID_5 OBJ_ID_5
+#define BTN_ID_6 OBJ_ID_6
+#define BTN_ID_7 OBJ_ID_7
+#define BTN_ID_8 OBJ_ID_8
+#define BTN_ID_9 OBJ_ID_9
+#define BTN_ID_10 OBJ_ID_10
+#define BTN_ID_11 OBJ_ID_11
+#define BTN_ID_12 OBJ_ID_12
+#define BTN_ID_13 OBJ_ID_13
+#define BTN_ID_14 OBJ_ID_14
+#define BTN_ID_15 OBJ_ID_15
+#define BTN_ID_16 OBJ_ID_16
+#define BTN_ID_17 OBJ_ID_17
+#define BTN_ID_18 OBJ_ID_18
+#define BTN_ID_19 OBJ_ID_19
+
+/* Button states */
+#define BTN_STATE_RELEASED (0<<0)
+#define BTN_STATE_PRESSED (1<<0)
+#define BTN_STATE_ALWAYS_REDRAW (1<<1)
+
+/* Button style */
+#define BTN_STYLE_2D (0<<0)
+#define BTN_STYLE_3D (1<<0)
+#define BTN_STYLE_TOGGLE_COLORS (1<<1)
+#define BTN_STYLE_USE_ALTERNATE_COLORS (1<<2)
+
+/* Button events */
+#define BTN_EVENT_CLICKED OBJ_EVENT_CLICKED
+
+/* -------------------------------------------------------------------------------- */
+/* -- TEXTBOX OBJECT -- */
+/* -------------------------------------------------------------------------------- */
+/* Textbox structure */
+typedef struct
+{
+ char* str;
+ const UG_FONT* font;
+ UG_U8 style;
+ UG_COLOR fc;
+ UG_COLOR bc;
+ UG_U8 align;
+ UG_S8 h_space;
+ UG_S8 v_space;
+} UG_TEXTBOX;
+
+/* Default textbox IDs */
+#define TXB_ID_0 OBJ_ID_0
+#define TXB_ID_1 OBJ_ID_1
+#define TXB_ID_2 OBJ_ID_2
+#define TXB_ID_3 OBJ_ID_3
+#define TXB_ID_4 OBJ_ID_4
+#define TXB_ID_5 OBJ_ID_5
+#define TXB_ID_6 OBJ_ID_6
+#define TXB_ID_7 OBJ_ID_7
+#define TXB_ID_8 OBJ_ID_8
+#define TXB_ID_9 OBJ_ID_9
+#define TXB_ID_10 OBJ_ID_10
+#define TXB_ID_11 OBJ_ID_11
+#define TXB_ID_12 OBJ_ID_12
+#define TXB_ID_13 OBJ_ID_13
+#define TXB_ID_14 OBJ_ID_14
+#define TXB_ID_15 OBJ_ID_15
+#define TXB_ID_16 OBJ_ID_16
+#define TXB_ID_17 OBJ_ID_17
+#define TXB_ID_18 OBJ_ID_18
+#define TXB_ID_19 OBJ_ID_19
+
+/* -------------------------------------------------------------------------------- */
+/* -- IMAGE OBJECT -- */
+/* -------------------------------------------------------------------------------- */
+/* Image structure */
+typedef struct
+{
+ void* img;
+ UG_U8 type;
+} UG_IMAGE;
+
+/* Default image IDs */
+#define IMG_ID_0 OBJ_ID_0
+#define IMG_ID_1 OBJ_ID_1
+#define IMG_ID_2 OBJ_ID_2
+#define IMG_ID_3 OBJ_ID_3
+#define IMG_ID_4 OBJ_ID_4
+#define IMG_ID_5 OBJ_ID_5
+#define IMG_ID_6 OBJ_ID_6
+#define IMG_ID_7 OBJ_ID_7
+#define IMG_ID_8 OBJ_ID_8
+#define IMG_ID_9 OBJ_ID_9
+#define IMG_ID_10 OBJ_ID_10
+#define IMG_ID_11 OBJ_ID_11
+#define IMG_ID_12 OBJ_ID_12
+#define IMG_ID_13 OBJ_ID_13
+#define IMG_ID_14 OBJ_ID_14
+#define IMG_ID_15 OBJ_ID_15
+#define IMG_ID_16 OBJ_ID_16
+#define IMG_ID_17 OBJ_ID_17
+#define IMG_ID_18 OBJ_ID_18
+#define IMG_ID_19 OBJ_ID_19
+
+/* Image types */
+#define IMG_TYPE_BMP (1<<0)
+
+/* -------------------------------------------------------------------------------- */
+/* -- µGUI DRIVER -- */
+/* -------------------------------------------------------------------------------- */
+typedef struct
+{
+ void* driver;
+ UG_U8 state;
+} UG_DRIVER;
+
+#define DRIVER_REGISTERED (1<<0)
+#define DRIVER_ENABLED (1<<1)
+
+/* Supported drivers */
+#define NUMBER_OF_DRIVERS 2
+#define DRIVER_DRAW_LINE 0
+#define DRIVER_FILL_FRAME 1
+
+/* -------------------------------------------------------------------------------- */
+/* -- µGUI CORE STRUCTURE -- */
+/* -------------------------------------------------------------------------------- */
+typedef struct
+{
+ void (*pset)(UG_S16,UG_S16,UG_COLOR);
+ UG_S16 x_dim;
+ UG_S16 y_dim;
+ UG_TOUCH touch;
+ UG_WINDOW* next_window;
+ UG_WINDOW* active_window;
+ UG_WINDOW* last_window;
+ struct
+ {
+ UG_S16 x_pos;
+ UG_S16 y_pos;
+ UG_S16 x_start;
+ UG_S16 y_start;
+ UG_S16 x_end;
+ UG_S16 y_end;
+ UG_COLOR fore_color;
+ UG_COLOR back_color;
+ } console;
+ struct
+ {
+ unsigned char* p;
+ UG_S16 char_width;
+ UG_S16 char_height;
+ UG_S8 char_h_space;
+ UG_S8 char_v_space;
+ } font;
+ UG_COLOR fore_color;
+ UG_COLOR back_color;
+ UG_COLOR desktop_color;
+ UG_U8 state;
+ UG_DRIVER driver[NUMBER_OF_DRIVERS];
+} UG_GUI;
+
+#define UG_SATUS_WAIT_FOR_UPDATE (1<<0)
+
+/* -------------------------------------------------------------------------------- */
+/* -- µGUI COLORS -- */
+/* -- Source: http://www.rapidtables.com/web/color/RGB_Color.htm -- */
+/* -------------------------------------------------------------------------------- */
+#define C_MAROON 0x800000
+#define C_DARK_RED 0x8B0000
+#define C_BROWN 0xA52A2A
+#define C_FIREBRICK 0xB22222
+#define C_CRIMSON 0xDC143C
+#define C_RED 0xFF0000
+#define C_TOMATO 0xFF6347
+#define C_CORAL 0xFF7F50
+#define C_INDIAN_RED 0xCD5C5C
+#define C_LIGHT_CORAL 0xF08080
+#define C_DARK_SALMON 0xE9967A
+#define C_SALMON 0xFA8072
+#define C_LIGHT_SALMON 0xFFA07A
+#define C_ORANGE_RED 0xFF4500
+#define C_DARK_ORANGE 0xFF8C00
+#define C_ORANGE 0xFFA500
+#define C_GOLD 0xFFD700
+#define C_DARK_GOLDEN_ROD 0xB8860B
+#define C_GOLDEN_ROD 0xDAA520
+#define C_PALE_GOLDEN_ROD 0xEEE8AA
+#define C_DARK_KHAKI 0xBDB76B
+#define C_KHAKI 0xF0E68C
+#define C_OLIVE 0x808000
+#define C_YELLOW 0xFFFF00
+#define C_YELLOW_GREEN 0x9ACD32
+#define C_DARK_OLIVE_GREEN 0x556B2F
+#define C_OLIVE_DRAB 0x6B8E23
+#define C_LAWN_GREEN 0x7CFC00
+#define C_CHART_REUSE 0x7FFF00
+#define C_GREEN_YELLOW 0xADFF2F
+#define C_DARK_GREEN 0x006400
+#define C_GREEN 0x00FF00
+#define C_FOREST_GREEN 0x228B22
+#define C_LIME 0x00FF00
+#define C_LIME_GREEN 0x32CD32
+#define C_LIGHT_GREEN 0x90EE90
+#define C_PALE_GREEN 0x98FB98
+#define C_DARK_SEA_GREEN 0x8FBC8F
+#define C_MEDIUM_SPRING_GREEN 0x00FA9A
+#define C_SPRING_GREEN 0x00FF7F
+#define C_SEA_GREEN 0x2E8B57
+#define C_MEDIUM_AQUA_MARINE 0x66CDAA
+#define C_MEDIUM_SEA_GREEN 0x3CB371
+#define C_LIGHT_SEA_GREEN 0x20B2AA
+#define C_DARK_SLATE_GRAY 0x2F4F4F
+#define C_TEAL 0x008080
+#define C_DARK_CYAN 0x008B8B
+#define C_AQUA 0x00FFFF
+#define C_CYAN 0x00FFFF
+#define C_LIGHT_CYAN 0xE0FFFF
+#define C_DARK_TURQUOISE 0x00CED1
+#define C_TURQUOISE 0x40E0D0
+#define C_MEDIUM_TURQUOISE 0x48D1CC
+#define C_PALE_TURQUOISE 0xAFEEEE
+#define C_AQUA_MARINE 0x7FFFD4
+#define C_POWDER_BLUE 0xB0E0E6
+#define C_CADET_BLUE 0x5F9EA0
+#define C_STEEL_BLUE 0x4682B4
+#define C_CORN_FLOWER_BLUE 0x6495ED
+#define C_DEEP_SKY_BLUE 0x00BFFF
+#define C_DODGER_BLUE 0x1E90FF
+#define C_LIGHT_BLUE 0xADD8E6
+#define C_SKY_BLUE 0x87CEEB
+#define C_LIGHT_SKY_BLUE 0x87CEFA
+#define C_MIDNIGHT_BLUE 0x191970
+#define C_NAVY 0x000080
+#define C_DARK_BLUE 0x00008B
+#define C_MEDIUM_BLUE 0x0000CD
+#define C_BLUE 0x0000FF
+#define C_ROYAL_BLUE 0x4169E1
+#define C_BLUE_VIOLET 0x8A2BE2
+#define C_INDIGO 0x4B0082
+#define C_DARK_SLATE_BLUE 0x483D8B
+#define C_SLATE_BLUE 0x6A5ACD
+#define C_MEDIUM_SLATE_BLUE 0x7B68EE
+#define C_MEDIUM_PURPLE 0x9370DB
+#define C_DARK_MAGENTA 0x8B008B
+#define C_DARK_VIOLET 0x9400D3
+#define C_DARK_ORCHID 0x9932CC
+#define C_MEDIUM_ORCHID 0xBA55D3
+#define C_PURPLE 0x800080
+#define C_THISTLE 0xD8BFD8
+#define C_PLUM 0xDDA0DD
+#define C_VIOLET 0xEE82EE
+#define C_MAGENTA 0xFF00FF
+#define C_ORCHID 0xDA70D6
+#define C_MEDIUM_VIOLET_RED 0xC71585
+#define C_PALE_VIOLET_RED 0xDB7093
+#define C_DEEP_PINK 0xFF1493
+#define C_HOT_PINK 0xFF69B4
+#define C_LIGHT_PINK 0xFFB6C1
+#define C_PINK 0xFFC0CB
+#define C_ANTIQUE_WHITE 0xFAEBD7
+#define C_BEIGE 0xF5F5DC
+#define C_BISQUE 0xFFE4C4
+#define C_BLANCHED_ALMOND 0xFFEBCD
+#define C_WHEAT 0xF5DEB3
+#define C_CORN_SILK 0xFFF8DC
+#define C_LEMON_CHIFFON 0xFFFACD
+#define C_LIGHT_GOLDEN_ROD_YELLOW 0xFAFAD2
+#define C_LIGHT_YELLOW 0xFFFFE0
+#define C_SADDLE_BROWN 0x8B4513
+#define C_SIENNA 0xA0522D
+#define C_CHOCOLATE 0xD2691E
+#define C_PERU 0xCD853F
+#define C_SANDY_BROWN 0xF4A460
+#define C_BURLY_WOOD 0xDEB887
+#define C_TAN 0xD2B48C
+#define C_ROSY_BROWN 0xBC8F8F
+#define C_MOCCASIN 0xFFE4B5
+#define C_NAVAJO_WHITE 0xFFDEAD
+#define C_PEACH_PUFF 0xFFDAB9
+#define C_MISTY_ROSE 0xFFE4E1
+#define C_LAVENDER_BLUSH 0xFFF0F5
+#define C_LINEN 0xFAF0E6
+#define C_OLD_LACE 0xFDF5E6
+#define C_PAPAYA_WHIP 0xFFEFD5
+#define C_SEA_SHELL 0xFFF5EE
+#define C_MINT_CREAM 0xF5FFFA
+#define C_SLATE_GRAY 0x708090
+#define C_LIGHT_SLATE_GRAY 0x778899
+#define C_LIGHT_STEEL_BLUE 0xB0C4DE
+#define C_LAVENDER 0xE6E6FA
+#define C_FLORAL_WHITE 0xFFFAF0
+#define C_ALICE_BLUE 0xF0F8FF
+#define C_GHOST_WHITE 0xF8F8FF
+#define C_HONEYDEW 0xF0FFF0
+#define C_IVORY 0xFFFFF0
+#define C_AZURE 0xF0FFFF
+#define C_SNOW 0xFFFAFA
+#define C_BLACK 0x000000
+#define C_DIM_GRAY 0x696969
+#define C_GRAY 0x808080
+#define C_DARK_GRAY 0xA9A9A9
+#define C_SILVER 0xC0C0C0
+#define C_LIGHT_GRAY 0xD3D3D3
+#define C_GAINSBORO 0xDCDCDC
+#define C_WHITE_SMOKE 0xF5F5F5
+#define C_WHITE 0xFFFFFF
+
+/* -------------------------------------------------------------------------------- */
+/* -- PROTOTYPES -- */
+/* -------------------------------------------------------------------------------- */
+/* Classic functions */
+UG_S16 UG_Init( UG_GUI* g, void (*p)(UG_S16,UG_S16,UG_COLOR), UG_S16 x, UG_S16 y );
+UG_S16 UG_SelectGUI( UG_GUI* g );
+void UG_FontSelect( const UG_FONT* font );
+void UG_FillScreen( UG_COLOR c );
+void UG_FillFrame( UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c );
+void UG_FillRoundFrame( UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_S16 r, UG_COLOR c );
+void UG_DrawMesh( UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c );
+void UG_DrawFrame( UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c );
+void UG_DrawRoundFrame( UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_S16 r, UG_COLOR c );
+void UG_DrawPixel( UG_S16 x0, UG_S16 y0, UG_COLOR c );
+void UG_DrawCircle( UG_S16 x0, UG_S16 y0, UG_S16 r, UG_COLOR c );
+void UG_FillCircle( UG_S16 x0, UG_S16 y0, UG_S16 r, UG_COLOR c );
+void UG_DrawArc( UG_S16 x0, UG_S16 y0, UG_S16 r, UG_U8 s, UG_COLOR c );
+void UG_DrawLine( UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c );
+void UG_PutString( UG_S16 x, UG_S16 y, char* str );
+void UG_PutChar( char chr, UG_S16 x, UG_S16 y, UG_COLOR fc, UG_COLOR bc );
+void UG_ConsolePutString( char* str );
+void UG_ConsoleSetArea( UG_S16 xs, UG_S16 ys, UG_S16 xe, UG_S16 ye );
+void UG_ConsoleSetForecolor( UG_COLOR c );
+void UG_ConsoleSetBackcolor( UG_COLOR c );
+void UG_SetForecolor( UG_COLOR c );
+void UG_SetBackcolor( UG_COLOR c );
+UG_S16 UG_GetXDim( void );
+UG_S16 UG_GetYDim( void );
+void UG_FontSetHSpace( UG_U16 s );
+void UG_FontSetVSpace( UG_U16 s );
+
+/* Miscellaneous functions */
+void UG_WaitForUpdate( void );
+void UG_Update( void );
+void UG_DrawBMP( UG_S16 xp, UG_S16 yp, UG_BMP* bmp );
+void UG_TouchUpdate( UG_S16 xp, UG_S16 yp, UG_U8 state );
+
+/* Driver functions */
+void UG_DriverRegister( UG_U8 type, void* driver );
+void UG_DriverEnable( UG_U8 type );
+void UG_DriverDisable( UG_U8 type );
+
+/* Window functions */
+UG_RESULT UG_WindowCreate( UG_WINDOW* wnd, UG_OBJECT* objlst, UG_U8 objcnt, void (*cb)( UG_MESSAGE* ) );
+UG_RESULT UG_WindowDelete( UG_WINDOW* wnd );
+UG_RESULT UG_WindowShow( UG_WINDOW* wnd );
+UG_RESULT UG_WindowHide( UG_WINDOW* wnd );
+UG_RESULT UG_WindowResize( UG_WINDOW* wnd, UG_S16 xs, UG_S16 ys, UG_S16 xe, UG_S16 ye );
+UG_RESULT UG_WindowAlert( UG_WINDOW* wnd );
+UG_RESULT UG_WindowSetForeColor( UG_WINDOW* wnd, UG_COLOR fc );
+UG_RESULT UG_WindowSetBackColor( UG_WINDOW* wnd, UG_COLOR bc );
+UG_RESULT UG_WindowSetTitleTextColor( UG_WINDOW* wnd, UG_COLOR c );
+UG_RESULT UG_WindowSetTitleColor( UG_WINDOW* wnd, UG_COLOR c );
+UG_RESULT UG_WindowSetTitleInactiveTextColor( UG_WINDOW* wnd, UG_COLOR c );
+UG_RESULT UG_WindowSetTitleInactiveColor( UG_WINDOW* wnd, UG_COLOR c );
+UG_RESULT UG_WindowSetTitleText( UG_WINDOW* wnd, char* str );
+UG_RESULT UG_WindowSetTitleTextFont( UG_WINDOW* wnd, const UG_FONT* font );
+UG_RESULT UG_WindowSetTitleTextHSpace( UG_WINDOW* wnd, UG_S8 hs );
+UG_RESULT UG_WindowSetTitleTextVSpace( UG_WINDOW* wnd, UG_S8 vs );
+UG_RESULT UG_WindowSetTitleTextAlignment( UG_WINDOW* wnd, UG_U8 align );
+UG_RESULT UG_WindowSetTitleHeight( UG_WINDOW* wnd, UG_U8 height );
+UG_RESULT UG_WindowSetXStart( UG_WINDOW* wnd, UG_S16 xs );
+UG_RESULT UG_WindowSetYStart( UG_WINDOW* wnd, UG_S16 ys );
+UG_RESULT UG_WindowSetXEnd( UG_WINDOW* wnd, UG_S16 xe );
+UG_RESULT UG_WindowSetYEnd( UG_WINDOW* wnd, UG_S16 ye );
+UG_RESULT UG_WindowSetStyle( UG_WINDOW* wnd, UG_U8 style );
+UG_COLOR UG_WindowGetForeColor( UG_WINDOW* wnd );
+UG_COLOR UG_WindowGetBackColor( UG_WINDOW* wnd );
+UG_COLOR UG_WindowGetTitleTextColor( UG_WINDOW* wnd );
+UG_COLOR UG_WindowGetTitleColor( UG_WINDOW* wnd );
+UG_COLOR UG_WindowGetTitleInactiveTextColor( UG_WINDOW* wnd );
+UG_COLOR UG_WindowGetTitleInactiveColor( UG_WINDOW* wnd );
+char* UG_WindowGetTitleText( UG_WINDOW* wnd );
+UG_FONT* UG_WindowGetTitleTextFont( UG_WINDOW* wnd );
+UG_S8 UG_WindowGetTitleTextHSpace( UG_WINDOW* wnd );
+UG_S8 UG_WindowGetTitleTextVSpace( UG_WINDOW* wnd );
+UG_U8 UG_WindowGetTitleTextAlignment( UG_WINDOW* wnd );
+UG_U8 UG_WindowGetTitleHeight( UG_WINDOW* wnd );
+UG_S16 UG_WindowGetXStart( UG_WINDOW* wnd );
+UG_S16 UG_WindowGetYStart( UG_WINDOW* wnd );
+UG_S16 UG_WindowGetXEnd( UG_WINDOW* wnd );
+UG_S16 UG_WindowGetYEnd( UG_WINDOW* wnd );
+UG_U8 UG_WindowGetStyle( UG_WINDOW* wnd );
+UG_RESULT UG_WindowGetArea( UG_WINDOW* wnd, UG_AREA* a );
+UG_S16 UG_WindowGetInnerWidth( UG_WINDOW* wnd );
+UG_S16 UG_WindowGetOuterWidth( UG_WINDOW* wnd );
+UG_S16 UG_WindowGetInnerHeight( UG_WINDOW* wnd );
+UG_S16 UG_WindowGetOuterHeight( UG_WINDOW* wnd );
+
+/* Button functions */
+UG_RESULT UG_ButtonCreate( UG_WINDOW* wnd, UG_BUTTON* btn, UG_U8 id, UG_S16 xs, UG_S16 ys, UG_S16 xe, UG_S16 ye );
+UG_RESULT UG_ButtonDelete( UG_WINDOW* wnd, UG_U8 id );
+UG_RESULT UG_ButtonShow( UG_WINDOW* wnd, UG_U8 id );
+UG_RESULT UG_ButtonHide( UG_WINDOW* wnd, UG_U8 id );
+UG_RESULT UG_ButtonSetForeColor( UG_WINDOW* wnd, UG_U8 id, UG_COLOR fc );
+UG_RESULT UG_ButtonSetBackColor( UG_WINDOW* wnd, UG_U8 id, UG_COLOR bc );
+UG_RESULT UG_ButtonSetAlternateForeColor( UG_WINDOW* wnd, UG_U8 id, UG_COLOR afc );
+UG_RESULT UG_ButtonSetAlternateBackColor( UG_WINDOW* wnd, UG_U8 id, UG_COLOR abc );
+UG_RESULT UG_ButtonSetText( UG_WINDOW* wnd, UG_U8 id, char* str );
+UG_RESULT UG_ButtonSetFont( UG_WINDOW* wnd, UG_U8 id, const UG_FONT* font );
+UG_RESULT UG_ButtonSetStyle( UG_WINDOW* wnd, UG_U8 id, UG_U8 style );
+UG_COLOR UG_ButtonGetForeColor( UG_WINDOW* wnd, UG_U8 id );
+UG_COLOR UG_ButtonGetBackColor( UG_WINDOW* wnd, UG_U8 id );
+UG_COLOR UG_ButtonGetAlternateForeColor( UG_WINDOW* wnd, UG_U8 id );
+UG_COLOR UG_ButtonGetAlternateBackColor( UG_WINDOW* wnd, UG_U8 id );
+char* UG_ButtonGetText( UG_WINDOW* wnd, UG_U8 id );
+UG_FONT* UG_ButtonGetFont( UG_WINDOW* wnd, UG_U8 id );
+UG_U8 UG_ButtonGetStyle( UG_WINDOW* wnd, UG_U8 id );
+
+/* Textbox functions */
+UG_RESULT UG_TextboxCreate( UG_WINDOW* wnd, UG_TEXTBOX* txb, UG_U8 id, UG_S16 xs, UG_S16 ys, UG_S16 xe, UG_S16 ye );
+UG_RESULT UG_TextboxDelete( UG_WINDOW* wnd, UG_U8 id );
+UG_RESULT UG_TextboxShow( UG_WINDOW* wnd, UG_U8 id );
+UG_RESULT UG_TextboxHide( UG_WINDOW* wnd, UG_U8 id );
+UG_RESULT UG_TextboxSetForeColor( UG_WINDOW* wnd, UG_U8 id, UG_COLOR fc );
+UG_RESULT UG_TextboxSetBackColor( UG_WINDOW* wnd, UG_U8 id, UG_COLOR bc );
+UG_RESULT UG_TextboxSetText( UG_WINDOW* wnd, UG_U8 id, char* str );
+UG_RESULT UG_TextboxSetFont( UG_WINDOW* wnd, UG_U8 id, const UG_FONT* font );
+UG_RESULT UG_TextboxSetHSpace( UG_WINDOW* wnd, UG_U8 id, UG_S8 hs );
+UG_RESULT UG_TextboxSetVSpace( UG_WINDOW* wnd, UG_U8 id, UG_S8 vs );
+UG_RESULT UG_TextboxSetAlignment( UG_WINDOW* wnd, UG_U8 id, UG_U8 align );
+UG_COLOR UG_TextboxGetForeColor( UG_WINDOW* wnd, UG_U8 id );
+UG_COLOR UG_TextboxGetBackColor( UG_WINDOW* wnd, UG_U8 id );
+char* UG_TextboxGetText( UG_WINDOW* wnd, UG_U8 id );
+UG_FONT* UG_TextboxGetFont( UG_WINDOW* wnd, UG_U8 id );
+UG_S8 UG_TextboxGetHSpace( UG_WINDOW* wnd, UG_U8 id );
+UG_S8 UG_TextboxGetVSpace( UG_WINDOW* wnd, UG_U8 id );
+UG_U8 UG_TextboxGetAlignment( UG_WINDOW* wnd, UG_U8 id );
+
+/* Image functions */
+UG_RESULT UG_ImageCreate( UG_WINDOW* wnd, UG_IMAGE* img, UG_U8 id, UG_S16 xs, UG_S16 ys, UG_S16 xe, UG_S16 ye );
+UG_RESULT UG_ImageDelete( UG_WINDOW* wnd, UG_U8 id );
+UG_RESULT UG_ImageShow( UG_WINDOW* wnd, UG_U8 id );
+UG_RESULT UG_ImageHide( UG_WINDOW* wnd, UG_U8 id );
+UG_RESULT UG_ImageSetBMP( UG_WINDOW* wnd, UG_U8 id, const UG_BMP* bmp );
+
+
+
+#endif