1 /*******************************************************************************/
2 /*  This file is auto-generated by Azure RTOS GUIX Studio. Do not edit this    */
3 /*  file by hand. Modifications to this file should only be made by running    */
4 /*  the Azure RTOS GUIX Studio application and re-generating the application   */
5 /*  specification file(s). For more information please refer to the Azure RTOS */
6 /*  GUIX Studio User Guide, or visit our web site at azure.com/rtos            */
7 /*                                                                             */
8 /*  GUIX Studio Revision 6.2.0.1                                               */
9 /*  Date (dd.mm.yyyy): 31.10.2022   Time (hh:mm): 14:09                        */
10 /*******************************************************************************/
11 
12 
13 #ifndef _DYNAMIC_MENU_SPECIFICATIONS_H_
14 #define _DYNAMIC_MENU_SPECIFICATIONS_H_
15 
16 #include "gx_api.h"
17 
18 /* Determine if C++ compiler is being used, if so use standard C.              */
19 #ifdef __cplusplus
20 extern   "C" {
21 #endif
22 
23 /* Define widget ids                                                           */
24 
25 #define IDB_BACK 1
26 #define ID_ALBUMS 2
27 #define ID_ARTISTS 3
28 #define ID_GENRES 4
29 #define ID_PLAYLISTS 5
30 #define ID_SONGS 6
31 #define ID_SETTINGS 7
32 
33 
34 /* Define animation ids                                                        */
35 
36 #define GX_NEXT_ANIMATION_ID 1
37 
38 
39 /* Define user event ids                                                       */
40 
41 #define GX_NEXT_USER_EVENT_ID GX_FIRST_USER_EVENT
42 
43 
44 /* Declare properties structures for each utilized widget type                 */
45 
46 typedef struct GX_STUDIO_WIDGET_STRUCT
47 {
48    GX_CHAR *widget_name;
49    USHORT  widget_type;
50    USHORT  widget_id;
51    #if defined(GX_WIDGET_USER_DATA)
52    INT   user_data;
53    #endif
54    ULONG style;
55    ULONG status;
56    ULONG control_block_size;
57    GX_RESOURCE_ID normal_fill_color_id;
58    GX_RESOURCE_ID selected_fill_color_id;
59    GX_RESOURCE_ID disabled_fill_color_id;
60    UINT (*create_function) (GX_CONST struct GX_STUDIO_WIDGET_STRUCT *, GX_WIDGET *, GX_WIDGET *);
61    void (*draw_function) (GX_WIDGET *);
62    UINT (*event_function) (GX_WIDGET *, GX_EVENT *);
63    GX_RECTANGLE size;
64    GX_CONST struct GX_STUDIO_WIDGET_STRUCT *next_widget;
65    GX_CONST struct GX_STUDIO_WIDGET_STRUCT *child_widget;
66    ULONG control_block_offset;
67    GX_CONST void *properties;
68 } GX_STUDIO_WIDGET;
69 
70 typedef struct
71 {
72     GX_CONST GX_STUDIO_WIDGET *widget_information;
73     GX_WIDGET        *widget;
74 } GX_STUDIO_WIDGET_ENTRY;
75 
76 typedef struct
77 {
78     GX_RESOURCE_ID string_id;
79     GX_RESOURCE_ID font_id;
80     GX_RESOURCE_ID normal_text_color_id;
81     GX_RESOURCE_ID selected_text_color_id;
82     GX_RESOURCE_ID disabled_text_color_id;
83 } GX_TEXT_BUTTON_PROPERTIES;
84 
85 typedef struct
86 {
87     GX_RESOURCE_ID string_id;
88     GX_RESOURCE_ID font_id;
89     GX_RESOURCE_ID normal_text_color_id;
90     GX_RESOURCE_ID selected_text_color_id;
91     GX_RESOURCE_ID disabled_text_color_id;
92 } GX_PROMPT_PROPERTIES;
93 
94 typedef struct
95 {
96     GX_RESOURCE_ID string_id;
97     GX_RESOURCE_ID font_id;
98     GX_RESOURCE_ID normal_text_color_id;
99     GX_RESOURCE_ID selected_text_color_id;
100     GX_RESOURCE_ID disabled_text_color_id;
101     GX_RESOURCE_ID left_map_id;
102     GX_RESOURCE_ID fill_map_id;
103     GX_RESOURCE_ID right_map_id;
104     GX_RESOURCE_ID selected_left_map_id;
105     GX_RESOURCE_ID selected_fill_map_id;
106     GX_RESOURCE_ID selected_right_map_id;
107 } GX_PIXELMAP_PROMPT_PROPERTIES;
108 
109 typedef struct
110 {
111     GX_RESOURCE_ID wallpaper_id;
112 } GX_WINDOW_PROPERTIES;
113 
114 typedef struct
115 {
116     GX_RESOURCE_ID wallpaper_id;
117     VOID (*callback)(GX_VERTICAL_LIST *, GX_WIDGET *, INT);
118     int total_rows;
119 } GX_VERTICAL_LIST_PROPERTIES;
120 
121 typedef struct
122 {
123    GX_CONST GX_STUDIO_WIDGET *base_info;
124    UINT (*base_create_function) (GX_CONST struct GX_STUDIO_WIDGET_STRUCT *, GX_WIDGET *, GX_WIDGET *);
125    GX_RECTANGLE size;
126 } GX_TEMPLATE_PROPERTIES;
127 
128 
129 /* Declare top-level control blocks                                            */
130 
131 typedef struct MENU_SCREEN_TEMPLATE_CONTROL_BLOCK_STRUCT
132 {
133     GX_WINDOW_MEMBERS_DECLARE
134     GX_TEXT_BUTTON menu_screen_template_back_button;
135 } MENU_SCREEN_TEMPLATE_CONTROL_BLOCK;
136 
137 typedef struct TOP_MENU_CONTROL_BLOCK_STRUCT
138 {
139     GX_WINDOW_MEMBERS_DECLARE
140     GX_PIXELMAP_PROMPT top_menu_albums_button;
141     GX_PIXELMAP_PROMPT top_menu_artists_button;
142     GX_PIXELMAP_PROMPT top_menu_genres_button;
143     GX_PIXELMAP_PROMPT top_menu_playlist_button;
144     GX_PIXELMAP_PROMPT top_menu_songs_button;
145     GX_PIXELMAP_PROMPT top_menu_settings;
146 } TOP_MENU_CONTROL_BLOCK;
147 
148 typedef struct SECOND_LEVEL_TEMPLATE_CONTROL_BLOCK_STRUCT
149 {
150     MENU_SCREEN_TEMPLATE_CONTROL_BLOCK base;
151     GX_WINDOW second_level_template_second_level_template_child;
152     GX_PROMPT second_level_template_prompt_5;
153 } SECOND_LEVEL_TEMPLATE_CONTROL_BLOCK;
154 
155 typedef struct PLAYLIST_SCREEN_CONTROL_BLOCK_STRUCT
156 {
157     MENU_SCREEN_TEMPLATE_CONTROL_BLOCK base;
158 } PLAYLIST_SCREEN_CONTROL_BLOCK;
159 
160 typedef struct GENRE_SCREEN_CONTROL_BLOCK_STRUCT
161 {
162     MENU_SCREEN_TEMPLATE_CONTROL_BLOCK base;
163     GX_PIXELMAP_PROMPT genre_screen_prompt_3;
164 } GENRE_SCREEN_CONTROL_BLOCK;
165 
166 typedef struct ARTISTS_SCREEN_CONTROL_BLOCK_STRUCT
167 {
168     MENU_SCREEN_TEMPLATE_CONTROL_BLOCK base;
169     GX_PIXELMAP_PROMPT artists_screen_prompt_2;
170     GX_VERTICAL_LIST artists_screen_vertical_list_2;
171     GX_TEXT_BUTTON artists_screen_button_14;
172     GX_TEXT_BUTTON artists_screen_button_15;
173     GX_TEXT_BUTTON artists_screen_button_16;
174     GX_TEXT_BUTTON artists_screen_button_10_1;
175     GX_TEXT_BUTTON artists_screen_button_11_1;
176     GX_TEXT_BUTTON artists_screen_button_12_1;
177     GX_TEXT_BUTTON artists_screen_button_13_1;
178 } ARTISTS_SCREEN_CONTROL_BLOCK;
179 
180 typedef struct ALBUMS_SCREEN_CONTROL_BLOCK_STRUCT
181 {
182     MENU_SCREEN_TEMPLATE_CONTROL_BLOCK base;
183 } ALBUMS_SCREEN_CONTROL_BLOCK;
184 
185 typedef struct SONGS_SCREEN_CONTROL_BLOCK_STRUCT
186 {
187     MENU_SCREEN_TEMPLATE_CONTROL_BLOCK base;
188 } SONGS_SCREEN_CONTROL_BLOCK;
189 
190 typedef struct SECOND_LEVEL_DERIVED_SCREEN_CONTROL_BLOCK_STRUCT
191 {
192     SECOND_LEVEL_TEMPLATE_CONTROL_BLOCK base;
193 } SECOND_LEVEL_DERIVED_SCREEN_CONTROL_BLOCK;
194 
195 
196 /* extern statically defined control blocks                                    */
197 
198 #ifndef GUIX_STUDIO_GENERATED_FILE
199 extern SECOND_LEVEL_TEMPLATE_CONTROL_BLOCK second_level_template;
200 extern GENRE_SCREEN_CONTROL_BLOCK genre_screen;
201 extern ARTISTS_SCREEN_CONTROL_BLOCK artists_screen;
202 extern MENU_SCREEN_TEMPLATE_CONTROL_BLOCK menu_screen_template;
203 extern TOP_MENU_CONTROL_BLOCK top_menu;
204 #endif
205 
206 /* Declare event process functions, draw functions, and callback functions     */
207 
208 UINT sub_menu_event(GX_WINDOW *widget, GX_EVENT *event_ptr);
209 UINT top_menu_event(GX_WINDOW *widget, GX_EVENT *event_ptr);
210 
211 /* Declare the GX_STUDIO_DISPLAY_INFO structure                                */
212 
213 
214 typedef struct GX_STUDIO_DISPLAY_INFO_STRUCT
215 {
216     GX_CONST GX_CHAR *name;
217     GX_CONST GX_CHAR *canvas_name;
218     GX_CONST GX_THEME **theme_table;
219     GX_CONST GX_STRING **language_table;
220     USHORT   theme_table_size;
221     USHORT   language_table_size;
222     UINT     string_table_size;
223     UINT     x_resolution;
224     UINT     y_resolution;
225     GX_DISPLAY *display;
226     GX_CANVAS  *canvas;
227     GX_WINDOW_ROOT *root_window;
228     GX_COLOR   *canvas_memory;
229     ULONG      canvas_memory_size;
230     USHORT     rotation_angle;
231 } GX_STUDIO_DISPLAY_INFO;
232 
233 
234 /* Declare Studio-generated functions for creating top-level widgets           */
235 
236 UINT gx_studio_text_button_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
237 UINT gx_studio_prompt_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
238 UINT gx_studio_pixelmap_prompt_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
239 UINT gx_studio_window_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
240 UINT gx_studio_vertical_list_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
241 UINT gx_studio_template_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
242 GX_WIDGET *gx_studio_widget_create(GX_BYTE *storage, GX_CONST GX_STUDIO_WIDGET *definition, GX_WIDGET *parent);
243 UINT gx_studio_named_widget_create(char *name, GX_WIDGET *parent, GX_WIDGET **new_widget);
244 UINT gx_studio_display_configure(USHORT display, UINT (*driver)(GX_DISPLAY *), GX_UBYTE language, USHORT theme, GX_WINDOW_ROOT **return_root);
245 
246 /* Determine if a C++ compiler is being used.  If so, complete the standard
247   C conditional started above.                                                 */
248 #ifdef __cplusplus
249 }
250 #endif
251 
252 #endif                                       /* sentry                         */
253