/********************************************************************* * SEGGER Microcontroller GmbH * * Solutions for real time microcontroller applications * ********************************************************************** * * * (c) 1996 - 2021 SEGGER Microcontroller GmbH * * * * Internet: www.segger.com Support: support@segger.com * * * ********************************************************************** ** emWin V6.24 - Graphical user interface for embedded applications ** All Intellectual Property rights in the Software belongs to SEGGER. emWin is protected by international copyright laws. Knowledge of the source code may not be used to write a similar product. This file may only be used in accordance with the following terms: The software has been licensed to ARM LIMITED whose registered office is situated at 110 Fulbourn Road, Cambridge CB1 9NJ, England solely for the purposes of creating libraries for ARM7, ARM9, Cortex-M series, and Cortex-R4 processor-based devices, sublicensed and distributed as part of the MDK-ARM Professional under the terms and conditions of the End User License supplied with the MDK-ARM Professional. Full source code is available at: www.segger.com We appreciate your understanding and fairness. ---------------------------------------------------------------------- Licensing information Licensor: SEGGER Software GmbH Licensed to: ARM Ltd, 110 Fulbourn Road, CB1 9NJ Cambridge, UK Licensed SEGGER software: emWin License number: GUI-00181 License model: LES-SLA-20007, Agreement, effective since October 1st 2011 Licensed product: MDK-ARM Professional Licensed platform: ARM7/9, Cortex-M/R4 Licensed number of seats: - ---------------------------------------------------------------------- File : AppWizard.h Purpose : Interface of AppWizard ---------------------------END-OF-HEADER------------------------------ */ #ifndef APPWIZARD_H #define APPWIZARD_H #include #include "DIALOG.h" #include "BUTTON_Private.h" #include "WINDOW_Private.h" #include "IMAGE_Private.h" #include "TEXT_Private.h" #include "SLIDER_Private.h" #include "ROTARY_Private.h" #include "SWITCH_Private.h" #include "EDIT_Private.h" #include "QRCODE_Private.h" #include "GAUGE_Private.h" #include "KEYBOARD_Private.h" #include "MULTIEDIT_Private.h" #include "DROPDOWN_Private.h" #include "LISTVIEW_Private.h" #if (GUI_WINSUPPORT && GUI_SUPPORT_MEMDEV && WM_SUPPORT_TRANSPARENCY && GUI_SUPPORT_ROTATION) #if defined(__cplusplus) extern "C" { // Make sure we have C-declarations in C++ programs #endif /*#################################################################### # # Defines & enums # ###################################################################### */ // // Exclude obsolete functions // #define APPW_SKIP_OBSOLETE 1 // // Dispose flags (coordinates) // #define APPW_DISPOSE_FLAG_X0 (1 << 0) #define APPW_DISPOSE_FLAG_Y0 (1 << 1) #define APPW_DISPOSE_FLAG_X1 (1 << 2) #define APPW_DISPOSE_FLAG_Y1 (1 << 3) #define APPW_DISPOSE_DONE (APPW_DISPOSE_FLAG_X0 | APPW_DISPOSE_FLAG_Y0 | APPW_DISPOSE_FLAG_X1 | APPW_DISPOSE_FLAG_Y1) #define APPW_DISPOSE_FLAG_ISROOT (1 << 0) // // Manage screens as persistent // #define APPW_STATE_PERSISTENT (1 << 0) // // Interaction flag(s) // #define APPW_ACTION_FLAG_DONTGETVALUEFROMEMITTER (1UL << 16) // // Dispose modes // #define DISPOSE_MODE_NULL 0 // No dispose information #define DISPOSE_MODE_REL_DISPLAY 1 // Relative to display #define DISPOSE_MODE_REL_PARENT 2 // Relative to parent #define DISPOSE_MODE_REL_SIBLING 3 // Relative to sibling (opposite edge) #define DISPOSE_MODE_REL_PARTNER 4 // Relative to sibling (same edge) // The following 4 modes are currently not supported by the AppWizard: #define DISPOSE_MODE_MID_DISPLAY 5 // Relative to center of display #define DISPOSE_MODE_MID_PARENT 6 // Relative to center of parent #define DISPOSE_MODE_TAB_DISPLAY 7 // Tabular layout relative to display #define DISPOSE_MODE_TAB_PARENT 8 // Tabular layout relative to parent // // Dispose indices // #define DISPOSE_INDEX_X0 0 #define DISPOSE_INDEX_Y0 1 #define DISPOSE_INDEX_X1 2 #define DISPOSE_INDEX_Y1 3 #define DISPOSE_INDEX_MX 4 // Not used for disposing #define DISPOSE_INDEX_MY 5 // Not used for disposing // // Edges // #define APPW_EDGE_LEFT 0 #define APPW_EDGE_RIGHT 1 #define APPW_EDGE_TOP 2 #define APPW_EDGE_BOTTOM 3 // // Messages // #define APPW_MSG_GET_DISPOSE (APPW_MSG + 0) #define APPW_MSG_GET_FUNCSETUP (APPW_MSG + 1) #define APPW_MSG_SET_LANG (APPW_MSG + 2) #define APPW_MSG_GET_JOBS (APPW_MSG + 3) #define APPW_MSG_SETUP_FINISHED (APPW_MSG + 4) #define APPW_MSG_GET_STATE (APPW_MSG + 5) #define APPW_MSG_SET_VALUE (APPW_MSG + 6) #define APPW_MSG_SET_VAR (APPW_MSG + 7) #define APPW_MSG_SET_TEXT (APPW_MSG + 8) #define APPW_MSG_DISPOSE_DONE (APPW_MSG + 9) #define APPW_MSG_GET_VALUE (APPW_MSG + 10) #define APPW_MSG_GET_TEXT (APPW_MSG + 11) #define APPW_MSG_GET_FOCUSRECT (APPW_MSG + 12) #define APPW_MSG_GET_TYPE (APPW_MSG + 13) #define APPW_MSG_SET_DRAW (APPW_MSG + 14) #define APPW_MSG_GET_CONTENT (APPW_MSG + 15) #define APPW_MSG_GET_PROP (APPW_MSG + 16) #define APPW_MSG_GET_ITEM (APPW_MSG + 17) // // Draw modes // #define APPW_DRAW_MODE_FILL 0 #define APPW_DRAW_MODE_GRADH 1 #define APPW_DRAW_MODE_GRADV 2 // // Swiping modes // #define APPW_SWIPE_REPLACE 0 #define APPW_SWIPE_DISCLOSE 1 #define APPW_SWIPE_CUSTOM 2 // // Off, On, Toggle // #define APPW_SET_OFF 0 #define APPW_SET_ON 1 #define APPW_SET_TOGGLE 2 // // Please do not change existing values because they are used to determine the font type when reading XBF fonts! // #define MODE_FONT_1BPP 0 // Monochrome mode #define MODE_FONT_2BPP 1 // 4 gray scales for antialiased fonts #define MODE_FONT_4BPP 2 // 16 gray scales for antialiased fonts #define MODE_FONT_1EXT 3 // Monochrome mode with extended character information #define MODE_FONT_1FRM 4 // Monochrome mode with extended character information and frame #define MODE_FONT_2BPP_EXT 5 // 4 gray scales for antialiased fonts with extended character information #define MODE_FONT_4BPP_EXT 6 // 16 gray scales for antialiased fonts with extended character information // // Modes of Text-object // #define APPW_TEXTMODE_TEXT 0 #define APPW_TEXTMODE_DEC 1 #define APPW_TEXTMODE_HEX 2 // // Modes of Edit-object // #define APPW_EDITMODE_TEXT 0 #define APPW_EDITMODE_DEC 1 // // Flags for Listview-object // #define APPW_FLAGS_LISTVIEW_SHOWGRID_HEADER (1 << 0) #define APPW_FLAGS_LISTVIEW_SHOWGRID_H (1 << 1) #define APPW_FLAGS_LISTVIEW_SHOWGRID_V (1 << 2) // // Text state // #define APPW_STATE_TEXT_INVALID (1U << 0) #define APPW_STATE_TEXT_HASTEXT (1U << 1) #define APPW_STATE_TEXT_HASVALUE (1U << 2) // // Listview compare modes // #define APPW_LISTVIEW_COMPARE_NONE 0 #define APPW_LISTVIEW_COMPARE_TEXT 1 #define APPW_LISTVIEW_COMPARE_DEC 2 #define APPW_LISTVIEW_COMPARE_USER 3 // // Conditions // #define APPW_IS_VAL 0 // Constant #define APPW_IS_VAR 1 // Variable #define APPW_IS_OBJ 2 // Object // // Modes of file access // #define APPW_IMAGE_MODE_INTERN 0 #define APPW_IMAGE_MODE_EXTERN 1 // // Spy jobs // #define APPW_JOB_REQUEST_OBJECTS (JOB_QUIT + 1) #define APPW_JOB_REQUEST_VARIABLES (JOB_QUIT + 2) #define APPW_JOB_REQUEST_TIME (JOB_QUIT + 3) #define APPW_JOB_SEND_PID (JOB_QUIT + 4) #define APPW_JOB_SEND_KEY (JOB_QUIT + 5) // // Macros // #ifndef GENERATE_JOB #define GENERATE_JOB(Action, pFunc, HasReceiver) { Action, (int(*)(WM_HWIN, WM_HWIN, APPW_PARA_ITEM *, int))pFunc, HasReceiver } #endif // // Object types // enum { TYPE_OBJECT_GROUP = -1, TYPE_OBJECT_ROOT, TYPE_OBJECT_WINDOW, TYPE_OBJECT_BOX, TYPE_OBJECT_BUTTON, TYPE_OBJECT_IMAGE, TYPE_OBJECT_TEXT, TYPE_OBJECT_SLIDER, TYPE_OBJECT_ROTARY, TYPE_OBJECT_SWITCH, TYPE_OBJECT_EDIT, TYPE_OBJECT_QRCODE, TYPE_OBJECT_GAUGE, TYPE_OBJECT_KEYBOARD, TYPE_OBJECT_PROGBAR, TYPE_OBJECT_TIMER, TYPE_OBJECT_MULTIEDIT, TYPE_OBJECT_DROPDOWN, TYPE_OBJECT_LISTVIEW, TYPE_OBJECT_LISTBOX }; // // Notification codes // enum { APPW_NOTIFICATION_INITDIALOG = (WM_NOTIFICATION_WIDGET + 0), APPW_NOTIFICATION_CREATE, APPW_NOTIFICATION_DELETE, APPW_NOTIFICATION_MOTION, #if (APPW_SKIP_OBSOLETE == 0) APPW_NOTIFICATION_ANIMCOORD, #endif APPW_NOTIFICATION_ANIMEND, APPW_NOTIFICATION_ANIMSTART, APPW_NOTIFICATION_TIMER, APPW_NOTIFICATION_PIDPRESSED, APPW_NOTIFICATION_PIDRELEASED, APPW_NOTIFICATION_FIXED, APPW_NOTIFICATION_UNPINNED }; // // Atom index for start, end and destination // enum { ATOM_INDEX_START = 0, ATOM_INDEX_END, ATOM_INDEX_DEST }; // // Time index for start and end // enum { ANIM_INDEX_TS = 0, ANIM_INDEX_TE }; // // Elementary particles of 'atoms' // enum { ATOM_OBJECT_VALUE = 0, ATOM_VARIABLE, ATOM_OBJECT_GEO, ATOM_SCREEN_GEO, ATOM_CONSTANT, ATOM_OBJECT_PROP }; // // Atom geo details // enum { ATOM_DETAIL_X0 = DISPOSE_INDEX_X0, ATOM_DETAIL_Y0 = DISPOSE_INDEX_Y0, ATOM_DETAIL_X1 = DISPOSE_INDEX_X1, ATOM_DETAIL_Y1 = DISPOSE_INDEX_Y1, ATOM_DETAIL_XSIZE, ATOM_DETAIL_YSIZE }; // // Atom property definitions // enum { ATOM_PROP_NUMCOLS = 0, // Number of columns ATOM_PROP_NUMROWS // Number of rows }; // // Drawing functions for APPW__aDrawingFunc[] // enum { /* 0 */ APPW_ID_CLEAR = 0, /* 1 */ APPW_ID_COPY_RECT, /* 2 */ APPW_ID_DRAW_ARC, /* 3 */ APPW_ID_DRAW_CIRCLE, /* 4 */ APPW_ID_DRAW_ELLIPSE, /* 5 */ APPW_ID_DRAW_GRADIENT_H, /* 6 */ APPW_ID_DRAW_GRADIENT_V, /* 7 */ APPW_ID_DRAW_GRADIENT_ROUNDED_H, /* 8 */ APPW_ID_DRAW_GRADIENT_ROUNDED_V, /* 9 */ APPW_ID_DRAW_HLINE, /* 10 */ APPW_ID_DRAW_LINE, /* 11 */ APPW_ID_DRAW_LINE_REL, /* 12 */ APPW_ID_DRAW_LINE_TO, /* 13 */ APPW_ID_DRAW_PIE, /* 14 */ APPW_ID_DRAW_PIXEL, /* 15 */ APPW_ID_DRAW_POINT, /* 16 */ APPW_ID_DRAW_RECT, /* 17 */ APPW_ID_DRAW_ROUNDED_FRAME, /* 18 */ APPW_ID_DRAW_ROUNDED_RECT, /* 19 */ APPW_ID_DRAW_VLINE, /* 20 */ APPW_ID_ENABLE_ALPHA, /* 21 */ APPW_ID_FILL_CIRCLE, /* 22 */ APPW_ID_FILL_ELLIPSE, /* 23 */ APPW_ID_FILL_RECT, /* 24 */ APPW_ID_FILL_ROUNDED_RECT, /* 25 */ APPW_ID_INVERT_RECT, /* 26 */ APPW_ID_MOVE_REL, /* 27 */ APPW_ID_MOVE_TO, /* 28 */ APPW_ID_SET_BKCOLOR, /* 29 */ APPW_ID_SET_COLOR, /* 30 */ APPW_ID_SET_PENSIZE, /* 31 */ APPW_ID_SET_LINESTYLE, /* 32 */ APPW_ID_AA_DISABLE_HIRES, /* 33 */ APPW_ID_AA_DRAW_ARC, /* 34 */ APPW_ID_AA_DRAW_CIRCLE, /* 35 */ APPW_ID_AA_DRAW_LINE, /* 36 */ APPW_ID_AA_DRAW_PIE, /* 37 */ APPW_ID_AA_DRAW_ROUNDED_FRAME, /* 38 */ APPW_ID_AA_ENABLE_HIRES, /* 39 */ APPW_ID_AA_FILL_CIRCLE, /* 40 */ APPW_ID_AA_FILL_ELLIPSE, /* 41 */ APPW_ID_AA_FILL_ROUNDED_RECT, /* 42 */ APPW_ID_AA_SET_FACTOR }; // // Indices for prev and post draw // enum { APPW_DRAWING_INDEX_PREV = 0, APPW_DRAWING_INDEX_POST }; // // Modes for source object of APPW_JOB_SETITEM, APPW_JOB_ADDITEM and APPW_JOB_INSITEM // enum { APPW_ITEM_MODE_UNDEFINED = 0, APPW_ITEM_MODE_RESOURCE, APPW_ITEM_MODE_OBJECT, }; // // Jobs of interactions // enum { //-------------------------------------------------------------------------------- // Value Purpose //-------------------------------------------------------------------------------- APPW_JOB_NULL = -1, /* 1 */ APPW_JOB_SETENABLE = 1, // (pPara + 0)->v - 1 = On, 0 = Off /* 2 */ APPW_JOB_SETVIS, // (pPara + 0)->v - 1 = On, 0 = Off /* 3 */ APPW_JOB_ANIMCOORD, // (pPara + 0)->v - End value // (pPara + 1)->v - Index of coordinate // (pPara + 2)->pFunc - Ease func // (pPara + 3)->v - Period /* 4 */ APPW_JOB_ANIMVALUE, // (pPara + 0)->v - End value // (pPara + 1)->pFunc - Ease func // (pPara + 2)->v - Period /* 5 */ APPW_JOB_ANIMRANGE, // (pPara + 0)->v - Start value // (pPara + 1)->v - End value // (pPara + 2)->pFunc - Ease func // (pPara + 3)->v - Period /* 6 */ APPW_JOB_SETCOORD, // (pPara + 0)->v - Value // (pPara + 1)->v - Index of coordinate /* 7 */ APPW_JOB_SWAPSCREEN, // (pPara + 0)->v - Screen Id /* 8 */ APPW_JOB_SETCOLOR, // (pPara + 0)->v - Color to be used /* 9 */ APPW_JOB_SETBKCOLOR, // (pPara + 0)->v - BkColor to be used /* 10 */ APPW_JOB_ADDVALUE, // (pPara + 0)->v - Value to be added /* 11 */ APPW_JOB_SETVALUE, // (pPara + 0)->v - Value to be set /* 12 */ APPW_JOB_SETPERIOD, // (pPara + 0)->v - Value to be set /* 13 */ APPW_JOB_SETSCALE, // (pPara + 0)->v - Value to be set /* 14 */ APPW_JOB_SETANGLE, // (pPara + 0)->v - Value to be set /* 15 */ APPW_JOB_SETALPHA, // (pPara + 0)->v - Value to be set /* 16 */ APPW_JOB_SETSIZE, // (pPara + 0)->v - Value to be used // (pPara + 1)->v - Index of axis /* 17 */ APPW_JOB_CASCADECOORD, // (pPara + 0)->v - End value //TBD: Obsolete // (pPara + 1)->v - Index of coordinate // (pPara + 2)->v - Emitter Id of trigger /* 18 */ APPW_JOB_SHIFTSCREEN, // (pPara + 0)->v - Screen Id // (pPara + 1)->v - Index of edge // (pPara + 2)->pFunc - Ease func // (pPara + 3)->v - Period // (pPara + 4)->v - Disclose /* 19 */ APPW_JOB_SHIFTWINDOW, // (pPara + 0)->v - Window Id // (pPara + 1)->v - Index of edge // (pPara + 2)->pFunc - Ease func // (pPara + 3)->v - Period // (pPara + 4)->v - Disclose /* 20 */ APPW_JOB_SET, // === NO PARAMETERS === /* 21 */ APPW_JOB_CLEAR, // === NO PARAMETERS === /* 22 */ APPW_JOB_TOGGLE, // === NO PARAMETERS === /* 23 */ APPW_JOB_START, // === NO PARAMETERS === /* 24 */ APPW_JOB_STOP, // === NO PARAMETERS === /* 25 */ APPW_JOB_SETTEXT, // (pPara + 0)->v - Text id (if (pPara + 0)->p == NULL) // (pPara + 0)->p - Handle (if (pPara + 0)->v < 0) /* 26 */ APPW_JOB_SHOWSCREEN, // (pPara + 0)->v - Screen Id /* 27 */ APPW_JOB_SETLANG, // (pPara + 0)->v - Index of language /* 28 */ APPW_JOB_SETFOCUS, // === NO PARAMETERS === /* 29 */ APPW_JOB_ENABLEPID, // (pPara + 0)->v - 1 = On, 0 = Off /* 30 */ APPW_JOB_CLOSESCREEN, // (pPara + 0)->v - Screen Id /* 31 */ APPW_JOB_SETX0, // (pPara + 0)->v - Value /* 32 */ APPW_JOB_SETY0, // (pPara + 0)->v - Value /* 33 */ APPW_JOB_SETX1, // (pPara + 0)->v - Value /* 34 */ APPW_JOB_SETY1, // (pPara + 0)->v - Value /* 35 */ APPW_JOB_MODALMESSAGE, // (pPara + 0)->v - Screen Id /* 36 */ APPW_JOB_CALC, // === NO PARAMETERS === /* 37 */ APPW_JOB_ANIMCREATE, // (pPara + 0)->p - GUI: Pointer to APPW_ANIM_DATA structure, AppWizard: NULL // (pPara + 0)->v - GUI: 0, AppWizard: Animation Id /* 38 */ APPW_JOB_ANIMSTOP, // (pPara + 0)->v - Animation Id // (pPara + 1)->v - 1 = Delete animation, 0 = Remain animation /* 39 */ APPW_JOB_ANIMSTART, // (pPara + 0)->v - Animation Id // (pPara + 1)->v - Number of loops (<0 = endless) /* 40 */ APPW_JOB_SETBITMAP, // (pPara + 0)->v - Index // (pPara + 1)->p - INT: Pointer to Image-Data / EXT: Pointer to Image-Filename (EXT) // (pPara + 1)->v - 0 (INT) / 1 (EXT) // (pPara + 2)->v - FileSize // (pPara + 3)->p - Source file name (=== In AppWizard application only ===) // (pPara + 3)->v - If set to 1 the source file name is in const memory /* 41 */ APPW_JOB_SETSTART, // (pPara + 0)->v - Value /* 42 */ APPW_JOB_SETEND, // (pPara + 0)->v - Value /* 43 */ APPW_JOB_INVALIDATE, // === NO PARAMETERS === /* 44 */ APPW_JOB_SETITEM, // (pPara + 0)->v - Type: 0 = text resource, 1 = object // (pPara + 1)->v - 0: text resource Id, 1: HB/LB: screen Id/object Id // (pPara + 2)->v - Source: Row index (Listview, Dropdown, Listbox) // (pPara + 3)->v - Source: Column index (Listview only) // (pPara + 4)->v - Target: Row index (Listview, Dropdown, Listbox) // (pPara + 5)->v - Target: Column index (Listview only) /* 45 */ APPW_JOB_ADDITEM, // (pPara + 0)->v - Type: 0 = text resource, 1 = object // (pPara + 1)->v - 0: text resource Id, 1: HB/LB: screen Id/object Id // (pPara + 2)->v - Source: Row index (Listview, Dropdown, Listbox) // (pPara + 3)->v - Source: Column index (Listview only) // (pPara + 4)->v - Target: Column index (Listview only) /* 46 */ APPW_JOB_INSITEM, // (pPara + 0)->v - Type: 0 = text resource, 1 = object // (pPara + 1)->v - 0: text resource Id, 1: HB/LB: screen Id/object Id // (pPara + 2)->v - Source: Row index (Listview, Dropdown, Listbox) // (pPara + 3)->v - Source: Column index (Listview only) // (pPara + 4)->v - Target: Row index (Listview, Dropdown, Listbox) // (pPara + 5)->v - Target: Column index (Listview only) /* 47 */ APPW_JOB_DELITEM // (pPara + 0)->v - Item index to be deleted }; // // Commands for setting properties // enum { /* 0 */ APPW_SET_PROP_COLOR = 0 , /* 1 */ APPW_SET_PROP_SCALE , /* 2 */ APPW_SET_PROP_ALPHA , /* 3 */ APPW_SET_PROP_ANGLE , /* 4 */ APPW_SET_PROP_OPAQUE , /* 5 */ APPW_SET_PROP_TILE , /* 6 */ APPW_SET_PROP_TOGGLE , /* 7 */ APPW_SET_PROP_ALIGNTEXT , /* 8 */ APPW_SET_PROP_ALIGNBITMAP, /* 9 */ APPW_SET_PROP_SBITMAP , /* 10 */ APPW_SET_PROP_JPEG , /* 11 */ APPW_SET_PROP_BMP , /* 12 */ APPW_SET_PROP_GIF , /* 13 */ APPW_SET_PROP_DECMODE , /* 14 */ APPW_SET_PROP_HEXMODE , /* 15 */ APPW_SET_PROP_GRADH , /* 16 */ APPW_SET_PROP_GRADV , /* 17 */ APPW_SET_PROP_REPEAT , /* 18 */ APPW_SET_PROP_TEXTID , /* 19 */ APPW_SET_PROP_GRADH2 , /* 20 */ APPW_SET_PROP_GRADV2 , /* 21 */ APPW_SET_PROP_COLOR2 , /* 22 */ APPW_SET_PROP_COLOR3 , /* 23 */ APPW_SET_PROP_TEXTID2 , /* 24 */ APPW_SET_PROP_COLORS , /* 25 */ APPW_SET_PROP_COLORS2 , /* 26 */ APPW_SET_PROP_COLORS3 , /* 27 */ APPW_SET_PROP_BKCOLOR , /* 28 */ APPW_SET_PROP_BKCOLORS , /* 29 */ APPW_SET_PROP_SBITMAPS , /* 30 */ APPW_SET_PROP_FONT , /* 31 */ APPW_SET_PROP_FONT2 , /* 32 */ APPW_SET_PROP_MOTIONH , /* 33 */ APPW_SET_PROP_MOTIONV , /* 34 */ APPW_SET_PROP_RANGE , /* 35 */ APPW_SET_PROP_SPAN , /* 36 */ APPW_SET_PROP_VALUES , /* 37 */ APPW_SET_PROP_SLAYOUT , /* 38 */ APPW_SET_PROP_CONTENT , /* 39 */ APPW_SET_PROP_SORTCOLS , /* 40 */ APPW_SET_PROP_OFFSET , /* 41 */ APPW_SET_PROP_POS , /* 42 */ APPW_SET_PROP_VALUE , /* 43 */ APPW_SET_PROP_PERIOD , /* 44 */ APPW_SET_PROP_SNAP , /* 45 */ APPW_SET_PROP_ALIGN , /* 46 */ APPW_SET_PROP_RADIUS , /* 47 */ APPW_SET_PROP_RADIUS2 , /* 48 */ APPW_SET_PROP_FRAME , /* 49 */ APPW_SET_PROP_FRAME2 , /* 50 */ APPW_SET_PROP_FRAME3 , /* 51 */ APPW_SET_PROP_BORDER , /* 52 */ APPW_SET_PROP_LENGTH , /* 53 */ APPW_SET_PROP_HEIGHT , /* 54 */ APPW_SET_PROP_HEIGHT2 , /* 55 */ APPW_SET_PROP_FIXED , /* 56 */ APPW_SET_PROP_ROTATION , /* 57 */ APPW_SET_PROP_ECCLEVEL , /* 58 */ APPW_SET_PROP_SIZE , /* 59 */ APPW_SET_PROP_VERSION , /* 60 */ APPW_SET_PROP_FOCUSABLE , /* 61 */ APPW_SET_PROP_MOTION , /* 62 */ APPW_SET_PROP_INVERT , /* 63 */ APPW_SET_PROP_VERTICAL , /* 64 */ APPW_SET_PROP_PERSISTENT , /* 65 */ APPW_SET_PROP_ROTATE , /* 66 */ APPW_SET_PROP_FADE , /* 67 */ APPW_SET_PROP_WRAP , /* 68 */ APPW_SET_PROP_ROUNDEDVAL , /* 69 */ APPW_SET_PROP_ROUNDEDEND , /* 70 */ APPW_SET_PROP_OVERWRITE , /* 71 */ APPW_SET_PROP_AUTORESTART, /* 72 */ APPW_SET_PROP_LQ , /* 73 */ APPW_SET_PROP_STAYONTOP , /* 74 */ APPW_SET_PROP_UNTOUCHABLE, /* 75 */ APPW_SET_PROP_PWMODE , /* 76 */ APPW_SET_PROP_CELLSELECT , /* 77 */ APPW_SET_PROP_VISIBLE , /* 78 */ APPW_SET_PROP_VISIBLE2 , /* 79 */ APPW_SET_PROP_VISIBLE3 , /* 80 */ APPW_SET_PROP_SWITCHOFF }; // // Bitmap indices // #define APPW_BI_UNPRESSED 0 #define APPW_BI_PRESSED 1 #define APPW_BI_DISABLED 2 #define APPW_MAX_RANGE 0xFFFFu // // Use of parameter // #define ARG_V(x) { (U32)x, (const void *)0, (void (*)(void))0 } #define ARG_P(x) { (U32)0, (const void *)x, (void (*)(void))0 } #define ARG_VP(x, y) { (U32)x, (const void *)y, (void (*)(void))0 } #define ARG_F(x) { (U32)0, (const void *)0, (void (*)(void))x } // // Distinguishing between different possible text sources in APPW_GetLockedText() // #define APPW_USE_TEXT_HANDLE (-1) #define APPW_USE_OBJECT_ID (-2) // // Internal configuration macros // #ifndef APPW_SETUP_ITEM_EXT #define APPW_SETUP_ITEM_EXT #endif #ifndef APPW_ACTION_ITEM_EXT #define APPW_ACTION_ITEM_EXT #endif #ifndef APPW_JOB_EXT #define APPW_JOB_EXT #endif // // Internal macros // #define MANAGE_GET_DISPOSE_FUNCSETUP_JOBS(OBJECT_TYPE) \ case APPW_MSG_GET_DISPOSE: \ pMsg->Data.p = (const void *)&((WM_##OBJECT_TYPE *)GUI_ALLOC_h2p(pMsg->hWin))->Dispose; \ break; \ case APPW_MSG_GET_TYPE: \ pMsg->Data.v = TYPE_##OBJECT_TYPE; \ break; \ case APPW_MSG_GET_FUNCSETUP: \ pMsg->Data.pFunc = (void(*)(void))_Setup; \ break; \ case APPW_MSG_GET_JOBS: \ pMsg->Data.p = (const void *)_aJobs; \ pMsg->MsgId = GUI_COUNTOF(_aJobs); \ break #define MANAGE_GET_DISPOSE_FUNCSETUP(OBJECT_TYPE) \ case APPW_MSG_GET_DISPOSE: \ pMsg->Data.p = (const void *)&((WM_##OBJECT_TYPE *)GUI_ALLOC_h2p(pMsg->hWin))->Dispose; \ break; \ case APPW_MSG_GET_TYPE: \ pMsg->Data.v = TYPE_##OBJECT_TYPE; \ break; \ case APPW_MSG_GET_FUNCSETUP: \ pMsg->Data.pFunc = (void(*)(void))_Setup; \ break // // Macros for drawing objects // #define MANAGE_PREPAINT(OBJ_CAST) \ pObj = (OBJ_CAST *)GUI_LOCK_H(pMsg->hWin); { \ APPW_DrawingPrepare(pObj->aIdDraw); \ } GUI_UNLOCK_H(pObj) #define MANAGE_POSTPAINT() APPW_DrawingCleanup() #define MANAGE_SET_DRAW(OBJ_CAST) \ case APPW_MSG_SET_DRAW: \ pObj = (OBJ_CAST *)GUI_LOCK_H(pMsg->hWin); { \ pObj->aIdDraw[APPW_DRAWING_INDEX_PREV] = (U32)pMsg->Data.v & 0xFFFF; \ pObj->aIdDraw[APPW_DRAWING_INDEX_POST] = (U32)pMsg->Data.v >> 16; \ } GUI_UNLOCK_H(pObj); \ break #define MANAGE_DRAWING(OBJ_CAST) \ MANAGE_SET_DRAW(OBJ_CAST); \ case WM_PRE_PAINT: \ MANAGE_PREPAINT(OBJ_CAST); \ break; \ case WM_POST_PAINT: \ MANAGE_POSTPAINT(); \ break // // Macros for defining drawing items used in exported code only // #define APPW_DRAWING_ITEM_DEF_X(Name, NumAtoms) \ static const struct { \ U16 IndexFunc; \ const APPW_DRAWING_ITEM * pNextItem; \ APPW_ATOM aAtom[NumAtoms]; \ } Name = #define APPW_DRAWING_ITEM_DEF_0(Name) \ static const struct { \ U16 IndexFunc; \ const APPW_DRAWING_ITEM * pNextItem; \ } Name = // // Macros for interface definitions // #define DEFAULT_CRCB(Object) \ void WM_OBJECT_##Object##_cb (WM_MESSAGE * pMsg); \ WM_HWIN WM_OBJECT_##Object##_Create(APPW_DISPOSE * pDispose, WM_HWIN hParent, int Id) #define DEFAULT_FUNC(Object) \ DEFAULT_CRCB(Object); \ int WM_OBJECT_##Object##_Setup (WM_HWIN hWin, APPW_SETUP_ITEM * pSetup) /*#################################################################### # # Types # ###################################################################### */ /********************************************************************* * * APPW_DISPOSE_COORD */ typedef struct { int Mode; int Off; int Id; int Valid; } APPW_DISPOSE_COORD; /********************************************************************* * * APPW_DISPOSE */ typedef struct { APPW_DISPOSE_COORD aDisposeCoord[4]; int xSize; int ySize; int xSizeMin; int ySizeMin; U8 State; U32 Flags; } APPW_DISPOSE; /********************************************************************* * * APPW_TEXT_INIT */ typedef struct { const char ** appData; int NumItems; } APPW_TEXT_INIT; /********************************************************************* * * APPW_ANIM_PARA */ typedef struct { I32 Start; I32 End; WM_CRITICAL_HANDLE chItem; WM_CRITICAL_HANDLE chWinSrc; U16 IdSrc; U16 IdDst; int RootIndex; } APPW_ANIM_PARA; /********************************************************************* * * APPW_ANIM_COORD_PARA (obsolete) */ typedef struct { APPW_ANIM_PARA AnimPara; int Index; } APPW_ANIM_COORD_PARA; /********************************************************************* * * APPW_ANIM_SHIFT_PARA */ typedef struct { int EdgeIndex; I32 x0, x1; I32 y0, y1; WM_CRITICAL_HANDLE chWinOld; WM_CRITICAL_HANDLE chWinNew; APPW_DISPOSE DisposeOld; APPW_DISPOSE DisposeNew; GUI_ANIM_HANDLE hAnim; U8 Disclose; } APPW_ANIM_SHIFT_PARA; /********************************************************************* * * APPW_ATOM */ typedef struct { U32 Value; // LW: ObjectGeo | ObjectValue | ObjectProp ? ObjectId : Variable ? VariableId : Value (LW) // HW: ObjectGeo | ObjectValue | ScreenGeo | ObjectProp ? ScreenId : Value (HW) I16 Offset; // ObjectGeo | ScreenGeo | ObjectProp ? Offset : unused U8 Item; // Item specification U8 Detail; // Detail to be used } APPW_ATOM; /********************************************************************* * * APPW_ATOM_INFO */ typedef struct { U16 IdScreen; // Id of screen U16 IdObject; // Id of object U16 IdVar; // Id of variable WM_HWIN hScreen; // Screen handle WM_HWIN hObject; // Object handle } APPW_ATOM_INFO; /********************************************************************* * * APPW_ANIM_ITEM */ typedef struct { GUI_ANIM_GETPOS_FUNC Ease; // Ease function GUI_TIMER_TIME aTime[2]; // Timeline coordinates for start and end APPW_ATOM aAtom[3]; // Item definitions for start, end and destination } APPW_ANIM_ITEM; /********************************************************************* * * APPW_ANIM_ITEM_INFO */ typedef struct { I32 Start; // Used to save the start value of the item I32 End; // Used to save the end value of the item APPW_ANIM_ITEM * pItem; // Pointer to item } APPW_ANIM_ITEM_INFO; /********************************************************************* * * APPW_ANIM_DATA */ typedef struct { U16 Id; // Anmation Id to be used GUI_TIMER_TIME Period; // Period of complete animation U8 AutoStart; // If != 0 the animation immediately starts after creation int NumLoops; // Number of loops, <0 means endless loop int NumItems; // Number of animation items const APPW_ANIM_ITEM * pItem; // Pointer to first item } APPW_ANIM_DATA; /********************************************************************* * * APPW_CREATE_ITEM */ typedef struct { WM_HWIN (* pfCreate)(APPW_DISPOSE * pDispose, WM_HWIN hParent, int Id); int Id; int IdParent; APPW_DISPOSE Dispose; U16 aIdDraw[2]; } APPW_CREATE_ITEM; /********************************************************************* * * APPW_PARA_ITEM */ typedef struct { U32 v; const void * p; void (* pFunc)(void); } APPW_PARA_ITEM; /********************************************************************* * * APPW_SETUP_ITEM */ typedef struct { int Id; unsigned Command; APPW_PARA_ITEM aPara[6]; APPW_SETUP_ITEM_EXT } APPW_SETUP_ITEM; /********************************************************************* * * APPW_COMP_ITEM * * Purpose: * Comparison item which could be a constant, a variable id or an object id */ typedef struct { U8 What; I32 Value; } APPW_COMP_ITEM; /********************************************************************* * * APPW_CALC_ITEM * * Purpose: * Calculation item which could be a constant, a variable id or an object id */ typedef struct { U8 What; U16 Index; I32 Value; } APPW_CALC_ITEM; /********************************************************************* * * APPW_COND_COMP * * Purpose: * Comparison with 2 items to be compared by the given function pointer */ typedef struct { APPW_COMP_ITEM aElem[2]; int (* pFunc)(I32 v0, I32 v1); } APPW_COND_COMP; /********************************************************************* * * APPW_COND * * Purpose: * Condition with pointer to comparison table and a pointer to a * term to be evaluated. */ typedef struct { const char * pTerm; // Pointer to term to be calculated const APPW_COND_COMP * pComp; // Pointer to first comparison unsigned nComp; // Number of comparisons } APPW_COND; // // Switching between use of APPW_CALC_ITEM (0) and APPW_ATOM (1) // To be removed after change-over has been finished in calculation terms... // #define USE_ATOM 1 /********************************************************************* * * APPW_CALC * * Purpose: * Pointer to a term to be calculated, a pointer to operands to be * used and a pointer to an I32 array for the operands values. */ typedef struct { const char * pTerm; // Pointer to term to be calculated unsigned nItem; // Number of operands #if USE_ATOM const APPW_ATOM * pAtom; // Pointer to first operand (TBD...) #else const APPW_CALC_ITEM * pItem; // Pointer to first operand #endif I32 * pVal; // Array for calculating operand values } APPW_CALC; /********************************************************************* * * APPW_ACTION_ITEM * * Purpose: * Represents an interaction (including parameters) associated to a root object. * Each root object contains a list of interactions defining the behavior of the screen. */ typedef struct APPW_ACTION_ITEM APPW_ACTION_ITEM; struct APPW_ACTION_ITEM { int IdSrc; // Emitter int NCode; // Signal int IdDst; // Receiver int IdJob; // Job void (* pfSlot)(APPW_ACTION_ITEM * pAction, // Pointer to action WM_HWIN hScreen, // Handle of screen WM_MESSAGE * pMsg, // pMsg->hWnd: receiver, pMsg->hWndSrc: emitter int * pResult); // Pointer to result APPW_PARA_ITEM aPara[6]; // Optional job specific parameters U32 Flags; // Bitmask: 0 means -> aPara[x].v = value // 1 means -> aPara[x].v = Variable-Id const APPW_COND * pCond; // Condition to be fulfilled APPW_ACTION_ITEM_EXT }; /********************************************************************* * * APPW_JOB * * Purpose: * Defines the function to be called for a specific job */ typedef struct { int IdJob; // Id of job APPW_JOB_EXT int (* pFunc)(WM_HWIN hWinDst, // Handle of receiver WM_HWIN hWinSrc, // Handle of emitter APPW_PARA_ITEM * pPara, // Parameters to be used int RootIndex); int HasReceiver; } APPW_JOB; /********************************************************************* * * APPW_OBJ_SETUP_T * * Purpose: * Common type definition of setup function */ typedef int APPW_OBJ_SETUP_T(const APPW_SETUP_ITEM * pSetup, WM_HWIN hParent); /********************************************************************* * * APPW_ROOT_INFO * * Purpose: * Structure to be passed to APPW_CreateRoot() */ typedef struct { U16 RootId; APPW_CREATE_ITEM * pCreateInfo; unsigned NumCreateInfo; const APPW_SETUP_ITEM * pSetupInfo; unsigned NumSetupInfo; const APPW_ACTION_ITEM * pActionInfo; unsigned NumActionInfo; WM_CALLBACK * cb; WM_HWIN hWin; } APPW_ROOT_INFO; /********************************************************************* * * APPW_CONTENT * * Purpose: * Structure for holding the text content, header labels and column size * information for text related objects like dropdown, listview and listbox. */ typedef struct { const char *** pppText; // Array of pointers: //

