/* -------------------------------------------------------------------------------- */ /* -- µ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 #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