pp: - Pointer to an array containing pointers to arrays // with pointers to zero terminated strings // containing the text of one column. // p

p: - Pointer to an array containing pointers to zero // terminated strings for the content of one column. // pp

: - Pointer to zero terminated string. int NumRows; // Number of rows int NumColumns; // Number of columns const char ** ppHead; // Array of pointers to the zero terminated header text strings. const U16 * pSize; // Pointer to an U16 array containing the column sizes. const U8 * pHeadAlign; // Pointer to an U8 array containing the header alignment. const U8 * pTextAlign; // Pointer to an U8 array containing the column alignment. } APPW_CONTENT; /********************************************************************* * * APPW_VAR_OBJECT * * Purpose: * Configurable variables to be used */ typedef struct { U16 Id; // Used to address the variables U8 IsDirty; // Is set to 1 if content is 'dirty' and needs to be processed U32 Data; // Could be anything except a pointer const APPW_CALC * pCalc; // Pointer to calculation object containing term and operands } APPW_VAR_OBJECT; /********************************************************************* * * APPW_FILE_INFO * * Purpose: * ... */ typedef struct { const char * pFileName; void * pVoid; } APPW_FILE_INFO; /********************************************************************* * * APPW_DRAW_OBJECT * * Purpose: * Structure for drawing bitmaps (streamed or C) */ typedef struct { void (* pfDraw)(const void * p, int x, int y); // Drawing function const void * pData; // Data pointer (bitmap) or file name (streamed bitmap) int xSize; // (obvious) int ySize; // (obvious) U32 FileSize; // (obvious) } APPW_DRAW_OBJECT; /********************************************************************* * * APPW_FILEACCESS * * Purpose: * File access */ typedef struct { GUI_GET_DATA_FUNC * pfGetDataBGJ; // Function for getting data of (B)MP, (G)IF and (J)PEG files GUI_GET_DATA_FUNC * pfGetDataImage; // Function for getting data of streamed bitmaps and text resource files GUI_XBF_GET_DATA_FUNC * pfGetDataFont; // Function for getting data of XBF fonts U32 (* pfGetDataFile) (void * p, U8 * pData, U32 NumBytes, U32 Off); // Function for getting data of generic files void * (* pfOpenFontFile) (const char * pFilename); // Opens a file in resource (sub)folder 'Font' void * (* pfOpenImageFile)(const char * pFilename); // Opens a file in resource (sub)folder 'Image' void * (* pfOpenTextFile) (const char * pFilename); // Opens a file in resource (sub)folder 'Text' void (* pfCloseFile) (void *); // (obvious) U32 (* pfGetFileSize) (void *); // (obvious) } APPW_FILEACCESS; /********************************************************************* * * APPW_X_FILEACCESS * * Purpose: * Bare file access */ typedef struct { void * (* pfOpen )(const char * pFilename); int (* pfSeek )(const void * p, U32 Off); U32 (* pfRead )(const void * p, void * pData, U32 NumBytes); void (* pfClose )(const void * p); U32 (* pfGetSize)(const void * p); } APPW_X_FILEACCESS; /********************************************************************* * * APPW_MEMACCESS * * Purpose: * Accessing object data located in memory */ typedef struct { GUI_GET_DATA_FUNC * pfGetDataImage; GUI_XBF_GET_DATA_FUNC * pfGetDataFont; U32 (* pfGetDataFile)(void * p, U8 * pData, U32 NumBytes, U32 Off); } APPW_MEMACCESS; /********************************************************************* * * APPW_OBJECT_INFO * * Purpose: * Object info to be transferred by spy */ typedef struct { WM_WINDOW_INFO Info; U16 Id; I16 RootIndex; } APPW_OBJECT_INFO; /********************************************************************* * * APPW_DRAW_FOCUS * * Purpose: * Defines how a focus should look like */ typedef struct { GUI_COLOR Color; // Color of focus rect U32 Radius; // Radius if required U32 Width; // Width if required (minimum 1) } APPW_DRAW_FOCUS_INFO; /********************************************************************* * * APPW_DRAWING_INFO * * Purpose: * Info structure containing id, function pointer and number of items of one function */ typedef struct { void (* pFunc)(const I32 * pData); unsigned NumAtoms; } APPW_DRAWING_INFO; /********************************************************************* * * APPW_DRAWING_ITEM * * Purpose: * One single drawing item with atom pointer containing parameters for functions */ typedef struct APPW_DRAWING_ITEM APPW_DRAWING_ITEM; struct APPW_DRAWING_ITEM { U16 IndexFunc; const APPW_DRAWING_ITEM * pNextItem; APPW_ATOM aAtom[1]; // Further atoms will be attached at the end of the structure }; /*#################################################################### # # Object definitions # ###################################################################### */ /********************************************************************* * * WM_OBJECT_BOX */ typedef struct { WIDGET Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw unsigned Mode; GUI_COLOR Color0; int NumColors; int Radius; GUI_GRADIENT_INFO * pGradVal; GUI_HMEM hGradPix; } WM_OBJECT_BOX; /********************************************************************* * * WM_OBJECT_BUTTON */ typedef struct { BUTTON_Obj Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw U32 State; unsigned Mode; unsigned Delay; unsigned Period; unsigned Toggle; unsigned AlignBm; int xOffBm; int yOffBm; APPW_DRAW_OBJECT apDraw[3]; int TextId; WM_HTIMER hTimer; GUI_FONT Font; GUI_XBF_DATA FontData; U16 FrameRadius; U16 FrameSize; GUI_COLOR FrameColor; } WM_OBJECT_BUTTON; /********************************************************************* * * WM_OBJECT_IMAGE */ typedef struct { IMAGE_OBJ Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw unsigned Mode; GUI_COLOR Color; const void * pData; void * pFile; } WM_OBJECT_IMAGE; /********************************************************************* * * WM_OBJECT_ROTARY */ typedef struct { ROTARY_OBJ Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw APPW_DRAW_OBJECT apDraw[3]; // 0 = Bk, 1 = Marker, 2 = MarkerHR WM_HMEM hMarkerPara; } WM_OBJECT_ROTARY; /********************************************************************* * * WM_OBJECT_SLIDER */ typedef struct { SLIDER_Obj Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw unsigned Mode; APPW_DRAW_OBJECT apDraw[4]; GUI_COLOR aColor[2]; GUI_COLOR * apStretchLine[2]; // Pointer for bitmap pixels to be stretched U8 HasValue; } WM_OBJECT_SLIDER; /********************************************************************* * * WM_OBJECT_SWITCH */ typedef struct { SWITCH_Obj Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw U32 State; APPW_DRAW_OBJECT apDraw[6]; int aTextId[2]; GUI_FONT Font; GUI_XBF_DATA FontData; } WM_OBJECT_SWITCH; /********************************************************************* * * WM_OBJECT_TEXT */ typedef struct { TEXT_OBJ Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw U32 State; unsigned Mode; unsigned AlignText; int xOffText; int yOffText; int TextId; GUI_FONT Font; GUI_XBF_DATA FontData; // // Elements required for decimal mode // I32 Value; I32 Min; I32 Max; // // Parameters for decimal mode // U8 Len; U8 Shift; U8 Signed; U8 Space; } WM_OBJECT_TEXT; /********************************************************************* * * WM_OBJECT_EDIT */ typedef struct { EDIT_Obj Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw U32 State; unsigned Mode; GUI_FONT Font; GUI_XBF_DATA FontData; U16 FrameRadius; U16 FrameSize; GUI_COLOR FrameColor; int IndexText; // // Elements required for decimal mode // I32 Value; I32 Min; I32 Max; // // Parameters for decimal mode // U8 Len; U8 Shift; U8 Signed; U8 Space; } WM_OBJECT_EDIT; /********************************************************************* * * WM_OBJECT_QRCODE */ typedef struct { QRCODE_OBJ Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw int Size; // // Elements required for setup // int TextId; } WM_OBJECT_QRCODE; /********************************************************************* * * WM_OBJECT_GAUGE */ typedef struct { GAUGE_OBJ Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw } WM_OBJECT_GAUGE; /********************************************************************* * * WM_OBJECT_KEYBOARD */ typedef struct { KEYBOARD_OBJ Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw GUI_FONT aFont[2]; GUI_XBF_DATA aFontData[2]; // // Layout // const void * pLayout; U32 FileSize; } WM_OBJECT_KEYBOARD; /********************************************************************* * * WM_OBJECT_PROGBAR */ typedef struct { WIDGET Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw GUI_COLOR aColor[2]; APPW_DRAW_OBJECT apDraw[2]; U32 Value; U32 Min; U32 Max; U32 Radius; U32 Flags; U8 FrameSize; GUI_COLOR FrameColor; U32 AlignBm; I32 xOffBm; I32 yOffBm; U32 Period; WM_HTIMER hTimer; I32 Offset; U32 TimeStart; U8 Tiling; } WM_OBJECT_PROGBAR; /********************************************************************* * * WM_OBJECT_TIMER */ typedef struct { WIDGET Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; WM_HTIMER hTimer; U32 Period; unsigned Mode; } WM_OBJECT_TIMER; /********************************************************************* * * WM_OBJECT_MULTIEDIT */ typedef struct { MULTIEDIT_OBJ Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw U32 State; unsigned Mode; GUI_FONT Font; GUI_XBF_DATA FontData; int IndexText; U16 FrameRadius; U16 FrameSize; GUI_COLOR FrameColor; } WM_OBJECT_MULTIEDIT; /********************************************************************* * * WM_OBJECT_DROPDOWN */ typedef struct { DROPDOWN_Obj Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw APPW_DRAW_OBJECT apDraw[2]; GUI_FONT Font; GUI_XBF_DATA FontData; U8 FrameRadius; U8 FrameSize; GUI_COLOR FrameColor; } WM_OBJECT_DROPDOWN; /********************************************************************* * * WM_OBJECT_LISTVIEW */ typedef struct { LISTVIEW_Obj Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw APPW_DRAW_OBJECT apDraw[2]; GUI_FONT aFont[2]; GUI_XBF_DATA aFontData[2]; GUI_COLOR FrameColorHeader; GUI_COLOR FrameColorList; GUI_COLOR ColorFocus; U8 FrameRadius; U8 FrameSize; U8 FocusSize; U8 Flags; } WM_OBJECT_LISTVIEW; /********************************************************************* * * WM_OBJECT_LISTBOX */ typedef struct { LISTVIEW_Obj Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw GUI_FONT Font; GUI_XBF_DATA FontData; GUI_COLOR FrameColor; U8 FrameSize; } WM_OBJECT_LISTBOX; /********************************************************************* * * WM_OBJECT_WINDOW */ typedef struct { WINDOW_OBJ Widget; // GUI/WM-Widget APPW_DISPOSE Dispose; // Dispose structure U16 aIdDraw[2]; // Pre- and Post-draw U32 State; APPW_ROOT_INFO * pRoot; APPW_SETUP_ITEM * pSetupMotionH; APPW_SETUP_ITEM * pSetupMotionV; GUI_COLOR Color; } WM_OBJECT_WINDOW; /********************************************************************* * * Public Data (to be supplied by project) * ********************************************************************** */ extern APPW_ROOT_INFO ** APPW_ppRootList; extern APPW_ROOT_INFO * APPW_apRootList[]; extern APPW_VAR_OBJECT APPW_aVarList[]; extern APPW_DRAWING_ITEM ** APPW_ppDrawingList; extern APPW_VAR_OBJECT * APPW_paVarList; extern unsigned APPW_NumScreens; extern unsigned APPW_NumVars; extern unsigned APPW_NumDrawings; extern const APPW_DRAWING_INFO APPW__aDrawingFunc[]; extern const int APPW__NumDrawingFuncs; /*#################################################################### # # Interface # ###################################################################### */ // // Interface for callback-, create- & setup-function // DEFAULT_FUNC(BOX); DEFAULT_FUNC(BUTTON); DEFAULT_FUNC(EDIT); DEFAULT_FUNC(GAUGE); DEFAULT_FUNC(IMAGE); DEFAULT_FUNC(KEYBOARD); DEFAULT_FUNC(PROGBAR); DEFAULT_FUNC(QRCODE); DEFAULT_FUNC(ROTARY); DEFAULT_FUNC(SLIDER); DEFAULT_FUNC(SWITCH); DEFAULT_FUNC(TEXT); DEFAULT_FUNC(MULTIEDIT); DEFAULT_FUNC(DROPDOWN); DEFAULT_FUNC(LISTVIEW); DEFAULT_FUNC(LISTBOX); DEFAULT_CRCB(WINDOW); // // OWindow // int WM_OBJECT_WINDOW_SetPara (WM_HWIN hWin, APPW_ROOT_INFO * pRoot); void WM_OBJECT_WINDOW_EnableUntouchable(int OnOff); // // OTimer // WM_HWIN WM_OBJECT_TIMER_Create (APPW_DISPOSE * pDispose, WM_HWIN hParent, int Id); // // AppWizard.c (private functions, not to be documented) // void APPW__RegisterPID_Hook (void); APPW_DISPOSE * APPW__GetDispose (WM_HWIN hWin); int APPW__DisposeObject (WM_HWIN hWin, int Index); GUI_HMEM APPW__GetTextItem (int Mode, U32 Para, U16 Row, U16 Col); void APPW_CreatePersistentScreens (void); WM_HWIN APPW_CreateRoot (APPW_ROOT_INFO * pRoot, WM_HWIN hParent); int APPW_Dispose (WM_HWIN hWin, unsigned Invalidate); void APPW_DragCoord (APPW_DISPOSE * pDisposeOld, APPW_DISPOSE * pDisposeNew, unsigned Index, int Delta, U8 AllowSetSize); void APPW_DrawFocusRect (WM_HWIN hWin); void APPW_DrawObject (APPW_DRAW_OBJECT * pDraw, GUI_RECT * pRect, int AlignBm, int xOffBm, int yOffBm); void APPW_DrawObjectAt (APPW_DRAW_OBJECT * pDraw, int xPos, int yPos); void APPW_DrawStreamedBitmapINT (const APPW_DRAW_OBJECT * pDraw, int x, int y); void APPW_DrawStreamedBitmapINT_HR(const APPW_DRAW_OBJECT * pDraw, int x, int y); void APPW_Exec (void); void APPW_GetAtomInfo (const APPW_ATOM * pAtom, APPW_ATOM_INFO * pInfo); I32 APPW_GetAtomValue (const APPW_ATOM * pAtom); APPW_ROOT_INFO * APPW_GetCurrentRootInfo (WM_HWIN hWin); GUI_HMEM APPW_GetLockedText (char ** ppBuffer, APPW_PARA_ITEM * pPara); const char * APPW_GetResourcePath (void); GUI_HMEM APPW_GetResourceStringLocked (const char * pText, const char ** ppData); WM_HWIN APPW_GetRoot (WM_HWIN hWin); APPW_ROOT_INFO * APPW_GetRootInfo (WM_HWIN hRoot, int * pRootIndex); APPW_ROOT_INFO * APPW_GetRootInfoByHandle (WM_HWIN hWin); APPW_ROOT_INFO * APPW_GetRootInfoByIndex (int RootIndex); APPW_ROOT_INFO * APPW_GetRootInfoByRootId (U16 RootId); int APPW_GetOpponent (int Index); U8 APPW_GetSupportFocus (void); void APPW_Init (const char * pResourcePath); void APPW_InitResourcePath (const char * pResourcePath); int APPW_IsValid (WM_HWIN hWin); int APPW_IsRoot (WM_HWIN hWin); void APPW_MoveDispose (APPW_DISPOSE * pDisposeOld, APPW_DISPOSE * pDisposeNew, int dx, int dy); void APPW_MULTIBUF_Enable (int OnOff); void APPW_RequestContent (WM_HWIN hWin, void (* pFunc)(WM_HWIN, const APPW_CONTENT *)); APPW_ROOT_INFO ** APPW_SetData (APPW_ROOT_INFO ** ppRootInfo, int NumScreens, APPW_VAR_OBJECT * paVarList, int NumVars, APPW_DRAWING_ITEM ** ppDrawingList, int NumDrawings); void APPW_SetDefaultPosition (WM_HWIN hRoot, U16 Id); void APPW_SetDefaultPositionRoot (WM_HWIN hRoot); void APPW_SetFocusInfo (APPW_DRAW_FOCUS_INFO * pInfo); void APPW_SetpfInitFS (void (* pFunc)(void)); void APPW_SetpfInitText (void (* pFunc)(void)); void APPW_SetPos (WM_HWIN hItem, int xPos, int yPos); void APPW_SetStreamedBitmap (APPW_DRAW_OBJECT * pDraw, APPW_PARA_ITEM * pPara, GUI_BITMAPSTREAM_INFO * pInfo); void APPW_SetStreamedBitmap_HR (APPW_DRAW_OBJECT * pDraw, APPW_PARA_ITEM * pPara, GUI_BITMAPSTREAM_INFO * pInfo); void APPW_SetSupportFocus (U8 SupportFocus); void APPW_SetWidgetFocusable (WM_HWIN hWin, APPW_PARA_ITEM * pPara); void APPW_TextInitMem (const APPW_TEXT_INIT * pPara); void APPW_TextInitExt (const APPW_TEXT_INIT * pPara); // // AppWizard.c (public functions, to be documented) // int APPW_GetFont (U16 IdScreen, U16 IdWidget, GUI_FONT * pFont, GUI_XBF_DATA * pData); int APPW_GetText (U16 IdScreen, U16 IdWidget, char * pBuffer, U32 SizeOfBuffer); int APPW_GetValue (U16 IdScreen, U16 IdWidget, int * pError); void APPW_SetCustCallback (void (* pFunc)(void)); int APPW_SetText (U16 IdScreen, U16 IdWidget, char * pText); int APPW_SetValue (U16 IdScreen, U16 IdWidget, int Value); int APPW_DoJob (U16 IdScreen, U16 IdWidget, int IdJob, APPW_PARA_ITEM * pPara); // // AppWizard_Action.c // int APPW_ACTION_SetEnable (WM_HWIN hWinDst, WM_HWIN hWinSrc, APPW_PARA_ITEM * pPara, int RootIndex); void APPW_ClearShiftScreenActive (void); const APPW_JOB * APPW_GetJob (int Id); const APPW_JOB * APPW_GetJobs (int * pNumJobs); #if (APPW_SKIP_OBSOLETE == 0) const APPW_JOB * APPW_GetJobsAnim (int * pNumJobs); #endif const APPW_JOB * APPW_GetJobsVar (int * pNumJobs); U8 APPW_GetTimerActive (void); int APPW_ProcessActions (WM_MESSAGE * pMsg, int RootIndex); int APPW_ProcessMotion (WM_MESSAGE * pMsg, APPW_SETUP_ITEM * pSetupMotion); void APPW_SendNotification (WM_HWIN hWin, int Notification); void APPW_SetTimerActive (U8 TimerActive); // // AppWizard_Condition.c // int APPW__CompareIsLess (I32 v0, I32 v1); int APPW__CompareIsLessOrEqual (I32 v0, I32 v1); int APPW__CompareIsEqual (I32 v0, I32 v1); int APPW__CompareIsGreaterOrEqual(I32 v0, I32 v1); int APPW__CompareIsGreater (I32 v0, I32 v1); int APPW__CompareIsNotEqual (I32 v0, I32 v1); int APPW_CalcCond (const APPW_COND * pCond, U32 * pResult, WM_HWIN hRoot); // // AppWizard_Drawing.c // void APPW_DrawingPrepare (U16 * pIdDraw); void APPW_DrawingDraw (int DrawingIndex); void APPW_DrawingCleanup (void); // // AppWizard_FileAccess.c // void APPW_DrawStreamedBitmapEXT (const APPW_DRAW_OBJECT * pDraw, int x, int y); void APPW_DrawStreamedBitmapEXT_HR(const APPW_DRAW_OBJECT * pDraw, int x, int y); const APPW_FILEACCESS * APPW_GetFileAccess (void); const GUI_XBF_TYPE * APPW_GetFileType (U8 Type); const APPW_MEMACCESS * APPW_GetMemAccess (void); void APPW_GetStreamedBitmapInfoEXT(const APPW_DRAW_OBJECT * pDraw, GUI_BITMAPSTREAM_INFO * pInfo); int APPW_MakeFont (const APPW_SETUP_ITEM * pSetup, GUI_FONT * pFont, GUI_XBF_DATA * pData); void APPW_SetFileAccess (APPW_X_FILEACCESS * pFileAccess); // // AppWizard_Spy.c // int APPW_SPY_Process (U8 Cmd, void * pVoid); // // AppWizard_Var.c // WM_HWIN APPW_GethWinVar (void); APPW_VAR_OBJECT * APPW_GetVar (U16 Id); int APPW_SetVarData (U16 Id, I32 Data); I32 APPW_GetVarData (U16 Id, int * pError); WM_HWIN APPW_GetVarWin (void); int APPW_CalcTerm (const APPW_CALC * pCalc); // // APPW_X_xxx.c // void APPW_X_Config (void); void APPW_X_InitText (void); void APPW_X_FS_Init (void); void APPW_X_Setup (void); #if defined(__cplusplus) } #endif #endif // GUI_WINSUPPORT #endif // APPWIZARD_H /*************************** End of file ****************************/